Umějí AI crawlery číst obsah vykreslený JavaScriptem?
Často ne. Googlebot JavaScript vykresluje v pozdějším kroku, ale většina AI crawlerů to nedokumentuje a sám Google upozorňuje, že ne všichni boti umějí JavaScript spouštět. Pokud se váš text objeví až po spuštění skriptů, může AI crawler dostat prázdnou stránku. Hlavní obsah servírujte v úvodním HTML pomocí vykreslování na serveru nebo statických stránek.
Single-page aplikace a klientské frameworky jsou všude a v prohlížeči vypadají dobře. Crawler, který čte jen HTML odeslané vaším serverem, vidí něco jiného: <div id="root"></div>, pár značek script a málo textu nebo žádný. Pro AI odpovědi na takové stránce není co citovat.
Na této stránce
Proč AI crawlery o obsah v JavaScriptu přicházejí?
Spouštění JavaScriptu je drahé. Crawler musí stáhnout skripty, spustit je v prohlížečovém jádru a počkat na načtení dat. Google to pro Search dělá: stránky prochází, řadí je do fronty k vykreslení a vykresluje je pomocí headless Chromium, když to zdroje dovolí. I tak Google doporučuje vykreslování na serveru nebo prerendering, protože je rychlejší pro uživatele i crawlery, a upozorňuje, že ne všichni boti umějí JavaScript spouštět.
OpenAI, Anthropic ani Perplexity v dokumentaci svých crawlerů neuvádějí, že by jejich agenti JavaScript spouštěli. Apple uvádí, že Applebot může stránky vykreslovat v prohlížeči. Bez jasného prohlášení je bezpečným předpokladem pro AI crawlery, že čtou pouze úvodní HTML.
Jak ověřím, co crawler dostane?
Podívejte se na surové HTML, ne na vykreslenou stránku. Vývojářské nástroje prohlížeče zobrazují DOM po spuštění skriptů, což není to, co crawler dostane. Použijte zobrazení zdroje nebo uložte surové HTML z příkazové řádky a prohledejte ho:
curl -s -o page.html \
-A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot" \
https://example.com/page
# Is a sentence from your main text in the raw HTML?
grep -c "a sentence from your main content" page.html
Výsledek 0 znamená, že věta není v HTML odeslaném serverem, takže ji crawlery, které nespouštějí skripty, nenajdou. Zbytek napoví rychlý pohled do souboru: článek vykreslený na serveru tam má celý text; klientská schránka má prázdný kořenový prvek a seznam skriptů.
Které stránky jsou nejvíce ohrožené?
- Single-page aplikace postavené na Reactu, Vue, Angularu nebo Svelte, které vše vykreslují v prohlížeči.
- Stránky, které hlavní text po načtení stahují z API, například detaily produktů, ceny nebo recenze.
- Obsah v záložkách, akordeonech nebo sekcích „načíst další“, který se vyžádá až po kliknutí.
- Stránky za přihlášením, paywallem nebo stěnou souhlasu, které crawler nemůže projít.
- Stránky, které
noindexnebo kanonickou adresu URL nastavují jen JavaScriptem. Google upozorňuje, že pokud v původním HTML vidínoindex, může vykreslování úplně přeskočit.
Jak opravit obsah, který existuje jen v JavaScriptu?
Řešením je poslat důležitý obsah už v první odpovědi. Vyberte nejlehčí možnost, kterou váš stack umožňuje:
- Vykreslování na serveru (SSR): frameworky jako Next.js, Nuxt, SvelteKit a Angular SSR stránku vykreslí na serveru a v prohlížeči ji hydratují.
- Statické generování nebo prerendering: HTML sestavte při nasazení u stránek, které se mění zřídka, například články, dokumentace a vstupní stránky.
- Progresivní vylepšování: text, nadpisy, odkazy, ceny a JSON-LD dejte do HTML a JavaScript používejte jen pro interakci.
- Vložte důležité přímo: pokud záložky obsah skrývají, dejte ho celý do HTML a viditelnost přepínejte pomocí CSS nebo skriptu, místo abyste ho stahovali po kliknutí.
Nemusíte převádět celou aplikaci najednou. Začněte stránkami, které chcete mít citované: články, dokumentace, stránky produktů a ceníku. Uživatelské účty a dashboardy mohou zůstat na straně klienta, protože jsou stejně za přihlášením.
Nepodávejte crawlerům jinou stránku než uživatelům podle user agenta. Vykreslování stejného HTML pro všechny se snáze udržuje a odstraňuje jakoukoli pochybnost o cloakingu.
Blokují AI crawlery i obrazovky přihlášení, souhlasu a paywallu?
Ano. Crawler se nepřihlašuje, neklikne na cookie banner a neřeší výzvy. Anthropic uvádí, že jeho boti se nebudou pokoušet obejít CAPTCHA. Pokud správce souhlasu nahradí stránku v HTML celoobrazovkovým překryvem nebo přesměruje nové návštěvníky na stránku souhlasu, crawler dostane místo vašeho obsahu právě to.
Zajistěte, aby veřejné stránky vykreslovaly obsah v HTML bez ohledu na stav souhlasu, s bannerem jako překryvem, ne jako náhradou. Stránky, které chcete mít citované, držte mimo přihlašovací zdi a ověřte, že crawler není přesměrován na přihlašovací stránku.
Jak AISeeWhy odhaluje stránky závislé jen na JavaScriptu?
AISeeWhy čte úvodní HTML tak, jak ho dostává každý crawler, bez spouštění skriptů. Když má stránka téměř žádný viditelný text, ale kořenový prvek frameworku a skripty, ohlásí zjištění P1, že obsah potřebuje JavaScript. Označí také přesměrování, která crawlery posílají jinam než na stránku, kterou dostane prohlížeč.
Časté dotazy
Vykresluje Googlebot JavaScript?
Ano. Google prochází HTML, řadí stránky do fronty k vykreslení a vykresluje je pomocí headless Chromium, když to zdroje dovolí. Google přesto doporučuje vykreslování na serveru nebo prerendering.
Spouštějí crawlery ChatGPT, Claude a Perplexity JavaScript?
Dokumentace crawlerů jejich dodavatelů to neuvádí. Dokud dodavatel neuvede opak, předpokládejte, že crawler čte úvodní HTML, a zajistěte, aby v něm byl váš obsah.
Je dynamické vykreslování pro boty dobrý nápad?
Funguje jako provizorní řešení, ale přidává druhou cestu vykreslování, kterou je třeba udržovat. Vykreslování na serveru nebo statické HTML dodává stejný obsah všem a je jednodušším dlouhodobým řešením.
Počítá se JSON-LD přidané JavaScriptem?
Google ho po vykreslení přečíst umí, ale crawlery, které skripty nespouštějí, ho neuvidí. JSON-LD dejte do úvodního HTML.
Zdroje
- Google Search Central: základy JavaScript SEO
- Apple: o Applebotu
- OpenAI: přehled crawlerů OpenAI
- Anthropic: Stahuje Anthropic data z webu a jak mohou majitelé webů crawler zablokovat?
- Perplexity: crawlery Perplexity