Product schema do hloubky: strukturování variant, dostupnosti a cenových údajů

Product schema do hĺbky: Štruktúrovanie variantov, dostupnosti a cenovej informácie

Proč řešit Product schema do hloubky

Strukturovaná data schema.org/Product a Offer jsou klíčová pro přesné pochopení vašeho katalogu vyhledávači, nákupními službami i LLM. Správná implementace zvyšuje kvalitu úryvků (rich results), snižuje počet chyb v Merchant Center a v neposlední řadě stabilizuje konzistenci dat napříč kanály (web, feedy, API). Následující článek nabízí praktický a podrobný pohled na modelování variant, dostupnosti a cen v Product schématu.

Základní model: Product, Offer a AggregateOffer

  • Product popisuje samotný produkt – name, description, sku, gtin, brand, image, color, size, material, model, mpn a další.
  • Offer popisuje konkrétní nabídku produktu – price, priceCurrency, availability, url, itemCondition, priceValidUntil, seller, shippingDetails, eligibleQuantity.
  • AggregateOffer shrnuje cenové rozpětí několika nabídek – lowPrice, highPrice, offerCount, přičemž jednotlivé offers mohou být vnořené.

Varianty: kdy použít jeden Product a kdy více entit Product

  • Jedna entita Product s více nabídkami Offer: vhodné, když varianty (barva, velikost) nemají samostatné SEO dotazy a jsou dostupné na jedné URL PDP. Atributy variant se modelují v additionalProperty nebo přímo v color/size na úrovni nabídky.
  • Více entit Product (po jedné pro každou variantu): pokud má každá varianta vlastní URL, unikátní obrázky, recenze či poptávku (např. „modré tenisky 42“). Každá varianta má své sku, gtin, přesné atributy a vlastní kanonickou URL.
  • Kombinovaný model: „master“ produkt s přehledem a entity Product pro jednotlivé varianty s vlastními nabídkami Offer. Propojení přes isVariantOf/hasVariant (podle vzoru ProductGroup) nebo přes model a konzistentní sku/gtin.

Modelování atributů variant

  • Jednorozměrné atributy (barva, velikost): použijte color a size na úrovni Product nebo Offer podle toho, kde se varianta realizuje (URL vs. stav nabídky).
  • Více rozměrů (šířka × délka, kapacita × barva): použijte additionalProperty s PropertyValue pro každý rozměr.
  • Jednotky: u kvantitativních atributů uveďte value + unitCode (např. „C62“ pro centimetry podle UN/CEFACT).

Dostupnost: ItemAvailability a inventář

Přesné vyjádření dostupnosti je kritické, zejména pokud musí být feedy a web v souladu.

  • Hlavní hodnoty: http://schema.org/InStock, OutOfStock, PreOrder, PreSale, BackOrder, LimitedAvailability, SoldOut.
  • availabilityStarts/availabilityEnds: pro časově omezené kampaně a období předobjednávek.
  • inventoryLevel (prostřednictvím QuantitativeValue): nepovinné, ale užitečné při hodnotě „LimitedAvailability“ (např. value: 3 kusy).
  • eligibleRegion (u Offer nebo DeliveryChargeSpecification): rozlište dostupnost podle zemí/oblastí.

Komplexní ceny: slevy, MSRP a daně

  • Základ: price (jako řetězec s desetinnou tečkou), priceCurrency (ISO 4217), případně priceValidUntil.
  • Akce: použijte price (akční cenu) + priceSpecification s UnitPriceSpecification pro rozpis (např. referencePrice jako MSRP podle vzoru ListPrice).
  • DPH: slaďte údaje s prezentací na stránce. Pokud ceny zahrnují DPH, uvádějte to také v price a případně doplňte valueAddedTaxIncluded v PriceSpecification.
  • Více měn: vytvořte více nabídek Offer pro různé hodnoty priceCurrency nebo regionální URL; vyhněte se kombinování více měn v jedné nabídce.
  • Jednotkové ceny: UnitPriceSpecification s pricePerUnit/unitCode (např. €/kg), pokud to vyžaduje legislativa.

Doprava, doručení a celkové náklady vlastnictví

  • Použijte OfferShippingDetails s položkami shippingRate (jako MonetaryAmount), shippingDestination, transitTime a deliveryTime.
  • freeShippingThreshold prostřednictvím PriceSpecification – transparentní uvedení limitů.
  • Zohledněte regionální omezení (eligibleRegion) a odlišné dodací lhůty.

