SEO u headless webu: na co nezapomenout v Astru a Next.js

Headless web není pro SEO horší, jen za vás nic nevyřeší sám. Ukážu, co musí být postavené od začátku: hotové HTML ze serveru, SEO pole v Sanity, sitemapa, stavové kódy i přesměrování.

  • Návody
  • 7 minut
SEO checklist headless webu: hotové HTML, metadata ze Sanity, sitemapa, stavové kódy, hreflang a náhledy mimo index, srovnání toho, co vidí robot, a SEO pole v Sanity Studiu

Quick Summary (TL;DR): Headless web je web, kde obsah spravuje samostatný CMS, třeba Sanity, a stránky vykresluje frontend v Astru nebo Next.js. Pro SEO není horší než klasický web, jen nic nedostanete zadarmo: sitemapu, metadata ani přesměrování za vás nikdo nevyřeší. Nejdůležitější je, aby server posílal hotové HTML, ať už statickým generováním, nebo renderováním na serveru, protože řada robotů JavaScript nespouští a Google ho zpracovává s odstupem. Titulky, meta popisy, kanonické URL, obrázky pro sdílení a přepínač noindex patří do obsahového modelu v Sanity, aby je marketing upravoval sám. Sitemapa a robots.txt se generují z obsahu, neexistující stránky musí vracet skutečný stav 404 a přesměrování 301 se dají spravovat přímo v CMS. Často se zapomíná na indexovaná náhledová prostředí, hreflang u vícejazyčných webů, povinné alt texty a přegenerování stránek po publikaci. Když jsou tyhle základy součástí návrhu, má headless web pro SEO výborné podmínky: rychlé HTML, strukturovaná metadata a nové stránky, které je dostanou automaticky.

Je headless web horší pro SEO?

Ne. Headless web je web, kde obsah spravuje samostatný CMS (třeba Sanity) a stránky vykresluje frontend v Astru nebo Next.js. Vyhledávačům je jedno, odkud obsah pochází. Zajímá je, jaké HTML dostanou, jaký stavový kód stránka vrátí a jestli má metadata.

Háček je jinde. Klasické systémy jako WordPress nebo Webflow řeší spoustu SEO věcí za vás: sitemapu, kanonické URL, přesměrování, pole pro meta popisky. U headless webu nic z toho nevznikne samo. Musí se to navrhnout a postavit. Když se na to zapomene, web vypadá skvěle, jen ho ve vyhledávání nikdo nenajde. Proto procházím u každého headless projektu stejný technický checklist.

Dostane vyhledávač hotové HTML?

Tohle je první a nejdůležitější otázka. Pokud se obsah stránky skládá až v prohlížeči JavaScriptem (client-side rendering), robot při prvním načtení dostane prázdnou kostru. Google JavaScript vykreslit umí, ale dělá to s odstupem. Řada dalších robotů, včetně většiny crawlerů AI vyhledávačů, ho podle dostupných měření nespouští vůbec.

Řešení je posílat hotové HTML ze serveru:

  • Statické generování (SSG): stránky se vyrobí při buildu. Výchozí režim Astra, ideální pro obsahové weby.
  • Renderování na serveru (SSR): stránka se složí na serveru při požadavku. V Next.js s App Routerem je to díky React Server Components výchozí chování.
  • Průběžné přegenerování: statická stránka, která se po změně obsahu v CMS obnoví sama.

Rychlý test: otevřete na svém webu „Zobrazit zdrojový kód stránky“. Pokud tam nevidíte nadpis a text článku, nevidí ho ani část robotů. Přesnější pohled dá nástroj Kontrola URL v Search Console, který ukáže vykreslené HTML tak, jak ho vidí Google.

Kde se berou titulky, popisky a kanonické URL?

V headless webu z CMS. Ale jen tehdy, když na ně v obsahovém modelu myslíte. V Sanity proto ke každému typu stránky přidávám SEO objekt: titulek pro vyhledávače, meta popis, obrázek pro sdílení, kanonickou URL a přepínač noindex. Když pole zůstane prázdné, frontend použije rozumný výchozí stav, třeba nadpis a perex stránky.

V Next.js to obstará Metadata API:

export async function generateMetadata({ params }) {
  const { slug } = await params
  const page = await getPage(slug)
  return {
    title: page.seo?.title ?? page.title,
    description: page.seo?.description ?? page.perex,
    alternates: { canonical: `https://example.com/${slug}` },
    robots: page.seo?.noindex ? { index: false } : undefined,
  }
}

V Astru stejná data vypíšete do <head> ve společném layoutu. Výhoda je v tom, že marketing pak metadata upravuje sám v Sanity Studiu a nemusí kvůli nim čekat na vývojáře.

Má web sitemapu a robots.txt?

Musí. U headless webu je nejlepší generovat sitemapu automaticky z obsahu, aby nová stránka nebo článek byly v sitemapě ve chvíli, kdy je publikujete.

  • Astro má oficiální integraci @astrojs/sitemap.
  • Next.js vygeneruje sitemapu i robots.txt ze souborů app/sitemap.ts a app/robots.ts.

Do sitemapy patří jen kanonické, indexovatelné stránky se stavem 200. Ne koncepty, ne stránky s noindex a ne přesměrované URL.

Vrací chybějící stránka opravdu 404?

