Google JavaScript spustí, ale ne hned a ne vždycky. Seznam s ním pracuje omezeně a roboti jazykových modelů většinou vůbec. Praktický závěr: obsah, na kterém stojí návštěvnost z vyhledávání, musí být v HTML, které přijde ze serveru.
Jak Google zpracovává stránku
- Stažení. Robot si vezme HTML tak, jak ho server pošle.
- První zpracování. Z tohoto HTML se vytáhnou odkazy, titulek, kanonická adresa a text.
- Fronta na vykreslení. Stránka čeká, až bude volná kapacita. Odstup je od minut po dny.
- Vykreslení. Spustí se skripty, stránka se poskládá a teprve teď se vidí obsah dodaný JavaScriptem.
Mezi druhým a čtvrtým krokem existuje okno, ve kterém vyhledávač zná jen to, co bylo v původním HTML. Když je v něm prázdná stránka, může se do indexu dostat prázdná stránka.
Co v HTML musí být vždycky
- Titulek, popisek a kanonická adresa.
- Hlavní text stránky a nadpisy.
- Odkazy v navigaci a ve výpisech, jako značky
a href. - Ceny a dostupnost u e-shopu.
- Strukturovaná data.
Co může doplnit JavaScript
- Recenze načítané po kliknutí.
- Doporučené zboží.
- Filtry, které jen mění pohled na už načtená data.
- Mapy, kalkulačky a interaktivní prvky.
Vzory, které indexaci rozbíjejí
| Vzor | Co se stane | Řešení |
|---|---|---|
Odkaz jako span s posluchačem události |
Robot cíl nenajde, stránka je osamocená | Použít a href se skutečnou adresou |
| Obsah po kliknutí na Zobrazit více | Text není v HTML, do indexu nejde | Text mít v HTML a jen ho skrývat stylem |
Adresa s křížkem, například /#/produkt |
Vše za křížkem se na server neposílá | Používat běžné cesty přes History API |
| Kanonická adresa vkládaná skriptem | Při prvním zpracování chybí | Vypsat ji na serveru |
| Nekonečné načítání bez odkazů | Robot vidí jen první dávku položek | Doplnit klasické stránkování |
Jak si to ověřit za pět minut
- V prohlížeči vypněte JavaScript a otevřete nejdůležitější stránku webu. Co zůstane, vidí každý robot.
- Otevřete zdrojový kód klávesovou zkratkou pro zobrazení zdroje. Není to totéž co inspektor prvků, který ukazuje stav po vykreslení.
- Vyhledejte v něm větu z hlavního textu. Když tam není, přišla ze skriptu.
- V Search Console si stránku načtěte nástrojem Kontrola adresy URL a porovnejte vykreslené HTML se zdrojovým.
Co s tím, když už web na JavaScriptu stojí
Nejde o volbu technologie, ale o to, kde se stránka skládá. Použitelná řešení jsou dvě.
- Vykreslování na serveru. Server pošle hotové HTML a skripty ho pak jen oživí. Podporují to všechny běžné nástavby.
- Předgenerování při sestavení. Stránky se vyrobí dopředu a servírují se jako statické soubory. Hodí se u obsahu, který se často nemění.
Dřívější řešení, kdy se robotům posílala jiná verze než lidem, se dnes nedoporučuje. Je náročné na údržbu a hranice mezi ním a maskováním obsahu je tenká.
Časté dotazy
Google přece JavaScript umí. Proč to tedy řešit?
Umí, ale ve dvou krocích. Nejdřív stáhne HTML a teprve později, když má volnou kapacitu, stránku vykreslí. Odstup bývá hodiny až dny. U webu, kde se obsah často mění, to znamená, že vyhledávač pracuje se zastaralou verzí. A především: Seznam ani většina robotů jazykových modelů takhle daleko nejdou.
Jak zjistím, co robot skutečně vidí?
Nejrychleji tak, že si v prohlížeči vypnete JavaScript a stránku načtete znovu. Co zůstane, uvidí každý robot. Přesnější je nástroj Kontrola adresy URL v Search Console, kde je vidět vykreslené HTML i snímek stránky. Rozdíl mezi oběma pohledy ukáže, co závisí na skriptech.
Musím kvůli SEO přepsat web z Reactu?
Ne. Stačí, aby server posílal hotové HTML. Všechny běžné nástavby to umí, jde o vykreslování na serveru nebo o předgenerování stránek při sestavení. Rozdíl je ve způsobu nasazení, ne v použité technologii.
Kontroly, které tenhle návod řeší
Když je v reportu některá z nich červená nebo okrová, patří sem. Váha je počet bodů, o které se při chybě přijde.
| Kontrola | Proč na ní záleží | Váha |
|---|---|---|
| Obsah je čitelný bez spouštění skriptů | Roboti jazykových modelů obvykle nespouštějí JavaScript. Co není v HTML, pro ně neexistuje. | 6 |
| Obsah je v HTML i bez JavaScriptu | Když se text dorenderuje až skriptem, vyhledávač ho vidí se zpožděním nebo vůbec. Jazykové modely obvykle vůbec. | 6 |