Identifikátory: GTIN, SKU, MPN, brand

  • SKU – interní identifikátor varianty; jedinečný v rámci obchodníka.
  • GTIN – gtin8, gtin12, gtin13, gtin14; používejte správné pole, nevkládejte GTIN do mpn.
  • MPN – číslo dílu přidělené výrobcem; důležité pro B2B.
  • brand – Brand nebo Organization; uveďte name, případně logo (jako ImageObject).

Recenze a hodnocení

  • aggregateRating – ratingValue, reviewCount (nebo ratingCount); vždy musí být viditelné uživateli na stránce.
  • review – jednotlivé recenze s položkami author, datePublished, reviewRating.
  • Varianty: pokud se hodnotí „model“ napříč variantami, nepřenášejte recenze na variantu s odlišným SKU/GTIN, pokud by to mohlo být zavádějící.

Příklad JSON-LD: jedna PDP s více variantami v rámci jednoho Product

<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Product", "@id": "https://www.example.com/produkt/tricko-x#product", "name": "Tričko X", "description": "Prodyšné sportovní tričko X pro každodenní trénink.", "image": [ "https://www.example.com/images/tricko-x-main.jpg" ], "brand": { "@type": "Brand", "name": "EX Brand" }, "sku": "TX-MASTER", "model": "X-2025", "category": "Oblečení > Trička", "additionalProperty": [ { "@type": "PropertyValue", "name": "materiál", "value": "100% recyklovaný polyester" } ], "offers": { "@type": "AggregateOffer", "offerCount": 3, "lowPrice": "19.90", "highPrice": "24.90", "priceCurrency": "EUR", "offers": [ { "@type": "Offer", "sku": "TX-BLUE-M", "url": "https://www.example.com/produkt/tricko-x?color=blue&size=M", "price": "19.90", "priceCurrency": "EUR", "availability": "https://schema.org/InStock", "itemCondition": "https://schema.org/NewCondition", "priceValidUntil": "2025-12-31", "additionalProperty": [ { "@type": "PropertyValue", "name": "color", "value": "blue" }, { "@type": "PropertyValue", "name": "size", "value": "M" } ], "shippingDetails": { "@type": "OfferShippingDetails", "shippingRate": { "@type": "MonetaryAmount", "value": "3.90", "currency": "EUR" }, "shippingDestination": { "@type": "DefinedRegion", "addressCountry": "SK" }, "deliveryTime": { "@type": "ShippingDeliveryTime", "handlingTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 1, "unitCode": "d" }, "transitTime": { "@type": "QuantitativeValue", "minValue": 2, "maxValue": 3, "unitCode": "d" } } } }, { "@type": "Offer", "sku": "TX-BLUE-L", "url": "https://www.example.com/produkt/tricko-x?color=blue&size=L", "price": "19.90", "priceCurrency": "EUR", "availability": "https://schema.org/LimitedAvailability", "additionalProperty": [ { "@type": "PropertyValue", "name": "color", "value": "blue" }, { "@type": "PropertyValue", "name": "size", "value": "L" } ] }, { "@type": "Offer", "sku": "TX-BLACK-M", "url": "https://www.example.com/produkt/tricko-x?color=black&size=M", "price": "24.90", "priceCurrency": "EUR", "availability": "https://schema.org/PreOrder", "availabilityStarts": "2025-11-15", "additionalProperty": [ { "@type": "PropertyValue", "name": "color", "value": "black" }, { "@type": "PropertyValue", "name": "size", "value": "M" } ] } ] }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.6", "reviewCount": "128" } } </script> 

Příklad JSON-LD: důležité varianty jako samostatné entity Product

<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Product", "@id": "https://www.example.com/produkt/tenisky-y-modre-42#product", "name": "Tenisky Y – modré, velikost 42", "image": [ "https://www.example.com/images/tenisky-y-blue-42-1.jpg", "https://www.example.com/images/tenisky-y-blue-42-2.jpg" ], "brand": { "@type": "Brand", "name": "EX Brand" }, "sku": "Y-BLUE-42", "gtin13": "1234567890123", "color": "blue", "size": "42", "isVariantOf": { "@type": "Product", "@id": "https://www.example.com/produkt/tenisky-y#product", "name": "Tenisky Y" }, "offers": { "@type": "Offer", "price": "89.00", "priceCurrency": "EUR", "availability": "https://schema.org/InStock", "url": "https://www.example.com/produkt/tenisky-y-modre-42", "seller": { "@type": "Organization", "name": "EX Shop" } } } </script> 

