JavaScript a SEO: kdy robot obsah uvidí a kdy ne

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

  1. Stažení. Robot si vezme HTML tak, jak ho server pošle.
  2. První zpracování. Z tohoto HTML se vytáhnou odkazy, titulek, kanonická adresa a text.
  3. Fronta na vykreslení. Stránka čeká, až bude volná kapacita. Odstup je od minut po dny.
  4. 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

  1. V prohlížeči vypněte JavaScript a otevřete nejdůležitější stránku webu. Co zůstane, vidí každý robot.
  2. Otevřete zdrojový kód klávesovou zkratkou pro zobrazení zdroje. Není to totéž co inspektor prvků, který ukazuje stav po vykreslení.
  3. Vyhledejte v něm větu z hlavního textu. Když tam není, přišla ze skriptu.
  4. 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.

Jakub Knytl

Patnáct let opravuji weby českým firmám a e-shopům. Většina problémů, o kterých tu píšu, mě potkala u klienta dřív, než jsem o nich napsal.

Související návody

Pojmy z tohoto textu

Nevíte, jestli se vás to týká?

Pusťte kontrolu na svůj web a uvidíte, jestli tenhle problém máte. Trvá to necelou minutu.

156 kontrol, výsledek do minuty. Bez registrace, bez karty, bez e-mailu.