Guide Storyblok SEO

Storyblok est a visual CMS headless — il stores contenu mais jamais renders votre pages, donc SEO lives dans le frontend. Rendu, meta champs, preview noindex, sitemaps, images.

Première publication : 27 juin 2026 · Dernière mise à jour : 3 août 2026 · Avancé
1 indice probant sur cette page

Storyblok est a visual CMS headless: il stores bloquer-based contenu et sert il over REST/GraphQL, mais il jamais renders votre pages — votre frontend framework fait, donc SEO résultats sont presque entirely a frontend décision. SSG et SSR sont sûr; CSR risques vide HTML et delayed indexation. Le built-dans SEO Champs App et AI SEO App seulement ajouter champs; le frontend doit encore rendre meta balises, canonicals, sitemaps, robots.txt, et JSON-LD itself. Le plateforme-spécifique trap est preview mode — bloquer draft/preview environments avec serveur-rendu noindex headers, jamais JavaScript. Utiliser le /m/ image service pour WebP et Core Web Vitals, et lean on Storyblok's structured contenu pour AI recherche.

TL;DR — Storyblok est a visual, API-premier CMS headless: il stores bloquer-based contenu et sert il over REST/GraphQL, mais il jamais renders votre pages — le frontend framework fait, donc SEO est a frontend décision. SSG et SSR ship fully-rendu HTML et sont sûr; CSR risques vide HTML et queued-rendre delays. Le built-dans SEO Champs App (seo-metatags) et AI SEO App (sb_ai_seo) seulement supply champ valeurs — le frontend doit encore rendre meta balises, canonicals, sitemaps, robots.txt, et JSON-LD itself. Le plateforme-spécifique trap est preview mode: bloquer draft/preview environments avec serveur-rendu X-Robots-Balise: noindex, jamais JavaScript, parce que Google peut skip JS execution quand il voit a noindex. Utiliser le /m/ image service pour WebP + Core Web Vitals, generate le sitemap depuis le contenu Delivery API, et lean on le structured contenu model pour AI recherche.

Preuve à l’appui de cette affirmation The article's described storyblok-seo capabilities must be evaluated against the platform's current documentation rather than assumed to be search-engine behavior. Portée : Platform-specific capability documentation. Niveau de confiance : élevé · Vérifié : Storyblok documentation Preuve à l’appui de cette affirmation Regardless of platform, Google needs crawlable URLs, accessible rendered content, descriptive metadata, and valid search directives. Portée : Google requirements independent of platform. Niveau de confiance : élevé · Vérifié : Google Search Central: SEO Starter Guide

Le fundamental split: Storyblok stores, le frontend renders

Storyblok est a backend. Il donne vous a contenu model construit depuis reusable bloque, a visual editor, et a Contenu Delivery API (REST et GraphQL). Ce que il fait pas faire est produce le HTML que moteur de recherches explorer. Que job belongs à a séparé frontend — Suivant.js, Nuxt, Astro, SvelteKit — que récupère Storyblok contenu et renders pages.

Storyblok dit ce plainly: “Since Google ne fait pas charger contenu directement depuis Storyblok, votre team est responsible pour a rapide et performant site web.” Le même point montre up dans leur structured-contenu guidance — “AI ne fait pas voir votre CMS directement. Moteur de recherches et generative models lire qu’est-ce que rendu on votre site web or app, pas le JSON coming depuis Storyblok’s APIs.” Internalize que et presque chaque Storyblok SEO question réponses itself: le CMS est nearly SEO-neutral, et le frontend’s rendu decisions determine tout. Ce est le même architecture reality Je cover dans SEO pour a CMS headless; Storyblok est a spécifique, visual-editing flavor de il.

Rendering strategy: the la plupart important SEO decision

Comment votre frontend renders Storyblok contenu est le unique biggest SEO lever. Four modes, tout de qui récupérer contenu depuis le même Storyblok CDN/GraphQL API:

