Topic

SEO for Ghost

Ghost is one of the cleanest platforms for SEO out of the box — but it still has quirks that will hurt your rankings if you ignore them. Here's the complete playbook.

Ghost has a reputation for being the clean, fast, developer-friendly alternative to WordPress. That reputation is mostly deserved. Out of the box, Ghost generates valid semantic HTML, auto-creates your sitemap, injects JSON-LD structured data, and runs on a Node.js runtime that's fast enough to hit Core Web Vitals green on basic hosting without much tuning.

But "mostly good by default" is not the same as "SEO handled." Ghost still has gaps — some obvious, some subtle — that will quietly cost you rankings if you don't address them. Tag pages get indexed when they should be noindexed. Member-only content disappears from search entirely. Newsletter posts meant for email never get a URL at all. The canonical field exists but gets ignored by most Ghost users.

This guide covers everything. Use it as the map; the six articles below are the territory.

Why Ghost is competitive for SEO

Before the fixes, it's worth understanding what Ghost gets right.

Clean, semantic HTML output. Ghost's default Casper theme produces well-structured HTML: one <h1> per post (the title), semantic <article> and <section> elements, proper heading hierarchy. There's no shortcode soup, no builder-generated div nesting 12 levels deep. Google can parse it cleanly.

Built-in JSON-LD. Every Ghost post automatically injects Article schema with headline, author, datePublished, dateModified, and image from your post metadata. You don't need a plugin for this. The schema is in the <head> on every post, every page.

Auto-generated sitemap.xml. Ghost ships a split sitemap index at /sitemap.xml that references four child sitemaps: sitemap-posts.xml, sitemap-pages.xml, sitemap-tags.xml, and sitemap-authors.xml. The lastmod field pulls from post.updated_at automatically. No plugin required, no setup needed.

Fast by default. Ghost runs on Node.js, which means no PHP cold starts. Ghost(Pro) and most self-hosted configurations on VPS or containers will hit sub-200ms TTFB without caching layers. That matters for CWV, which matters for rankings.

Membership doesn't break SEO when configured correctly. Ghost's member model can coexist with public indexing. Posts set to "Public" are fully indexable even if you have memberships enabled. The SEO trap is posts set to "Members only" — those get a login wall that Googlebot sees as a soft 404.

Where Ghost creates SEO problems

None of these are dealbreakers, but all of them require deliberate action.

Tag pages are indexed by default, including internal/admin tags. Ghost generates a public tag archive page for every tag you create. If you use tags for internal organization — like newsletter-2025 or imported — those tag pages exist, get indexed, and are almost certainly thin content. You need a strategy for which tag pages to optimize and which to noindex.

Member-only posts get walled off from crawlers. If you publish a post with access set to "Members only" or "Paid members only," Googlebot sees the paywall and won't index the content. This is fine if you want that. It's a problem if you accidentally publish something to members-only that was meant to rank.

The canonical URL field is ignored by most users. Ghost has a per-post canonical override in the Post Settings sidebar under "Meta data." Most Ghost users never touch it. If you syndicate content — cross-posting to Medium, DEV, Substack, or anywhere else — you need to use this field to point the canonical back to your Ghost post. Without it, you're handing link equity to the syndication platform.

Newsletter posts sent as email-only have no URL. If you use Ghost's newsletter feature and send a post as "Email only," it never gets a public URL. It doesn't exist on the web, doesn't get indexed, and can't rank. This is by design, but it surprises users who expect their newsletters to also live as blog posts.

Related posts logic in Casper is weak. The default theme shows the last three posts tagged with the same primary tag. That's a serviceable fallback, but it's not topic-cluster logic. If you're building content clusters to rank for competitive terms, you need to build the related-post logic explicitly.

Ghost vs. WordPress for SEO: when to use which

This comes up constantly, so let's settle it directly.

Choose Ghost if:

  • Your primary content model is long-form posts and newsletters
  • You want fast default performance without managing a caching plugin
  • Your team is technical enough to use routes.yaml for custom URL structures
  • You're building a membership or paid newsletter product where some content is gated
  • You don't need WooCommerce or a deep plugin ecosystem

Choose WordPress if:

  • You need a large plugin ecosystem (custom schema types, advanced redirects, WooCommerce)
  • Your content team is non-technical and needs a visual page builder
  • You're running a multi-author publication with complex editorial workflows
  • You need granular control over URL structures, redirects, and 404 handling without editing config files

For pure blogging + newsletter + membership SEO, Ghost is genuinely competitive with WordPress. For e-commerce SEO, local SEO with many location pages, or anything requiring deep plugin customization, WordPress still wins.

The six articles in this cluster

The Complete Ghost Blog SEO Checklist

The practical starting point. Eighteen checkboxes organized by category: what Ghost handles automatically, what you have to configure once, and what you have to do for every post. If you're new to Ghost SEO or doing a site audit, start here.

Ghost Tag Pages SEO: Index Them, Block Them, or Make Them Rank

Ghost generates a tag archive for every tag. Some of those pages should be your best-ranking content; most should be noindexed. This article walks through the decision matrix: when to optimize a tag page as a pillar, when to noindex, and how Ghost's internal tag system (#hashtag prefix) lets you create organizational tags that never generate public pages.

Ghost Meta Data and Canonical URLs: The Custom Override

The Meta data panel in Ghost's post settings sidebar is the most underused SEO feature on the platform. This article covers all five overridable fields — meta title, meta description, canonical URL, OG title/description, and Twitter title/description — with specific guidance on when to override each one.

Ghost Newsletter vs Blog Posts: How They Affect SEO

Ghost blurs the line between email newsletters and web content. That's a feature, but it creates SEO confusion. This article explains the difference between email-only posts, public posts, and member-only posts, and shows you the workflow for creating newsletter content that also ranks.

Ghost Sitemap and Robots.txt: What's Auto-Generated and What You Can Override

Ghost's auto-generated sitemap is good but not perfect. This article covers what's in each child sitemap, how to handle the robots.txt default behavior, and how to override robots rules via routes.yaml for tag pages, author pages, and other sections you don't want crawled.

Ghost Internal Linking: Building Topic Clusters with Casper

Internal linking is where most Ghost sites leave ranking power on the table. The default Casper theme's related-post logic is rudimentary. This article shows you how to build topic-cluster internal linking using Ghost's {{get}} Handlebars helper and how to structure your tags to support a cluster architecture.

Where to start

If you're doing a first-time Ghost SEO setup, follow this order:

  1. Run through the 18-item checklist and fix everything in the "one-time setup" category first.
  2. Audit your tag pages with the tag pages guide — noindexing thin tag archives is a quick win.
  3. Check your sitemap and robots configuration to confirm Google is seeing what you want it to see.
  4. Set up your internal linking structure before you publish too many more posts — retrofitting this is painful.

If you're auditing an existing Ghost site, start with the checklist and the tag pages article. Those two areas produce the most common issues on Ghost sites that have been running for a year or more without active SEO attention.

Ship optimized content this afternoon.

7-day trial. $29 when it converts. Cancel from the dashboard the second it stops earning its keep.