Běžné chyby a antipatterny

  • Nekonzistentní měna a formát ceny – používejte ISO 4217 (např. EUR) a desetinnou tečku, nikoli čárku.
  • Dostupnost neodpovídající UI – pokud UI zobrazuje „Vyprodáno“, availability musí být OutOfStock, nikoli InStock.
  • Neaktuální priceValidUntil – po uplynutí platnosti atribut odstraňte, jinak riskujete odmítnutí rich results.
  • Duplicitní entity Product na jedné URL bez jasného účelu – způsobují konflikty při extrakci.
  • GTIN ve špatném poli – nezaměňujte gtin13 s mpn; vyhledávače ověřují formát.
  • Atributy variant pouze v textu – barva/velikost musí být také ve strukturovaných datech, nejen v názvu.

Regionální a jazykové verze

  • Klastry hreflang: každá lokalizovaná verze má vlastní entitu Product s cenou v místní měně a odpovídající dostupností.
  • Regionální ceny: použijte samostatné nabídky Offer s eligibleRegion nebo oddělené URL (preferované řešení pro odlišné katalogy).
  • Daňové rozdíly: jednotně komunikujte, zda je DPH zahrnuta. Vyhněte se kombinování cen „s DPH“/„bez DPH“ na jedné PDP bez srozumitelného rozlišení v datech.

Testování, validace a monitoring

  • Validátory: spouštějte validační nástroje (test rich results) při každém nasazení šablon PDP/PLP.
  • Kontrola ve feedu: pokud používáte Merchant Center, kontrolujte shodu názvu, ceny, dostupnosti a URL s Product schématem na webu.
  • Logika generování: generujte JSON-LD na serveru (SSR/SSG) – ne až po hydrataci JS, abyste předešli nesouladu a FOUC v datech.
  • Monitoring změn: auditujte rozdíly v JSON-LD při úpravách atributů, synchronizaci CRM/ERP a změnách cen.

Rychlý rozhodovací strom pro varianty a ceny

  1. Má varianta samostatnou poptávku a obsah? → Samostatný Product + Offer, vlastní URL, vlastní obrázky.
  2. Je varianta pouze stavem (barva/velikost) bez samostatné poptávky? → Jedna entita Product + více nabídek Offer s additionalProperty.
  3. Máte různé ceny podle regionu/měny? → Samostatné nabídky Offer s eligibleRegion a priceCurrency nebo oddělené lokalizované URL.
  4. Je produkt dočasně nedostupný? → availability = OutOfStock nebo PreOrder s availabilityStarts.

Verze pro PLP/kategorie: ItemList a nabídky

Na výpisech (PLP) můžete použít ItemList s položkami typu Product a jejich minimální reprezentací offers (např. lowPrice). Nepřetěžujte výpisy podrobnými specifikacemi Offer – plnou přesnost ponechte stránkám PDP.

Konzistence dat: zdroj pravdy a synchronizace

  • Master data: určete zdroj pravdy (PIM/ERP) pro sku, gtin, atributy a brand.
  • Cenová politika: generujte price a priceCurrency z jednoho cenového modulu pro všechny kanály.
  • Inventář: synchronizujte availability, ideálně pomocí událostí (např. webhooků), a minimalizujte latenci.
  • Regionální pravidla: udržujte mapu, která určuje eligibleRegion a shippingDetails pro každou nabídku.

Rozšíření: balíčky, předplatné a second-hand

  • Balíčky: použijte isAccessoryOrSparePartFor/isRelatedTo nebo je modelujte jako samostatný Product s isVariantOf na úrovni balíčku.
  • Předplatné: Offer s priceSpecification (podle vzoru BillingDuration/BillingIncrement) a jasným popisem periodicity.
  • Použité/repasované zboží: itemCondition = https://schema.org/RefurbishedCondition nebo UsedCondition a transparentně uvedená warranty.

Kontrolní seznam před nasazením

  • Na PDP je právě jedna entita Product, případně jasně definovaný model master-varianta bez duplicit.
  • Ceny: správná měna a formát, soulad s UI a feedem; akce rozlišené v priceSpecification.
  • Dostupnost: v souladu s UI; u předobjednávek vyplněná data.
  • Varianty: položky color, size, additionalProperty jsou přítomné a pravdivé.
  • Identifikátory: položky sku, gtin*, mpn jsou správně vyplněné a jedinečné.
  • Doprava: OfferShippingDetails u produktů, u kterých doprava výrazně ovlivňuje cenu nebo SLA.
  • Validace: prošli jste testem rich results a automatizovanou kontrolou JSON-LD v CI.

Přesné schéma = méně šumu, vyšší výkon

Product schema není jen o „rich snippets“. Je to kontraktní vrstva mezi vaším katalogem a ekosystémem vyhledávání, nákupních platforem a LLM. Důsledné modelování variant, dostupnosti a cen a jejich sjednocení napříč kanály přináší vyšší spolehlivost, lepší viditelnost a přesnější interpretaci vašeho portfolia.