Proč automaticky validovat schéma v CI/CD
Strukturovaná data (Schema.org, JSON-LD, Microdata) představují infrastrukturu pro vyhledávače, LLM a interní aplikace. Bez automatizované validace se v produkci rychle objevují chyby: neplatné typy, chybějící povinná pole, kolize klíčů či neaktuální taxonomie. Automatizace validace v CI/CD snižuje riziko regrese řádově o desítky procent, zkracuje time-to-fix a umožňuje programmatic SEO škálovat bez manuálních kontrol.
Cíle a milníky: co má pipeline přinést
- Bezpečnost změn: každý pull/merge request musí projít syntaktickou i sémantickou validací.
- Monitorování kvality: trendová metrika chyb per URL/template, rozdělena podle závažnosti.
- Rychlá diagnostika: reporty s přesnou cestou k chybě (JSON Pointer/XPath, název šablony, release).
- Odolnost vůči změnám standardu: pravidelné „drift“ testy vůči novým verzím slovníků a vyhledávacích doporučení.
Vrstevnatý model validace: od syntaxe po business pravidla
- Syntaktická validace: JSON parse, správné kódování, velikost polí, unikátnost klíčů.
- Sémantická validace: typy a povinné vlastnosti podle Schema.org (např. Article →
headline,datePublished). - Doménová pravidla: firemní konvence (např.
priceCurrencyvždy „EUR“,brand.namez SSOT). - Specifika pro vyhledávače: pravidla pro rich results (např. BreadcrumbList, Product s
offers). - Produkční observabilita: zda se markup reálně nasazuje na správné URL a v jakém poměru.
Techniky a nástroje: co kombinovat
- JSON Schema pro syntakticko-strukturální pravidla (typy, required, patterny, enumy).
- SHACL/ShEx pro grafové a sémantické závislosti (RDF/JSON-LD kontexty, shape pravidla).
- Schema.org slovníky jako referenční ontologie (zdroj pravdy pro rangeIncludes, domainIncludes).
- Vlastní validátory v jazyce buildu (Node/Python/Go) na business logiku, křížové kontroly se SSOT.
- Headless prohlížeč (např. Playwright) pro extrakci a validaci JSON-LD přímo z renderu stránky.
Architektura dat: Single Source of Truth (SSOT)
Programmatic SEO vyžaduje jeden konzistentní zdroj dat pro entity (produkty, místa, články). Pipeline si SSOT vynucuje:
- Konzistence NAP (Name-Address-Phone) a geodat pro LocalBusiness.
- Referenční ID (SKU, ORCID, ISSN, GTIN) mapované na pole
@id,identifier. - Taxonomie (kategorie, značky) s pravidly mapování na additionalType nebo about.
Pipeline v CI/CD: kontrolní brány
- Pre-commit hook: rychlá syntaktická kontrola JSON/JSON-LD a linters (názvy klíčů, diakritika, prázdná pole).
- PR/merge gate: sémantická validace vůči JSON Schema + SHACL; snapshot srovnání vůči poslednímu good build.
- Build stage: generování artefaktů (minifikovaný JSON-LD, mapování šablon → URL), podepsání verze.
- Canary release: nasazení na malý vzorek URL; online validace (syntetický crawl) a zpětná metrika.
- Production monitor: kontinuální audit vybraného vzorku URL, alerting při poklesu pokrytí nebo nových chybách.
Šablony validace: co testovat na úrovni šablon
- Existence povinných vlastností podle typu (např. Product vyžaduje
name,offers.priceapriceCurrency). - Regulární výrazy pro data (ISO 8601), měny (ISO 4217), telefony (E.164).
- Křížové závislosti (např. pokud
availability= OutOfStock, pakpriceValidUntilmůže chybět). - Lokální pravidla (např. pokud
inLanguage= „sk-SK“, musí býtheadlineve slovenštině).
Testování generátorů: unit, property-based, snapshot
- Unit testy: deterministická kontrola malých transformací (např. mapa SSOT →
brandobjekt). - Property-based testy: generování náhodných entit a kontrola invariantů (žádná prázdná pole, správné rozsahy).
- Snapshot testy: porovnání produkovaného JSON-LD s poslední akceptovanou verzí, s whitelistem povolených změn.
Minimalistický JSON Schema příklad (výřez bez <pre>)
{
"$schema":"https://json-schema.org/draft/2020-12/schema",
"title":"Product (výřez)",
"type":"object",
"required":["@context","@type","name","offers"],
"properties":{
"@context":{"const":"https://schema.org"},
"@type":{"const":"Product"},
"name":{"type":"string","minLength":3},
"sku":{"type":"string"},
"brand":{"oneOf":[{"type":"string"},{"type":"object","required":["name"],"properties":{"name":{"type":"string"}}}]},
"offers":{"type":"object","required":["@type","price","priceCurrency","availability"],"properties":{
"@type":{"const":"Offer"},
"price":{"type":"number","minimum":0},
"priceCurrency":{"type":"string","pattern":"^[A-Z]{3}$"},
"availability":{"type":"string","pattern":"^https://schema.org/(InStock|OutOfStock|PreOrder)$"}
}}
}}
}
SHACL shape (výřez JSON-LD → RDF) bez <pre>
@prefix schema: <https://schema.org/> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
schema:ProductShape a sh:NodeShape ;
sh:targetClass schema:Product ;
sh:property [ sh:path schema:name ; sh:minCount 1 ; sh:datatype xsd:string ] ;
sh:property [ sh:path schema:offers ; sh:minCount 1 ] .
Git workflow: pravidla pro změny ve schématech
- Versioning: semver pro vlastní schémata (
1.4.0), CHANGELOG s dopady na šablony. - Branch protection: PR musí projít validací, snapshot diffem a minimálně jednou lidskou revizí.
- Schema registry: zveřejněné URL schémat (CDN) s hlavičkou Cache-Control a podpisy.
Příklad CI jobu (GitHub Actions) bez <pre>
name: schema-validate
on: [pull_request]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- run: npm ci
- run: npm run build:schema
- run: node tools/validate-jsonld.js --input dist/jsonld --schema schemas/product.schema.json
- run: node tools/render-and-validate.js --urls test/fixtures.txt --headless
Render-time validace: co se testuje v headless prohlížeči
- Existence a počet skriptů
application/ld+jsonpo renderu (SSR/CSR). - Konzistence mezi statickou verzí a runtime (hydratační změny nesmí odstranit povinná pole).
- Kanálové varianty (A/B testy, geolokalizace): zda všechny varianty obsahují povinné schémata.
Drift detekce: když se mění svět kolem
- Kontrola nových vlastností v Schema.org a doporučeních vyhledávačů; porovnání vůči našim schématům.
- Automatizované PR s návrhem aktualizace schémat (bot), včetně migračních poznámek.
- Bezpečné fallbacky (ignorování neznámých polí, ale logování změn pro analýzu).
Metodika závažnosti chyb a politika nasazení
| Úroveň | Popis | Příklad | Akce v CI |
|---|---|---|---|
| BLOCKER | Porušení povinného pole/typu | Product bez name |
Fail build |
| MAJOR | Špatný formát/enum | priceCurrency ≠ ISO 4217 |
Fail PR |
| MINOR | Doporučená pole chybí | Article bez image |
Warn + tiket |
| INFO | Nová vlastnost zjištěna | Podpora knowsAbout |
Log + návrh |
Produkční observabilita: od pokrytí po rich-result výstupy
- Coverage KPI: podíl URL s platným JSON-LD podle typu (Product, Article, LocalBusiness).
- Error budget: povolený počet MINOR za týden; překročení → zpomalení release.
- Event logy: strukturované záznamy validace s trace-id a verzí schématu/release.
Programmatic SEO: generování ve velkém bez ztráty kvality
- Šablony pro entity (produkt, pobočka, článek) s dědičností společných vlastností.
- Feed-driven generování (např. z katalogů), kontrola nulových a default hodnot.
- Anti-duplicitní pravidla (
@idstabilní, kanonické URL, relace isPartOf/hasPart).
Příklady doménových pravidel (ilustrace)
- Pokud
offers.price< 1, označit jako chybu MAJOR (pravděpodobně testovací cena). - Pokud
datePublished> dnešní datum, zablokovat release (budoucí datum je neplatné). - Pro LocalBusiness musí být
address.addressCountry„SK“ nebo „CZ“ podle domény.
Governance: odpovědnosti a rituály
- Schema Owner: správa JSON Schema/SHACL, dokumentace změn.
- SEO/Content: definice doporučených polí a priority typů.
- Data Engineering: SSOT, mapování identifikátorů, kvalita feedů.
- QA/DevOps: pipeline, alerting, kanárik, rollbacks.
- Release Council (týdně): kontrola driftu, chyb a plán úprav.
Checklist před merge a před release
- Prošly všechny vrstvy validace (syntax, sémantika, business)?
- Snapshot dify pouze v povolených polích?
- Canary sample bez regresí a s dostatečným pokrytím?
- Aktualizovaný changelog schém a dokumentace?
Antivzory: čemu se vyhnout
- „Best effort“ validace pouze na stagingu bez PR brány.
- Manuální opravy JSON-LD přímo v šablonách bez zdrojového SSOT.
- Slučování typů (jedna šablona produkuje jednou Product, jindy Service podle nálady).
- Ignorování produkce: validace pouze offline, bez render-time kontroly.
Validace jako konkurenční výhoda
Automatizovaná validace schémat v CI/CD je více než technickou pojistkou. Je to základní mechanismus důvěry pro vyhledávače, LLM a interní datové toky. Vrstevnaté testy, drift detekce a produkční observabilita umožňují nasazovat programmatic SEO rychle a bezpečně – s předvídatelnou kvalitou a měřitelným dopadem na viditelnost a konverze.


























