V prohlížeči stránka vypadá kompletně: má nadpis, text, cenu i tlačítko. Jenže část toho, co vidíte, tam nebyla, když se stránka stáhla ze serveru — dokreslil to až JavaScript.
A robot, který JavaScript nespouští, dostane jen tu první verzi. Tenhle článek je o tom, jak zjistit, jak ta serverem vrácená verze vypadá.
Vykreslují AI roboti JavaScript?
Liší se to podle robota a plošná odpověď „ne“ je nepřesná. V měření z prosince 2024 roboti, kteří sbírají obsah pro ChatGPT, Claude a Perplexity, soubory JavaScriptu stahovali, ale nespouštěli. Googlebot a AppleBot je naopak spouštěly a stránku vykreslovaly.
Rozdíl mezi „stáhne“ a „spustí“ je tady podstatný: v logu serveru uvidíte, že si robot skript vyžádal, a snadno z toho usoudíte, že s ním něco dělá. Podle měření si ho vyžádá, ale nespustí.
| Robot | Vykresloval JavaScript (měření 12/2024)? | Co z toho plyne |
|---|---|---|
| Googlebot | ano | obsah z JavaScriptu se k němu dostane, ale se zpožděním |
| Gemini | zdroj to dovozuje z toho, že běží na infrastruktuře Googlu | pravděpodobně totéž co Googlebot |
| AppleBot | ano — zdroj ho popisuje jako prohlížečový crawler | často se na něj zapomíná |
| GPTBot (ChatGPT) | ne — skripty stáhne u 11,50 % požadavků, nespustí | vidí jen serverem vrácené HTML |
| Claude | ne — stáhne u 23,84 % požadavků, nespustí | vidí jen serverem vrácené HTML |
| PerplexityBot | ne | vidí jen serverem vrácené HTML |
Čísla pocházejí z měření společností Vercel a MERJ zveřejněného 17. prosince 2024. Měřilo se na webu nextjs.org, napříč sítí Vercelu a na dvou pracovních portálech s odlišnými technologiemi. Robot Microsoft Copilotu byl z měření vyřazen, protože nemá vlastní identifikaci, podle které by se dal v logu odlišit.
Co robot uvidí, když skripty nespustí
Rozdíl není teoretický. Tady je, co se stane s typickými prvky stránky.
| Aspekt | Robot bez vykreslování | Návštěvník v prohlížeči |
|---|---|---|
| Text a nadpisy | vidí, pokud je server pošle v HTML | vidí vždy |
| Cena dotažená z API | prázdné místo nebo zástupný text | aktuální cena |
| Popis produktu v záložce | podle implementace může chybět celý | po kliknutí se rozbalí |
| Recenze načtené po scrollu | nevidí | vidí |
| Text psaný do stránky skriptem | nevidí | vidí |
| Strukturovaná data dopsaná až běžícím skriptem | nevidí | nevidí — jsou určená strojům, ne jemu |
Nejzrádnější je předposlední řádek. Když se hlavní text stránky skládá až v prohlížeči, robot bez vykreslování dostane prakticky prázdný dokument — a přitom v prohlížeči i v inspektoru prvků všechno vypadá v pořádku. Proč, vysvětluje první z chyb níž.
U posledního řádku pozor na jednu záměnu, která se často plete: strukturovaná data v podobě JSON-LD sice bydlí uvnitř značky script, ale to neznamená, že je robot bez vykreslování nevidí. Pokud jsou v serverem vráceném HTML, robot si je přečte i bez vykreslování — nic spouštět nemusí, stačí mu přečíst obsah té značky. Problém nastane až tehdy, když je do stránky dopíše běžící skript nebo správce značek.
Ověřte si to za pět minut
Tohle se nemusí odhadovat ani se o tom číst. Jde to ověřit přímo.
-
Stáhněte stránku bez prohlížeče
V terminálu napište curl -s https://vasweb.cz/stranka/ a v tom výstupu hledejte konkrétní větu, kterou na stránce vidíte. Je to dobré přiblížení toho, co dostane robot bez vykreslování; web ale může vracet jinou odpověď podle identifikace robota nebo podle země.
-
Bez terminálu: zobrazte zdroj stránky
V prohlížeči klávesová zkratka Ctrl+U, na Macu Cmd+Alt+U. Pozor: ne inspektor prvků — ten ukazuje stav stránky až po spuštění skriptů, takže vám ukáže i to, co robot nevidí.
-
Vyhledejte v tom zdroji svůj obsah
Ctrl+F a zkuste nadpis, první větu odstavce, cenu, odpověď na otázku z FAQ. Co tam nenajdete, to roboti bez vykreslování nedostanou — a ani u těch vykreslujících na to není spoleh.
-
Než vyhlásíte poplach, zkontrolujte kódování
Když je text ve výstupu plný otazníků nebo divných znaků, nechybí — jen ho čtete špatně. Část českých webů posílá stránku ve windows-1250, ne v UTF-8. Napoví hlavička Content-Type nebo značka meta charset. Sám jsem si tímhle vyrobil dva falešné nálezy.
-
Kontrolní zkouška: vypněte JavaScript
V nastavení prohlížeče pro jednu stránku vypněte JavaScript a načtěte ji znovu. Uvidíte přibližně tu verzi, se kterou robot pracuje — tentokrát vizuálně, ne v kódu. Dokonalá simulace robota to není, ale jako kontrola stačí.
Kdy zasahovat hned a kdy to počká
Ne všechno, co se dokresluje skriptem, je problém. Rozdíl je v tom, jestli chybí obsah, kvůli kterému na stránku někdo chodí.
| Chybí ve zdroji stránky | Priorita |
|---|---|
| nadpis H1, hlavní text, popis produktu | řešit hned |
| cena a dostupnost | řešit hned |
| odkazy na jednotlivé položky ve výpisu | řešit hned |
| filtry, řazení, našeptávač | obvykle nevadí |
| mapa, chat, kolotoč obrázků | obvykle nevadí |
| recenze donačítané po odrolování | podle toho, jestli nesou obsah, na který se lidé ptají |
Na kódu je rozdíl vidět hned. Tohle robot bez vykreslování dostane prázdné:
<body>
<div id="app"></div>
<script src="/app.js"></script>
</body>
A tohle dostane celé, i když se skript nikdy nespustí:
<body>
<h1>Vrtačka XY 700 W</h1>
<p>Příklepová vrtačka do zdiva i dřeva, hmotnost 1,8 kg.</p>
<p>2 490 Kč · skladem</p>
<a href="/vrtacky/">Zpět na vrtačky</a>
<script src="/app.js"></script>
</body>
Skript ve druhém případě nezmizel — jen už není jedinou cestou k obsahu.
Co má být v HTML a co může zůstat ve skriptu
Nejde o to zbavit se JavaScriptu. Jde o to rozdělit, co má robot dostat rovnou.
Když máte opravit jen tři věci, opravujte je v tomhle pořadí: hlavní text s nadpisem, pak odkazy na další stránky, pak cenu, dostupnost a odpovědi na otázky.
| Aspekt | Patří do HTML od serveru | Může zůstat v JavaScriptu |
|---|---|---|
| Struktura | nadpisy H1 až H3 | rozbalování a sbalování sekcí |
| Obsah | hlavní text, popisy, odpovědi | našeptávač ve vyhledávání |
| Obchodní údaje | cena, dostupnost, doprava | konfigurátor a kalkulačky |
| Navigace | odkazy jako značka a v HTML | filtry a řazení výpisu |
| Strojová data | strukturovaná data ve zdroji stránky | měření a analytika |
| Doplňky | — | mapa, chat, kolotoč obrázků |
U navigace stojí za zvláštní pozornost jedna věc: odkaz musí být odkaz. Když je přechod na další stránku řešený jen tlačítkem a skriptem, robot bez vykreslování nemá na cílovou adresu spolehlivou cestu. Ve zdroji stránky poznáte rozdíl na první pohled — hledejte značku a s atributem href.
Nejčastější chyby
Ověřovat obsah v inspektoru prvků
Inspektor ukazuje strom dokumentu po spuštění skriptů. Vidíte v něm i obsah, který v odpovědi ze serveru vůbec nebyl. Je to nejčastější důvod, proč si někdo myslí, že má obsah v HTML, a nemá.
Řešení: Používejte zobrazení zdroje stránky nebo curl.
Opravit domovskou stránku a mít hotovo
Domovská stránka bývá napsaná staticky a projde. Problém se často schovává až na šablonách, které skládají obsah z databáze — tedy přesně tam, kde jsou peníze.
Řešení: Projděte i produkt, článek a výpis.
Spolehnout se na to, že robot počká
U robotů, kteří skripty nespouštějí, nejde o čekání: bez spuštění skriptu ten obsah prostě nevznikne. A u těch, kteří vykreslují, je vykreslování práce navíc a děje se s odstupem. Ani tam to není zdarma.
Řešení: Počítejte s tím, že nepočká.
Vzít plošné „AI roboti nevykreslují JavaScript“ jako fakt
AppleBot v měření z prosince 2024 vykresloval a u Gemini to zdroj dovozuje z infrastruktury Googlu. Když stavíte rozhodnutí na tom, že to nedělá nikdo, stavíte ho na tvrzení, které je nepřesné i podle zdroje, ze kterého se opisuje.
Řešení: Rozlišujte podle robota.
Co s tím, když web na JavaScriptu opravdu stojí
Přepis celé aplikace kvůli AI robotům se skoro nikdy nevyplatí. Reálné jsou tři levnější cesty.
Vykreslování na serveru jen pro obsahové stránky. Většina moderních frameworků to umí zapnout po jednotlivých šablonách. Nasadíte ho na články, produkty a kategorie a zbytek aplikace necháte být.
Předgenerování statického HTML. Pokud se obsah nemění po každé návštěvě, dá se vygenerovat dopředu. Robot i návštěvník pak dostanou hotovou stránku.
Doplnit klíčové údaje do HTML i tam, kde je skript překreslí. Nejlevnější varianta: cena a popis se do stránky vypíšou už na serveru a JavaScript je pak jen aktualizuje. Robot dostane hodnotu, návštěvník aktuální stav.
Kontrolní seznam
Než to odškrtnete jako hotové
- Hlavní text je ve zdroji stránky Ověřeno přes curl nebo Ctrl+U, ne v inspektoru.
- Cena a dostupnost jsou v HTML U e-shopu ta nejdůležitější položka vůbec.
- Odkazy jsou značky a s href Ne tlačítka obsluhovaná skriptem.
- Výpisy a kategorie mají položky v HTML Nejčastější místo, kde to selže.
- Strukturovaná data jsou ve zdroji Když je vkládá až správce značek, část robotů je nevidí.
- Zkontrolované tři typy stránek Produkt nebo služba, článek, výpis. Ne jen domovská stránka.
- Rozsypaný text není chybějící text Otazníky ve výstupu znamenají špatně přečtené kódování, ne prázdné HTML.
Kam dál
Tenhle článek řeší, co robot uvidí, když ho na web pustíte. Jestli ho pustit a kterého, je jiná otázka — na to je přehled AI robotů a robots.txt a u části robotů robots.txt podle dokumentace ani neplatí. Když vás zajímá, kolik vás procházení stojí, podívejte se na zátěž webu od AI robotů.
Technicky navazuje rychlost webu pro AI a praktická kontrola přes Lighthouse. A pokud jste si nad datem u zdejšího měření řekli, že podobně opatrně by se měla číst většina čísel v tomhle oboru, máme na to samostatný návod: jak číst studie o AI viditelnosti.