Panduan Storyblok SEO
Storyblok adalah sebuah visual CMS headless — ini stores konten tetapi tidak pernah renders Anda halaman, so SEO lives di frontend. rendering, meta fields, preview noindex, sitemaps, images.
Bahasa
1 sinyal bukti di halaman ini
- Alat aktif terkaitRaw vs. Rendered HTML Checker
Storyblok adalah sebuah visual CMS headless: ini stores block-based konten dan menyajikan ini di atas REST/GraphQL, tetapi ini tidak pernah renders Anda halaman — Anda frontend framework melakukan, so SEO outcomes adalah almost entirely sebuah frontend decision. SSG dan SSR adalah safe; CSR risks empty HTML dan delayed pengindeksan. dibangun-di SEO Fields App dan AI SEO App hanya tambahkan fields; frontend harus masih render meta tags, canonicals, sitemaps, robots.txt, dan JSON-LD itself. platform-spesifik trap adalah preview mode — block draft/preview environments dengan server-rendered noindex headers, tidak pernah JavaScript. gunakan /m/ image service untuk WebP dan Core Web Vitals, dan lean pada Storyblok's structured konten untuk AI search.
Evidence for this claim The article's described storyblok-seo capabilities must be evaluated against the platform's current documentation rather than assumed to be search-engine behavior. Scope: Platform-specific capability documentation. Confidence: high · Verified: Storyblok documentation Evidence for this claim Regardless of platform, Google needs crawlable URLs, accessible rendered content, descriptive metadata, and valid search directives. Scope: Google requirements independent of platform. Confidence: high · Verified: Google Search Central: SEO Starter GuideTL;DR — Storyblok adalah sebuah “headless” (terjemahan) “headless” CMS — ini adalah place Anda write konten, not thing itu menampilkan ini. sebuah separate situs web (dibangun dengan Next.js, Nuxt, atau Astro) pulls Anda konten dan membangun actual halaman. itu berarti almost semua dari Anda SEO depends pada how itu situs web adalah dibangun, not pada Storyblok. big aturan: bangun Anda halaman pada sebuah server atau di bangun time, not entirely di pengunjung’s browser. dan meta tags, sitemap, dan robots.txt Anda’d expect sebuah CMS untuk handle? Anda memiliki untuk set itu up yourself.
What Storyblok actually adalah
Storyblok adalah sebuah visual CMS headless. “Headless” (terjemahan) “Headless” berarti ini splits two jobs itu sebuah traditional CMS like WordPress mempertahankan together: where Anda write konten dan where ini gets ditampilkan. Storyblok handles writing side — ini stores Anda konten sebagai reusable blocks dan gives editors sebuah drag-dan-drop visual editor — dan lalu hands itu konten untuk sebuah separate situs web melalui sebuah API.
situs web bagian adalah dibangun dengan sebuah framework like Next.js, Nuxt, Astro, atau SvelteKit. itu situs web fetches Anda Storyblok konten dan turns ini ke HTML itu Google dan Bing read. So when people tanyakan me “is Storyblok good for SEO?” (terjemahan) “adalah Storyblok baik untuk SEO?”, honest jawaban adalah: Storyblok itself barely affects Anda SEO — situs web Anda developers bangun pada top dari ini melakukan.
one aturan itu penting sebagian besar
When Googlebot menanyakan untuk sebuah halaman, finished HTML memiliki untuk menjadi ready. ada two safe cara untuk melakukan itu dan one risky cara:
- bangun halaman ahead dari time (SSG) — Storyblok konten adalah baked ke plain HTML files when situs deploys. Fast dan search-friendly.
- bangun halaman pada sebuah server (SSR) — server assembles full halaman untuk setiap permintaan. juga search-friendly dan selalu fresh.
- bangun halaman di browser (CSR) — server mengirim sebuah near-empty halaman dan JavaScript fills ini di afterward. ini adalah risky one.
Google dapat run JavaScript dan eventually read sebuah browser-dibangun halaman, tetapi ini happens later dan less reliably — dan sebagian besar AI crawler ( bot behind ChatGPT dan Perplexity) don’t run JavaScript di semua. mereka hanya see empty halaman. So bangun Anda HTML pada server atau di bangun time.
stuff Storyblok won’t melakukan untuk Anda
di WordPress, sebuah plugin like Yoast quietly handled Anda tag judul, meta deskripsi, sitemap, dan tag canonical. Storyblok memiliki no plugin layer doing itu. Storyblok melakukan offer sebuah SEO Fields App itu menambahkan judul/deskripsi boxes untuk editors untuk fill di — tetapi bahkan lalu, Anda developer memiliki untuk membuat situs web actually output itu nilai ke halaman. Nothing adalah automatic. Anda’ll perlu someone untuk:
- tambahkan SEO fields (judul, deskripsi, etc.) untuk Anda konten.
- Wire itu fields ke halaman’s
<head>. - bangun sitemap dan sebuah robots.txt di frontend.
- tambahkan data terstruktur (schema) di frontend.
thing itu quietly breaks: preview halaman
Storyblok’s visual editor previews Anda halaman pada sebuah separate preview address. jika
itu preview situs adalah reachable oleh Google, ini dapat get terindeks — dan now Anda’ve got sebuah
duplicate, draft copy dari Anda situs di search. fix adalah untuk block preview/staging
dari pengindeksan menggunakan sebuah server-tingkat noindex, not sebuah JavaScript one (more pada why
itu distinction penting di Advanced tab).
ingin full versi — four rendering modes, SEO Fields App vs. AI SEO
App, preview noindex trap, sitemaps, /m/ image trick, dan AI search?
Switch untuk Advanced tab.
Evidence for this claim The article's described storyblok-seo capabilities must be evaluated against the platform's current documentation rather than assumed to be search-engine behavior. Scope: Platform-specific capability documentation. Confidence: high · Verified: Storyblok documentation Evidence for this claim Regardless of platform, Google needs crawlable URLs, accessible rendered content, descriptive metadata, and valid search directives. Scope: Google requirements independent of platform. Confidence: high · Verified: Google Search Central: SEO Starter GuideTL;DR — Storyblok adalah sebuah visual, API-pertama CMS headless: ini stores block-based konten dan menyajikan ini di atas REST/GraphQL, tetapi ini tidak pernah renders Anda halaman — frontend framework melakukan, so SEO adalah sebuah frontend decision. SSG dan SSR ship fully-rendered HTML dan adalah safe; CSR risks empty HTML dan queued-render delays. dibangun-di SEO Fields App (
seo-metatags) dan AI SEO App (sb_ai_seo) hanya supply field nilai — frontend harus masih render meta tags, canonicals, sitemaps, robots.txt, dan JSON-LD itself. platform-spesifik trap adalah preview mode: block draft/preview environments dengan server-renderedX-Robots-Tag: noindex, tidak pernah JavaScript, because Google dapat skip JS execution when ini sees sebuahnoindex. gunakan/m/image service untuk WebP + Core Web Vitals, generate sitemap dari konten Delivery API, dan lean pada structured konten model untuk AI search.
fundamental split: Storyblok stores, frontend renders
Storyblok adalah sebuah backend. ini gives Anda sebuah konten model dibangun dari reusable blocks, sebuah visual editor, dan sebuah konten Delivery API (REST dan GraphQL). What ini melakukan not melakukan adalah produce HTML itu mesin pencari crawl. itu job belongs untuk sebuah separate frontend — Next.js, Nuxt, Astro, SvelteKit — itu fetches Storyblok konten dan renders halaman.
Storyblok says ini plainly: “Since Google doesn’t load content directly from Storyblok, your team is responsible for a fast and performant website.” (terjemahan) “Since Google doesn’t muat konten directly dari Storyblok, Anda team adalah responsible untuk sebuah fast dan performant situs web.” yang sama poin menampilkan up di mereka structured-konten guidance — “AI doesn’t see your CMS directly. Search engines and generative models read what’s rendered on your website or app, not the JSON coming from Storyblok’s APIs.” (terjemahan) “AI doesn’t see Anda CMS directly. mesin pencari dan generative models read what’s rendered pada Anda situs web atau app, not JSON coming dari Storyblok’s APIs.” Internalize itu dan almost setiap Storyblok SEO pertanyaan jawaban itself: CMS adalah nearly SEO-neutral, dan frontend’s rendering decisions determine everything. ini adalah yang sama architecture reality I cover di SEO untuk sebuah CMS headless; Storyblok adalah sebuah spesifik, visual-editing flavor dari ini.
rendering strategy: paling penting SEO decision
How Anda frontend renders Storyblok konten adalah single biggest SEO lever. Four modes, semua dari which fetch konten dari yang sama Storyblok CDN/GraphQL API:
SSG — Static situs Generation. HTML adalah dibangun di deploy time dan disajikan sebagai static files. Best-case SEO: complete HTML pada pertama permintaan, very fast. catch adalah freshness — baru atau edited konten perlu sebuah rebuild, so wire Storyblok’s publish webhook untuk trigger one. Best untuk mostly-static konten. Astro dan Gatsby adalah SSG-pertama; Next.js dan Nuxt mendukung ini per route.
SSR — rendering sisi server. HTML adalah rendered per permintaan pada sebuah server atau edge function. selalu-fresh, fully-rendered HTML. Best untuk frequently changing konten; tradeoff adalah infrastructure cost dan slightly higher TTFB.
ISR — Incremental Static Regeneration. Static oleh default, regenerated pada sebuah schedule atau pada-demand. recommended middle ground untuk besar Storyblok situs dengan mixed konten jenis — tetapi note stale-pada-pertama-permintaan-setelah-revalidation trap I detail di CMS headless write-up.
CSR — rendering sisi klien (SPA). server mengirim sebuah near-empty shell dan browser membangun DOM. Googlebot harus queue halaman untuk sebuah later render wave (which “may stay on this queue for a few seconds, but it can take longer than that” (terjemahan) “dapat stay pada ini queue untuk sebuah few seconds, tetapi ini dapat take longer daripada itu”). AI-crawler rendering varies oleh provider, so HTML-hanya fetchers see hanya shell. tidak pernah ship konten halaman sebagai CSR-hanya. Google’s own line: “If the content isn’t visible in the rendered HTML, Google won’t be able to index it.” (terjemahan) “jika konten isn’t terlihat di rendered HTML, Google won’t menjadi able untuk indeks ini.”
decision aturan: mostly-static konten → SSG; selalu-fresh/volatile konten → SSR; besar mixed situs → ISR; CSR hanya untuk logged-di, non-terindeks surfaces.
dibangun-di Storyblok SEO fitur (dan mereka limits)
Storyblok ships three cara untuk manage SEO field nilai. semua three hanya capture nilai — frontend masih memiliki untuk render them.
SEO Fields App (seo-metatags). sebuah native plugin field itu gives editors
judul, deskripsi, OG judul, OG deskripsi, dan OG Image inputs, plus sebuah Google
SERP snippet preview di editor. memerlukan sebuah Growth plan, dan ini memiliki untuk menjadi ditambahkan
per konten jenis — easy untuk forget pada sebuah baru konten jenis.
AI SEO App (sb_ai_seo). Generates meta judul, deskripsi, keywords, dan
author dengan sebuah LLM, di seluruh 22 didukung languages. memerlukan Premium. Anda dapat bulk-generate
di seluruh semua stories dengan sebuah Management API + Node.js script.
Manual field modeling. No plan requirement: tambahkan Anda own seo_title,
seo_description, og_title, og_image, noindex (boolean), dan canonical_url
fields untuk Anda konten model. sebagian besar flexible, dan what I’d reach untuk pada kompleks
situs.
non-negotiable: no Storyblok app auto-renders sebuah single tag. sebuah global head/
layout component di Anda framework harus read SEO field nilai dari API
respons dan output them server-side, dengan sensible fallback chains
(seo_title || story.name).
tag canonical
Storyblok memiliki no awareness dari Anda frontend struktur URL, so canonicals dapat’t come
dari CMS. Compute them di frontend — typically dari story’s full_slug
plus Anda domain — dan render them server-side. selalu absolute URLs, tidak pernah
relative, pada setiap halaman template. (untuk mechanics, see
canonicalization.)
Preview mode dan draft konten: defining Storyblok risk
ini adalah platform-spesifik pitfall untuk get right. Visual Editor memuat Anda
halaman inside sebuah iframe menggunakan preview URLs itu carry _storyblok dan _storyblok_tk
parameters, dan preview environment menggunakan draft konten dengan sebuah preview
access token. Production harus gunakan published konten dengan public access
token. clean pattern adalah two separate Storyblok spaces/projects (preview dan
production) so wrong token dapat’t leak draft konten ke live indeks.
critical bagian adalah how Anda pertahankan preview/staging out dari indeks. 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.” (terjemahan) “When Google encounters undefined tag, ini dapat skip rendering dan JavaScript
execution, which berarti menggunakan JavaScript untuk perubahan atau hapus robots undefined tag
dari undefined dapat not berfungsi sebagai expected.” dengan kata lain, sebuah noindex injected oleh
client-side JS adalah unreliable — Google dapat tidak pernah run JS. So protect non-production
environments dengan sebuah server-rendered respons header — X-Robots-Tag: noindex di
CDN/hosting tingkat — dan tambahkan Disallow: / di itu environment’s robots.txt.
Watch Search Console untuk unexpected preview domains showing up; itu’s Anda early
warning.
Sitemaps dan robots.txt
Storyblok generates neither. Both adalah frontend-dibangun:
- Sitemap: fetch semua published stories dari konten Delivery API dan emit
XML. Astro:
@astrojs/sitemapplus dynamic routes dari tautan API. Next.js:app/sitemap.tsataunext-sitemappost-bangun. Scope denganstarts_with, paginate untuk besar situs, dan trigger sebuah rebuild dari Storyblok publish webhook so sitemap stays di sync. - robots.txt: juga frontend-generated. Production seharusnya allow crawling dari
public halaman; preview/staging seharusnya
Disallow: /(dan carryX-Robots-Tagheader above).
data terstruktur / JSON-LD
Storyblok stores konten sebagai structured JSON, tetapi schema.org JSON-LD memiliki untuk menjadi
generated di frontend — Googlebot reads rendered HTML, not API
respons. bangun JsonLd component itu maps konten fields dan story properties
(story.published_at, story.updated_at, story.name) ke sebuah server-rendered
<script type="application/ld+json">. artikel, BreadcrumbList, Organization,
Product, dan FAQPage adalah semua implementable ini cara.
Images dan Core Web Vitals
Storyblok assets adalah disajikan via Amazon CloudFront. image service adalah sebuah nyata CWV win, tetapi hanya when digunakan correctly:
- WebP + transforms activate when Anda append
/m/untuk image URL — e.g.https://a.storyblok.com/f/xxxxx/image.jpg/m/800x600. Resize, crop, quality, dan smart-crop adalah semua parameter URL; hasil adalah edge-cached setelah pertama permintaan. Forget/m/dan Anda get unoptimized original. - Set
widthdanheightpada setiap image untuk mencegah layout shift (CLS). fetchpriority="high"+loading="eager"pada LCP hero image;loading="lazy"below fold.- tambahkan
alttext sebagai sebuah explicit field pada setiap image component —filenamefield adalah not teks alt. (See teks alt.)
Redirects, i18n, dan hreflang
Redirects. Storyblok memiliki no redirect manager, dan changing sebuah slug melakukan not
buat 301. Pattern: sebuah redirects_config story dengan nestable redirect_entry
blocks (source_url, target_story), fetched di bangun/permintaan time dan injected
ke framework routing; gunakan resolve_relations so targets update jika slugs perubahan,
dan refresh via publish webhook.
Internationalization. Storyblok mendukung field-, folder-, dan space-tingkat
translation, dan API respons sertakan sebuah alternates array dari semua translated
versi. gunakan ini untuk render <link rel="alternate" hreflang="..."> tags
server-side, dan selalu sertakan x-default. (See
hreflang.)
GEO / AI search readiness
Storyblok’s structured, component-based model adalah genuinely well-suited untuk AI
consumption — “Storyblok was built around structured data from day one, thanks to
its headless, API-first design.” (terjemahan) “Storyblok adalah dibangun sekitar data terstruktur dari day one, thanks untuk
-nya headless, API-pertama design.” tetapi rendering aturan masih aturan: LLMs read
rendered HTML, so SSR/SSG, correct JSON-LD, dan clean semantic markup adalah price
dari entry. Anda dapat juga generate llms.txt (sebuah markdown indeks dari key halaman) dan
llms-full.txt (sebuah full konten archive) di frontend. (See
AI search dan llms.txt.)
intinya
Storyblok adalah neither baik nor buruk untuk SEO — ini adalah neutral, dan ini shifts entire
SEO burden onto frontend. Get rendering right (SSR/SSG), render meta fields
SEO apps capture, protect preview dengan server-side noindex, bangun sitemap
dan robots.txt yourself, dan gunakan /m/ image service. melakukan itu dan sebuah Storyblok
situs dapat outperform sebuah neglected traditional CMS. Skip ini dan missing-oleh-default
SEO layer adalah exactly where situs quietly falls apart. Related reading lives di
CMS headless SEO dan
JavaScript SEO.
AI summary
sebuah condensed take pada Advanced versi:
- Storyblok stores, frontend renders. Storyblok adalah sebuah visual, API-pertama CMS headless; ini menyajikan konten di atas REST/GraphQL tetapi tidak pernah renders halaman. frontend (Next.js, Nuxt, Astro, SvelteKit) decides Anda SEO. “Google doesn’t load content directly from Storyblok.” (terjemahan) “Google doesn’t muat konten directly dari Storyblok.”
- rendering adalah #1 decision. SSG dan SSR ship fully-rendered HTML dan adalah safe; ISR adalah sebuah baik middle ground (dengan sebuah stale-pertama-permintaan trap); CSR adalah risky — empty HTML, queued render wave, invisible untuk AI crawler.
- dibangun-di SEO fitur hanya capture fields: SEO Fields App (
seo-metatags, Growth plan, per konten jenis), AI SEO App (sb_ai_seo, Premium, 22 languages), atau manual field modeling. ** frontend harus masih render setiap tag server-side.** - Preview mode adalah defining risk. Preview URLs gunakan
_storybloktokens dan draft konten. Protect non-production dengan sebuah server-renderedX-Robots-Tag: noindex+Disallow: /— tidak pernah JS, because Google dapat skip JS execution pada sebuah halaman dengannoindex. - Canonicals, sitemap, robots.txt, JSON-LD adalah semua frontend-dibangun. Compute
absolute canonicals dari
full_slug; generate sitemap dari konten Delivery API dan refresh via publish webhook. - Images: append
/m/untuk WebP + transforms (CloudFront-cached); setwidth/height(CLS),fetchpriority="high"pada hero (LCP), explicitaltfields. - Redirects/i18n: no dibangun-di redirect manager — slug perubahan don’t 301; bangun
redirects_configkonten jenis. gunakanalternatesarray untuk hreflang +x-default. - AI search: structured konten adalah sebuah strength, tetapi LLMs read rendered HTML — so
SSR/SSG + JSON-LD masih apply; optionally ship
llms.txt.
Official documentation
Primary-source documentation dari mesin pencari ( headless/rendering aturan itu govern Storyblok SEO) dan dari Storyblok.
- memahami JavaScript SEO Basics — crawl → render → indeks pipeline, render-queue delay,
noindex-via-JS warning, dan why SSR/pre-rendering adalah preferred. - rendering untuk konten-Driven Web Apps — SSR vs. SSG vs. CSR tradeoffs, directly applicable untuk choosing sebuah Storyblok frontend mode.
- Dynamic rendering (deprecated workaround) — why Google no longer recommends dynamic rendering; gunakan SSR, static rendering, atau hydration instead.
- Robots meta tag, data-nosnippet, dan X-Robots-Tag — cara set
noindexviaX-Robots-Tagheader HTTP ( server-side metode untuk protecting preview/staging). - Block search pengindeksan dengan noindex — meta-tag vs. header metode untuk keeping halaman out dari indeks.
Bing / Microsoft
- baru evergreen Bingbot (Microsoft Edge) — Bingbot renders JavaScript via Edge (Chromium), tetapi less consistently daripada Google — lainnya alasan untuk prefer SSR/SSG.
- IndexNow / indexnow.org — push protocol untuk wire untuk Anda Storyblok publish webhook so changed URLs adalah signaled instantly.
Storyblok
- FAQ: CMS headless dan SEO — Storyblok’s own framing dari where SEO responsibility sits.
- SEO Fields App docs dan AI SEO App docs — native SEO field plugins.
- Image Service API —
/m/transform/WebP service. - Internationalization dan Visual Editor concepts.
Quotes dari source
pada—record statements dari Google dan dari Storyblok. setiap tautan adalah sebuah deep tautan itu jumps untuk quoted passage pada source halaman.
Google — how JavaScript halaman adalah processed
- “Once Google’s resources allow, a headless Chromium renders the page and executes the JavaScript. The page may stay on this queue for a few seconds, but it can take longer than that.” (terjemahan) “Once Google’s resources allow, sebuah headless Chromium renders halaman dan executes JavaScript. halaman dapat stay pada ini queue untuk sebuah few seconds, tetapi ini dapat take longer daripada itu.” — Google Search Central docs. Jump untuk quote
- “Keep in mind that server-side or pre-rendering is still a great idea because it makes your website faster for users and crawlers, and not all bots can run JavaScript.” (terjemahan) “ingatlah itu server-side atau pre-rendering adalah masih sebuah great idea because ini membuat Anda situs web faster untuk pengguna dan crawler, dan not semua bot dapat run JavaScript.” Jump untuk quote
- “If the content isn’t visible in the rendered HTML, Google won’t be able to index it.” (terjemahan) “jika konten isn’t terlihat di rendered HTML, Google won’t menjadi able untuk indeks ini.” Jump untuk quote
Google — why noindex-via-JS fails ( preview trap)
- “When Google encounters the
noindextag, it may skip rendering and JavaScript execution, which means using JavaScript to change or remove the robotsmetatag fromnoindexmay not work as expected.” (terjemahan) “When Google encounters undefined tag, ini dapat skip rendering dan JavaScript execution, which berarti menggunakan JavaScript untuk perubahan atau hapus robots undefined tag dari undefined dapat not berfungsi sebagai expected.” — Google Search Central docs. Jump untuk quote
Storyblok — where SEO responsibility sits
- “Since Google doesn’t load content directly from Storyblok, your team is responsible for a fast and performant website.” (terjemahan) “Since Google doesn’t muat konten directly dari Storyblok, Anda team adalah responsible untuk sebuah fast dan performant situs web.” — Storyblok FAQ: CMS headless dan SEO. Jump untuk quote
- “AI doesn’t see your CMS directly. Search engines and generative models read what’s rendered on your website or app, not the JSON coming from Storyblok’s APIs.” (terjemahan) “AI doesn’t see Anda CMS directly. mesin pencari dan generative models read what’s rendered pada Anda situs web atau app, not JSON coming dari Storyblok’s APIs.” — Olena Teselko, Storyblok (Structured konten, Oct 2025). Jump untuk quote
- “Laying the foundation for structured content will pay off either way—both search engines and LLMs rely on it.” (terjemahan) “Laying foundation untuk structured konten akan pay off either cara—both mesin pencari dan LLMs rely pada ini.” — Ronny Shani, Storyblok (SEO dengan Storyblok dan Astro, Aug 2025). Jump untuk quote
- “headless CMSs and SPAs aren’t inherently SEO-unfriendly; rather, developers gain full markup control but must implement SEO foundations manually.” (terjemahan) “headless CMSs dan SPAs aren’t inherently SEO-unfriendly; rather, developers gain full markup control tetapi harus implement SEO foundations manually.” — Markus Oberlehner, Storyblok (SEO di Times dari Headless CMSs dan SPAs, 2019). Jump untuk quote
Storyblok SEO checklist
Skip what platform doesn’t melakukan untuk Anda dan melakukan things ini leaves untuk frontend.
rendering
- Public konten halaman render mereka konten di HTML pada pertama permintaan (SSG atau SSR), not hanya setelah client-side JavaScript runs.
- tanpa konten halaman ships sebagai sebuah CSR-hanya SPA (raw HTML maximizes AI-crawler coverage).
- Storyblok publish webhook triggers sebuah SSG rebuild / ISR revalidation so konten dan sitemap stay saat ini.
Metadata & canonicals
- SEO fields exist pada setiap konten jenis (SEO Fields App adalah per konten jenis, atau gunakan manual fields).
- sebuah global head component reads SEO field nilai dan renders judul, deskripsi, OG, dan Twitter tags server-side, dengan fallback chains.
- tag canonical adalah absolute URLs computed dari
full_slug+ domain dan rendered server-side pada setiap template.
Preview / staging protection
- Production menggunakan published konten versi + public access token; preview menggunakan draft + preview token (ideally separate spaces).
- Preview/staging mengembalikan sebuah server-rendered
X-Robots-Tag: noindexheader — not sebuah JavaScript-injected meta tag. - Preview/staging robots.txt memiliki
Disallow: /. - Search Console diperiksa untuk unexpected preview domains di indeks.
crawl infrastructure
- Sitemap generated dari konten Delivery API dan submitted untuk GSC + Bing Webmaster alat.
- Production robots.txt allows crawling dari public halaman.
- JSON-LD (artikel/BreadcrumbList/Organization/etc.) rendered server-side dan passing Rich hasil Test.
Images & i18n
- Image URLs gunakan
/m/prefix untuk WebP + transforms. - Images carry
width/height(CLS), hero menggunakanfetchpriority="high", below-fold menggunakanloading="lazy", dan setiap image memiliki sebuah explicitaltfield. - hreflang dibangun dari
alternatesarray, includingx-default. - sebuah
redirects_configkonten jenis maps changed slugs untuk 301s (Storyblok won’t).
mental models
1. Storyblok stores; frontend renders. CMS adalah nearly SEO-neutral. sebelum debugging apa pun Storyblok SEO issue, jawaban one pertanyaan pertama: how adalah frontend rendering ini konten? Almost everything resolves untuk itu.
2. rendering-mode decision aturan.
- Mostly-static konten (blog, docs, marketing) → SSG (rebuild via publish webhook).
- selalu-fresh / volatile konten (prices, inventory) → SSR.
- besar situs, mixed konten, ingin static speed → ISR (mind stale-pertama-permintaan trap).
- Logged-di, not-dimaksudkan-untuk-menjadi-terindeks surfaces → CSR adalah acceptable.
- Public konten Anda ingin diperingkatkan atau AI-cited → tidak pernah CSR.
3. Apps capture fields; frontend renders tags.
SEO Fields App dan AI SEO App hanya populate nilai. No tag reaches <head>
unless Anda framework reads field dan outputs ini server-side. “We installed the
SEO app but tags aren’t showing” (terjemahan) “kami installed
SEO app tetapi tags aren’t showing” adalah almost selalu sebuah missing render langkah.
4. noindex harus menjadi server-rendered.
untuk preview/staging, satu-satunya reliable noindex adalah sebuah respons header HTTP atau
SSR-rendered meta tag. sebuah JS-injected noindex dapat tidak pernah run, because Google dapat
skip JS execution when ini sudah sees noindex. server header > JS, selalu.
5. One sumber kebenaran untuk URLs.
Canonicals, sitemap entries, hreflang, dan tautan internal seharusnya semua derive dari
story’s full_slug plus sebuah single SITE_URL — dibangun absolute di rendering layer,
tidak pernah hand-assembled atau relative.
Storyblok SEO — cheat sheet
rendering modes di sebuah glance
| Mode | Where HTML adalah dibangun | SEO | Best untuk | Watch out untuk |
|---|---|---|---|---|
| SSG | bangun time → static files | ✅ Best | Mostly-static konten | Stale until rebuild — wire publish webhook |
| SSR | server, per permintaan | ✅ Best | selalu-fresh konten | Higher infra cost; slightly higher TTFB |
| ISR | Static + background regen | ✅ baik | besar mixed situs | pertama permintaan setelah revalidation gets stale halaman |
| CSR | di browser | ⚠️ Risky | Logged-di dashboards | Empty HTML untuk AI crawler; render-wave delay |
dibangun-di SEO field options
| Option | Field ID | Plan | Notes |
|---|---|---|---|
| SEO Fields App | seo-metatags | Growth | judul/desc/OG + SERP preview; tambahkan per konten jenis |
| AI SEO App | sb_ai_seo | Premium | LLM-generated meta, 22 languages; bulk via Management API |
| Manual fields | (Anda own) | apa pun | sebagian besar flexible; seo_title, noindex, canonical_url, etc. |
What Storyblok melakukan vs. what’s pada frontend
| Handled oleh Storyblok | Left untuk frontend |
|---|---|
| Stores konten + menyajikan API | rendering mode (SSG/SSR/ISR/CSR) |
| SEO field nilai (via apps) | rendering meta tags ke <head> |
Image transforms via /m/ | Applying /m/, width/height, alt, lazy-muat |
alternates data | hreflang + x-default tags |
| — | Canonicals, sitemap, robots.txt, JSON-LD, redirects |
Fast aturan
- noindex preview/staging via server header (
X-Robots-Tag) — tidak pernah JS. - Production = published konten + public token; preview = draft + preview token.
- Image WebP/transforms hanya fire dengan
/m/URL prefix. - Slug perubahan don’t buat 301s — bangun
redirects_configkonten jenis. - Sitemap = fetch published stories dari CDN API; refresh via publish webhook.
- AI-crawler rendering varies oleh provider → raw HTML adalah safest coverage baseline.
How seharusnya sebuah Storyblok route render?
Choose the frontend rendering path
Storyblok SEO mistakes
- Assuming SEO fields render themselves. Storyblok stores nilai; frontend harus output judul, canonicals, robots directives, dan data terstruktur.
- Shipping rankable routes sebagai CSR-hanya halaman. Render primary konten dan tautan ke initial HTML dengan SSG atau SSR.
- Letting preview URLs indeks. Protect preview access dan kembalikan server-tingkat
noindex; melakukan not wait untuk client JavaScript untuk tambahkan ini. - Publishing konten without invalidating frontend. Connect publication events untuk rebuild atau cache-revalidation workflows.
- membangun sitemaps dari setiap story. sertakan hanya canonical, public, dapat diindeks routes—not drafts, components, atau preview paths.
Published Storyblok perubahan adalah missing pada situs
mungkin cause: sebuah failed webhook, stale static bangun, atau cached API/halaman respons. Fix: trace publish event melalui bangun atau revalidation logs dan purge hanya affected cache. Confirm: live raw HTML berisi baru konten dan metadata.
Metadata exists di Storyblok tetapi not di halaman source
mungkin cause: frontend tidak pernah maps field, atau updates ini hanya setelah hydration. Fix: render SEO component pada server/bangun path. Confirm: curl mengembalikan intended judul, canonical, dan robots directive.
Preview halaman appear di search
mungkin cause: preview host adalah public dan lacks server-rendered exclusion. Fix: memerlukan authentication dan kirim X-Robots-Tag: noindex atau equivalent HTML di initial respons. Confirm: live preview respons berisi directive sebelum JavaScript runs.
Storyblok images adalah slow atau oversized
mungkin cause: original assets adalah requested without /m/ transformations atau dimensions. Fix: generate correctly sized variants dan reserve layout space. Confirm: production permintaan gunakan transformed asset dan rendered dimensions match display perlu.
Verify Storyblok output di raw HTML
url='https://example.com/page/'
curl -fsSL "$url" | grep -Eio '<title>[^<]+|<link[^>]+rel="canonical"[^>]*|<meta[^>]+name="robots"[^>]*'Run ini di DevTools Console untuk inspect rendered head:
({title: document.title, canonical: document.querySelector('link[rel="canonical"]')?.href, robots: document.querySelector('meta[name="robots" i]')?.content});Differences antara two outputs poin untuk client-hanya head perubahan.
alat untuk Storyblok QA
- Render Gap compares initial dan rendered konten, metadata, tautan, dan robots signals.
- Google indeks Checker memeriksa observable status, canonical, dan noindex blockers pada public routes.
- header HTTP Checker memeriksa preview
X-Robots-Tag, caching, dan redirect perilaku. - Sitemap Validator memeriksa itu generated sitemap URLs resolve dan melakukan not expose preview atau noncanonical routes.
Prove sebuah Storyblok SEO release
Publish-path test
Test untuk run: publish sebuah controlled story perubahan dan trace webhook, bangun/revalidation, dan live source HTML. Expected hasil: canonical production route updates di dalam normal publishing window. Failure interpretation: delivery chain atau cache adalah stale. Monitoring window: situs’s publish SLA. Rollback trigger: production konten dan metadata come dari berbeda versi.
Preview-exclusion test
Test untuk run: permintaan preview URLs dengan curl -I dan inspect raw HTML. Expected hasil: access control dan sebuah server-terlihat noindex mencegah pengindeksan. Failure interpretation: exclusion depends pada JavaScript atau adalah absent. Monitoring window: immediate. Rollback trigger: sebuah public preview respons adalah dapat diindeks.
rendering test
Test untuk run: compare raw dan rendered output untuk representative templates. Expected hasil: primary konten, tautan, judul, canonical, dan robots aturan agree. Failure interpretation: frontend relies pada client rendering untuk essential SEO output. Monitoring window: setiap frontend release. Rollback trigger: sebuah key template loses konten atau head signals di raw HTML.
Resources worth Anda time
My writing
- Beginner’s Guide untuk SEO teknis — foundation everything here sits pada.
- JavaScript SEO Issues & Best Practices — my primary reference pada rendering modes, JS canonicals, dan metadata; directly relevant untuk apa pun headless/Storyblok bangun.
My speaking
- JavaScript SEO — Ungagged 2019 (SlideShare) — how headless/decoupled CMSes split frontend dari backend, plus Googlebot’s stateless rendering. (Standing disclaimer: dynamic-rendering advice di itu deck adalah now outdated — Google deprecated ini; gunakan SSR/SSG.)
pada ini situs
- SEO untuk sebuah CMS headless — umum headless playbook ini artikel specializes; rendering modes, ISR trap, canonical fragmentation, migrations.
- JavaScript SEO — rendering side secara mendalam.
- Canonicalization — consolidation mechanism behind frontend canonicals.
dari sekitar industry
- Storyblok — CMS headless dan SEO FAQ — Storyblok’s own framing dari where SEO responsibility lands.
- Storyblok — SEO dengan Storyblok dan Astro (Ronny Shani, Aug 2025) — saat ini, framework-spesifik official tutorial.
- Storyblok — Structured konten (Olena Teselko, Oct 2025) — AI-search/structured-konten case untuk Storyblok.
- Storyblok — Managing Redirects dengan sebuah CMS headless —
redirects_configkonten-jenis pattern. - Webstacks — Storyblok SEO Technical Optimization Guide — strongest independent guide; konten modeling, rendering, Core Web Vitals, plus migration case data (TomTom “2x SEO performance,” (terjemahan) “2x SEO performa,” Unified “84% LCP improvement” (terjemahan) “84% LCP improvement”).
- FocusReactive — Typical Next.js SEO Pitfalls (Alex Hramovich) — server-rendered-metadata failure mode: “if they’re not set server-side, it’s a disaster.” (terjemahan) “jika mereka’re not set server-side, ini adalah sebuah disaster.”
- Straffesites — Localized Sitemap dengan Astro + Storyblok — sebuah worked sitemap/i18n implementation untuk Astro + Storyblok stack.
Test yourself: Storyblok SEO
Five quick pertanyaan pada doing SEO dengan Storyblok CMS headless. Pick sebuah jawaban untuk setiap, lalu periksa.
Log perubahan
Diperbarui 18 Jul 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.