Guide Ghost SEO

Comment SEO fonctionne on Ghost CMS — le traditional-vs-headless fork, le SEO Ghost construit dans automatiquement, ce que il laisse à vous, gated-contenu limites, et Ghost Pro vs self-hosted.

Première publication : 27 juin 2026 · Dernière mise à jour : 3 août 2026 · Avancé

«Ghost SEO splits in two depending on how you run it. In traditional (Handlebars) mode, Ghost handles core technical SEO automatically — sitemap, canonical tags, meta tags, Open Graph, Twitter Cards, and Article JSON-LD — with zero plugins, and it's fast by default. Run Ghost headless (Content API only) and all of that disappears; the frontend has to rebuild every piece. Either way, Ghost has gaps it never fills (breadcrumb/FAQ schema, hreflang, per-post noindex toggle, IndexNow), and gated members-only content can't be indexed because it's blocked server-side. The single biggest mistake is treating traditional and headless Ghost as the same SEO problem — they aren't.» _(Traduction)_ (Résumé en français du champ tldr : le texte source est conservé pour relecture francophone.)

«> TL;DR — Ghost SEO forks on one decision: traditional (Handlebars) mode vs.

headless (Content API). Traditional Ghost ships core technical SEO automatically — sitemap, self-referencing + custom canonicals, meta tags, OG/Twitter cards, and Article JSON-LD — with no plugin, and it’s fast by default. Go headless and all of that disappears; the frontend has to rebuild every piece, and Ghost’s speed advantage evaporates because the framework now owns performance. Both modes share gaps Ghost never fills (breadcrumb/FAQ/Product schema, hreflang, per-post noindex, IndexNow, a redirect UI), and gated members-only content is blocked server-side so it can’t be indexed. Don’t conflate the two modes — they’re different problems. » (Traduction) (Résumé en français de la section vingt, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

Le fork dans le road

Ghost est a Node.js (Express) CMS avec a decoupled core: an API plus an optional Handlebars frontend. Que architecture est le entier SEO story.

  • Traditional mode — Ghost sert HTML via son Handlebars themes. Chaque built-dans SEO fonctionnalité s’applique, generated automatiquement via le theme’s {{ghost_head}} helper.
  • Headless mode — Ghost est “a complet CMS headless qui est complètement agnostic de quelconque particulier front fin or static site framework.” Vous requête le contenu API or Admin API depuis a séparé frontend (Suivant.js, Astro, Nuxt, SvelteKit), et SEO becomes 100% que frontend’s responsibility.

Le choice de mode est le unique biggest determinant de Ghost’s SEO footprint. Tout ci-dessous est organized autour il. (Pour le framework-agnostic version de le 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, updated on publish/unpublish, covering posts, pages, tags, and authors. “Ghost automatically creates and updates an XML sitemap for your website.” Preuve à l’appui de cette affirmation Ghost automatically creates and updates an XML sitemap. Portée : Traditional Ghost publication output. Niveau de confiance : élevé · Vérifié : Ghost: SEO » (Traduction) (Résumé en français de la section vingt-sept, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- Canonical tags. A self-referencing rel=canonical on every post and page — “Ghost adds canonical tags across your site to tell search engines which version of a page they should consider the ‘official’ one.” Since March 2019 you can also set a custom canonical per post in the editor’s metadata panel, or via the Admin API canonical_url field — built for “guest posts, multiple versions of the same page or when you need to curate a list of links to external sources.” Preuve à l’appui de cette affirmation Ghost outputs canonical tags and supports a custom canonical URL for a post or page. Portée : Traditional Ghost and the post/page metadata configuration. Niveau de confiance : élevé · Vérifié : Ghost: Canonical URLs » (Traduction) (Résumé en français de la section vingt-sept, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.) «- Meta title/description. Custom fields that fall back to the post title and excerpt when left blank. » (Traduction) (Résumé en français de la section vingt-sept, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.) «- Open Graph + Twitter Cards. Auto-generated from post metadata and the feature image. » (Traduction) (Résumé en français de la section vingt-sept, sous-partie quatre : le texte source est conservé pour vérification lors de la relecture francophone.) «- Structured data (JSON-LD). “Ghost automatically includes structured data in all posts and pages” — Article schema with publisher, author, headline, datePublished, dateModified, image, and keywords. » (Traduction) (Résumé en français de la section vingt-sept, sous-partie cinq : le texte source est conservé pour vérification lors de la relecture francophone.) «- Clean URLs + custom routing. Slug-based URLs by default, fully customizable via routes.yaml. » (Traduction) (Résumé en français de la section vingt-sept, sous-partie six : le texte source est conservé pour vérification lors de la relecture francophone.) «- robots.txt. A default file that disallows the /ghost/ admin path and allows everything else. » (Traduction) (Résumé en français de la section vingt-sept, sous-partie sept : le texte source est conservé pour vérification lors de la relecture francophone.)

Ce est genuinely plus que a stock WordPress install donne vous — Ghost listes “XML sitemaps, balise canonicals, optimised URLs, microformats, Facebook Ouvrir Graph balises, prise en charge pour Twitter cards et clean semantic markup” as built-dans, aucun plugin requis.

«## What Ghost never does — in either mode » (Traduction) (Résumé en français de la section vingt-neuf, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«Ghost covers the core and stops there. It does not generate: » (Traduction) (Résumé en français de la section trente, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«- Advanced schema — breadcrumb, FAQ, HowTo, Product, Recipe, or Video markup. Article schema only. Anything else is manual code injection or theme work. » (Traduction) (Résumé en français de la section trente et un, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- Hreflang / international SEO — no native support. Multi-language Ghost needs a third-party service (Weglot, ConveyThis) or theme-level implementation, and hreflang is notoriously error-prone. » (Traduction) (Résumé en français de la section trente et un, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.) «- A per-post noindex toggle in the UI — you need code injection. » (Traduction) (Résumé en français de la section trente et un, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.) «- Keyword optimization guidance. This is deliberate. Asked about adding Yoast-style tools, the Ghost team argued that “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,” and on the broader advanced-SEO wishlist (breadcrumb schema, hreflang, noindex controls) said flatly: “This isn’t on our radar at the moment.” » (Traduction) (Résumé en français de la section trente et un, sous-partie quatre : le texte source est conservé pour vérification lors de la relecture francophone.) «- IndexNow — no native support; wire it via a custom webhook on publish if you want Bing/others notified instantly. » (Traduction) (Résumé en français de la section trente et un, sous-partie cinq : le texte source est conservé pour vérification lors de la relecture francophone.) «- A redirect-management UI — redirects live in redirects.yaml (self-hosted) or Ghost Pro’s redirect manager; there’s no plugin ecosystem to lean on. » (Traduction) (Résumé en français de la section trente et un, sous-partie six : le texte source est conservé pour vérification lors de la relecture francophone.)

«## Headless Ghost: the SEO you have to rebuild » (Traduction) (Résumé en français de la section trente-deux, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«Go headless and Ghost stops being an SEO system — it’s a content API. Everything in the “handles automatically” list above is now the frontend’s job: » (Traduction) (Résumé en français de la section trente-trois, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«- Sitemap — generated at build time or by a serverless function hitting the Content API. » (Traduction) (Résumé en français de la section trente-quatre, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- Canonical tags — injected by the frontend framework, ideally absolute URLs from one SITE_URL. » (Traduction) (Résumé en français de la section trente-quatre, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.) «- Meta + OG/Twitter tags — rendered via the framework’s head management (Next.js generateMetadata, Astro’s <head>, Nuxt useSeoMeta). » (Traduction) (Résumé en français de la section trente-quatre, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.) «- Structured data (JSON-LD) — now entirely custom. » (Traduction) (Résumé en français de la section trente-quatre, sous-partie quatre : le texte source est conservé pour vérification lors de la relecture francophone.) «- robots.txt — served by the frontend. » (Traduction) (Résumé en français de la section trente-quatre, sous-partie cinq : le texte source est conservé pour vérification lors de la relecture francophone.) «- 301/302 redirects — handled in the frontend or the CDN layer. » (Traduction) (Résumé en français de la section trente-quatre, sous-partie six : le texte source est conservé pour vérification lors de la relecture francophone.) «- Core Web Vitals — Ghost’s speed advantage disappears; the framework and rendering mode now dominate performance. » (Traduction) (Résumé en français de la section trente-quatre, sous-partie sept : le texte source est conservé pour vérification lors de la relecture francophone.)

«The one thing that carries over: the Content API still returns the editorial metadata you 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 data is available; rendering it is on you. This is the headless-CMS SEO problem in general, and it’s really a JavaScript SEO problem — if your frontend defaults to client-side rendering, Googlebot has to queue the page for a later render wave. AI-crawler rendering varies by provider, so render on the server or at build time (SSR/SSG) to maximize coverage. » (Traduction) (Résumé en français de la section trente-cinq, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«## Gated content and what Google can see » (Traduction) (Résumé en français de la section trente-sept, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«Ghost supports three visibility levels: public, members-free (email required), and members-paid (subscription). The crucial point for SEO is that gated content is blocked server-side, not by sniffing the user agent. As Ghost’s own team put it: “Google can’t crawl protected content on your page, because that’s only ever available to logged in members.” Google gets exactly the same restricted view a logged-out reader gets. » (Traduction) (Résumé en français de la section trente-huit, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

Two realistic strategies:

  1. Public preview. Montrer an intro / premier quelques paragraphs publicly et gate le rest. Ghost a a native public-preview fonctionnalité pour ce — le public portion fait le classement fonctionner.
  2. Metered accès. Tiers implementations autoriser N gratuit articles avant requiring registration.

Si vous faire gate contenu, Google prend en charge paywalled markup — NewsArticle avec isAccessibleForFree: false et a hasPart/cssSelector describing le gated region — mais Ghost ne fait pas generate ce automatiquement; c’est manual code injection. Et le difficile règle soit façon: ne pas cloak. Showing Googlebot le complet article pendant que lecteurs hit a paywall violates Google’s guidelines et risques a manual action. Le honest framing est que public contenu se classe et gated contenu converts — ne pas expect locked posts à bring recherche trafic.

Ghost Pro vs self-hosted

Le SEO software est identical on les deux — même Ghost, même fonctionnalités. Le difference est infrastructure contrôler:

  • Ghost Pro — managed hosting avec a built-dans CDN, automatic SSL, et backups. Le CDN aide TTFB et Core Web Vitals pour distributed audiences. Le catch: vous pouvez’t directement override robots.txt — vous ont à contact prise en charge. c’est a réel constraint pour headless or privé-mode setups.
  • Self-hosted — complet contrôler de le serveur, headers, mise en cache, robots.txt, serveur-level redirections, et votre propre CDN (Cloudflare est le courant pick). Plus flexibility pour avancé SEO technique, plus à manage.

Aucun est “meilleur pour SEO” inherently — Ghost Pro buys vous a CDN, self-hosting buys vous contrôler.

Courant pitfalls

  • Thin balise/author archives. Ghost auto-crée /tag/slug/ et /author/slug/ pages. Granular balises or unique-post authors generate thin pages — considérer noindexing le faible-valeur ones.
  • Preview-URL indexation. Older Ghost versions pourrait leak draft preview URLs à Googlebot via tiers scripts chargement on preview pages (since fixed dans core — voir GitHub problème #9749). Vérifier preview pages ne sont pas indexé on older installs.
  • /ghost/ accidentally exposed. Confirmer le par défaut robots.txt disallow on le admin chemin hasn’t été overridden.
  • Contenu dupliqué depuis custom collections. routes.yaml collections peut créer alternate URL paths pour le même contenu. Ghost canonicalizes son par défaut structure; custom routing peut créer duplicates si vous ne pas manage canonicals explicitly.
  • Manquant custom canonical on syndicated/guest posts. Si vous republish contenu depuis elsewhere, définir canonical_url per post (editor or API) à point à le original — le fonctionnalité seulement exists since March 2019.
  • Headless pre-launch indexation. A public headless frontend deployed avant launch sans son propre robots.txt peut obtenir indexé prematurely. Ghost’s propre “privé” mode sends Disallow: /, mais que protège le Ghost instance, pas votre séparé frontend.
Preuve à l’appui de cette affirmation Ghost outputs canonical tags and supports a custom canonical URL for a post or page. Portée : Traditional Ghost and the post/page metadata configuration. Niveau de confiance : élevé · Vérifié : Ghost: Canonical URLs

Ghost vs WordPress, briefly

Ghost donne vous plus SEO out de le box avec zero configuration et est faster par par défaut (Ghost’s propre benchmark claims c’est “up à 1,900% faster que WordPress” — treat que as a vendor figure, mais le direction est réel: minimal JS, strong CWV baseline). WordPress’s ceiling est plus élevé avec le correct plugins — schema, redirection managers, SEO programmatique — mais son plugin-heavy norm souvent hurts performances. Ghost suits publishers qui vouloir à écrire sans SEO-plugin overhead; WordPress suits complexe sites needing avancé schema or grand integrations. “Faster, therefore se classe meilleur” est an oversimplification — Core Web Vitals est un factor parmi nombreux, et headless Ghost’s speed dépend entirely on le frontend, pas Ghost.

Ajouter une note d’expert

Épingler une citation d’expert

Nouvelle personne ? Créez son profil non revendiqué à /admin/experts/ → Épingler une citation d’expert d’abord.