Prečo riešiť Product schema do hĺbky
Štruktúrované dáta schema.org/Product a Offer sú kľúčové pre presné pochopenie vášho katalógu vyhľadávačmi, nákupnými službami aj LLM. Správna implementácia zvyšuje kvalitu úryvkov (rich results), znižuje počet chýb v Merchant Center, a v neposlednom rade stabilizuje dátovú konzistenciu naprieč kanálmi (web, feedy, API). Nasledujúci článok ponúka praktický, detailný pohľad na modelovanie variantov, dostupnosti a cien v Product schemácii.
Základný model: Product, Offer a AggregateOffer
- Product popisuje samotný produkt –
name,description,sku,gtin,brand,image,color,size,material,model,mpna ďalšie. - Offer popisuje konkrétnu ponuku produktu –
price,priceCurrency,availability,url,itemCondition,priceValidUntil,seller,shippingDetails,eligibleQuantity. - AggregateOffer sumarizuje rozsah cien viacerých ponúk –
lowPrice,highPrice,offerCount, pričom jednotlivéoffersmôžu byť vnorené.
Varianty: kedy jeden Product a kedy viac Product entít
- Jedna Product entita s viacerými Offer: vhodné, keď varianty (farba, veľkosť) nemajú samostatné SEO dopyty a žijú na jednej PDP URL. Variantové atribúty sa modelujú v
additionalPropertyalebo priamo vcolor/sizena úrovni ponuky. - Viac Product entít (po jednej na variant): ak má každý variant vlastnú URL, unikátne obrázky, recenzie či dopyt (napr. „modré tenisky 42“). Každý variant má svoje
sku,gtin, presné atribúty a seba-kanoniku. - Kombinovaný model: „master“ produkt s prehľadom a variantové Product entity s vlastnými Offer. Prepojenie cez
isVariantOf/hasVariant(z ProductGroup vzoru) alebo cezmodela konzistentnésku/gtin.
Modelovanie variantových atribútov
- Jednorozmerné atribúty (farba, veľkosť): použite
colorasizena úrovni Product alebo Offer, podľa toho, kde sa variant realizuje (URL vs. stav ponuky). - Viacrozmerné atribúty (šírka x dĺžka, kapacita x farba): použite
additionalPropertysPropertyValuepre každú dimenziu. - Jednotky: pri kvantitatívnych atribútoch uveďte
value+unitCode(napr. „C62“ pre centimetre podľa UN/CEFACT).
Dostupnosť: ItemAvailability a inventár
Presné vyjadrenie dostupnosti je kritické, najmä ak feedy a web musia byť v súlade.
- Hlavné hodnoty:
http://schema.org/InStock,OutOfStock,PreOrder,PreSale,BackOrder,LimitedAvailability,SoldOut. availabilityStarts/availabilityEnds: pre časované kampane a pre-order okná.inventoryLevel(cezQuantitativeValue): voliteľné, ale užitočné pri „LimitedAvailability“ (napr.value: 3kusy).eligibleRegion(naOfferaleboDeliveryChargeSpecification): odlíšte dostupnosť podľa krajín/oblastí.
Komplexné ceny: zľavy, MSRP a dane
- Základ:
price(ako string s desatinnou bodkou),priceCurrency(ISO 4217), voliteľnepriceValidUntil. - Akcie: použite
price(akciová) +priceSpecificationsUnitPriceSpecificationpre rozpis (napr.referencePriceako MSRP cezListPricevzor). - DPH: zladťe s prezentáciou na stránke. Ak ceny zahŕňajú DPH, uvádzajte tak aj v
pricea prípadne doplňtevalueAddedTaxIncludedvPriceSpecification. - Viac mien: vytvorte viac
Offerpre rôznepriceCurrencyalebo regionálne URL; vyhnite sa miešaniu viacerých mien v jednej ponuke. - Jednotkové ceny:
UnitPriceSpecificationspricePerUnit/unitCode(napr. €/kg), ak je to legislatívna požiadavka.
Shipping, doručenie a celková cena vlastníctva
- Použite
OfferShippingDetailssshippingRate(akoMonetaryAmount),shippingDestination,transitTimeadeliveryTime. freeShippingThresholdcezPriceSpecification– transparentnosť prahov.- Zohľadnite regionálne obmedzenia (
eligibleRegion) a odlišné časy doručenia.
Identifikátory: GTIN, SKU, MPN, brand
- SKU – interný identifikátor variantu; jedinečný v rámci obchodníka.
- GTIN –
gtin8,gtin12,gtin13,gtin14; používajte správne pole, nehádžte GTIN dompn. - MPN – výrobcom pridelené číslo dielu; dôležité pre B2B.
- brand –
BrandaleboOrganization; uveďtename, voliteľnelogo(akoImageObject).
Recenzie a hodnotenia
aggregateRating–ratingValue,reviewCount(aleboratingCount), vždy musia byť viditeľné pre používateľa na stránke.review– jednotlivé recenzie sauthor,datePublished,reviewRating.- Varianty: ak sa hodnotí „model“ naprieč variantmi, neprenášajte recenzie na variant s odlišným SKU/GTIN, ak by to zavádzalo.
JSON-LD príklad: jedna PDP s viacerými variantmi v rámci jednej 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": "Priedušné športové tričko X pre každodenný tréning.", "image": [ "https://www.example.com/images/tricko-x-main.jpg" ], "brand": { "@type": "Brand", "name": "EX Brand" }, "sku": "TX-MASTER", "model": "X-2025", "category": "Oblečenie > Tričká", "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>
JSON-LD príklad: silné varianty ako samostatné Product entity
<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é, veľkosť 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>
Bežné chyby a antipatterny
- Nekonzistentná mena a formát ceny – používajte ISO 4217 (napr. EUR) a desatinnú bodku, nie čiarku.
- Disponibilita nezhodná s UI – ak UI ukazuje „Vypredané“,
availabilitymusí byťOutOfStock, nieInStock. - Neaktuálne
priceValidUntil– po expirácii vyčistite atribút, inak riskujete odmietnutie rich výsledkov. - Duplicitné Product entity na jednej URL bez jasného účelu – spôsobuje konflikty v extrakcii.
- GTIN v zlom poli – nepomýľte
gtin13smpn; vyhľadávače validujú formát. - Variantové atribúty iba v texte – farba/veľkosť musia byť aj v štruktúrovaných dátach, nielen v názve.
Regionálne a jazykové verzie
- Hreflang klastre: každá lokalizačná verzia má svoju Product entitu s cenou v miestnej mene a adekvátnou dostupnosťou.
- Regionálne ceny: použite samostatné
OfferseligibleRegionalebo oddelené URL (preferované pre odlišné katalógy). - Daňové odlišnosti: jednotne komunikujte, či je DPH zahrnutá. Vyhýbajte sa miešaniu „s DPH“/„bez DPH“ na jednej PDP bez zrozumiteľného rozlíšenia v dátach.
Testovanie, validácia a monitoring
- Validátory: spúšťajte validačné nástroje (rich results test) pri každom deployi šablón PDP/PLP.
- Kontrola vo feede: ak používate Merchant Center, kontrolujte zhodu názvu, ceny, dostupnosti a URL s Product schemou na webe.
- Logika generovania: generujte JSON-LD na serveri (SSR/SSG) – nie až po hydratácii JS, aby sa predišlo nesúladu a FOUC v dátach.
- Monitoring zmien: auditujte differy JSON-LD pri úpravách atribútov, CRM/ERP synchronizácii a cenotvorbe.
Rýchly rozhodovací strom pre varianty a ceny
- Má varianta samostatný dopyt a obsah? → Samostatný Product + Offer, vlastná URL, vlastné obrázky.
- Je varianta len stav (farba/veľkosť) bez dopytu? → Jedna Product entita + viac Offer s
additionalProperty. - Máte rôzne ceny podľa regiónu/meny? → Samostatné Offer s
eligibleRegionapriceCurrencyalebo oddelené lokalizované URL. - Je produkt dočasne nedostupný? →
availability= OutOfStock alebo PreOrder savailabilityStarts.
Verzia pre PLP/kategórie: ItemList a ponuky
Na listingoch (PLP) môžete použiť ItemList s položkami typu Product a ich minimálnou offers reprezentáciou (napr. lowPrice). Nepreťažujte listingy detailnou Offer špecifikáciou – plnú presnosť nechajte PDP.
Dátová konzistencia: zdroj pravdy a synchronizácia
- Master data: zaveďte zdroj pravdy (PIM/ERP) pre
sku,gtin, atribúty, brand. - Cenová politika: generujte
priceapriceCurrencyz jedného cenového modulu pre všetky kanály. - Inventár: synchronizujte
availability, ideálne s eventmi (napr. webhooks), minimalizujte latenciu. - Regionálne pravidlá: udržiavajte mapu, ktorá určuje
eligibleRegionashippingDetailspre každú ponuku.
Rozšírenia: bundly, subscription a second-hand
- Bundly: použite
isAccessoryOrSparePartFor/isRelatedToalebo modelujte ako samostatný Product sisVariantOfv úrovni balíka. - Subscription:
OfferspriceSpecification(BillingDuration/BillingIncrementvzor) a jasným popisom periodicity. - Second-hand/refurbished:
itemCondition=https://schema.org/RefurbishedConditionaleboUsedCondition, a transparentnéwarranty.
Checklist pred nasadením
- Na PDP je práve jedna Product entita, alebo jasný master-variant model bez duplicít.
- Ceny: správna mena, formát, zladenie s UI a feedom; akcie rozlíšené v
priceSpecification. - Dostupnosť: konzistentná s UI; pre pre-order vyplnené dátumy.
- Varianty:
color,size,additionalPropertyprítomné a pravdivé. - Identifikátory:
sku,gtin*,mpnsprávne vyplnené a jedinečné. - Shipping:
OfferShippingDetailspri produktoch, kde doprava výrazne mení cenu alebo SLA. - Validácia: prešli ste rich results testom a automatizovaným CI checkom JSON-LD.
Presná schéma = menej šumu, viac výkonu
Product schema nie je iba o „rich snippets“. Je to kontraktná vrstva medzi vaším katalógom a ekosystémom vyhľadávania, nákupných platforiem a LLM. Dôsledné modelovanie variantov, dostupnosti a cien so zladením naprieč kanálmi prináša vyššiu spoľahlivosť, lepšiu viditeľnosť a presnejšiu interpretáciu vášho portfólia.