SSG — Static Site Generation. HTML est construit à deploy temps et servi as static fichiers. Meilleur-case SEO: complet HTML on premier requête, very rapide. Le catch est freshness — nouveau or edited contenu nécessite a rebuild, donc wire Storyblok’s publish webhook à trigger un. Meilleur pour mostly-static contenu. Astro et Gatsby sont SSG-premier; Suivant.js et Nuxt prise en charge il per route.

SSR — Rendu côté serveur. HTML est rendu per requête on a serveur or edge function. Toujours-fresh, fully-rendu HTML. Meilleur pour frequently modification contenu; le tradeoff est infrastructure coût et slightly plus élevé TTFB.

«ISR — Incremental Static Regeneration. Static by default, regenerated on a schedule or on-demand. The recommended middle ground for large Storyblok sites with mixed content types — but note the stale-on-first-request-after-revalidation trap I detail in the headless CMS write-up. » (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.)

«CSR — Client-Side Rendering (SPA). The server sends a near-empty shell and the browser builds the DOM. Googlebot must queue the page for a later render wave (which “may stay on this queue for a few seconds, but it can take longer than that”). AI-crawler rendering varies by provider, so HTML-only fetchers see only the shell. Never ship content pages as CSR-only. Google’s own line: “If the content isn’t visible in the rendered HTML, Google won’t be able to index it.” » (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.)

Le décision règle: mostly-static contenu → SSG; toujours-fresh/volatile contenu → SSR; grand mixed sites → ISR; CSR seulement pour logged-dans, non-indexé surfaces.

Built-in Storyblok SEO fonctionnalités (and leur limites)

Storyblok ships three façons to manage SEO field valeurs. Tout three seulement capture valeurs — the frontend encore has to render les.

SEO Champs App (seo-metatags). A native plugin champ que donne editors Titre, Description, OG Titre, OG Description, et OG Image inputs, plus a Google SERP extrait preview dans le editor. Exige a Growth plan, et il a à être ajouté per contenu type — facile à forget on a nouveau contenu type.

AI SEO App (sb_ai_seo). Generates meta titre, description, mots-clés, et author avec an LLM, à travers 22 pris en charge languages. Exige Premium. Vous pouvez bulk-generate à travers tout stories avec a Management API + Node.js script.

Manual champ modeling. Aucun plan requirement: ajouter votre propre seo_title, seo_description, og_title, og_image, noindex (boolean), et canonical_url champs à votre contenu model. La plupart flexible, et ce que je voudrais reach pour on complexe sites.

Le non-negotiable: aucun Storyblok app auto-renders a unique balise. A mondial head/ layout component dans votre framework doit lire le SEO champ valeurs depuis le API réponse et sortie les serveur-side, avec sensible fallback chains (seo_title || story.name).

Balise canonicals

Storyblok a aucun awareness de votre frontend Structure d’URL, donc canonicals ne peut pas come depuis le CMS. Compute les dans le frontend — typically depuis le story’s full_slug plus votre domain — et rendre les serveur-side. Toujours absolute URLs, jamais relative, on chaque page template. (Pour le mechanics, voir canonicalization.)

Preview mode et draft contenu: le defining Storyblok risque

Ce est le plateforme-spécifique pitfall à obtenir correct. Le Visual Editor charge votre pages à l’intérieur an iframe en utilisant preview URLs que carry _storyblok et _storyblok_tk parameters, et le preview environment utilise draft contenu avec a preview accès token. Production doit utiliser publié contenu avec le public accès token. Le clean modèle est deux séparé Storyblok spaces/projects (preview et production) donc le incorrect token ne peut pas leak draft contenu dans le actif indexer.

