Publish into the CMS you already use.
Connect SEORAV once. We write, you approve, we publish — not only blog articles but also FAQ entries and answer-engine pages — straight into WordPress, Webflow, Ghost, HubSpot, Shopify, Wix, Framer, or any custom endpoint via signed webhook. No copy-paste, no broken schema, no “we’ll deploy on Monday”.
Real auth, not fake fields
Application passwords, private app tokens, JWTs. Encrypted at rest with AES-256-GCM. Revocable from the dashboard at any time.
Publish, retry, verify
Failed POSTs retry with exponential backoff (6 attempts over ~2 days). After publish we re-fetch the live URL and run a 17-check rendered-HTML scorer.
Honest about limits
Each integration page tells you exactly what we can and can't do on that platform. JSON-LD in head? Native scheduling? Featured-image upload? Spelled out.
Pick your platform
WordPress
AvailableREST API + Application Password. Publishes through Yoast / RankMath / All-in-One SEO when present, falls back to native fields otherwise.
- Featured image
- Categories & tags
- Native scheduling
- JSON-LD via SEO plugin
Webflow
AvailableSites API with auto-provisioned Collection fields. We map every CanonicalPost field to the matching Webflow field and publish into your existing CMS Collection.
- Auto field provisioning
- Designer fidelity
- Native scheduling
- JSON-LD via custom code
Ghost
AvailableAdmin API with short-lived JWTs. Mobiledoc + Lexical body, native head-injection of JSON-LD, full meta + OpenGraph fields.
- Lexical/Mobiledoc body
- Native head injection
- Featured image upload
- Code injection clean
HubSpot
AvailablePrivate App token, Content Hub blog. Probe verifies the portal has the Marketing/CMS Hub Pro+ tier — Marketing-only portals can't host blog posts.
- Per-portal scopes
- Blog ID auto-detect
- Native scheduling
- Topic / blog author mapping
Shopify
LimitedAdmin API. Shopify's blog templates don't expose <head>, so JSON-LD ships inline in body. Best paired with a theme that includes structured-data partials.
- Blog post + product content
- Inline JSON-LD only
- Native scheduling
- Featured image via Files API
Wix
LimitedVelo / Site API. The least flexible mainstream CMS — no head injection, no native scheduling. We publish title + body and let your Velo code shape the rest.
- Title + body only
- Velo hooks recommended
- No native scheduling
- No head injection
Framer
AvailableAI-led setup — we inspect your Framer Collections, propose a routing plan ("articles → /blog, FAQ → /resources"), you confirm, save. Every future publish consults the stored plan via a pure-Python lookup — no AI on the publish path.
- AI collection analysis
- Editable routing plan
- Multi-project per site
- Article + FAQ routing
Webhook
CustomGeneric signed POST for everything else — Next.js ISR, Make, Zapier, n8n, custom backends. We sign with HMAC-SHA256, you control the publish step.
- HMAC-SHA256 signed
- Idempotency keys
- Retries up to 6×
- Receive in any framework
What every adapter ships
The publish payload is the same shape across CMSes. The adapter maps it onto each CMS's specific fields without dropping anything on the way through.
Articles (blog posts)
Full HTML body with answer-first openings, GFM tables, schema-friendly headings, and verified internal links. Reading time + word count stored on the post meta.
FAQ entries
When an article includes an FAQ section, the same Q/A blocks also ship to your /faq surface — either as a child route the adapter publishes to, or via a routing rule the AI-led setup mapped to your existing FAQ Collection (Framer, Webflow).
Hero image
Multiple Image formats uploaded to the CMS media library where supported, otherwise served from Supabase Storage with explicit dimensions on the post meta so OG cards and schema match.
JSON-LD schema
BlogPosting + BreadcrumbList always; FAQPage, HowTo, and Speakable only when the article has those sections (no empty schema blocks). Injected into the head where the CMS allows, otherwise inline in the body content embed.
Meta title + description
meta_title (≤60 chars) and meta_description (≤155 chars) written into the SEO fields the CMS actually surfaces — Yoast / RankMath / All-in-One on WP, native SEO on Webflow / Ghost / HubSpot.
Slug + canonical
Slug locked once published — no slug churn on re-edit. Canonical points to the live URL the CMS resolves to, even when the CMS introduces a www / non-www prefix you didn't configure.
Choosing the right adapter
All seven native adapters publish the same payload. The differences are in how each CMS handles schema injection, scheduling, and routing — pick the one that matches how your team actually edits.
You want maximum schema control
WordPress, Ghost, or Webflow. WordPress (with Yoast / RankMath) gives you full control over every SEO field. Ghost head-injects JSON-LD natively. Webflow needs a one-time custom-code embed.
You want design-first publishing
Framer or Webflow. Both let your designer own the visual page. Framer's AI-led routing additionally lets you map articles vs FAQ to different Collections without writing a config.
You're on HubSpot / commerce
HubSpot if you live in Marketing Hub Pro+. Shopify if blog + product content sit on the same store. Both publish cleanly; schema lands inline rather than in head.
You're on a headless / custom CMS
Generic webhook. Sanity, Contentful, Strapi, Notion, custom Rails / Django / Next.js — anything that can receive an HMAC-signed POST. About an hour of dev time to wire.
Integration questions
Does SEORav publish FAQ content too, or only blog articles?+
Both. When an article includes an FAQ section, the Q/A blocks ship as proper FAQ entries to whichever route you configured — usually /faq for marketing sites, or a dedicated FAQ Collection on Framer / Webflow. The Q/A blocks also appear inside the parent article so the schema and rendered HTML stay aligned.
What's the difference between "Available" and "Limited" status?+
Available means head-injection of JSON-LD, native scheduling, and featured-image upload all work. Limited (Shopify, Wix) means one of those is constrained by the CMS itself — schema ships inline rather than in head, or scheduling needs to be set on the CMS side after publish.
Do you support multi-site / multi-tenant setups?+
Yes. Each site you onboard has its own adapter, its own auth tokens, and its own routing config. You can run a WordPress site, a Webflow site, and a HubSpot site from the same SEORav workspace; articles route to the site they were briefed for.
What happens on auth-token expiry?+
The next publish attempt detects the failure, the article rolls back to draft, /health surfaces the expiry with the CMS error, and you get an email if it's the first failure in a 24-hour window. Re-auth from the integrations panel and the queue resumes.
Can I see what a publish request looks like before I trust it?+
Every native adapter has a "Test publish" button on its settings page that ships a single small payload to a draft URL on your CMS. You can inspect the result on the CMS side before turning live publishing on.
Don't see your platform?
Use the generic webhook. Any endpoint that can receive HTTPS will do — Cloudflare Worker, Vercel Edge function, a Next.js Route Handler, your existing Rails / Django / PHP backend. We sign every request with HMAC-SHA256 so you can verify authenticity in ~30 lines.