TakéSchema.org markup, Rich snippets markup, Mikrodata, JSON-LD markupPokročilý

Definice

Strukturovaná data jsou strojově čitelný popis obsahu stránky zapsaný ve sjednoceném slovníku, nejčastěji podle schema.org ve formátu JSON-LD. Vyhledávačům a dalším programům říkají, že určitý text je cena, autor, hodnocení nebo otevírací doba, místo aby si význam musely odhadovat z vizuálního rozvržení a formulací v HTML.

Kategorie: SEOAktualizováno

Nezaměňujte: V databázích a datové analytice znamenají „strukturovaná data“ data uložená v pevném schématu (tabulky, sloupce) na rozdíl od nestrukturovaných; ve webovém kontextu jde o schema.org markup na stránce.

Než se na to spolehnete: Podpora konkrétních typů rozšířených výsledků se u vyhledávačů mění (např. omezení FAQ a HowTo výsledků), proto text záměrně neuvádí konkrétní seznam aktuálně podporovaných formátů. Wikidata Q3475756 je uvedeno pro schema.org, ale identifikátor si prosím ověřte.

Proč nestačí samotné HTML

Běžné HTML popisuje, jak se obsah zobrazí, nikoli co znamená. Značka <span>399 Kč</span> je pro prohlížeč jen text; že jde o aktuální cenu produktu v české měně, pozná člověk z kontextu, ale program ne. Strukturovaná data tuhle mezeru zavírají: k obsahu přidají druhou vrstvu, kde je každá hodnota pojmenovaná pojmem ze sdíleného slovníku.

Tím sdíleným slovníkem je v praxi schema.org, který společně udržují provozovatelé velkých vyhledávačů. Definuje typy (Product, Article, Recipe, LocalBusiness, Event) a jejich vlastnosti. Typy tvoří hierarchii, takže Product dědí obecné vlastnosti z typu Thing.

Tři zápisy téhož

Schema.org lze do stránky vložit třemi syntaxemi. JSON-LD je samostatný blok <script type="application/ld+json"> oddělený od viditelné šablony a dnes jednoznačně převažuje, protože se generuje i mění nezávisle na rozvržení. Mikrodata a RDFa naopak vkládají atributy přímo do existujících značek, což vypadá elegantně, ale rozbije se při první větší úpravě šablony.

Co za to web dostane

Nejviditelnější odměnou jsou rozšířené výsledky vyhledávání: hvězdičky hodnocení, cena a dostupnost u produktu, drobečková navigace, časy u receptu, rozbalovací FAQ. Rozšířený výsledek zabere víc místa a obvykle zvedá míru prokliku, i když samotná pozice zůstává stejná. Podpora konkrétních typů se ale mění, vyhledávače je přidávají a ruší, takže platí to, co je v aktuální dokumentaci, ne to, co fungovalo loni.

Druhé využití je mimo SEO. Strukturovaná data čtou hlasoví asistenti, agregátory nabídek, jazykové modely i interní nástroje. Stejný princip pojmenovaného významu stojí za feedy produktů pro srovnávače.

Kde se implementace nejčastěji láme

Klíčové pravidlo zní: strukturovaná data musí odpovídat tomu, co uživatel na stránce reálně vidí. Označit hodnocení 4,9 hvězdičky, které se nikde nezobrazuje, nebo cenu jinou než v košíku, je porušení pokynů a vede k ruční penalizaci, tedy ke ztrátě rozšířených výsledků napříč doménou.

Druhý typický problém je nekonzistence u dynamických webů. Cena se změní v databázi, šablona ji vykreslí správně, ale JSON-LD blok se generuje ze staré cache. Proto se markup vyplatí skládat ze stejného datového zdroje jako viditelný obsah, ne psát ručně jako druhou pravdu.

Třetí je zbožné přání, že víc značek znamená lepší pozice. Strukturovaná data nejsou hodnoticí faktor v tom smyslu, že by samy o sobě posunuly stránku nahoru. Ovlivňují, jak výsledek vypadá a jestli je vůbec způsobilý pro určitý formát.

Ověření před nasazením

Před spuštěním se markup testuje validátorem: schema.org provozuje obecný validátor slovníku, vyhledávače pak vlastní testy způsobilosti pro rozšířené výsledky. Průběžně pak hlídá chyby report v nástrojích pro správce webu, protože chyba se typicky objeví až po nasazení nové verze šablony.