«The critical part is how you keep preview/staging out of the index. Google warns: “When Google encounters the noindex tag, it may skip rendering and JavaScript execution, which means using JavaScript to change or remove the robots meta tag from noindex may not work as expected.” In other words, a noindex injected by client-side JS is unreliable — Google may never run the JS. So protect non-production environments with a server-rendered response header — X-Robots-Tag: noindex at the CDN/hosting level — and add Disallow: / in that environment’s robots.txt. Watch Search Console for unexpected preview domains showing up; that’s your early warning. » (Traduction) (Résumé en français de la section quarante-deux, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«## Sitemaps and robots.txt » (Traduction) (Résumé en français de la section quarante-trois, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«Storyblok generates neither. Both are frontend-built: » (Traduction) (Résumé en français de la section quarante-quatre, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

«- Sitemap: fetch all published stories from the Content Delivery API and emit XML. Astro: @astrojs/sitemap plus dynamic routes from the Links API. Next.js: app/sitemap.ts or next-sitemap post-build. Scope with starts_with, paginate for large sites, and trigger a rebuild from the Storyblok publish webhook so the sitemap stays in sync. » (Traduction) (Résumé en français de la section quarante-cinq, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- robots.txt: also frontend-generated. Production should allow crawling of public pages; preview/staging should Disallow: / (and carry the X-Robots-Tag header above). » (Traduction) (Résumé en français de la section quarante-cinq, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.)

Données structurées / JSON-LD

Storyblok stores contenu as structured JSON, mais schema.org JSON-LD a à être generated dans le frontend — Googlebot lit le rendu HTML, pas le API réponse. Construire a JsonLd component que maps contenu champs et story properties (story.published_at, story.updated_at, story.name) dans a serveur-rendu <script type="application/ld+json">. Article, BreadcrumbList, Organization, Produit, et FAQPage sont tout implementable ce façon.

Images et Core Web Vitals

Storyblok assets sont servi via Amazon CloudFront. Le image service est a réel CWV win, mais seulement quand utilisé correctement:

  • WebP + transforms activate quand vous append /m/ à le image URL — e.g. https://a.storyblok.com/f/xxxxx/image.jpg/m/800x600. Resize, crop, qualité, et smart-crop sont tout URL parameters; résultats sont edge-cached après premier requête. Forget le /m/ et vous obtenir le unoptimized original.
  • Définir width et height on chaque image à empêcher layout shift (CLS).
  • fetchpriority="high" + loading="eager" on le LCP hero image; loading="lazy" ci-dessous le fold.
  • Ajouter alt texte as an explicit champ on chaque image component — le filename champ n’est pas texte alternatif. (Voir texte alternatif.)

Redirections, i18n, and hreflang

Redirections. Storyblok a aucun redirection manager, et modification a slug fait pas créer a 301. Modèle: a redirects_config story avec nestable redirect_entry bloque (source_url, target_story), récupéré à construire/requête temps et injected dans framework routing; utiliser resolve_relations donc targets mettre à jour si slugs modifier, et refresh via le publish webhook.

Internationalization. Storyblok prend en charge champ-, folder-, et space-level traduction, et API réponses inclure an alternates array de tout translated versions. Utiliser il à rendre <link rel="alternate" hreflang="..."> balises serveur-side, et toujours inclure x-default. (Voir hreflang.)

GEO / AI search readiness

Storyblok’s structured, component-based model est genuinely well-suited à AI consumption — “Storyblok était construit autour données structurées depuis day un, thanks à son headless, API-premier design.” Mais le rendu règle encore règles: LLMs lire rendu HTML, donc SSR/SSG, correct JSON-LD, et clean semantic markup sont le price de entry. Vous pouvez aussi generate llms.txt (a markdown indexer de clé pages) et llms-full.txt (a complet contenu archive) à le frontend. (Voir AI recherche et llms.txt.)

L’essentiel

Storyblok est aucun bon nor mauvais pour le SEO — c’est neutral, et il shifts le entier SEO burden sur le frontend. Obtenir rendu correct (SSR/SSG), rendre le meta champs le SEO apps capture, protéger preview avec serveur-side noindex, construire le sitemap et robots.txt yourself, et utiliser le /m/ image service. Faire que et a Storyblok site peut outperform a neglected traditional CMS. Skip il et le manquant-par-default SEO couche est exactly où le site quietly falls apart. Connexe reading lives dans CMS headless SEO et JavaScript SEO.

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.