Skip to main content
Back to Blog
8 min readBrass-SEO Team

Ghost SEO: What Works and What's Missing

Ghost was built by ex-WordPress contributors who wanted a publishing platform without the plugin sprawl. The SEO defaults reflect that.

Ghost ships with stronger built-in SEO than WordPress, Squarespace, or Webflow do without plugins. Sensible URL structure. Working sitemap. Article schema. Canonical tags. Open Graph. Most of what an SEO plugin adds to WordPress is already in Ghost core. The gaps are real but narrow, and they fall in different places than the gaps on other platforms. This post covers what Ghost handles, what it leaves to you, and the small additions that close the remaining gap.

Quick Navigation


What Ghost Handles by Default

Out of the box, Ghost provides:

  • Clean URL structure: /post-slug for posts, /tag/tag-slug for tags, /author/author-slug for authors. No date or category bloat.
  • Auto-generated sitemap at /sitemap.xml with posts, pages, tags, and authors
  • Canonical tags on every page
  • Open Graph and Twitter card tags auto-populated from post metadata
  • Article schema in JSON-LD on every post
  • Editable per-post title, meta description, and feature image
  • Custom URL slugs per post
  • 301 redirects via the redirects.yaml (self-hosted) or admin UI (Ghost Pro)
  • rel=canonical support for syndicated content

This baseline is more complete than what WordPress, Shopify, or Squarespace provide without plugins. For a solo blogger or content business, Ghost can ship to production with no SEO plugins or extensions.


The Editor's SEO Panel

Ghost's editor exposes a Post Settings panel (gear icon, top right) with three SEO-relevant sections:

  1. Meta data: Title, description, URL slug. Both fields support previewing how the post will appear in Google.
  2. X (Twitter) card and Facebook card: Separate title, description, and image per platform. Overrides the defaults from the meta section.
  3. Canonical URL: Override the auto-generated canonical when republishing content from another source.

The third one is the differentiator. Most platforms hide canonical override behind theme code or plugin settings. Ghost surfaces it in the standard editor, making it easy to syndicate content correctly.

For the broader question of how meta descriptions affect ranking, see Meta Descriptions: The 160 Characters That Sell Your Page.


Built-In Schema Markup

Ghost generates JSON-LD structured data on every page automatically. The included schemas:

  • Article schema on individual posts (with author, datePublished, image, publisher)
  • WebSite schema on the homepage
  • BlogPosting schema as part of Article
  • BreadcrumbList schema where the navigation supports it (theme-dependent)

The Article schema includes the fields that matter most for rich snippet eligibility: headline, image, datePublished, author, and publisher. Validate any post with Google's Rich Results Test to confirm the schema parses cleanly.

For the bigger picture on which schema types matter, see Schema Markup: The SEO Trick Hiding in Your HTML.


What's Missing: FAQ, HowTo, and Custom Schema

Ghost's built-in schema covers Article and BlogPosting well. It doesn't auto-generate FAQ schema, HowTo schema, or Product schema. For posts that include FAQ-style content, the schema must be added manually.

Three approaches:

  1. Code injection per post. Ghost's editor has a Code Injection field (Post Settings → Code injection). Paste a JSON-LD block here.

  2. Theme template modification. For self-hosted Ghost, edit the theme's post.hbs to add a JSON-LD block that conditionally outputs schema based on a custom field.

  3. Code injection site-wide. For schema that applies to all posts (Organization, WebSite), add it once in Settings → Code injection.

Brass-SEO's blog uses a similar pattern on its own platform: detect FAQ sections by heading text and output JSON-LD. The same logic ports to Ghost themes with about 30 lines of Handlebars.


Membership Pages and SEO

Ghost includes membership and paid newsletter features. By default, paid posts are gated. They show a paywall to non-members and don't expose full content to search engines.

This is correct behavior for paid content. The SEO implication: paid posts won't rank for the content behind the wall. Only the public preview text and metadata are indexable.

