SCH-04
Nevalidní JSON-LD (chyba parsování)
Co kontrola měří
Každý blok <script type= na stránce se zkusí naparsovat jako JSON. Když se to u kteréhokoli z nich nepovede, vznikne nález. Je to ta nejpřímější kontrola v celé sadě: buď je to platný JSON, nebo není.
Co kontrola nedělá:
- Neposuzuje obsah schematu. Blok, který je platný JSON, ale nedává smysl (chybí mu
@type, má vymyšlené vlastnosti nebo popisuje něco jiného než stránka), projde bez poznámky. - Nevaliduje proti schema.org. Překlep v názvu vlastnosti (
autormístoauthor) je platný JSON a kontrola mlčí, přestože ten údaj nikdo nepřečte. - Neřekne, který blok je rozbitý, když jich je na stránce víc: jen že aspoň jeden je.
- Na rozdíl od ostatních
SCH-*kontrol běží i na stránkách s chybovým stavem. Rozbité schema je rozbité bez ohledu na návratový kód.
Nález je na úrovni stránky, závažnost kritická: nejvyšší ze všech čtyř schema kontrol. Důvod je v další sekci.
Jak silný důkaz za tím stojí
Doporučujeme to, protože to neuškodí nebo to má jiný užitek, ale vliv na to, jestli vás jazykové modely budou citovat, neslibujeme. Nikdo ho zatím nedoložil.
Musíme být přesní hned na začátku, protože to vypadá jako rozpor: kritická závažnost a zároveň třída „efekt nedoložený“.
Třída se totiž vztahuje k tomu, co produkt měří: viditelnosti v odpovědích AI. A tam platí přesně totéž, co u SCH-01: vliv strukturovaných dat na citovanost doložený nemáme, měření vyšlo v mezích šumu a informaci vloženou jen do schematu nepoužila žádná testovaná platforma. Nevalidní schema vás tedy o žádný doložený přínos nepřipraví, protože ten přínos nikdo nedoložil.
Kritická závažnost je tu z jiného důvodu, a je pádný: nevalidní JSON-LD nefunguje vůbec. Není to zhoršení, je to nula. Parser blok zahodí celý; ne jen tu vadnou vlastnost. Když máte na produktové stránce jeden blok s cenou, dostupností i hodnocením a chybí v něm čárka, nepřijdete o hodnocení. Přijdete o celý blok.
A tohle je přesně ten případ, kdy je nález hodnotný: je to práce, kterou jste už udělali a která se zahazuje. Nestojí vás nic navíc ji opravit, na rozdíl od schematu, které teprve musíte napsat. Proto je kritický: ne kvůli velikosti dopadu, ale kvůli poměru mezi tím, co to stojí, a co to vrátí.
Kde ten doložený přínos je: u Googlu a u klasického vyhledávání. Podle strukturovaných dat kvalifikuje stránky pro rich results, a rozbitý blok znamená, že se do nich nekvalifikujete. To je hmatatelné, jen to není o AI.
Jak to opravit
Rozbitý blok najdete tak, že si zobrazíte zdroj stránky a jeho obsah zkopírujete do libovolného validátoru JSON. Chyba bude na jednom z pěti míst, v tomhle pořadí četnosti:
- Neescapovaná uvozovka v textu. Nejčastější příčina vůbec. Uvozovka uvnitř hodnoty musí být
\", a apostrof v českém textu žádný problém není. - Čárka navíc před zavírací závorkou. JSON ji, na rozdíl od JavaScriptu, nedovoluje.
- Nenahrazený zástupný text ze šablony.
{{ nazev_produktu }}nebo prázdná hodnota tam, kde se údaj nedoplnil. - Zalomení řádku uvnitř řetězce. Víceřádkový popis se musí zapsat jako
\n, ne skutečným zalomením. - Zdvojené HTML entity. Šablonovací systém proženel JSON escapováním pro HTML a z
"se stalo".
První dvě chyby vypadají v kódu takhle:
// Špatně: uvozovka v textu ukončila řetězec, čárka navíc na konci
{
"@type": "Product",
"name": "Sluchátka "Pro" edice",
"description": "Bezdrátová sluchátka",
}
// Dobře
{
"@type": "Product",
"name": "Sluchátka \"Pro\" edice",
"description": "Bezdrátová sluchátka"
}Skutečné řešení ale není opravit ten jeden blok. Skoro vždycky je příčinou to, že se JSON-LD skládá jako text v šabloně: konkatenací řetězců, doplňováním proměnných do připraveného tvaru. Pak stačí jediný produkt s uvozovkou v názvu a rozbije se celý web.
Spolehlivá oprava je sestavit objekt a nechat serializaci na jazyce, ne psát JSON ručně:
// Špatně: JSON vzniká jako text
const ld = '{"@type":"Product","name":"' + product.name + '"}';
// Dobře: objekt, serializaci dělá JSON.stringify
const ld = JSON.stringify({ "@type": "Product", name: product.name });Dvě věci na závěr:
- Zkontrolujte víc než jednu stránku. Pokud je příčina v šabloně, projeví se jen na stránkách, jejichž data obsahují problematický znak, a to může být pět produktů z tisíce.
- Nesnažte se chybu opravit odstraněním bloku. Nález tím zmizí, ale zmizí i práce, kterou jste do schematu vložili. Oprava je na jeden znak.
Co o tom říká report
Popis nálezu
Blok JSON-LD na stránce se nepodařilo naparsovat jako validní JSON. Prohlížeče a vyhledávače takový blok tiše ignorují, takže veškerá strukturovaná data na stránce jsou fakticky neúčinná, i když v HTML vypadají přítomná.
Doporučení
Opravte syntaktickou chybu v JSON-LD bloku (typicky přebývající čárka, neuzavřená závorka, nebo špatně escapovaný řetězec). Po opravě ověřte blok validátorem (např. Schema Markup Validator na schema.org) před nasazením.
Zdroje
- Google Search Central: Intro to structured data (ověřeno 2026-08-19)
- Google Search Central: AI optimization guide (ověřeno 2026-08-19)
Text ověřen 2026-09-12