Příklady z praxe

  1. Produktová stránka e-shopu s cenou a dostupností

    E-shop chce, aby se u výsledku ve vyhledávání zobrazila cena a informace o skladem. Do detailu produktu se přidá JSON-LD blok typu Product s vnořenou nabídkou. Hodnoty se generují ze stejného objektu, ze kterého se vykresluje viditelná cena, takže nemůže dojít k rozporu.

    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "Product",
      "name": "Ergonomická židle Vega",
      "sku": "VEGA-001",
      "brand": { "@type": "Brand", "name": "Vega" },
      "offers": {
        "@type": "Offer",
        "price": "4990",
        "priceCurrency": "CZK",
        "availability": "https://schema.org/InStock",
        "url": "https://example.cz/zidle-vega"
      }
    }
    </script>
  2. Lokální provozovna a otevírací doba

    Kavárna s jednou pobočkou označí adresu, telefon a otevírací dobu typem LocalBusiness. Vyhledávač i mapové služby pak mají strojově čitelný zdroj, který se shoduje s patičkou webu. Když se doba změní, upraví se na jednom místě v CMS a promítne se do viditelného textu i do markupu.

    {
      "@context": "https://schema.org",
      "@type": "CafeOrCoffeeShop",
      "name": "Kavárna U Mlýna",
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "Dlouhá 12",
        "addressLocality": "Brno",
        "postalCode": "60200",
        "addressCountry": "CZ"
      },
      "telephone": "+420555111222",
      "openingHours": "Mo-Fr 08:00-18:00"
    }

Časté omyly

MýtusKdyž přidám strukturovaná data, web se posune nahoru ve výsledcích.
Ve skutečnostiStrukturovaná data samy o sobě nejsou hodnoticí signál, který by zvedl pozici. Rozhodují o tom, jestli je stránka způsobilá pro rozšířený formát výsledku, což může zvýšit prokliky při nezměněné pozici.
MýtusOznačkovat můžu i to, co na stránce není, hlavně ať to vypadá dobře.
Ve skutečnostiMarkup musí odpovídat obsahu viditelnému uživateli. Vymyšlená hodnocení nebo jiná cena než v košíku vedou k ručnímu opatření a ztrátě rozšířených výsledků pro celou doménu.
MýtusValidní markup podle validátoru znamená, že se rozšířený výsledek zobrazí.
Ve skutečnostiValidace ověřuje jen správnost zápisu a povinné vlastnosti. Zobrazení rozšířeného výsledku zůstává rozhodnutím vyhledávače a závisí na typu obsahu, kvalitě stránky i konkrétním dotazu.

Časté dotazy

Jaký formát strukturovaných dat zvolit: JSON-LD, mikrodata, nebo RDFa?
JSON-LD je pro nové projekty prakticky vždy rozumnější volba. Zapisuje se do samostatného skriptu, takže markup nezávisí na struktuře šablony a přežije redesign i změnu komponent. Generuje se snadno na serveru z těch samých dat, ze kterých se vykresluje stránka. Mikrodata a RDFa vkládají atributy přímo do HTML značek; dávají smysl hlavně v legacy kódu, kde už existují, nebo když se markup přidává do šablony, kterou nelze rozšířit o skript. Vyhledávače čtou všechny tři syntaxe, rozdíl je v údržbě, ne ve výsledku.
Kde se strukturovaná data na webu ověřují?
Ověření probíhá ve dvou krocích. Obecný validátor provozovaný schema.org zkontroluje, jestli zápis odpovídá slovníku a jestli nejsou použity neexistující vlastnosti. Vyhledávače pak nabízejí vlastní testy způsobilosti pro rozšířené výsledky, které navíc hlídají povinné vlastnosti konkrétního formátu. Po nasazení je vhodné sledovat report strukturovaných dat v nástrojích pro správce webu, protože ten hlásí chyby na skutečně procházených URL, včetně těch, které se objeví až po nasazení nové verze šablony.
Musí být strukturovaná data ve zdrojovém HTML, nebo stačí dogenerovat JavaScriptem?
Strukturovaná data vložená až JavaScriptem vyhledávače zpracovat umí, protože stránky vykreslují. Spolehlivější je ale vygenerovat JSON-LD už na serveru a poslat ho v prvotní odpovědi. Vykreslování je totiž zařazeno do fronty, může se odložit a jakákoli chyba skriptu markup zcela odstraní. U ostatních konzumentů, například agregátorů nebo jednodušších crawlerů, se na provádění JavaScriptu spoléhat nedá vůbec. Serverové vykreslení nebo statická generace tedy zůstává doporučeným postupem.
Kolik typů schema.org lze použít na jedné stránce?
Na jedné stránce může být více typů současně a je to běžné. Detail produktu typicky kombinuje Product s nabídkou, BreadcrumbList pro drobečkovou navigaci a Organization nebo WebSite na úrovni webu. Jednotlivé entity se propojují pomocí identifikátorů @id, aby bylo zřejmé, že jde o tutéž věc, nebo se vloží do jednoho pole @graph. Riziko není v počtu, ale v duplicitě: dva různé bloky popisující stejný produkt s odlišnou cenou působí jako rozpor a vyhledávač si může vybrat ten horší.

Zdroje

  1. Schema.org(otevře se v novém okně)Schema.org
  2. JSON-LD 1.1: A JSON-based Serialization for Linked Data(otevře se v novém okně)W3C, 2020
  3. Introduction to structured data markup in Google Search(otevře se v novém okně)Google
  4. Microdata(otevře se v novém okně)WHATWG

Související pojmy

Potřebujete to vyřešit v praxi?

Poradíme, jak na to ve vašem projektu

Vysvětlit pojem je jedna věc, navrhnout kolem něj funkční řešení druhá. Ozvěte se a probereme, co dává smysl u vás.