
Jak použít JSON‑LD pro AI a SEO
JSON for Linking Data je strojově čitelný formát pro publikování obsahu.
JSON‑LD je způsob, jak přidat do stránky strukturovaná data, která stroje (vyhledávače, AI asistenti, agregátory) snadno přečtou a pochopí. Umožňuje „vysvětlit“ obsah stránky bez zásahů do HTML struktury.
Implementace může zlepšit SEO a citovatelnost v AI chatbotech a jiných nástrojích.
Protože nežijeme v ideálním světě, kde robot vyhledávače správně pochopí každou stránku, existují a používají se způsoby, jak mu to ulehčit.
Základní způsob je vhodná sémantika použití HTML značek – zejména struktura nadpisů, používání odstavců, seznamů.
Pro situace, kdy už samotné HTML nestačí, si jde pomoci tzv. mikrodaty. Jde tak jasně vyznačit různé části stránky, aby robot neměl pochyb, o co se jedná.
Příklad mikrodat přímo v HTML:
<article itemscope itemtype="https://schema.org/Article">
<h1 itemprop="headline">Název článku</h1>
<div>Autor: <span itemprop="author" itemscope itemtype="https://schema.org/Person">
<span itemprop="name">Jméno Autora</span>
</span></div>
<time itemprop="datePublished" datetime="2025-01-01">1. 1. 2025</time>
<meta itemprop="mainEntityOfPage" content="https://example.com/nazev-clanku">
<div itemprop="articleBody">
Text článku…
</div>
</article>
Zpravidla se používá slovník schema.org (typy a vlastnosti jako Article, name, author). JSON‑LD je pouze způsob zápisu těchto dat.
Protože taková implementace může být kvůli nutné změně současného HTML komplikovaná, je možné tato data zapisovat jako nový JSON objekt přímo na stránku. JSON‑LD je tak jiný způsob, jak dostat strukturovaná data do stránky.
Proč JSON‑LD používat
- Rich výsledky – rozšířené výsledky ve vyhledávání.
- Citovatelnost v AI – asistenti lépe chápou kontext, autora, datum a entity.
- Čistota implementace – vložíte jeden
<script type="application/ld+json">bez změny HTML kódu. - Odolnost – odděluje data od presentace, méně křehké než microdata v HTML.
- Teoreticky snazší údržba – generování z CMS, versování, validace nástroji.
Základní použití
JSON‑LD se vkládá do <head> nebo na konec <body> jako samostatný skript:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Název článku",
"datePublished": "2025-01-01",
"dateModified": "2025-01-02",
"author": { "@type": "Person", "name": "Jméno Autora" },
"mainEntityOfPage": "https://example.com/nazev-clanku"
}
</script>
Umístění závisí na datovém objemu a jestli upřednostňovat uživatele nebo robota. Vložení těchto dat před obsah uživateli zbytečně prodlouží načtení stránky. U pár řádků to je celkem jedno.
U potřeby výpisu dat je potom k úvaze, jestli nepoužít strukturovaná data přes HTML atributy, které nezpůsobují redundanci a zbytečně tak (tolik) nenafukují HTML kód. U hodně velkých stránek to může dávat smysl.
Další běžně používaná schémata
- ImageObject / VideoObject –
url/contentUrl,thumbnailUrl,caption, u videaduration,uploadDate,transcript. - Product + Offer + AggregateRating + Review – cena, dostupnost, hodnocení, recenze.
- LocalBusiness –
address(PostalAddress),geo(GeoCoordinates),openingHoursSpecification,priceRange. - Event –
startDate,endDate,location,offers,performer. - JobPosting –
datePosted,validThrough,employmentType,jobLocation/jobLocationType. - SoftwareApplication – platformy, kategorie,
offers,aggregateRating. - Dataset / DataCatalog – distribuce, licence, tvůrce.
- Course / Recipe – specifická pole pro kursy a recepty.
- ItemList – seznamy článků/produktů (kategorie, přehledy), pro
CollectionPage. - QAPage – otázka s vybranou nejlepší odpovědí (odlišné od
FAQPage).
Co na webu popisovat
Organization + WebSite + WebPage
Minimální trio pro většinu webů: kdo jste, jak se web jmenuje a co je to za stránku.
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://example.com#organization",
"name": "Vaše firma",
"url": "https://example.com",
"logo": "https://example.com/logo.png",
"sameAs": [
"https://www.facebook.com/vasefirma",
"https://www.linkedin.com/company/vasefirma"
],
"identifier": {
"@type": "PropertyValue",
"name": "IČO",
"value": "12345678"
}
}
{
"@context": "https://schema.org",
"@type": "WebSite",
"@id": "https://example.com#website",
"url": "https://example.com",
"name": "Název webu",
"publisher": { "@id": "https://example.com#organization" },
"potentialAction": {
"@type": "SearchAction",
"target": "https://example.com/hledat?q={query}",
"query-input": "required name=query"
}
}
{
"@context": "https://schema.org",
"@type": "WebPage",
"@id": "https://example.com/konkretni-stranka#webpage",
"name": "Titulek stránky",
"url": "https://example.com/konkretni-stranka",
"isPartOf": { "@id": "https://example.com#website" },
"about": { "@id": "https://example.com#organization" }
}
Article / BlogPosting
Pro články a zápisy na blogu.
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"@id": "https://example.com/json-ld#article",
"headline": "JSON‑LD: rychlý přehled",
"datePublished": "2025-10-22",
"dateModified": "2025-10-22",
"author": {
"@type": "Person",
"name": "Bohumil Jahoda",
"url": "https://example.com/o-mne",
"sameAs": [
"https://twitter.com/example",
"https://github.com/example"
],
"identifier": {
"@type": "PropertyValue",
"name": "GitHub",
"value": "example"
}
},
"image": ["https://example.com/og-image.jpg"],
"mainEntityOfPage": { "@id": "https://example.com/json-ld#webpage" },
"publisher": {
"@type": "Organization",
"@id": "https://example.com#organization",
"name": "Jecas",
"logo": { "@type": "ImageObject", "url": "https://example.com/logo.png" },
"sameAs": [
"https://www.facebook.com/jecas",
"https://github.com/jecas"
]
},
"isPartOf": { "@id": "https://example.com#website" }
}
BreadcrumbList
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{"@type": "ListItem", "position": 1, "name": "Domů", "item": "https://example.com"},
{"@type": "ListItem", "position": 2, "name": "Blog", "item": "https://example.com/blog"},
{"@type": "ListItem", "position": 3, "name": "JSON‑LD"}
]
}
FAQPage
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Co je JSON‑LD?",
"acceptedAnswer": {"@type": "Answer", "text": "Formát pro strukturovaná data."}
},
{
"@type": "Question",
"name": "Kde ho vložit?",
"acceptedAnswer": {"@type": "Answer", "text": "Do <script type=\"application/ld+json\">."}
}
]
}
HowTo
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "Jak přidat JSON‑LD",
"step": [
{"@type": "HowToStep", "text": "Vyberte vhodné schéma."},
{"@type": "HowToStep", "text": "Vytvořte JSON objekt."},
{"@type": "HowToStep", "text": "Vložte jako application/ld+json."}
]
}
Implementace v praxi
- Umístění – do
<head>nebo na konec<body>. Na stránce může být více skriptů současně. - Konsistence – data musí odpovídat tomu, co je vidět na stránce (titulek, autor, datum).
- Identifikátory –
@idpro stabilní odkazy na entity a jejich opětovné použití. - Více hodnot – pole používejte klidně i pro jedinou hodnotu, pokud se může rozšířit (např. více obrázků).
- Aktualisace – udržujte
dateModifiedv souladu se skutečnou změnou obsahu. - Jazyk – přidejte
inLanguage(např."cs"). - Vazby – používejte
isPartOf/mainEntityOfPage;publisherodkazuje na@idorganisace;WebPage.isPartOfvede naWebSite. - Externí identity – používejte
sameAspro profily na sociálních sítích aidentifierpro interní či veřejné identifikátory.
Protože roboti nebo nástroje typu ChatGPT nemusí vždy podporovat JavaScript, je vhodné vygenerovat JSON-LD už na straně serveru.
Při implementaci může být trochu oříšek data vypsat, protože řada šablonovacích systémů nebo nástrojů může brát vložení <script type="application/ld+json"> jako potenciálně rizikové vložení JavaScriptu. Ve skutečnosti je to bezpečné, protože neznámý type u skriptu prohlížeč ignoruje.
Ve Svelte se mi osvědčila následující funkce, které se předá objekt a vrátí komplet HTML kód:
export function schemaScript(thing) {
if (!thing || typeof thing !== 'object') return '';
return `<script type="application/ld+json">${JSON.stringify(thing)}</script>`;
}
A následné vypsání přes {@html schemaScript(articleLd)}.
Příklad pro React:
function JsonLd({ thing }) {
if (!thing || typeof thing !== 'object') return null;
return (
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(thing) }}
/>
);
}
const articleLd = {
"@context": "https://schema.org",
"@type": "Article",
"headline": "Název článku"
};
function Page() {
return (
<>
<h1>Název</h1>
<JsonLd thing={articleLd} />
</>
);
}
Ověření a debug
- Rich Results Test – Google nástroj pro kontrolu rozšířených výsledků.
- Schema Markup Validator – validace proti schema.org.
- JSON‑LD Playground – rychlé testování a formátování JSON‑LD.
Nejčastější chyby
- Nekonsistentní data – jiné datum v JSON‑LD než na stránce.
- Chybějící
mainEntityOfPage– ztěžuje přiřazení ke stránce. - Nesprávný typ –
Articlevs.BlogPosting; vyberte relevantní schéma. - Nevalidní JSON – uvozovky, čárky, escapování HTML znaků.
- Duplicitní skripty – stejné entity vložené vícekrát bez
@id.
Vyplatí se JSON‑LD implementovat?
JSON‑LD automaticky nezaručí lepší posice, ale zvyšuje šanci na bohatší zobrazení ve výsledcích vyhledávání a na přesnější citace v AI nástrojích. A tím teoreticky více návštěv z těchto zdrojů.
Lze použít téměř vždy – obsahové weby, e‑shopy, lokální firmy, události, články. Implementace je jednorázová, obvykle na pár minut až dní podle velikosti a typu webu a schopnostech vývojáře.
Risika špatného nasazení jsou celkem malá – chybné nebo nekonsistentní údaje mohou být ignorovány.
Je třeba si zvážit, jestli se náklady na vývoj vrátí. Pokud máte základní SEO v pořádku (sémantické HTML, kvalitní obsah), implementace se zpravidla vyplatí.
Jak odhadnout přínos JSON‑LD
Stručně řečeno dost těžko. Zobrazení stránky ve vyhledávání se snippetem díky strukturovaným datům sice typicky znamená o desítky procent více prokliků, ale je potřeba, aby se web vůbec dostal na rozumné umístění, aby bylo vůbec co zobrazovat.
Je ale dost pravděpodobné, že si tím člověk minimálně neuškodí a může to být velmi snadné implementovat.
Odkazy
- Google Search Central: Introduction to structured data markup in Google Search – popis přínosů a limitů strukturovaných dat
Související články
Jak zjistit návštěvnost cizího webu
Přehled metod a nástrojů, jak si udělat realistický obrázek o návštěvnosti konkurenčního webu.
13 důvodů, proč má web fungovat bez JavaScriptu i v roce 2025
JavaScript je sice klíčový pro moderní web, ale jeho selhání není výjimkou. Zde je 13 důvodů, proč by měl web fungovat i bez něj.
Úprava náhledového obrázku webu na Seznamu
Vyhledávání na Seznamu zobrazuje vedle výsledků vyhledávání obrázkový náhled webu. Jak zobrazení náhledu stránky ve vyhledávači ovlivnit?