U webů postavených jako jednostránková aplikace se často stává, že neexistující URL vrátí stav 200 a jen zobrazí text „Stránka nenalezena“. Google tomu říká soft 404. Ověřte, že neexistující slug vrací skutečný stavový kód 404. V Next.js na to slouží funkce notFound(), v Astru stránka 404.astro, u serverového renderování pak nastavení Astro.response.status.

Kdo se stará o přesměrování?

Při redesignu nebo přejmenování stránky musí stará URL vést přesměrováním 301 na novou. V headless webu doporučuji spravovat přesměrování jako obsah: v Sanity je seznam „stará URL → nová URL“ a frontend nebo hosting si ho načte při buildu. Marketing tak přesměrování přidá sám, když mění strukturu webu. Víc o přesměrováních píšu v článku o přípravě na migraci webu.

Na co se zapomíná nejčastěji?

  • Náhledová prostředí v indexu. Testovací a preview verze webu musí mít noindex nebo být za heslem, jinak soupeří s ostrým webem.
  • Koncepty mimo web. Nepublikovaný obsah z CMS nesmí proniknout do sitemapy ani na veřejné stránky.
  • Zastaralé stránky po publikaci. Když se stránky generují staticky, musí je publikace v CMS obnovit. Webhook ze Sanity spustí nový build nebo přegeneruje jen změněné stránky.
  • Hreflang u vícejazyčného webu. Každá jazyková verze má odkazovat na ostatní. V Sanity se propojí překlady, frontend z nich vygeneruje alternativní odkazy.
  • Alt texty. Pole pro popis obrázku v Sanity udělejte povinné. Validace je levnější než audit.
  • Strukturovaná data. JSON-LD pro článek, organizaci nebo produkt se skládá ze stejných polí jako stránka, takže se s obsahem nerozjede.
  • Konzistentní URL. Rozhodněte jednou, jestli adresy končí lomítkem, a držte se toho všude, v odkazech i v sitemapě.

Proč se to vyplatí postavit pořádně?

Protože když jsou tyhle základy hotové, má headless web pro SEO nadprůměrné podmínky. Statické HTML je rychlé, v kódu je jen to, co tam má být, a metadata jsou strukturovaná data místo ručně vyplňovaných polí na stovce stránek. Marketing pak v Sanity skládá nové landing pages z hotových bloků a každá z nich dostane SEO pole, místo v sitemapě i kanonickou URL automaticky.

Jak bloky v Sanity fungují, popisuju v článku Sanity CMS: co to je, jak funguje a kdy se vyplatí. Výběr frameworku rozebírám v článku Astro, Next.js, nebo Webflow a viditelnost v AI odpovědích v článku Jak optimalizovat web pro AI vyhledávače.

Co si z toho odnést

Headless web není pro SEO handicap, jen nic nedostanete zadarmo. Rozhoduje hotové HTML ze serveru, SEO pole v obsahovém modelu, automatická sitemapa, správné stavové kódy a přesměrování spravovaná v CMS. Když je to součástí návrhu od začátku, marketing pak řeší obsah, ne technické chyby.

Plánujete headless web, nebo už ho máte a nevíte, jestli je technicky v pořádku pro vyhledávače? Napište mi. Projdu ho podle tohoto checklistu a řeknu vám, co opravit jako první.

Časté otázky

Je headless web horší pro SEO než WordPress nebo Webflow?

Ne, pokud posílá hotové HTML a má postavené technické základy. Rozdíl je v tom, že sitemapu, metadata a přesměrování musí někdo navrhnout a naprogramovat, nedostanete je automaticky se systémem.

Umí Google indexovat weby, které se skládají v JavaScriptu?

Umí, ale vykresluje je s odstupem. Řada jiných robotů, včetně většiny crawlerů AI vyhledávačů, JavaScript nespouští, proto je bezpečnější posílat hotové HTML ze serveru.

Co je lepší pro SEO, Astro, nebo Next.js?

Oba fungují dobře, pokud stránky generují staticky nebo na serveru. Astro sedí obsahovým webům, Next.js projektům s aplikační logikou. O SEO rozhoduje spíš to, jak jsou postavené metadata, sitemapa a stavové kódy.

Může marketing upravovat SEO headless webu sám?

Ano, když jsou SEO pole součástí obsahového modelu. V Sanity pak titulky, popisy, obrázky pro sdílení, noindex i přesměrování upravujete bez vývojáře.

Jak poznám, jestli můj web posílá vyhledávačům hotové HTML?

Otevřete zdrojový kód stránky v prohlížeči a podívejte se, jestli v něm je nadpis a text. Přesnější je nástroj Kontrola URL v Search Console, který ukáže vykreslenou verzi stránky.

Potřebuje headless web SEO plugin?

Ne, žádný plugin jako ve WordPressu tu není. SEO je součástí kódu frontendu a obsahového modelu v CMS, což je výhoda: funguje stejně na každé nové stránce.

Jan Vodvárka

Webflow vývojář a designer

Další článekÚdržba webu na míru: co obnáší provoz po spuštění

Máte projekt, na který šablona nestačí?

Popište mi, co potřebujete. Ozvu se s rozsahem, plánem a odhadem ceny.

STAV:PŘIJÍMÁM PROJEKTY·  ODPOVĚĎ DO 2 DNŮ

Nezávazná poptávka

FORM.POPTÁVKA

Napište mi o projektu

Popište projekt. Do dvou dnů se ozvu s rozsahem, termínem a plánem.

Co potřebujete
Co potřebujete

Údaje použiju jen k odpovědi.

Odpověď do 2 dnů ·designer@janvodvarka.cz