Štruktúra produktových dát

Štruktúra produktových dát

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, mpn a ď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é offers môž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 additionalProperty alebo priamo v color/size na ú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 cez model a konzistentné sku/gtin.

Modelovanie variantových atribútov

  • Jednorozmerné atribúty (farba, veľkosť): použite color a size na ú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 additionalProperty s PropertyValue pre 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 (cez QuantitativeValue): voliteľné, ale užitočné pri „LimitedAvailability“ (napr. value: 3 kusy).
  • eligibleRegion (na Offer alebo DeliveryChargeSpecification): 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ľne priceValidUntil.
  • Akcie: použite price (akciová) + priceSpecification s UnitPriceSpecification pre rozpis (napr. referencePrice ako MSRP cez ListPrice vzor).
  • DPH: zladťe s prezentáciou na stránke. Ak ceny zahŕňajú DPH, uvádzajte tak aj v price a prípadne doplňte valueAddedTaxIncluded v PriceSpecification.
  • Viac mien: vytvorte viac Offer pre rôzne priceCurrency alebo regionálne URL; vyhnite sa miešaniu viacerých mien v jednej ponuke.
  • Jednotkové ceny: UnitPriceSpecification s pricePerUnit/unitCode (napr. €/kg), ak je to legislatívna požiadavka.

Shipping, doručenie a celková cena vlastníctva

  • Použite OfferShippingDetails s shippingRate (ako MonetaryAmount), shippingDestination, transitTime a deliveryTime.
  • freeShippingThreshold cez PriceSpecification – 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.
  • GTINgtin8, gtin12, gtin13, gtin14; používajte správne pole, nehádžte GTIN do mpn.
  • MPN – výrobcom pridelené číslo dielu; dôležité pre B2B.
  • brandBrand alebo Organization; uveďte name, voliteľne logo (ako ImageObject).

Recenzie a hodnotenia

  • aggregateRatingratingValue, reviewCount (alebo ratingCount), vždy musia byť viditeľné pre používateľa na stránke.
  • review – jednotlivé recenzie s author, 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é“, availability musí byť OutOfStock, nie InStock.
  • 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 gtin13 s mpn; 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é Offer s eligibleRegion alebo 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

  1. Má varianta samostatný dopyt a obsah? → Samostatný Product + Offer, vlastná URL, vlastné obrázky.
  2. Je varianta len stav (farba/veľkosť) bez dopytu? → Jedna Product entita + viac Offer s additionalProperty.
  3. Máte rôzne ceny podľa regiónu/meny? → Samostatné Offer s eligibleRegion a priceCurrency alebo oddelené lokalizované URL.
  4. Je produkt dočasne nedostupný? → availability = OutOfStock alebo PreOrder s availabilityStarts.

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 price a priceCurrency z 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 eligibleRegion a shippingDetails pre každú ponuku.

Rozšírenia: bundly, subscription a second-hand

  • Bundly: použite isAccessoryOrSparePartFor/isRelatedTo alebo modelujte ako samostatný Product s isVariantOf v úrovni balíka.
  • Subscription: Offer s priceSpecification (BillingDuration/BillingIncrement vzor) a jasným popisom periodicity.
  • Second-hand/refurbished: itemCondition = https://schema.org/RefurbishedCondition alebo UsedCondition, 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, additionalProperty prítomné a pravdivé.
  • Identifikátory: sku, gtin*, mpn správne vyplnené a jedinečné.
  • Shipping: OfferShippingDetails pri 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.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *