Vylepšení /sitemap.xml

Stav dokumentu: Nezapracováno — sitemap funguje a pokrývá hlavní veřejné routy, ale dá se zpřesnit z hlediska kanonických URL, signálů pro crawlery a sladění s plánovanou KV cache.

Cíl

Udržovat jednu spolehlivou mapu URL pro vyhledávače: bez zbytečných duplicit, s rozumnou invalidací po změnách obsahu a volitelně s bohatšími signály (lastmod), aniž by se předčasně komplikovalo dělením na sitemap index (dokud počet URL zůstane hluboko pod limitem ~50k URL na soubor).

Současný stav (implementace)

  • Route: app/routes/sitemap[.]xml.tsx.
  • Agreguje statické cesty (úvod, katalogy, roadmapa, dokumentace…) plus dynamické slugy z D1: byliny, způsoby zpracování, témata/symptomy, regiony, spirituální návody; měsíční stránky /sezona/112.
  • XML obsahuje pouze <url><loc>…</loc></url> — bez <lastmod>, <changefreq>, <priority>.
  • Odpověď: Cache-Control: public, max-age=3600 (1 hodina). Klíč sitemap:v1 je v 21-tech-spec.md §10 popsán jako KV cache, ale v kódu zatím není.

Zjištěné problémy a rizika

  1. Duplicitní měsíční URL — V sitemapě jsou jak /sezona/:month, tak /co-sbirat/:month. Alias /co-sbirat/:month přesměrovává na /sezona/:month (23-api-and-routes.md); kanonická URL je sezóna. Listing přesměrovávacích URL ve sitemapě neodpovídá obvyklé praxi „do sitemap jen finální 200 OK kanonické adresy“ a může zbytečně zatěžovat crawl budget.
  2. Chybějící <lastmod> — Vyhledávače s tím umí pracovat i bez něj, ale u často měněného obsahu (byliny, dokumentace) pomáhá efektivněji plánovat přecrawl; vyžaduje ale konzistentní zdroj pravdy (např. updated_at v D1 / datum commitu u docs — podle toho, co je levné a pravdivé).
  3. Cache vs. invalidace — Hodina CDN/worker cache může být OK pro malý provoz; po zavedení sitemap:v1 (až bude KV) je potřeba invalidovat při publikaci / purge ve stejném duchu jako u ostatních veřejných stránek (32-admin.md).
  4. Škálování — Při výrazném růstu počtu URL zvážit sitemap index (sitemapindex) a více souborů; zatím spíš dokumentovat práh než implementovat.

Plán práce (checklist)

  • Kanonické měsíční URL — Odstranit z generovaného seznamu /co-sbirat/:month nebo zdokumentovat explicitní produktové rozhodnutí, proč alias zůstává (a sjednotit s canonical/meta na stránkách). Po změně aktualizovat README.md (řádek o obsahu sitemap) a případně poznámku v sezonnost-a-kalendar.md.
  • lastmod (volitelně po blocích) — Pro entity z DB použít jednotný updated_at (nebo MAX(updated_at) v batch dotazech); pro statické routy buď konstanta build date, nebo vynechat; pro dokumentaci z registry — datum změny souboru nebo pole v registru, pokud existuje.
  • KV sitemap:v1 (volitelně) — Pokud se KV zavádí i jinde: uložit předgenerovaný XML nebo JSON blob + TTL / purge na publish; sladit s 21-tech-spec.md. Pokud zůstane jen dynamický loader, upřesnit tech spec (že klíč je rezerva / později).
  • Kontrola pokrytí — Při nových veřejných routách zkontrolovat sitemap (krátký checklist v tomto dokumentu nebo v 23-api-and-routes.md).
  • Validace — Ručně nebo ve CI: well-formed XML, rozumný počet URL; případně odfiltrovat prázdné slugy (obrana do budoucna).

Akceptace

  • Ve sitemapě nejsou URL, které končí jen HTTP přesměrováním na jinou adresu v téže sitemapě (nebo je zdůvodněný výjimkový přístup v dokumentaci).
  • Po nasazení projde kontrola v Google Search Console / ruční stažení sitemap.xml bez chyb parseru.
  • Dokumentace tras (23-api-and-routes.md) a přehled v README.md odpovídají skutečnému obsahu sitemap.

Související