SEO a technická nalezitelnost
SEO je nejdřív technická způsobilost: robots.txt není zámek, canonical, sitemapa i hreflang jsou jen signály, které Google může přebít. Search Console je jediný pohled jeho očima.
Někdo nechce, aby se interní stránka ukazovala ve výsledcích, tak ji zablokuje v robots.txt. Logické přání, špatný nástroj. robots.txt neřídí, co je v indexu. Řídí, co smí crawler stáhnout. Zablokovaná stránka se klidně objeví ve vyhledávání, jen bez popisku, pokud na ni vedou odkazy z jiných webů. A je to ještě o úroveň zákeřnější: aby Google poslechl noindex, musí stránku nejdřív stáhnout a tu značku přečíst. Když ji blokuješ v robots.txt, crawler dovnitř nevleze, noindex nikdy neuvidí, a tím ho znefunkčníš. Blokace, kterou jsi myslel jako zámek, je ve skutečnosti cedule „nevstupovat" pověšená přes dveře, za kterými je vzkaz „tuhle místnost zbourejte".
Tahle záměna je nejdražší technická chyba SEO a vede k principu, který drží celou kapitolu. Crawl a index jsou dvě různé věci a skoro každý nástroj, kterým je „ovládáš", je jen nápověda, ne příkaz. Canonical, sitemapa, hreflang, strukturovaná data: Google je čte, váží a může je přebít. Kdo čeká magii („nastavíme canonical a hotovo"), dostane zklamání. Kdo posílá konzistentní signály, dostane šanci.
Tahle kapitola není o klíčových slovech ani o copywritingu. Je o tom, jestli stroj tvůj obsah vůbec najde, stáhne, vykreslí a pochopí. Jednovětou definici pojmů jako canonical, redirect nebo sitemapa má společný slovník; tady jdeme do hloubky, kde se to láme.
Crawl, index, serving: tři fáze, ne dvě
Google Search běží ve třech krocích. Crawling stáhne text, obrázky a video. Indexing stránku zanalyzuje a uloží. Serving ji vrátí ve výsledcích. Renderování JavaScriptu není čtvrtá fáze, je součást indexingu, a právě tam se obsah ztrácí.
Indexace s JavaScriptem totiž běží na dvě vlny. První stáhne syrové HTML. Druhá pošle stránku do Web Rendering Service, headless Chrome, který spustí JS a domyslí zbytek. Mezi vlnami uběhne od pár hodin po týdny, podle render budgetu a podle toho, jak je web pro Google důležitý. Když je obsah až ve druhé vlně, čeká na frontu, která dojít nemusí. Proto title, canonical i hlavní obsah patří do HTML už z první vlny, ne až dorenderované na klientovi. Že o nalezitelnosti rozhoduje volba renderování, je tím pádem technický fakt, ne názor: čistý CSR může obsah z indexu vyřadit úplně.
robots.txt vs. noindex: co je crawl a co je index
Zopakujme to rozlišení, protože stojí za polovinou problémů v Search Console.
robots.txt s Disallow říká crawlerovi „sem nelez". Šetří server, řídí crawl budget. Neřídí index. Stránka blokovaná v robots může v indexu zůstat (bez popisku), pokud na ni vedou odkazy.
noindex říká „tuhle stránku nezařazuj do výsledků". Dává se buď meta tagem <meta name="robots" content="noindex">, nebo HTTP hlavičkou X-Robots-Tag (ta umí i ne-HTML soubory jako PDF). Když Googlebot noindex najde, stránku z indexu vyhodí bez ohledu na odkazy.
A v tom je háček: navzájem se vylučují. Aby noindex zabral, crawler musí stránku stáhnout a tag přečíst, takže nesmí být blokovaná v robots.txt. Chceš stránku ven z indexu? Dej jí noindex a crawl jí neblokuj, dokud ji Google znovu nestáhne a tag nepřečte. Teprve potom ji klidně zablokuj.
Canonical je nápověda, ne příkaz
rel="canonical" říká Googlu, kterou ze sady duplicitních nebo podobných URL považuješ za hlavní. Konsoliduje na ni signály z duplicit, hlavně odkazy, a určuje, která URL se zobrazí. Ale je to nápověda. Google může zvolit jinou kanonickou URL než ty, třeba když usoudí, že jiná verze má lepší obsah.
Z toho plyne praktický postoj. Canonical se neposílá jediným kanálem. Sčítá se: značka v hlavičce, 301 redirect, URL v sitemapě, interní odkazy. Čím víc těchhle signálů míří konzistentně na jednu URL, tím vyšší šance, že Google zvolí tu tvoji. Jeden canonical tag obklopený interními odkazy na jinou verzi je rozpor, a v rozporu rozhoduje Google, ne ty. Jak se mapa přesměrování a canonical politika fyzicky provedou při přepnutí, řeší redesign a spuštění a migrace.
Sitemapa: objevovací signál, ne příkaz k indexaci
Sitemapa říká „tyhle URL existují, podívej se na ně". Pomáhá objevit stránky, na které vede málo interních odkazů. Nezaručí zaindexování, je to nápověda.
Tvrdá pravidla. Jeden soubor pojme 50 000 URL nebo 50 MB nekomprimovaně, podle toho, co přijde dřív. Větší web se dělí do víc souborů spojených přes sitemap index.
A teď, co je v sitemapě k ničemu. Google ignoruje <priority> i <changefreq>. Nepiš je, neřídí crawl. Jediný element navíc, který má smysl, je <lastmod>, ale jen když je ověřitelně přesný. Google to formuluje jasně: když stránce sedmým rokem tvrdíš, že se změnila včera, Google ti přestane věřit. Nepřesný lastmod je horší než žádný. Buď ho generuj z reálné změny obsahu, nebo ho vynech.
Search Console: jediný pohled Googlovýma očima
Žádný externí nástroj ti neřekne, co Google s tvými stránkami doopravdy udělal. Search Console ano, je to jediný pohled očima Googlu.
URL Inspection ukáže crawl, index a serving stav konkrétní URL přímo z indexu. Pozor na past, kterou skoro každý jednou spadne. Tlačítko Live Test neověří, že jsi zaindexovaný. Ověří jen, že Google stránku umí stáhnout právě teď. Zelený live test ≠ v indexu. Index status je z posledního crawlu, live test je aktuální dostupnost, to jsou dvě různé odpovědi. Žádný test nezaručí, že stránka v indexu skončí.
Page Indexing report (dřív Coverage) ukazuje stavy jako „Crawled – currently not indexed" nebo „Discovered – not indexed". To je diagnóza: Google stránku zná, ale nezařadil ji. Pro hromadnou kontrolu existuje URL Inspection API s limity 2 000 dotazů/den a 600/min na property.
A Performance report je tvůj výchozí stav organické návštěvnosti, kliky a imprese podle dotazu a stránky. Má jeden zrádný strop: Google drží data jen 16 měsíců. Kdo nevyexportuje před zásahem (redesign, migrace), o srovnání „odkud jsme vyšli" nenávratně přijde. Tahle výchozí organická návštěvnost je vstup do discovery a do měřicího plánu analytiky. Stejný report mimochodem hlásí i Core Web Vitals: výkon a nalezitelnost čtou terénní data ze stejného zdroje.
Když se to nasčítá: jak vypadá kolaps
Že tyhle chyby nejsou teorie, ukazuje jeden krypto-news web s víc doménami. V letech 2022–2023 mu organická návštěvnost spadla meziročně o 90 %, z 15–25 tisíc kliků denně na 2–4 tisíce, a tak to drželo rok. Příčina nebyla jedna, nasčítaly se. Nedokončená doménová migrace rozdělila crawl budget mezi starou a novou doménu. Tisíce soft 404 (stránka vrací status 200, ale je prázdná) braly rozpočet. Automaticky generované „converter" URL ho braly taky. A skončilo to 513 000 stránkami ve stavu „crawled – not indexed" jen v jedné zemi.
Oprava od konce ledna 2023 byla učebnicová. Správné stavové kódy 404/410 místo prázdných 200. Odstranění converter URL přes robots.txt plus noindex. Posílení canonical signálů. Do dubna klesly soft 404 o 83 % (ze ~120 tisíc pod 20 tisíc), indexované stránky v Německu vyrostly ze 150 tisíc na 370 748 a kliky se vrátily k 12–15 tisícům denně.
Druhý typický scénář je ještě banálnější a o to bolestivější: staging carry-over. Z testovacího prostředí se do produkce protáhne Disallow: / v robots.txt nebo zděděný noindex v šabloně, a web se deindexuje. Proto se politika přesměrování a kontrola robots/noindex ověřuje při redesignu i spuštění a migraci přes URL Inspection, ne až podle propadu návštěvnosti.
Aparát se škáluje, otázka ne
„Robots, canonical, sitemapa, hreflang, structured data, to je aparát pro velký web, my máme pět stránek." I pětistránkový web má robots.txt, kanonické URL a sitemapu. Rozdíl je v objemu, ne v nutnosti. Crawl budget malý web netrápí, ale Disallow: / ze stagingu ho smete úplně stejně. Co se neškáluje, je otázka: „vidí Google můj obsah tak, jak si myslím?" A na tu odpovídá Search Console pro pět stránek stejně jako pro pět set tisíc.
Praktický checklist
- Crawl a index jsou oddělené:
noindexna to, co nemá být ve výsledcích,robots.txtna to, co se nemá crawlovat, a nikdy ne obojí na téže stránce. - Canonical jede víc kanály konzistentně: tag, sitemapa, interní odkazy i 301 míří na stejnou URL.
- Sitemapa do 50 000 URL / 50 MB na soubor, bez
priorityachangefreq,lastmodjen když je přesný. - hreflang má vzájemné zpětné odkazy a
x-default. - Strukturovaná data jsou validovaná Rich Results Testem, bez očekávání lepších pozic.
- Facety mají crawl kontroly, ne volné generování URL.
- Search Console je propojené a Performance data se exportují před každým zásahem.
Typické chyby
- Blokace v robots místo noindexu. Blokovaná stránka zůstane v indexu přes odkazy a Google na ní
noindexnikdy nepřečte. - Nekonzistentní canonical. Tag míří jinam než interní odkazy a sitemapa; v rozporu rozhodne Google.
- Sitemapa plná
priority/changefreqa lhavéholastmod. První dvě Google ignoruje, u třetího přestane věřit. - hreflang bez return linků. Celý cluster se ignoruje.
- „Zelený live test = jsme zaindexovaní." Live test ověří jen dostupnost pro crawl, ne zařazení do indexu.
18 / 26