Publishing platform
Ghost integration
Ghost is the best-behaved destination on this list, and the one where you most need to think about duplication, because it already does a lot of what we do.
No card · 30 credits on signup
- Body, headings and internal links
- Meta title & description
- JSON-LD structured data
- Canonical URL & a named author
- Featured image with alt text
Every article, formatted for Ghost — nothing to paste.
Connecting Ghost
Live in a few minutes.
Step 1
Create a custom integration in Ghost
In your Ghost admin, open the integrations settings and add a custom integration named for this connection rather than reusing an existing one.
Step 2
Note your Admin API URL and key
Copy the Admin API key, which is presented as an identifier and a secret joined by a colon, and copy the API URL shown alongside it.
Step 3
Connect the project in SEOPulser
In the project's integration settings, choose Ghost and supply the API URL and the Admin API key.
Step 4
Create the staff user your posts will be attributed to
Ghost attributes posts to staff accounts, so the person who should be bylined needs a user on the site with a name, a bio and a profile image.
Step 5
Decide who owns the Article graph
Open a published post on your site and view source, searching for application/ld+json.
Step 6
Run one post as a draft and inspect it
Put the project in draft-first mode and let one article through.
What lands where
Every field maps cleanly.
- Title and slugPost title and slug
- Article body (Markdown)Post content, supplied as HTML for conversion
- Meta description and excerptMeta description and custom excerpt
- Featured image and alt textFeature image, with its alt text
- Author entityPost author, mapped to a Ghost staff user
- TagsPost tags, including internal tags
- Publish state and schedulePost status and published date
- JSON-LD graphPer-post code injection, head section
Worth knowing first
The honest limitations.
Every destination constrains something. These are the ones worth knowing before you commit a content program to Ghost.
- Ghost already generates its own Article structured data on posts.
- Content is stored in Ghost's editor document format rather than as raw HTML, so HTML you send is converted into cards.
- Authors must exist as staff users on the site.
- Updating a post requires sending the version Ghost currently holds, so a post edited in the Ghost editor between our read and our write will have the update rejected rather than silently overwritten.
- Posts restricted to members or paid tiers are truncated for anyone who is not signed in, and crawlers are not signed in.
From content chaos to search results
Without a system
- Content takes forever, or costs a fortune
- Generic AI drafts never rank
- No schema, no author, no canonical
- Publishing is a manual copy-paste chore
- Scaling too fast gets you flagged
With SEOPulser
- Research to publish, fully on autopilot
- Your answers make every draft original
- JSON-LD and a named author on each
- One-click publishing to your CMS
- Cadence ramped to your site's age
What's different
Built to rank, not just to publish.
Structured data on every article
Article, FAQ, HowTo and Breadcrumb JSON-LD are generated inside the pipeline and stored with the piece, so they travel to whatever you publish to.
Real named authors
Every article is bylined to a named person with a bio and a profile page — not the brand as a schema.org Person, which Google advises against.
Your first-hand experience
Before drafting, you answer a few questions only you can, and the answers go into the piece as material a model could never have inferred.
An MCP server for the loop
Claude, Codex or your own agent reads the calendar, answers questions, queues generation and controls autopilot — over the same API the dashboard uses.
Pace matched to site age
Publishing cadence ramps against when your site was first seen, so a young domain never ships at a volume that reads as scaled content abuse.
Search Console improvements
Connect GSC and it finds near-miss rankings, CTR gaps and thin pages, then rewrites them as accept-or-reject hunks — on posts we didn't write, too.
Pricing
Start free. Pay when it’s working.
Thirty credits on signup — three full articles, published to your own site. No card.
Professional
Most popular$69/mo
Billed annually
- 100 articles a month
- 3 projects
- Search Console improvement loop
- MCP server and REST API keys
- Article, FAQPage, HowTo and BreadcrumbList JSON-LD on every piece
Questions people actually ask
Does Ghost already add schema to posts?
Yes. Ghost outputs structured data on posts by default, including an Article graph with headline, images, dates, an author from the staff account and a publisher from your site settings. That is why the integration is normally configured additively: Ghost keeps the Article node, and we contribute FAQPage, HowTo and a breadcrumb graph it does not emit. Check a live post's source to confirm what yours currently produces.
Do I need a staff account for every author?
Yes, because Ghost attributes posts to staff users rather than to a text field. Adding a byline means inviting a user and filling in the name, bio and profile image, which Ghost then renders on the post and includes in its own structured data. It is more setup than a free-text author field, and it is also the reason Ghost bylines resolve to a real profile page.
Will my formatting survive the publish?
For normal article structure, yes. Ghost converts the HTML it receives into its editor document format, and headings, paragraphs, lists, quotes, images, code blocks and links convert faithfully. Unusual or deeply nested markup gets normalized during that conversion, so the stored post will not be byte-identical to what was sent. Review the first published piece in the editor to see how your content shape lands.
Where exactly does the JSON-LD go?
Into the post's own head code injection field, which Ghost exposes per post. That puts the markup in the document head of that specific post, without any theme editing and without adding script tags to the body. It is the tidiest placement of any destination we support, which is part of why the duplication question matters more here than the delivery question.
Should members-only posts be part of an SEO calendar?
Generally not. A gated post renders as a teaser for anyone not signed in, and crawlers are never signed in, so the indexable content is the teaser. Keep search-facing articles public and use gated posts for member value, with the two linking to each other. The improvement loop can only work with pages that are publicly readable in the first place.
Does this work with self-hosted Ghost as well as the hosted service?
Both, since they expose the same Admin API and the same custom integration mechanism. The one thing to get right on a self-hosted install is the API URL, which is your Ghost instance's own address and may differ from your public site address if you serve the front end separately. If a connection check fails on a self-hosted site, that mismatch is the first thing to check.
- WordPressPublishes to self-hosted WordPress over the core REST API using an application password, with taxonomy terms, a media-library featured image and JSON-LD attached to every post.
- WebflowWrites finished articles into a Webflow CMS Collection, mapped field by field, with a separate publish step and a plan for where the JSON-LD lives.
- ShopifyPublishes articles into a Shopify blog through a custom app, with tags, a featured image and structured data, plus a straight account of what a store blog can and cannot do.
- WebhooksA signed publish event delivered to an endpoint you own, carrying the article, its metadata and the generated JSON-LD graphs. Everything after that is your code.
Connect in minutes
Publish to Ghost without touching a draft.
Connect once, confirm the brief, and articles arrive on your Ghost site with structured data and a real author attached. Keep the review gate on until you trust it.
3
Free articles on signup
- No credit card
- Published to your own site
- JSON-LD and a named author
- Cancel anytime