Panduan Strapi SEO
Strapi adalah sebuah CMS headless dengan Tidak frontend, so Anda SEO adalah decided oleh bagaimana frontend renders — plus konten modeling, SEO plugin, sitemaps, drafts, dan preview hygiene.
Strapi adalah sebuah open-sumber CMS headless dengan Tidak rendering layer, so ini adalah SEO-neutral — setiap outcome adalah decided oleh frontend (Berikutnya.js, Nuxt, Astro) itu consumes -nya API. Render di HTML di bangun atau permintaan time (SSG/SSR), tidak di browser (CSR). Model SEO fields di Anda konten jenis (gunakan community SEO plugin), pertahankan drafts dan preview/staging deployments out dari indeks, block /admin panel dan mentah /api JSON, dan bangun sitemap.xml dan robots.txt di frontend. Mendapatkan rendering right dan sebuah Strapi situs dapat beat sebuah tradisional CMS pada Core Web Vitals.
TL;DR — Strapi adalah sebuah “headless” (terjemahan) “headless” CMS — ini stores Anda konten dan hands ini out melalui sebuah API, tetapi ini memiliki Tidak situs web attached. itu berarti Strapi itself tidak decide Anda SEO; frontend itu turns Strapi’s konten ke halaman melakukan. big aturan adalah yang sama sebagai untuk apa pun headless setup: bangun Anda HTML pada sebuah server atau di bangun time (SSR atau SSG), tidak entirely di pengunjung’s browser. dan semua SEO stuff WordPress + Yoast melakukan untuk Anda — judul, sitemaps, robots.txt — Anda now set up yourself.
Apa Strapi sebenarnya adalah
Strapi adalah sebuah open-sumber, Node.js-based CMS headless. “Headless” (terjemahan) “Headless” berarti ini adalah hanya back half dari sebuah situs web — place Anda tulis dan store konten — dengan Tidak front half (Tidak theme, Tidak halaman, Tidak rendering). Anda mendapatkan Anda konten out melalui sebuah REST atau GraphQL API. Anda dapat jalankan Strapi pada Anda own server atau gunakan Strapi Cloud untuk memiliki them host ini.
Bukti untuk klaim ini Strapi is a headless CMS that exposes content through APIs and leaves presentation to a separate frontend. Cakupan: Current Strapi architecture. Tingkat keyakinan: tinggi · Diverifikasi: Strapi documentationKarena ada Tidak dibangun-di situs web, Strapi pairs dengan sebuah terpisah frontend kerangka kerja — Berikutnya.js, Nuxt, Astro, atau Gatsby adalah umum ones — itu fetches konten dari Strapi dan membangun sebenarnya halaman orang (dan Googlebot) see.
satu hal untuk memahami
Strapi adalah neutral untuk SEO. ini adalah tidak baik atau buruk pada -nya own. Apa penting adalah bagaimana frontend membangun halaman. ada dua safe cara dan satu risky cara:
- di bangun time (SSG) — halaman adalah pre-dibangun ke plain HTML files. Fast dan penelusuran-friendly.
- pada sebuah server, per permintaan (SSR) — server membangun penuh halaman dan mengirim ini. juga penelusuran-friendly.
- di pengunjung’s browser (CSR) — server mengirim sebuah near-empty shell dan JavaScript fills ini di kemudian. ini adalah risky satu.
Google dapat eventually baca browser-dirender halaman, tetapi ini adalah lebih lambat dan lebih sedikit reliable. AI crawler rendering perilaku varies oleh vendor — ada Tidak single shared standard — tetapi sebuah crawler itu fetches hanya awal HTML (several dari bot behind ChatGPT dan Perplexity saat ini berfungsi ini cara) sees persis apa CSR ships: sebuah empty shell. bangun Anda HTML pada server atau di bangun time so konten adalah di mentah HTML Tidak penting siapa’s fetching ini.
Bukti untuk klaim ini Google renders JavaScript after crawling, so browser-only content depends on the rendering stage. Cakupan: Google Search only; no claim about all AI crawlers is sourced here. Tingkat keyakinan: tinggi · Diverifikasi: Google: JavaScript SEO basics”di mana melakukan my SEO settings go?” (terjemahan) “di mana melakukan my SEO settings go?” masalah
Switching dari WordPress + Yoast untuk Strapi, orang adalah shocked itu judul, meta deskripsi, sitemaps, dan tag canonical jangan muncul oleh themselves. ada Tidak plugin layer melakukan ini diam-diam di background. dengan Strapi Anda memiliki untuk:
- tambahkan SEO fields (judul, deskripsi, canonical, social image) untuk Anda konten jenis — ada sebuah official-ish community SEO plugin itu menambahkan ini untuk Anda.
- Wire itu fields ke halaman’s HTML di frontend.
- bangun sitemap dan sebuah robots.txt.
None dari ini adalah hard; ini hanya tidak akan happen pada -nya own.
sebuah sedikit hal itu diam-diam break
- Drafts getting terindeks. Strapi memiliki sebuah draft/publish workflow. pertahankan unpublished konten out dari penelusuran — jangan expose ini melalui publik API.
- Preview situs getting terindeks. Tim spin up preview/staging URLs untuk review drafts. jika Google menemukan satu, ini dapat indeks sebuah seluruh duplicate copy. Block them.
- ** admin panel dan mentah API.** Anda
/adminlogin dan/api/...JSON feed tidak seharusnya tampilkan up di penelusuran.
ingin penuh versi — four rendering modes, SEO plugin, sitemaps, draft dan preview hygiene, Strapi Cloud vs. self-hosted, dan migrations? Switch untuk Advanced tab.
TL;DR — Strapi adalah sebuah backend-hanya CMS headless (REST + GraphQL, self-hosted atau Strapi Cloud) dengan Tidak rendering layer, so ini adalah SEO-neutral — frontend’s rendering mode decides semuanya. SSG/SSR ship fully-dirender HTML dan adalah safe; CSR adalah risky (sebuah crawler itu fetches hanya awal HTML sees sebuah empty shell — itu’s bagaimana several major AI crawler saat ini behave); ISR memiliki stale-pada-pertama-permintaan trap. Model SEO fields di Anda konten jenis ( community
@strapi/plugin-seostores dan previews them tetapi melakukan tidak output HTML, sitemaps, atau robots.txt — itu’s frontend’s job). pertahankan drafts out melalui publish workflow (tidak pernah lulus auth tokens di publik permintaan), noindex preview/staging di host tingkat, pertahankan/admindan mentah/api/*JSON out dari penelusuran, dan bangunsitemap.xml+ robots.txt di frontend. Strapi adalah neutral; Anda architecture adalah product.
Strapi adalah tidak SEO decision — frontend adalah
single sebagian besar penting concept di Strapi SEO: Strapi memiliki Tidak rendering layer. ini adalah konten storage, sebuah konten model, sebuah editing UI, dan sebuah API. setiap SEO outcome — indexability, metadata, speed, data terstruktur — adalah determined oleh frontend kerangka kerja consuming Strapi’s API. Strapi’s job adalah purely untuk store dan sajikan right fields.
Bukti untuk klaim ini Strapi provides REST and GraphQL content APIs rather than rendering a public website. Cakupan: GraphQL requires Strapi's GraphQL plugin; REST is available for content types. Tingkat keyakinan: tinggi · Diverifikasi: Strapi: REST APIitu membuat “Strapi adalah bad untuk SEO” (terjemahan) “Strapi adalah buruk untuk SEO” wrong frame. Strapi adalah neutral. sebagai Strapi’s own team puts ini, “headless architectures require developers untuk take kepemilikan dari SEO aspects itu tradisional konten management sistem tangani secara otomatis.” (terjemahan) “headless architectures memerlukan developers untuk take kepemilikan dari SEO aspects itu tradisional sistem manajemen konten tangani secara otomatis.” sebuah Strapi + Berikutnya.js situs rendering pada SSG, dengan sebuah disciplined metadata layer, akan outperform sebuah neglected WordPress install. sebuah Strapi situs fronted oleh sebuah client-dirender React SPA dengan Tidak metadata wiring akan diam-diam fall apart. sama backend, opposite outcomes — karena rendering decisions differ. ini adalah yang sama poin I membuat tentang JavaScript SEO umumnya: pertanyaan untuk mulai dengan adalah selalu bagaimana adalah frontend rendering ini konten?
four rendering modes (paling critical decision)
«- SSG — Static Site Generation. HTML built at build time, served as static files. Best-case SEO: fully-rendered HTML on first fetch, fast TTFB and Core Web Vitals. Tradeoff: new/changed content needs a rebuild. Gatsby and Astro are SSG-first; Next.js does it per route. » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian dua puluh lima, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.) «- SSR — Server-Side Rendering. HTML rendered per request on a server or edge. Always-fresh, fully-rendered HTML. Tradeoff: Strapi API latency lands directly in your TTFB on every request. Next.js, Nuxt, SvelteKit, Remix. » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian dua puluh lima, bagian kecil dua: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.) «- ISR — Incremental Static Regeneration. Static pages regenerated in the background after a revalidation window. A good middle ground with one trap (below). » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian dua puluh lima, bagian kecil tiga: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.) «- CSR — Client-Side Rendering. A near-empty shell ships and the browser fetches from Strapi and builds the DOM. Worst SEO option: Google must queue the page for a later render wave — “Googlebot queues all pages with a 200 HTTP status code for rendering, unless a robots meta tag or header tells Google not to index the page” — so your content doesn’t exist until that wave runs. AI crawlers and Bing handle this far worse than Google. Acceptable only for logged-in dashboards you don’t want indexed anyway. A raw React/Vue SPA over Strapi lands here by default — avoid it for public content.
Bukti untuk klaim ini Google sends pages with successful HTTP responses to a rendering queue and recommends server-side or pre-rendering for reliable content delivery. Cakupan: Google Search JavaScript processing; rendering is not an assurance of indexing. Tingkat keyakinan: tinggi · Diverifikasi: Google: JavaScript SEO basics» (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian dua puluh lima, bagian kecil empat: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)
** ISR trap:** ketika revalidation window expires, berikutnya permintaan — yang dapat menjadi Googlebot — masih mendapatkan stale cached halaman; fresh satu menyajikan hanya pada berikut permintaan. untuk volatile data (prices, stock), prefer SSR. ISR adalah ideal untuk konten itu perubahan pada order dari hours atau days.
konten modeling untuk SEO di Strapi
Strapi memberikan frontend tidak ada apa pun untuk render unless Anda put fields di konten model. untuk setiap publik konten jenis, tambahkan sebuah SEO component dengan di minimum:
metaTitle,metaDescriptioncanonicalURLogImage(dan Open Graph / Twitter fields)- sebuah robots directive — e.g. sebuah
preventIndexingBoolean untuk per-entry noindex control
gunakan Strapi’s UID field untuk slugs — ini auto-generates dari judul dan enforces
uniqueness. untuk multilingual situs, enable Strapi’s dibangun-di i18n per konten
jenis, localize slug dan SEO fields per locale, lalu output
<link rel="alternate" hreflang="..."> di frontend menggunakan localizations
hubungan setiap entry exposes. sebagai SALT.agency notes, judul “dapat either menjadi
populated dengan itu Strapi SEO Plugin atau oleh creating a text field di mana itu title tag
akan menjadi stored, dengan conditions added such sebagai tidak menjadi lebih singkat daripada atau tidak
exceeding a set amount dari characters.” (terjemahan) “dapat either menjadi
populated dengan Strapi SEO Plugin atau oleh membuat sebuah text field di mana tag judul
akan menjadi stored, dengan conditions ditambahkan such sebagai tidak menjadi lebih singkat daripada atau tidak
exceeding sebuah set amount dari characters.”
frontend lalu membaca itu fields dari API dan populates <head> —
Berikutnya.js generateMetadata, Nuxt useSeoMeta, Astro’s layout <head>.
reliability aturan adalah yang sama sebagai semua headless SEO: HTML-tingkat metadata beats
JS-injected metadata, karena Google sees ini pada pertama fetch.
Strapi SEO plugin — apa ini melakukan dan tidak melakukan
community SEO plugin (@strapi/plugin-seo, formerly @strapi-community/plugin-seo,
listed pada Strapi Market) adalah standard alat. ini “embeds a side panel di setiap
Konten-Jenis edit view di mana Anda dapat set meta titles, descriptions, canonical URLs,
dan social share images,” (terjemahan) “embeds sebuah side panel di setiap
konten-jenis edit view di mana Anda dapat set meta judul, deskripsi, canonical URLs,
dan social share images,” menambahkan sebuah SERP preview, dan berjalan di-konten analysis — green,
orange, atau red indicators untuk readability, keyword distribution, dan schema
compliance.
Apa ini melakukan tidak melakukan, dan ini adalah paling umum misconception:
- ini melakukan tidak generate
<head>HTML — frontend renders fields. - ini melakukan tidak generate sebuah sitemap — itu’s sebuah terpisah plugin (pada Strapi 5,
Webtools sitemap tambahkan-pada atau
strapi-5-sitemap-plugin). - ini melakukan tidak tulis robots.txt atau implement data terstruktur — frontend’s job.
dengan kata lain, plugin memberikan editors sebuah baik authoring UX dan stores bersih fields. frontend masih memiliki untuk melakukan sebenarnya SEO output.
Drafts, preview, /admin, dan /api — mempertahankan wrong hal out dari indeks
ini adalah di mana Strapi memiliki lebih failure modes daripada sebuah hosted platform like Shopify.
- Draft/Publish. Strapi marks drafts dengan
publishedAt: null; API mengembalikan hanya published entries untuk unauthenticated permintaan. critical discipline: tidak pernah lulus sebuah authenticated API token di publik frontend permintaan, atau semua draft konten becomes fetchable. sitemap plugin/tambahkan-pada respects publish state dan hanya mencakup published URLs. - Preview / staging environments. Vercel branch deploys, Netlify deploy
previews, dan dedicated preview hosts consuming Strapi drafts adalah biasanya
publicly reachable. Block them dengan sebuah layered approach: sebuah
X-Robots-Tag: noindexheader di host tingkat (tidak hanya sebuah meta tag sebuah CSR halaman injects late),Disallow: /di robots.txt, sebuahnoindexmeta tag pada setiap halaman, dan HTTP authentication di mana mungkin. Watch Search Console untuk unexpected hostnames — itu’s Anda early warning. - **
/adminpanel.** Strapi’s admin adalah sebuah React SPA; konfirmasi ini carries<meta name="robots" content="noindex">(Strapi v4+ melakukan), pertahankan ini off publik tautan, dan password-lindungi ini — sebuah unprotected/adminadalah discoverable melalui Google dorking. - ** mentah
/api/*JSON.** ini tidak akan peringkat sebagai sebuah halaman, tetapi ini wastes anggaran crawling dan dapat leak data. sebagian besar production setups put API pada -nya own subdomain (cms.example.com/api.example.com); block itu subdomain entirely di robots.txt dan pertahankan ini off sitemap. jika API dan frontend share sebuah domain,Disallow: /api/.
Sitemaps dan robots.txt — dibangun di frontend
ada Tidak Yoast, so keduanya adalah jelas. Dua sitemap routes:
- sebuah sitemap plugin di dalam Strapi — generates XML dan hanya mencakup published
entries. pada Strapi 5 maintained option adalah Webtools sitemap
tambahkan-pada (
strapi-plugin-webtools+webtools-addon-sitemap) untuk lebih besar, multilingual situs, ataustrapi-5-sitemap-pluginuntuk simpler ones. older standalonestrapi-plugin-sitemap(pluginpal) tops out di Strapi 4 — -nya own docs poin v5 pengguna untuk Webtools alih-alih, so jangan install ini pada sebuah v5 project. Quoting plugin docs: ketika draft/publish adalah pada, “ini setting akan membuat sure itu all draft halaman adalah excluded dari itu sitemap.” (terjemahan) “ini setting akan pastikan itu semua draft halaman adalah excluded dari sitemap.” - Frontend-generated — Berikutnya.js
sitemap.ts, Astro@astrojs/sitemap, Nuxt sitemap modules, fetching published URLs dari Strapi API. Lebih control di atas canonical URLs,lastmod, danchangefreq.
robots.txt adalah disajikan dari frontend (Berikutnya.js robots.ts, Astro public/robots.txt).
sertakan sebuah Sitemap: directive, block preview hosts dengan Disallow: /, dan — sebagai dengan
apa pun headless stack — tidak pernah disallow .js atau .css (ini blocks rendering).
tinggi-nilai pattern adalah webhook workflow: Strapi fires sebuah webhook pada publish → triggers sebuah Vercel/Netlify rebuild atau pada-demand revalidation → regenerates sitemap → pings Google Search Console dan IndexNow. Karena headless konten memperbarui flow melalui sebuah API alih-alih sebuah plugin itu pings mesin pencari, IndexNow (Bing, Yandex, dan others) adalah terutama valuable wired untuk itu publish webhook.
Strapi Cloud vs. self-hosted — SEO implications
Strapi’s hosting memengaruhi API respons time, yang penting differently oleh rendering mode:
- SSG/ISR: Strapi API speed penting di bangun time, tidak runtime — halaman adalah pre-dibangun, so API latency tidak touch pengguna’s TTFB.
- SSR: Strapi API latency menambahkan secara langsung untuk TTFB pada setiap permintaan → memengaruhi LCP → sebuah nyata peringkat input. ini adalah case untuk mengoptimalkan.
Strapi Cloud adalah managed infrastructure dengan sebuah asset CDN — baik untuk tim tanpa DevOps. Self-hosted memberikan Anda penuh control dari caching (Redis), database pengindeksan, dan geographic proximity untuk frontend. Either cara: cache Strapi API respons di CDN layer, atau gunakan ISR dengan pendek revalidation, untuk decouple frontend runtime dari Strapi latency. Satu caveat worth stating plainly — Strapi Cloud’s CDN menyajikan Strapi API dan assets, tidak Anda frontend situs web; Anda Core Web Vitals adalah diukur terhadap frontend, yang adalah hosted secara terpisah (Vercel, Netlify, Cloudflare halaman).
Migrating untuk atau dari Strapi
WordPress → Strapi adalah umum path, dan migrations adalah di mana headless SEO sebenarnya goes wrong:
- Map setiap existing slug persis onto Strapi’s UID field; apa pun slug perubahan perlu sebuah
301 redirect (gunakan
strapi-plugin-redirect-urlsatau Smart Redirect Manager, baca oleh frontend/middleware). - Migrate meta judul, deskripsi, dan
og:imagedariwp_postmetake SEO component fields, dan image teks alt ke Media LibraryalternativeTextfield. - Inventory setiap URL — tidak hanya posts: tag halaman, paginated archives, parameter URLs — dan bangun peta pengalihan sebelum go-langsung.
- Migrate canonicals explicitly; jangan assume frontend auto-generates them right.
- Post-launch: jalankan sebuah Screaming Frog crawl perbandingan, re-verify data terstruktur dengan Rich hasil Test, resubmit sitemaps untuk GSC dan Bing, dan stand up IndexNow.
Strapi SEO adalah benar-benar sebuah specialized application dari JavaScript SEO dan rendering — sibling CMS headless SEO tulis-up covers platform-agnostic versi dari semua dari ini.
AI summary
sebuah condensed take pada Advanced versi:
- Strapi adalah SEO-neutral. ini adalah sebuah backend-hanya CMS headless (REST + GraphQL, self-hosted atau Strapi Cloud) dengan Tidak rendering layer — frontend decides semuanya. “Strapi adalah bad untuk SEO” (terjemahan) “Strapi adalah buruk untuk SEO” adalah sebuah myth.
- rendering mode adalah product: SSG/SSR ship fully-dirender HTML dan adalah safe; CSR adalah risky (konten hanya ada setelah sebuah kemudian render wave, dan AI crawler/Bing tangani ini poorly); ISR adalah sebuah baik middle ground dengan sebuah stale-pada-pertama-permintaan trap — gunakan SSR untuk volatile data.
- Model SEO fields di konten jenis:
metaTitle,metaDescription,canonicalURL,ogImage, sebuahpreventIndexingBoolean; UID field untuk slugs; i18n +localizationsuntuk hreflang. - ** SEO plugin stores dan previews fields** tetapi melakukan tidak output
<head>HTML, sitemaps, atau robots.txt — itu’s frontend’s job. sitemap adalah sebuah terpisah plugin — pada Strapi 5 itu’s Webtools sitemap tambahkan-pada ataustrapi-5-sitemap-plugin; older standalonestrapi-plugin-sitemapadalah Strapi-4-hanya. - pertahankan wrong hal out dari indeks: drafts (publish workflow; tidak pernah lulus
auth tokens publicly), preview/staging (host-tingkat
noindex+ robotsDisallow: /
- auth),
/admin(noindex + password), dan mentah/api/*JSON (block, ideally pada -nya own subdomain).
- bangun sitemap.xml dan robots.txt di frontend; tidak pernah block
.js/.css; wire sebuah publish webhook → rebuild → sitemap → GSC + IndexNow. - Hosting: di SSR, Strapi API latency hits TTFB/LCP secara langsung — cache ini atau gunakan ISR. Strapi Cloud’s CDN adalah untuk API/assets, tidak Anda frontend’s Core Web Vitals.
- Migrations fail pada rusak 301s, lost metadata, dan accidental CSR — penuh URL inventory + peta pengalihan sebelum go-langsung.
Dokumentasi resmi
Utama-sumber documentation dari mesin pencari (Strapi adalah rendering-agnostic, so SEO-relevant docs adalah JavaScript/rendering ones).
- memahami JavaScript SEO Basics — crawl → render → indeks pipeline itu governs bagaimana sebuah Strapi frontend’s konten mendapatkan terindeks.
- Dynamic rendering (deprecated workaround) — mengapa Google deprecated ini; gunakan SSR, static rendering, atau hydration alih-alih prerendering sebuah CSR Strapi frontend.
- rendering untuk konten-Driven Web Apps — SSR vs. SSG vs. CSR tradeoffs untuk konten situs like Strapi-powered editorial.
- Perbaiki Penelusuran-Related JavaScript masalah — diagnosing dirender-DOM gaps di sebuah JS frontend.
- Block Penelusuran pengindeksan dengan noindex — meta tag /
X-Robots-Tagheader digunakan untuk pertahankan drafts, preview hosts, dan/adminout dari indeks. - Introduction untuk robots.txt — apa robots.txt melakukan dan tidak melakukan (relevant untuk blocking API subdomain dan preview hosts).
Bing / Microsoft
- baru evergreen Bingbot (Microsoft Edge) — Bingbot renders JS, tetapi lebih sedikit consistently daripada Google — lainnya alasan SSR/SSG penting pada Strapi.
- IndexNow / indexnow.org — push protocol untuk wire untuk Anda Strapi publish webhook.
Quotes dari sumber
pada—record statements pada JavaScript rendering (Google), plus Strapi team dan practitioners pada headless SEO. setiap tautan adalah sebuah deep tautan itu jumps untuk quoted passage di mana sumber mendukung ini.
Google — bagaimana JavaScript halaman adalah processed
«- “Googlebot queues all pages with a 200 HTTP status code for rendering, unless a robots meta tag or header tells Google not to index the page.” — Google Search Central docs. Jump to quote » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian enam puluh sembilan, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)
Google — dynamic rendering adalah deprecated
«- “Dynamic rendering was a workaround and not a long-term solution for problems with JavaScript-generated content in search engines.” — Google Search Central docs. Recommended instead: “server-side rendering, static rendering, or hydration.” Jump to quote » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian tujuh puluh satu, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)
Strapi — headless shifts SEO kepemilikan untuk developers
- “SEO in headless CMS architectures is a more technical challenge that requires careful implementation, as headless architectures require developers to take ownership of SEO aspects that traditional content management systems handle automatically.” (terjemahan) “SEO di CMS headless architectures adalah sebuah lebih teknis challenge itu memerlukan careful implementation, sebagai headless architectures memerlukan developers untuk take kepemilikan dari SEO aspects itu tradisional sistem manajemen konten tangani secara otomatis.” — Strapi Blog, CMS headless & Strapi SEO best practices. Baca post
- “When using the draft/publish functionality in Strapi, this setting will make sure that all draft pages are excluded from the sitemap. This ensures that only published content appears in search engine sitemaps.” (terjemahan) “Ketika menggunakan draft/publish functionality di Strapi, ini setting akan pastikan itu semua draft halaman adalah excluded dari sitemap. ini ensures itu hanya published konten muncul di mesin pencari sitemaps.” — Strapi Blog, Strapi SEO Plugins: Menyelesaikan Guide untuk Strapi 5. Baca post
- “Itu official SEO plugin embeds a side panel di setiap Konten-Jenis edit view di mana Anda dapat set meta titles, descriptions, canonical URLs, dan social share images.” (terjemahan) “ official SEO plugin embeds sebuah side panel di setiap konten-jenis edit view di mana Anda dapat set meta judul, deskripsi, canonical URLs, dan social share images.” — Strapi Blog, Strapi SEO Plugins: Menyelesaikan Guide untuk Strapi 5. Baca post
Practitioners — headless menghapus defaults
- “Headless CMS platforms remove a lot dari itu defaults itu tradisional CMS platforms tangani secara otomatis — meta tags, canonical URLs, structured data, sitemaps, none dari ini come out dari itu box di a headless setup.” (terjemahan) “CMS headless platforms hapus sebuah lot dari defaults itu tradisional CMS platforms tangani secara otomatis — meta tags, canonical URLs, data terstruktur, sitemaps, none dari ini come out dari box di sebuah headless setup.” — Successive Digital, CMS headless SEO: hindari ini umum Pitfalls. Baca post
- “The title can either be populated with the Strapi SEO Plugin or by creating a text field where the title tag will be stored, with conditions added such as not being shorter than or not exceeding a set amount of characters.” (terjemahan) “ judul dapat either menjadi populated dengan Strapi SEO Plugin atau oleh membuat sebuah text field di mana tag judul akan menjadi stored, dengan conditions ditambahkan such sebagai tidak menjadi lebih singkat daripada atau tidak exceeding sebuah set amount dari characters.” — SALT.agency, * SEO guide untuk Strapi*. Baca post
Dua checklists: Strapi SEO health + migration
Strapi SEO health periksa
- frontend renders konten di HTML pada pertama permintaan (SSR atau SSG), tidak hanya setelah client-side JavaScript berjalan.
- Tidak publik konten jenis relies pada CSR untuk -nya main konten (banyak AI crawler fetch hanya awal HTML dan tidak pernah execute JavaScript).
- sebuah SEO component (metaTitle, metaDescription, canonicalURL, ogImage,
preventIndexing) ada pada setiap publik konten jenis dan adalah mapped ke<head>. - Slugs gunakan UID field; canonicals adalah absolute URLs dibangun dari satu
SITE_URL, set di rendering layer. - frontend tidak pernah mengirim sebuah authenticated API token di publik permintaan (atau drafts leak).
- Preview/staging hosts mengembalikan host-tingkat
X-Robots-Tag: noindexplusDisallow: /di robots.txt (dan HTTP auth di mana mungkin). -
/adminadalah noindexed dan password-protected; tidak ditautkan publicly. - mentah
/api/*JSON adalah blocked di robots.txt (ideally pada -nya own subdomain, dipertahankan off sitemap). -
sitemap.xmladalah generated (sitemap plugin atau frontend) dan lists hanya published, canonical URLs. - robots.txt ada, mencakup sebuah
Sitemap:directive, dan melakukan tidak block.js/.css. - sebuah publish webhook triggers sebuah rebuild/revalidate → sitemap regen → GSC + IndexNow ping.
Migration checklist (WordPress → Strapi)
- Penuh URL inventory — posts, halaman, tag/category halaman, paginated archives, parameter URLs.
- Slugs mapped persis onto Strapi UID fields; 301 peta pengalihan dibangun
sebelum go-langsung (
strapi-plugin-redirect-urls/ Smart Redirect Manager). - Meta judul, deskripsi,
og:imagemigrated ke SEO component. - Image teks alt migrated ke Media Library
alternativeTextfield. - Canonicals verified pada baru frontend (tidak assumed).
- rendering mode confirmed sebagai SSR/SSG (tidak sebuah accidental CSR default).
- data terstruktur re-verified dengan Rich hasil Test.
- Sitemaps resubmitted untuk Google Search Console dan Bing Webmaster alat; IndexNow stood up.
mental models
1. Strapi adalah tidak SEO decision — frontend adalah. Strapi memiliki Tidak rendering layer. sebelum debugging apa pun, jawaban satu pertanyaan: bagaimana adalah frontend rendering ini konten? Hampir setiap Strapi SEO masalah resolves untuk itu.
2. rendering-mode decision aturan. Pick oleh bagaimana sering konten perubahan:
- Mostly static (blogs, docs, marketing) → SSG.
- selalu-fresh / volatile (prices, stock) → SSR.
- Hourly/daily, ingin static speed → ISR (mind stale-pertama-permintaan trap).
- Logged-di, tidak dimaksudkan untuk menjadi terindeks → CSR adalah acceptable.
- Publik konten Anda ingin diperingkatkan atau cited oleh AI → tidak pernah CSR.
3. “Rebuild apa itu plugin melakukan.” (terjemahan) “Rebuild apa plugin melakukan.”
setiap automatic Yoast perilaku adalah now sebuah deliberate langkah di Strapi + frontend:
SEO fields di konten model → mapped untuk <head> → sitemap → robots.txt →
canonicals → data terstruktur. jika sesuatu’s “missing,” (terjemahan) “missing,” sebuah plugin perilaku adalah tidak pernah
re-implemented.
4. plugin stores; frontend renders. SEO plugin memberikan editors fields dan previews — ini melakukan tidak emit HTML, sitemaps, atau robots.txt. pertahankan itu dua responsibilities terpisah di Anda head dan Anda tidak akan expect plugin untuk melakukan frontend’s job.
5. Four hal harus tidak pernah reach indeks.
Drafts, preview/staging deployments, /admin, dan mentah /api/* JSON. setiap memiliki sebuah
berbeda control (publish workflow, host-tingkat noindex, password + noindex, robots
block pada -nya own subdomain). Audit semua four explicitly.
Strapi SEO — cheat sheet
rendering modes di sebuah glance
| Mode | Di mana HTML adalah dibangun | SEO | Best untuk | Watch out untuk |
|---|---|---|---|---|
| SSG | bangun time → static files | ✅ Best | Mostly-static konten | Stale until rebuild; slow membangun di scale |
| SSR | server, per permintaan | ✅ Best | selalu-fresh konten | Strapi API latency lands di TTFB |
| ISR | Static + timed background regen | ✅ baik | Hourly/daily konten | pertama permintaan post-revalidation mendapatkan stale halaman |
| CSR | di browser | ⚠️ Risky | Logged-di dashboards | Empty shell untuk HTML-hanya fetchers (banyak AI crawler); render-wave delay |
Apa Strapi/plugins melakukan vs. apa frontend melakukan
| Strapi + SEO plugin | frontend |
|---|---|
| Stores SEO fields (judul, desc, canonical, OG) | Renders itu fields ke <head> |
| SERP preview + di-konten analysis di admin | membangun sitemap.xml |
| Sitemap plugin generates XML (published hanya) | Menulis robots.txt |
| Draft/publish gates publik API | Implements JSON-LD data terstruktur |
pertahankan out dari indeks — four controls
| Hal | Control |
|---|---|
| Drafts | Publish workflow; tidak pernah gunakan auth tokens di publik permintaan |
| Preview/staging | Host-tingkat X-Robots-Tag: noindex + robots Disallow: / + auth |
/admin panel | noindex (default v4+) + password; Tidak publik tautan |
Mentah /api/* JSON | Block di robots.txt; ideally -nya own subdomain, off sitemap |
Fast aturan
- Strapi adalah SEO-neutral — rendering mode adalah product.
- gunakan UID field untuk slugs; canonicals = absolute URLs dari satu
SITE_URL. - SEO plugin stores fields; ini melakukan tidak output HTML/sitemap/robots.
- tidak pernah disallow
.js/.cssdi robots.txt. - Wire sebuah publish webhook → rebuild → sitemap → GSC + IndexNow.
- di SSR, cache Strapi API (atau gunakan ISR) so latency tidak tank LCP.
Bagaimana seharusnya sebuah Strapi halaman render?
Choose pengiriman model
Incident playbook: published Strapi halaman disappear dari penelusuran
- Konfirmasi publik respons. periksa status, redirects, mentah HTML, canonical, dan robots directives. Perbaiki sebuah fetch atau indexability failure sebelum konten analysis.
- Trace publication. Match Strapi publish event untuk webhook, bangun/revalidation, dan cache logs. jika langsung halaman adalah stale, repair itu chain.
- periksa template cakupan. Bandingkan affected dan healthy konten jenis. jika satu template fails, inspect -nya frontend field mapping dan route generation.
- periksa exposure. Ensure drafts, preview hosts,
/admin, dan mentah API routes adalah excluded sementara publik HTML routes tetap dapat di-crawl. - Validate recovery. Konfirmasi menyelesaikan sumber HTML dan sebuah bersih canonical/indexability state, lalu monitor wajar recrawl alih-alih repeatedly resubmitting unchanged halaman.
Strapi SEO mistakes
- Treating sebuah SEO plugin sebagai sebuah rendering layer. ini membuat fields; frontend harus output dan validate them.
- Fetching essential konten hanya di browser. gunakan SSG, regeneration, atau SSR untuk halaman itu perlu untuk peringkat.
- Exposing drafts dan preview deployments. memerlukan access dan kirim server-terlihat
noindexsinyal. - Putting mentah API URLs di sitemaps. Sitemaps seharusnya list canonical publik HTML routes, tidak
/apiresources. - Blocking semua API access tanpa memeriksa architecture. Lindungi privat endpoints, tetapi melakukan tidak break server membangun atau rendering itu legitimately bergantung pada Strapi.
konten adalah published di Strapi tetapi halaman tetap stale
mungkin penyebab: webhook, bangun, revalidation, atau cache failure. Perbaiki: trace konten ID melalui setiap langkah dan purge affected route. Konfirmasi: mentah production HTML berisi published revision.
SEO fields adalah filled tetapi tags adalah absent
mungkin penyebab: frontend kueri omits SEO component atau head template melakukan tidak map ini. Perbaiki: sertakan fields dan render them selama SSG/SSR. Konfirmasi: curl mengembalikan yang diharapkan judul, canonical, dan robots tags.
Draft atau preview konten adalah dapat diindeks
mungkin penyebab: sebuah publik preview host atau client-hanya noindex logic. Perbaiki: tambahkan authentication dan server-tingkat exclusion. Konfirmasi: unauthenticated permintaan cannot access sebuah dapat diindeks respons.
sebuah konten jenis adalah missing dari sitemap
mungkin penyebab: frontend sitemap kueri, publication filter, locale relation, atau route mapping excludes ini. Perbaiki: correct kueri dan sertakan canonical published routes hanya. Konfirmasi: sitemap entries resolve untuk dapat diindeks 200 halaman.
Bandingkan Strapi API data dengan production HTML
curl -fsS 'https://cms.example.com/api/articles/SLUG' > strapi.json
curl -fsSL 'https://www.example.com/SLUG/' > page.html
grep -Eio '<title>[^<]+|<link[^>]+rel="canonical"[^>]*|<meta[^>]+name="robots"[^>]*' page.htmlgunakan API respons hanya dari sebuah authorized environment dan melakukan tidak print tokens ke logs. perbandingan memeriksa pengiriman; ini melakukan tidak prove Google’s pengindeksan decision.
Inspect dirender head nilai
Jalankan di DevTools Console:
({title: document.title, canonical: document.querySelector('link[rel="canonical"]')?.href, robots: document.querySelector('meta[name="robots" i]')?.content}); Prove sebuah Strapi SEO perubahan
konten-pengiriman test
Test untuk jalankan: publish sebuah controlled revision dan trace Strapi, webhook, bangun/revalidation, cache, dan langsung sumber. Yang diharapkan hasil: satu canonical production route menyajikan yang sama published revision. Failure interpretation: pengiriman atau invalidation adalah stale. Monitoring window: wajar penerbitan SLA. Rollback trigger: mixed konten dan metadata versi reach production.
Sumber-rendering test
Test untuk jalankan: bandingkan mentah dan dirender HTML pada representative konten jenis. Yang diharapkan hasil: utama konten, tautan, metadata, dan canonicals adalah present dan agree. Failure interpretation: essential output bergantung pada browser JavaScript. Monitoring window: setiap frontend rilis. Rollback trigger: sebuah key template loses sumber konten atau indexability sinyal.
Exposure test
Test untuk jalankan: permintaan preview, draft, admin, API, dan publik routes tanpa credentials. Yang diharapkan hasil: sensitive routes adalah protected atau excluded sementara canonical publik halaman tetap dapat di-crawl. Failure interpretation: access dan SEO controls adalah di atas- atau di bawah-scoped. Monitoring window: setiap routing atau security perubahan. Rollback trigger: drafts become publik atau publik halaman become blocked.
alat untuk Strapi SEO
«- @strapi/plugin-seo (community SEO plugin) — adds the SEO component, SERP
preview, and in-content analysis to the Strapi admin. Install via
yarn add @strapi/plugin-seo. Stores fields; doesn’t render them.
- Webtools sitemap add-on (
strapi-plugin-webtools+webtools-addon-sitemap, pluginpal) — the maintained Strapi 5 sitemap option; generatessitemap.xmlfrom published content and auto-splits into a sitemap index at scale.strapi-5-sitemap-pluginis a lighter alternative for simpler sites. Pluginpal’s older standalonestrapi-plugin-sitemaponly supports Strapi 4 — its README redirects v5 users to Webtools. strapi-plugin-redirect-urls/ Smart Redirect Manager — manage 301/302 redirects in the admin for migrations and slug changes.- URL Inspection (Google Search Console) — see how a single frontend URL was crawled and rendered; the rendered HTML tells you whether CSR left content out.
- Rich Results Test — confirm JSON-LD is present in the rendered output after any rendering change.
- Screaming Frog SEO Spider — crawl with JS rendering on/off to compare raw vs. rendered HTML; build the pre/post crawl comparison for migrations; surface accidentally-indexable preview/admin/API URLs.
- Ahrefs Site Audit — surfaces broken canonicals, missing metadata, redirect chains, and indexability issues across the whole frontend.
- Bing Webmaster Tools — Bing’s rendering/indexing view and where IndexNow » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian seratus empat puluh empat, bagian kecil satu: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.) « submissions show up. » (Terjemahan) (Ringkasan bahasa Indonesia untuk bagian seratus empat puluh empat, bagian kecil dua: teks sumber dipertahankan agar dapat diperiksa dalam tinjauan penutur asli.)
Uji pemahaman Anda: Strapi SEO
Five quick pertanyaan pada bagaimana SEO berfungsi pada sebuah Strapi-powered situs. Pick sebuah jawaban untuk setiap, lalu periksa.
Resources worth Anda time
My related writing
- JavaScript SEO Issues & Best Practices — my utama reference pada rendering; core dari bagaimana sebuah Strapi frontend mendapatkan di-crawl dan terindeks.
- Beginner’s Guide untuk SEO teknis — di mana rendering dan crawling fit di bigger picture.
My speaking
- JavaScript SEO — Ungagged 2019 (SlideShare) — my walkthrough dari bagaimana headless/decoupled CMSes split frontend dari backend, plus Googlebot’s stateless rendering. (Standing disclaimer: dynamic-rendering recommendation di itu deck adalah now outdated — Google deprecated ini.)
pada ini situs
- SEO untuk sebuah CMS headless — platform-agnostic versi dari semuanya di sini.
- JavaScript SEO — rendering pillar Strapi SEO sits pada top dari.
dari sekitar industry
- React SEO: Best Practices (Sam Underwood, Ahrefs) — React adalah paling umum frontend paired dengan Strapi dan secara langsung applicable; authored oleh Patrick’s Ahrefs colleague alih-alih Patrick.
- CMS headless & Strapi SEO best practices (Strapi Blog) — Strapi’s own overview dari di mana SEO kepemilikan shifts di sebuah headless setup.
- Strapi SEO Plugins: Menyelesaikan Guide untuk Strapi 5 (Strapi Blog) — apa SEO dan sitemap plugins melakukan, including draft/publish-di-sitemap perilaku.
- SEO guide untuk Strapi (SALT.agency) — sebuah independent teknis-SEO-agency walkthrough dari modeling SEO fields di Strapi.
- Strapi SEO Tips dan Tricks (Notum Tech) — dari team behind original SEO plugin.
- CMS headless SEO: hindari ini umum Pitfalls (Successive Digital) — duplicate-environment dan missing-defaults masalah itu hit Strapi stacks.
- Webtools Sitemap tambahkan-pada (docs) — maintained Strapi 5 sitemap solusi; older strapi-plugin-sitemap (GitHub) hanya mendukung Strapi 4.
- @strapi/plugin-seo (npm) — SEO plugin package dan component reference.
Stats worth citing
- Strapi adalah open-sumber dan dual-deploy. ini adalah sebuah Node.js CMS headless dengan REST + GraphQL APIs, runnable self-hosted atau pada Strapi Cloud — deployment pilihan memengaruhi API latency, yang hanya touches Core Web Vitals di SSR (tidak SSG/ISR). Sumber
- ** sitemap tambahkan-pada auto-splits past 50 000 URLs** ke sebuah sitemap indeks dan excludes drafts ketika draft/publish adalah enabled — practical scale limit untuk sebuah Strapi-generated sitemap. untuk Strapi 5, itu’s Webtools sitemap tambahkan-pada, tidak older standalone plugin (di bawah). Sumber
- rendering perilaku tidak uniform di seluruh AI crawler, tetapi safe assumption adalah HTML-hanya. ada Tidak single shared spec — beberapa fetchers execute JavaScript, sebagian besar hari ini jangan — so sebuah crawler itu membaca hanya awal HTML respons sees sebuah empty shell pada sebuah CSR halaman. SSR/SSG puts konten di mentah HTML dan menghapus guesswork, yang adalah mengapa ini adalah safer default untuk AI visibilitas serta Google/Bing. Context
- Google deprecated dynamic rendering. Prerendering sebuah CSR Strapi frontend adalah Tidak lebih lama recommended workaround — Google now poin untuk SSR, static rendering, atau hydration. Sumber
Log perubahan
Diperbarui 21 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.
Diperbarui 19 Jul 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.