SEO: metadata, sdílení (OG/Twitter) a hierarchie nadpisů

Stav dokumentu: Nezapracováno jako uzavřený celek — helper websiteSocialMeta a canonical + OG + Twitter jsou na většině veřejných rout; chybí systematický audit, výchozí obrázek pro sdílení a dotažení pravidel pro /byliny s parametry.

Cíl

Mít na celém veřejném webu predikovatelné a konzistentní signály pro vyhledávače i náhledy při sdílení: správný titulek a popis, jedna kanonická URL na stránku, rozumný Open Graph / Twitter Card výstup a logická hierarchie H1/H2 bez duplicit a „děr“. Doplňuje technický checklist 24-engineering-roadmap.md §„Fáze 6: SEO“ konkrétními úkoly v docs/tasks/.

Současný stav (implementace)

  • app/lib/site-meta.tswebsiteSocialMeta, truncateMetaDescription, SITE_ORIGIN.
  • Routy používající meta helper (neúplný výčet): úvod, /byliny, detail byliny (včetně volitelného og:image), /symptomy, /zpracovani, /recepty, /sezona, měsíc sezóny, /ritualy, /region, /dokumentace, /roadmap.
  • Detail byliny: og:type = article; ostatní typicky website.
  • og:image bez vlastního média — stránky bez obrázku nedostanou fallback (náhled při sdílení je slabý).
  • Strategie canonical pro /byliny s query — viz 12-katalog-a-karta-byliny.md a filtry-katalogu-bylin.md; vyžaduje průběžně sjednotit s produktem.

Plán práce (checklist)

  • Audit rout — Projít app/routes/*.tsx: každá veřejná HTML stránka má title, description, canonical, OG (title, description, url, type, locale, site_name), Twitter (card, title, description). Zapsat výjimky (např. čisté přesměrování bez HTML — meta nepotřebují).
  • Výchozí OG obrázek — Jeden sdílený asset v repu (např. logo / ilustrace brandu), absolutní URL přes SITE_ORIGIN; doplnit do websiteSocialMeta nebo wrapperu jako fallback, pokud route neposkytne vlastní obrázek.
  • Kontrast „website“ vs „article“ — Jednotná pravidla (např. dlouhý textový detail = article; rozcestník = website); zkontrolovat dokumentaci vs praxe u /dokumentace/:slug, /zpracovani/:slug, /symptomy/:slug.
  • H1/H2 — Na každé indexované stránce právě jeden smysluplný H1; sekce pod ním jako H2 (bez přeskakování úrovní). Sladit s copy guidelinami 30-content-guidelines.md kde jde.
  • Katalog /byliny — Dotažení meta popisu pro typické kombinace filtrů nebo rozhodnutí „vždy jeden šablonový popis + canonical na čistý /byliny“ vs „canonical reflektuje stav“ — zarovnat s filtry-katalogu-bylin.md.
  • robots / tenké stránky — Kde vzniknou náhody (náhledy, duplicitní výpisy, budoucí vývojové URL): explicitní noindex nebo HTTP hlavička; /__internal/ zůstává v robots.txt.
  • Dokumentace — Po změnách aktualizovat 23-api-and-routes.md (SEO poznámky) a odškrtnout relevantní body v 24-engineering-roadmap.md §6.

Volitelný backlog

  • RSS / Atom — kanál „novinky“ nebo „nové byliny“ (nízká priorita; závisí na tom, zda má produkt smysl).

Akceptace

  • Kontrolní seznam rout je vyplněný (tabulka nebo sekce v tomto dokumentu po implementaci).
  • Veřejná sdílení hlavních typů stránek (úvod, katalog bez filtru, detail byliny, jedna dokumentace) projdou náhledem (např. Meta debugger / Twitter Card validator) bez chybějícího náhledu kvůli chybějícímu obrázku — fallback nasazen.
  • Lighthouse nebo ruční kontrola: na vzorku stránek je jeden H1 a smysluplná struktura nadpisů.

Související