Guide Ghost SEO
How SEO fonctionne on Ghost CMS — the traditional-vs-headless fork, the SEO Ghost builds in automatically, ce que it leaves to vous, gated-content limites, and Ghost Pro vs self-hosted.
Langues
Ghost SEO splits in two selon how vous run it. In traditional (Handlebars) mode, Ghost handles core SEO technique automatically — sitemap, balise canonicals, meta tags, Ouvrir Graph, Twitter Cards, and Article JSON-LD — with zero plugins, and it's fast by par défaut. Run Ghost headless (Content API seulement) and tout of que disappears; the frontend has to rebuild every piece. Soit façon, Ghost has gaps it jamais fills (breadcrumb/FAQ schema, hreflang, per-post noindex toggle, IndexNow), and gated members-only content can't be indexé parce que it's blocked server-side. The unique biggest mistake is treating traditional and headless Ghost as the même SEO problem — ils aren't.
TL;DR — Ghost is a publishing platform que, in its normal mode, fait la plupart of votre SEO technique pour vous automatically — sitemap, balise canonicals, meta tags, social cards, données structurées — with aucun plugin to install. It’s aussi fast out of the box. The big catch: si vous run Ghost “headless” (simplement as a content source pour a separate website), tout of que built-in SEO goes away and a developer has to rebuild it. And members-only content can’t montrer up in Google at tout.
Ce que Ghost is
Ghost is a système de gestion de contenu — comme WordPress, but construit specifically pour blogs, newsletters, and paid memberships plutôt que pour every kind of website. Vous écrire posts in Ghost, and Ghost publishes les.
The chose que rend Ghost différent pour le SEO is que it peut run in two complètement différent façons:
- The normal façon (traditional mode). Ghost runs votre whole site — it stores votre content and turns it into web pages. Ce is ce que la plupart personnes utiliser.
- The headless façon. Ghost becomes simplement a storage box pour content. A separate website (construit by a developer with something comme Suivant.js or Astro) pulls the content out and builds lune pages itself.
Ce choice changements everything à propos de Ghost’s SEO, so garder it in the back of votre mind.
Ce que Ghost fait pour vous automatically (normal mode)
Si vous run Ghost the normal façon, it quietly handles the SEO technique basics with aucun setup:
- A sitemap — an auto-updating liste of votre pages at
yourdomain.com/sitemap.xmlque vous pouvez hand to Google and Bing. Evidence for this claim Traditional Ghost includes automatic SEO features including XML sitemaps, canonical tags, metadata, and structured data. Scope: Ghost-rendered sites using supported themes; headless frontends must implement their own output. Confidence: high · Verified: Ghost: SEO - Balise canonicals — ces tell moteur de recherches qui version of une page is the “official” un, so duplicate pages don’t compete.
- Meta titles and descriptions — with sensible fallbacks si vous leave les blank.
- Social cards — Ouvrir Graph and Twitter Card tags so liens regarder bon quand shared.
- Données structurées — the behind-the-scenes Article markup que helps search engines comprendre votre post.
- Clean URLs and a fast site by par défaut.
In WordPress you’d install a plugin comme Yoast to obtenir la plupart of ce. In Ghost it’s simplement là.
Ce que Ghost doesn’t do
Ghost covers the core, pas the extras. It won’t ajouter breadcrumb or FAQ structured données, it has aucun built-in prise en charge pour multi-language (hreflang) sites, aucun per-post “hide from Google” toggle in the menu, and aucun Yoast-style keyword checklist. Ceux besoin code or a third-party outil.
The un chose personnes obtenir incorrect
Members-only content can’t rank. Si vous put a post behind a paid (or free email) membership, Google literally can’t lire it — Ghost hides it from everyone who isn’t logged in, moteur de recherches inclus. The fix is to publish a public preview or teaser que peut rank, and utiliser the gated partie to convert readers into subscribers. Don’t expect locked posts to bring in search trafic.
Evidence for this claim Ghost members-only posts require member authentication, so their protected body is not publicly available to crawlers. Scope: Ghost access settings for members-only and paid-members-only content. Confidence: high · Verified: Ghost: Content accessVouloir the complet version — the traditional-vs-headless decision, the headless rebuild checklist, gated-content schema, and Ghost Pro vs self-hosted? Switch to the Avancé tab.
TL;DR — Ghost SEO forks on un decision: traditional (Handlebars) mode vs. headless (Content API). Traditional Ghost ships core SEO technique automatically — sitemap, self-referencing + custom canonicals, meta tags, OG/Twitter cards, and Article JSON-LD — with aucun plugin, and it’s fast by par défaut. Go headless and tout of que disappears; the frontend has to rebuild every piece, and Ghost’s speed advantage evaporates parce que the framework now owns performances. Les deux modes share gaps Ghost jamais fills (breadcrumb/FAQ/Product schema, hreflang, per-post noindex, IndexNow, a redirection UI), and gated members-only content is blocked server-side so it can’t be indexé. Don’t conflate the two modes — they’re différent problems.
The fork in the road
Ghost is a Node.js (Express) CMS with a decoupled core: an API plus an optional Handlebars frontend. Que architecture is the whole SEO story.
- Traditional mode — Ghost sert HTML via its Handlebars themes. Every
built-in SEO fonctionnalité s’applique, generated automatically via the theme’s
{{ghost_head}}helper. - Headless mode — Ghost is “a complet CMS headless qui is complètement agnostic of quelconque particulier front fin or static site framework.” Vous requête le contenu API or Admin API from a separate frontend (Suivant.js, Astro, Nuxt, SvelteKit), and SEO becomes 100% que frontend’s responsibility.
The choice of mode is the unique biggest determinant of Ghost’s SEO footprint. Everything ci-dessous is organized autour it. (Pour the framework-agnostic version of the headless side, voir SEO pour a CMS headless.)
Ce que traditional Ghost handles automatically
In traditional mode Ghost fait the core SEO technique with zero configuration:
- Sitemap. Auto-generated at
/sitemap.xml, mis à jour on publish/unpublish, covering posts, pages, tags, and authors. “Ghost automatically creates and updates an XML sitemap pour votre website.” Evidence for this claim Ghost automatically creates and updates an XML sitemap. Scope: Traditional Ghost publication output. Confidence: high · Verified: Ghost: SEO - Balise canonicals. A self-referencing
rel=canonicalon every post and page — “Ghost adds balise canonicals à travers votre site to tell moteur de recherches qui version of une page ils devrait considérer the ‘official’ un.” Since March 2019 vous pouvez aussi définir a custom canonical per post in the editor’s metadata panel, or via the Admin APIcanonical_urlfield — construit pour “guest posts, multiple versions of the même page or quand vous devez curate a liste of liens to external sources.” Evidence for this claim Ghost outputs canonical tags and supports a custom canonical URL for a post or page. Scope: Traditional Ghost and the post/page metadata configuration. Confidence: high · Verified: Ghost: Canonical URLs - Meta title/description. Custom fields que fall back to the post title and excerpt quand left blank.
- Ouvrir Graph + Twitter Cards. Auto-generated from post metadata and the fonctionnalité image.
- Données structurées (JSON-LD). “Ghost automatically inclut données structurées in
tout posts and pages” — Article schema with publisher, author, headline,
datePublished,dateModified, image, and keywords. - Clean URLs + custom routing. Slug-based URLs by par défaut, entièrement customizable via
routes.yaml. - robots.txt. A par défaut fichier que disallows the
/ghost/admin chemin and permet everything sinon.
Ce is genuinely plus que a stock WordPress install donne vous — Ghost listes “XML sitemaps, balise canonicals, optimised URLs, microformats, Facebook Ouvrir Graph tags, prise en charge pour Twitter cards and clean semantic markup” as built-in, aucun plugin requis.
Ce que Ghost jamais fait — in soit mode
Ghost covers the core and arrête là. It fait pas generate:
- Avancé schema — breadcrumb, FAQ, HowTo, Product, Recipe, or Video markup. Article schema seulement. Anything sinon is manual code injection or theme fonctionner.
- Hreflang / international SEO — aucun native prise en charge. Multi-language Ghost nécessite a third-party service (Weglot, ConveyThis) or theme-level implementation, and hreflang n’est pasoriously error-prone.
- A per-post noindex toggle in the UI — vous besoin code injection.
- Keyword optimization guidance. Ce is deliberate. Asked à propos de ajout Yoast-style outils, the Ghost team argued que “un of the downsides of en utilisant Yoast’s KW optimisation suggestions is que is encourages us to écrire meta données pour machines au lieu de humans,” and on the broader advanced-SEO wishlist (breadcrumb schema, hreflang, noindex contrôle) said flatly: “Ce isn’t on our radar at the moment.”
- IndexNow — aucun native prise en charge; wire it via a custom webhook on publish si vous vouloir Bing/others notified instantly.
- A redirect-management UI — redirections live in
redirects.yaml(self-hosted) or Ghost Pro’s redirection manager; there’s aucun plugin ecosystem to lean on.
Headless Ghost: the SEO vous have to rebuild
Go headless and Ghost arrête being an SEO system — it’s a content API. Everything in the “handles automatically” liste ci-dessus is now the frontend’s job:
- Sitemap — generated at construire temps or by a serverless function hitting the Content API.
- Balise canonicals — injected by the frontend framework, ideally absolute URLs
from un
SITE_URL. - Meta + OG/Twitter tags — rendered via the framework’s head management
(Suivant.js
generateMetadata, Astro’s<head>, NuxtuseSeoMeta). - Données structurées (JSON-LD) — now entirely custom.
- robots.txt — served by the frontend.
- 301/302 redirections — handled in the frontend or the CDN couche.
- Core Web Vitals — Ghost’s speed advantage disappears; the framework and rendering mode now dominate performances.
The un chose que carries over: le contenu API encore renvoie the editorial
metadata vous typed into Ghost’s editor — meta_title, meta_description,
og_title, og_description, og_image, twitter_title, twitter_description,
twitter_image, and canonical_url. The données is disponible; rendering it is on
vous. Ce is the headless-CMS SEO problem in general, and it’s really a
JavaScript SEO problem — si votre frontend
defaults to rendu côté client, Googlebot has to queue lune page pour a plus tard
render wave. AI-crawler rendering varies by provider, so render on le serveur or
at construire temps (SSR/SSG) to maximize coverage.
Gated content and ce que Google peut voir
Ghost supports three visibility levels: public, members-free (email requis), and members-paid (subscription). The crucial point pour le SEO is que gated content is blocked server-side, pas by sniffing the utilisateur agent. As Ghost’s propre team put it: “Google can’t explorer protected content on votre page, parce que that’s seulement ever disponible to logged in members.” Google obtient exactly the même restricted view a logged-out reader obtient.
Two realistic strategies:
- Public preview. Montrer an intro / premier few paragraphs publicly and gate the rest. Ghost has a native public-preview fonctionnalité pour ce — the public portion fait the ranking fonctionner.
- Metered accès. Third-party implementations autoriser N free articles avant requiring registration.
Si vous do gate content, Google supports paywalled markup — NewsArticle with
isAccessibleForFree: false and a hasPart/cssSelector describing the gated
region — but Ghost doesn’t generate ce automatically; it’s manual code
injection. And the hard rule soit façon: don’t cloak. Showing Googlebot the complet
article pendant que readers hit a paywall violates Google’s guidelines and risks a manual
action. The honest framing is que public content ranks and gated content converts —
don’t expect locked posts to bring search trafic.
Ghost Pro vs self-hosted
The SEO software is identical on les deux — même Ghost, même fonctionnalités. The difference is infrastructure contrôler:
- Ghost Pro — managed hosting with a built-in CDN, automatic SSL, and backups.
The CDN helps TTFB and Core Web Vitals pour distributed audiences. The catch:
vous pouvez’t directement override
robots.txt— vous have to contact prise en charge. That’s a réel constraint pour headless or private-mode setups. - Self-hosted — complet contrôler of le serveur, headers, mise en cache,
robots.txt, server-level redirections, and votre propre CDN (Cloudflare is the courant pick). Plus flexibility pour avancé SEO technique, plus to manage.
Neither is “better for SEO” inherently — Ghost Pro buys vous a CDN, self-hosting buys vous contrôler.
Courant pitfalls
- Thin tag/author archives. Ghost auto-creates
/tag/slug/and/author/slug/pages. Granular tags or single-post authors generate thin pages — considérer noindexing the low-value ones. - Preview-URL indexation. Older Ghost versions pourrait leak draft preview URLs to Googlebot via third-party scripts chargement on preview pages (since fixed in core — voir GitHub problème #9749). Vérifier preview pages aren’t indexé on older installs.
/ghost/accidentally exposed. Confirmer the par défautrobots.txtdisallow on the admin chemin hasn’t been overridden.- Contenu dupliqué from custom collections.
routes.yamlcollections peut créer alternate URL paths pour the même content. Ghost canonicalizes its par défaut structure; custom routing peut créer duplicates si vous don’t manage canonicals explicitly. - Manquant custom canonical on syndicated/guest posts. Si vous republish content
from elsewhere, définir
canonical_urlper post (editor or API) to point at the original — the fonctionnalité seulement exists since March 2019. - Headless pre-launch indexation. A public headless frontend deployed avant launch
sans its propre
robots.txtpeut obtenir indexé prematurely. Ghost’s propre “private” mode sendsDisallow: /, but que protects the Ghost instance, pas votre separate frontend.
Ghost vs WordPress, briefly
Ghost donne vous plus SEO out of the box with zero configuration and is faster by par défaut (Ghost’s propre benchmark claims it’s “up to 1,900% faster than WordPress” — treat que as a vendor figure, but the direction is réel: minimal JS, strong CWV baseline). WordPress’s ceiling is plus élevé with the correct plugins — schema, redirection managers, SEO programmatique — but its plugin-heavy norm souvent hurts performances. Ghost suits publishers who vouloir to écrire sans SEO-plugin overhead; WordPress suits complex sites needing avancé schema or grand integrations. “Faster, therefore ranks meilleur” is an oversimplification — Core Web Vitals is un factor among nombreux, and headless Ghost’s speed dépend entirely on the frontend, pas Ghost.
AI summary
A condensed prendre on the Avancé version:
- Ghost SEO forks on un decision: traditional (Handlebars) mode vs. headless (Content API). The mode is the unique biggest determinant of Ghost’s SEO footprint.
- Traditional Ghost ships core SEO automatically, aucun plugin: sitemap at
/sitemap.xml, self-referencing canonicals (+ custom canonical per post since March 2019), meta title/description with fallbacks, OG/Twitter cards, Article JSON-LD, clean URLs, and arobots.txtque disallows/ghost/. It’s aussi fast by par défaut. - Headless Ghost loses tout of it. Le contenu API encore renvoie the metadata fields, but the frontend doit rebuild sitemap, canonicals, meta tags, structured données, robots.txt, redirections — and Ghost’s speed advantage disappears. Render SSR/SSG, pas CSR (AI-crawler rendering prise en charge varies by provider).
- Gaps in les deux modes: aucun breadcrumb/FAQ/Product schema, aucun hreflang, aucun per-post noindex toggle, aucun IndexNow, aucun redirection UI. Some are deliberate — Ghost rejects Yoast-style keyword outils as “writing for machines.”
- Gated content can’t be indexé — it’s blocked server-side, so Google sees ce que a logged-out reader sees. Utiliser a public preview to rank; gate the rest to convert. Don’t cloak.
- Ghost Pro vs self-hosted: identical SEO fonctionnalités; Pro adds a CDN but locks
robots.txtbehind prise en charge; self-hosting donne complet contrôler. - Pitfalls: thin tag/author archives, preview-URL indexation on old versions,
contenu dupliqué from custom
routes.yamlcollections, manquant custom canonicals on syndicated posts.
Documentation officielle
Primary-source documentation from the moteur de recherches and from Ghost itself.
- Comprendre JavaScript SEO Basics — s’applique directement to headless Ghost: the explorer → render → index pipeline and pourquoi CSR content is seen late.
- Enable Subscription and Paywalled Content —
NewsArticle+isAccessibleForFree+hasPart/cssSelectorpour gated content. - Block Search Indexation with noindex — the
noindexmeta tag andX-Robots-Tagheader pour previews and the admin chemin. - Sitemaps Overview — ce que to submit; Ghost auto-generates un in traditional mode.
Bing / Microsoft
- Bing Webmaster Outils — Submit Sitemaps — submit Ghost’s
/sitemap.xmldirectement. - IndexNow / indexnow.org — the push protocol Ghost has aucun native prise en charge pour; wire it to a publish webhook.
Ghost (official)
- Ghost Aider — SEO — the canonical liste of ce que Ghost handles automatically.
- Ghost Developer Docs — Architecture — Ghost as a CMS headless, agnostic of quelconque frontend.
- Ghost Docs — URLs & Routing —
routes.yaml, collections, and custom Structure d’URL. - Ghost Changelog — Custom URL canoniques — the March 2019 per-post canonical fonctionnalité.
- Ghost Resources — SEO pour Membership Websites — Ghost’s propre prendre on gated-content SEO.
Quotes from the source
On-the-record statements from Ghost’s docs and team. Chaque lien is a deep lien que jumps to the quoted passage on the source page.
Ghost — built-in SEO fonctionnalités
- “Ghost automatically creates and updates an XML sitemap for your website to help search engines understand the structure of your site and find all of its content.” — Ghost Aider Docs. Jump to quote
- “Ghost adds canonical tags across your site to tell search engines which version of a page they should consider the ‘official’ one. This helps prevent problems with duplicate content.” — Ghost Aider Docs. Jump to quote
- “Ghost automatically includes structured data in all posts and pages. This helps search engines understand the content and context of your pages.” — Ghost Aider Docs. Jump to quote
Ghost — headless architecture
- “Ghost is a full headless CMS which is completely agnostic of any particular front end or static site framework.” — Ghost Developer Docs. Jump to quote
Ghost — gated content and exploration
- “Google can’t crawl protected content on your page, because that’s only ever available to logged in members.” — Kym, Ghost team, Ghost Forum. Jump to quote
Ghost — custom URL canoniques (March 2019)
- The fonctionnalité lets vous “implement custom canonical links directly in the Ghost editor for guest posts, multiple versions of the same page or when you need to curate a list of links to external sources.” — Ghost Changelog. Jump to quote
Ghost — on avancé SEO fonctionnalités (team réponse)
- “one of the downsides of using Yoast’s KW optimisation suggestions is that is encourages us to write meta data for machines instead of humans.” — Ghost team, Ghost Forum. Jump to quote
- On a wishlist of avancé SEO fonctionnalités (breadcrumb schema, hreflang, noindex contrôle): “This isn’t on our radar at the moment.” — Ghost team, Ghost Forum. Jump to quote
Ghost — performances (vendor benchmark)
- “Independent tests have found Ghost to be up to 1,900% faster than WordPress.” — Ghost vs WordPress page. Jump to quote
Two checklists: traditional Ghost + headless Ghost
Traditional Ghost — vérifier post-launch
-
/sitemap.xmlresolves and is submitted to Recherche Google Console and Bing Webmaster Outils. -
robots.txtencore disallows/ghost/and isn’t blocking anything vous vouloir indexé. - Balise canonicals render on posts/pages; syndicated or guest posts have a
custom
canonical_urldéfinir. - Meta titles/descriptions are définir (or the title/excerpt fallbacks are acceptable).
- OG/Twitter cards preview correctement quand a post is shared.
- Article JSON-LD validates in the Résultats enrichis Tester.
- Thin
/tag/and/author/archives are reviewed — noindex the low-value ones. - Members-only posts have a public preview si vous vouloir les to attract search trafic.
- Quelconque avancé schema vous besoin (breadcrumb, FAQ, Product) is ajouté via code injection — Ghost won’t generate it.
Headless Ghost — complet implementation checklist
- Frontend renders content as SSR or SSG, pas CSR (raw HTML maximizes AI-crawler coverage).
- Sitemap generated from le contenu API and kept fresh.
- Balise canonicals rendered as absolute URLs from un
SITE_URLat the rendering couche. - Meta title/description/OG/Twitter pulled from le contenu API fields and mapped
into the
<head>. - JSON-LD données structurées rebuilt in the frontend.
-
robots.txtserved by the frontend and ne fait pas block.js/.css. - 301/302 redirections handled in the frontend or CDN couche.
- Preview/branch deploys retourner a host-level
noindexheader. - Core Web Vitals mesuré — Ghost’s speed advantage is gone; the framework owns it now.
- IndexNow wired to the publish webhook pour Bing and others.
The mental models
1. The mode is the product. Avant quelconque Ghost SEO conversation, réponse un question: is ce traditional or headless? Traditional Ghost is a near-complete SEO system. Headless Ghost is a bare content API. Almost every Ghost SEO question resolves to qui un you’re on.
2. “Headless means rebuild everything.” Every automatic traditional-mode behavior — sitemap, canonicals, meta tags, OG cards, JSON-LD, robots.txt — is now a deliberate construire step in votre frontend. Le contenu API hands vous the données; rendering it is on vous. Si something’s “missing” in a headless construire, it usually signifie a built-in behavior was jamais re-implemented.
3. Ghost covers the core, pas the extras. In les deux modes, Ghost donne vous Article schema and arrête. Breadcrumb, FAQ, HowTo, Product, hreflang, per-post noindex, IndexNow — none are construit in. Plan pour code injection or third-party outils si votre niche nécessite les.
4. Public ranks, gated converts. Members-only content is invisible to moteur de recherches by design. Don’t fight it — utiliser a public preview to do the ranking and the gate to do the converting. Jamais cloak to montrer Google plus que readers voir.
5. Pro vs self-hosted is an infrastructure decision, pas an SEO-feature un.
The SEO software is identical. Choisir on contrôler: Ghost Pro donne vous a CDN but locks
robots.txt; self-hosting donne vous complet server contrôler and votre propre CDN.
Ghost SEO — cheat sheet
Traditional vs headless: ce que vous obtenir
| Fonctionnalité | Traditional (Handlebars) | Headless (Content API) |
|---|---|---|
| XML sitemap | ✅ Auto at /sitemap.xml | ❌ Construire it yourself |
| Balise canonicals | ✅ Auto + custom per post | ❌ Render in frontend |
| Meta title/description | ✅ With fallbacks | ⚠️ API renvoie données; vous render it |
| OG / Twitter cards | ✅ Auto | ⚠️ API renvoie données; vous render it |
| Article JSON-LD | ✅ Auto | ❌ Rebuild it |
| robots.txt | ✅ Par défaut (disallows /ghost/) | ❌ Serve from frontend |
| Speed / Core Web Vitals | ✅ Fast by par défaut | ⚠️ Dépend on votre framework |
Jamais construit in (soit mode)
- Breadcrumb / FAQ / HowTo / Product / Recipe / Video schema → code injection
- Hreflang / international SEO → Weglot, ConveyThis, or theme fonctionner
- Per-post noindex toggle → code injection
- IndexNow → custom webhook on publish
- Redirection UI →
redirects.yaml(self-hosted) or Ghost Pro’s manager
Gated content rules
- Members-only content is blocked server-side → pas indexable.
- Utiliser the public preview fonctionnalité to expose a rankable teaser.
- Paywalled schema (
NewsArticle+isAccessibleForFree: false) is pas auto — code injection. - Jamais cloak (complet content to Googlebot, paywall to utilisateurs) → manual-action risk.
Pro vs self-hosted
- Même SEO fonctionnalités on les deux.
- Ghost Pro: CDN inclus;
robots.txtmodifier exige contacting prise en charge. - Self-hosted: complet contrôler of robots.txt, headers, redirections, votre propre CDN.
Sample Ghost posts from le sitemap
Download the relevant sitemap premier, extract a representative URL liste to urls.txt,
alors inspect ce que the theme or headless frontend publishes:
while IFS= read -r url; do
html=$(mktemp)
status=$(curl -sSL -o "$html" -w '%{http_code}' "$url")
canonical=$(grep -Eio '<link[^>]+rel=["'"']canonical["'"'][^>]*>' "$html" | head -1)
robots=$(grep -Eio '<meta[^>]+name=["'"']robots["'"'][^>]*>' "$html" | head -1)
printf '%s\t%s\t%s\t%s\n' "$status" "$url" "$canonical" "$robots"
rm -f "$html"
done < urls.txtInclure public, gated, tag, author, and recently redirigé exemples. Ce checks the public output sans putting a Ghost Content API clé into the script.
Outils pour Ghost SEO
- Inspection d’URL (Recherche Google Console) — voir how a Ghost page was crawled and rendered. Essential on headless builds pour catching CSR gaps où content didn’t faire it into the rendered HTML.
- Résultats enrichis Tester — confirmer Ghost’s auto Article JSON-LD (traditional) or votre custom JSON-LD (headless) is présent and valid après quelconque theme or rendering modifier.
- Bing Webmaster Outils — submit Ghost’s sitemap, watch indexation, and où IndexNow submissions land.
- Screaming Frog SEO Spider — explorer le site to surface thin tag/author archives, chaîne de redirectionss, and (on headless) raw-vs-rendered HTML differences.
- Ahrefs Site Audit — surfaces broken canonicals, manquant metadata, and
indexability problèmes à travers the whole site; utile pour spotting contenu dupliqué
from custom
routes.yamlcollections. - Ghost editor metadata panel — the per-post placer to définir custom title, description, OG/Twitter overrides, and the custom URL canonique.
Ghost SEO mistakes to éviter
Concrete mistakes personnes en réalité faire running Ghost — prevention, pas diagnosis.
Treating traditional and headless Ghost as the même SEO problem. Pourquoi it’s incorrect: traditional Ghost ships a sitemap, canonicals, meta tags, OG/Twitter cards, and Article JSON-LD automatically; headless Ghost is a bare content API with none of que. Advice written pour un mode is souvent actively incorrect pour the autre. Que faire à la place: avant touching anything, confirmer qui mode you’re on, alors follow the matching checklist ci-dessus.
Expecting members-only content to bring in search trafic. Pourquoi it’s incorrect: Ghost blocks gated content server-side, so Google obtient exactly the même restricted view a logged-out visitor obtient — there’s aucun content to index. Que faire à la place: publish a public preview or teaser en utilisant Ghost’s native public-preview fonctionnalité and let que piece do the ranking fonctionner; utiliser the gate to convert readers who arrive via it.
Cloaking to fonctionner autour the gate.
Pourquoi it’s incorrect: showing Googlebot the complet article pendant que readers hit a paywall
violates Google’s guidelines and risks a manual action — it’s pas a clever
workaround, it’s a policy violation.
Que faire à la place: si vous besoin gated content to be discoverable, utiliser Google’s
paywalled-content markup (NewsArticle with isAccessibleForFree: false and a
hasPart/cssSelector pour the gated region) — ajouté via code injection, since
Ghost doesn’t generate it — plutôt que serving différent HTML to the robot d’exploration.
Republishing or guest-posting content sans setting a custom canonical.
Pourquoi it’s incorrect: Ghost’s par défaut canonical is self-referencing, so a syndicated or
guest post left as-is indique moteur de recherches it is the original, competing with the
source.
Que faire à la place: définir the per-post canonical_url in the editor’s metadata panel
(or via the Admin API) to point at the original — the fonctionnalité has existed since
March 2019.
Shipping a headless frontend que renders content client-side. Pourquoi it’s incorrect: Googlebot has to queue CSR pages pour a plus tard render réussir, pendant que AI-crawler rendering contracts vary by provider — content que seulement exists après a client-side récupérer peut be invisible to HTML-only fetchers. Que faire à la place: render on le serveur or at construire temps (SSR/SSG) in whatever framework pulls from le contenu API, and vérifier with GSC’s Inspection d’URL outil que the rendered HTML en réalité contient le contenu.
Assuming Ghost Pro donne vous the même infrastructure contrôler as self-hosting.
Pourquoi it’s incorrect: the SEO software is identical on les deux, but Ghost Pro doesn’t let
vous directement edit robots.txt — vous have to contact prise en charge, qui is a réel
constraint si vous besoin a fast robots.txt modifier pour a headless or private-mode
setup.
Que faire à la place: factor que support-ticket lag into quelconque launch plan on Ghost
Pro, or self-host si vous devez modifier robots.txt yourself on short notice.
Qui Ghost SEO chemin s’applique to vous?
The branch que matters la plupart is traditional vs. headless — and, à l’intérieur headless, si the frontend renders server-side. Réponse honestly; the incorrect branch leads to fonctionner que doesn’t appliquer to votre setup.
What does my Ghost setup need for SEO?
Ready-to-copy prompts pour Ghost SEO tasks
Paste the specified input into an AI assistant and vérifier the output contre the guidance ci-dessus avant acting on it.
1. Audit a headless Ghost frontend pour manquant SEO fields. Ce que to paste in: the rendered HTML of un page from votre headless frontend (view source or the DOM après JS runs), plus le contenu API réponse pour que même post.
I'm running Ghost as a headless CMS. Here is the Content API response for a post,
followed by the final rendered HTML of that post's page on my frontend.
[paste Content API JSON response]
[paste rendered HTML]
Compare them and tell me which of these are present in the rendered HTML and
correctly populated from the API data: canonical tag, meta title, meta description,
Open Graph tags, Twitter Card tags, and Article JSON-LD structured data. List
anything missing or mismatched.What to expect back: a field-by-field checklist flagging any of the six items that
are absent from the rendered HTML or don’t match the API’s meta_title,
canonical_url, etc. — confirm any flagged gap manually before fixing it.
2. Draft Article JSON-LD pour a headless Ghost post. Ce que to paste in: le contenu API fields pour un post (title, excerpt, publié date, mis à jour date, author, fonctionnalité image URL, URL canonique).
Using this Ghost Content API data for a blog post, write valid Article JSON-LD
structured data I can inject into my headless frontend's <head>. Include
headline, datePublished, dateModified, author, publisher, and image.
[paste post JSON: title, excerpt, published_at, updated_at, primary_author, feature_image, canonical_url]What to expect back: a single <script type="application/ld+json"> block — validate
it in Google’s Rich Results Test before shipping, since the model can mis-map a
field or omit a required property.
3. Vérifier a syndicated/guest post pour a manquant custom canonical.
Ce que to paste in: the post’s slug, its canonical_url field (or “not set”), and the
URL of the original source it was republished from.
This is a guest post or syndicated republish on my Ghost site. Here's the post
slug, its current canonical_url setting, and the URL of the original source.
Slug: [slug]
Current canonical_url: [value or "not set"]
Original source URL: [URL]
Tell me whether the canonical is set correctly to point at the original, and if
not, what canonical_url value I should set in the Ghost editor's metadata panel.What to expect back: a yes/no on whether the canonical is correct, plus the exact URL to paste into the custom canonical field if it isn’t.
Testez vos connaissances: Ghost SEO
Five rapide questions on how SEO fonctionne on Ghost CMS. Pick an réponse pour chaque, alors vérifier.
Ressources utiles
My connexe writing
- The Beginner’s Guide to SEO technique — où platform and CMS SEO fit in the bigger picture.
- JavaScript SEO Problèmes & Meilleur Practices — the rendering side que headless Ghost turns into; rendering modes, metadata, JS canonicals, and the robots.txt
.js/.cssrule. - Robots.txt and SEO: Everything Vous devez Know — relevant to Ghost’s par défaut
/ghost/disallow and the Ghost Pro robots.txt constraint.
My speaking
- How Search Fonctionne (SlideShare) — exploration, rendering, indexation, and ranking — the pipeline gated and headless Ghost content has to survive. (Standing disclaimer: “This is my understanding of systems… not going to be 100% complete or accurate.”)
From autour the industry
- Ghost Aider — SEO — Ghost’s propre liste of ce que it handles automatically; the canonical principal source.
- Ghost Developer Docs — Architecture — Ghost as a CMS headless and how the decoupled API/frontend split fonctionne.
- En utilisant Ghost as a CMS headless with Suivant.js (Draft.dev) — a concrete walkthrough of the headless setup whose SEO you’d have to rebuild.
- Ghost Blog SEO: my experiences and results (Norbert Hires) — a practitioner’s first-party données and honest limitations from running Ghost.
- Balisage de données structurées in Ghost (Bright Themes) — how to ajouter the avancé schema Ghost doesn’t generate.
- Breadcrumbs in Ghost (Bright Themes) — implementing breadcrumb schema Ghost leaves out.
- Taking Contrôler of Données structurées in Ghost (ashryan.io) — overriding and extending Ghost’s par défaut JSON-LD.
- r/TechSEO — the community pour explorer/index/render debugging que headless Ghost questions land in.