For a content business mixing free and paid content, the SEO strategy implication: rank with free public posts, convert with paid gated posts. The free posts feed the funnel; the paid posts feed the business. Don't try to rank gated content.

Member-only pages can be configured to allow search engine indexing of the preview text only, which gives Google something to index without exposing the full post. The setting lives in each post's visibility controls.


Hosted vs Self-Hosted Differences

Ghost runs in two flavors: Ghost Pro (hosted) and self-hosted Ghost (open-source, you manage the server). The SEO capabilities are essentially identical between them. A few small differences:

  • Redirect management: Ghost Pro provides an admin UI. Self-hosted edits redirects.yaml (or .json) directly.
  • Custom code: Both support site-wide and per-post code injection. Self-hosted also allows direct theme editing without a separate deployment step.
  • Performance: Ghost Pro runs on a tuned infrastructure. Self-hosted depends on your server. Brass-SEO has seen self-hosted Ghost sites run faster or slower than Ghost Pro, depending on hosting.
  • Backups and reliability: Ghost Pro handles these. Self-hosted is your responsibility.

For most solo bloggers, Ghost Pro is the right choice. The time saved on infrastructure offsets the subscription. For developers who want full control or businesses with custom integration needs, self-hosted wins.


The Solo Blogger Setup

The minimum-viable Ghost SEO setup for a solo blogger:

  1. Connect a custom domain immediately. Ghost's default subdomain (*.ghost.io) won't accumulate link equity you want.

  2. Set the site title and description in General settings. These feed default metadata for pages without custom values.

  3. Add Google Analytics 4 and Google Search Console verification via Settings → Code injection (site header). Verify ownership and submit the sitemap to GSC.

  4. Set a default social card image at Settings → General. Used as the fallback when individual posts don't have feature images.

  5. Configure canonical URL override and meta description on every post before publishing. The editor makes it a 60-second step.

  6. Set up redirects in the admin (Ghost Pro) or redirects.yaml (self-hosted) when you rename a post slug or move content.

That's the entire SEO setup. No plugins, no subscriptions beyond Ghost itself, no theme modifications required for a baseline.

For the broader question of how a small site grows organically, see Getting Started with AI-Powered SEO Analysis and SEO Quick Wins: 5 Fixes Any Business Can Make.

For the broader Brass-SEO approach to page audits across any platform, see Brass-SEO page audits. To audit your Ghost blog against your own data, start a trial.


Frequently Asked Questions

Is Ghost faster than WordPress for SEO?

Generally yes. Ghost's smaller footprint, lighter themes, and Node.js architecture produce faster page loads than WordPress with similar content. The gap is meaningful on Core Web Vitals scores but small enough that a well-tuned WordPress site can match Ghost.

Does Ghost support hreflang for multilingual content?

Limited. Ghost doesn't have native multilingual support in 2026. The workarounds are running separate Ghost instances per language or adding hreflang tags via theme template modification. For multilingual content as a primary need, Ghost is the wrong platform.

Can I add structured data without editing theme files?

Yes, via the Code Injection panel on each post or site-wide. For one-off schema additions, this works fine. For programmatic schema (every post needs schema based on its content), theme modification is cleaner.

Does Ghost have an SEO checker like Yoast?

No. Ghost doesn't include a content scoring tool. The platform's design philosophy assumes the writer knows what they're doing. For solo bloggers, this is liberating. For teams needing editorial guardrails, it's a gap. External tools can fill the gap.

What's the biggest SEO mistake on Ghost sites?

Leaving the default site description in place. The site description appears on the homepage and in many places where Google reads page intent. Sites that leave it as "Thoughts, stories and ideas" miss the chance to set the topical context for the entire site.


Run This as an AI Prompt

Want an audit like this for your own Ghost blog? Try the Ghost SEO Built-In vs. Missing Checklist prompt.

Ready to try Brass-SEO?

Get AI-powered SEO insights from your Google Search Console and Analytics data.