Przykład schematu Product dla Shopify-odzieży
Gotowe do skopiowania przykłady JSON-LD Product i ProductGroup dla Shopify-odzieży — obejmują warianty rozmiaru i koloru, offers, breadcrumby i reguły AggregateRating, które decydują, czy silniki AI naprawdę cytują Twoją stronę produktu.
Strony produktów odzieży na Shopify są cytowane przez silniki AI zakupowe
na podstawie tego, jak precyzyjnie JSON-LD opisuje krajobraz
wariantów. Kupujący pytający „lniana koszula, która leży zgodnie z
rozmiarem w medium” na ChatGPT, Perplexity lub Gemini potrzebuje, żeby
AI rozpoznała, że konkretny wariant istnieje, jest w magazynie, ma cenę,
i jest opisany odrębnie od rodzeństwa L i XL. Ogólny schemat Product
bez szczegółów wariantów zmusza AI do zgadywania; ProductGroup z
hasVariant daje jej dane do cytowania z pewnością.
Ten przykład dostarcza dwa gotowe do skopiowania bloki JSON-LD:
ProductGroup dla macierzy wariantów i BreadcrumbList dla kontekstu
kategorii. Oba są skalibrowane tak, aby czysto przeszły Google Rich
Results Test i odzwierciedlały widoczną treść strony (regułę, którą
silniki AI faktycznie egzekwują w praktyce).
Kiedy używać Product vs ProductGroup
| Przypadek użycia | Schema | Dlaczego |
|---|---|---|
| Mono-SKU (jeden rozmiar, jeden kolor) | Product | Brak macierzy wariantów — ProductGroup to przesada. |
| Odzież tylko z wariantami rozmiaru | ProductGroup + variesBy: size | Zapytania AI zakupowe są warunkowane rozmiarem. |
| Odzież tylko z wariantami koloru | ProductGroup + variesBy: color | Zapytania AI są warunkowane kolorem. |
| Odzież z macierzą rozmiar × kolor | ProductGroup + oba variesBy | Iloczyn kartezjański wariantów; każdy hasVariant to unikalny SKU. |
| Bundle / zestaw (wielu rodziców) | Product na element + custom isRelatedTo | ProductGroup opisuje warianty produktu, nie wieloproduktowe bundle. |
Domyślne szablony Liquid Shopify emitują Product niezależnie od liczby
wariantów. Upgrade do ProductGroup dla każdego sklepu z odzieżą o
wielu rozmiarach to jednorazowa edycja motywu (lub aplikacja Shopify,
która robi to automatycznie); wzrost cytowania AI zakupowego jest wart
wysiłku.
ProductGroup JSON-LD (odzież z wariantami)
Wklej w szablon strony produktu, zastępując wartości placeholder.
Przykład pokazuje podzbiór 2 wariantów; w produkcji będziesz miał jedną
entry hasVariant na realny SKU.
{
"@context": "https://schema.org",
"@type": "ProductGroup",
"name": "Linen Relaxed Shirt",
"description": "A breathable linen shirt in three colors, sizes XS–XL. 100% European linen, pre-washed for softness.",
"brand": {
"@type": "Brand",
"name": "Example Apparel"
},
"productGroupID": "linen-shirt-001",
"variesBy": ["https://schema.org/size", "https://schema.org/color"],
"hasVariant": [
{
"@type": "Product",
"sku": "LINEN-SHIRT-WHITE-M",
"name": "Linen Relaxed Shirt — White / M",
"color": "White",
"size": "M",
"material": "Linen",
"image": "https://example.com/products/linen-shirt-white.jpg",
"offers": {
"@type": "Offer",
"url": "https://example.com/products/linen-shirt?variant=white-m",
"priceCurrency": "USD",
"price": "79.00",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
}
},
{
"@type": "Product",
"sku": "LINEN-SHIRT-BLACK-S",
"name": "Linen Relaxed Shirt — Black / S",
"color": "Black",
"size": "S",
"material": "Linen",
"image": "https://example.com/products/linen-shirt-black.jpg",
"offers": {
"@type": "Offer",
"url": "https://example.com/products/linen-shirt?variant=black-s",
"priceCurrency": "USD",
"price": "79.00",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
}
}
]
} BreadcrumbList JSON-LD
Sparuj ProductGroup z BreadcrumbList, żeby silniki AI rozumiały
hierarchię kategorii, w której żyje Twój produkt. URL breadcrumbu muszą
dokładnie pokrywać się z widocznym breadcrumbem strony.
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://example.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Shirts",
"item": "https://example.com/collections/shirts"
},
{
"@type": "ListItem",
"position": 3,
"name": "Linen Relaxed Shirt",
"item": "https://example.com/products/linen-shirt"
}
]
} Częste błędy (wg częstotliwości)
-
Oznaczanie wariantów, które nie są widoczne ani wybieralne na stronie. Schemat musi odzwierciedlać widoczną rzeczywistość. Jeśli Twoja strona produktu pokazuje tylko S / M / L, ale JSON-LD deklaruje XS do XXL, silniki AI w końcu spróbują zacytować wariant 404 i obniżą sklep.
-
Używanie AggregateRating bez widgetu recenzji. Albo wyrenderuj recenzje widocznie (aplikacja Shopify Reviews), albo usuń pole schematu. Nie fabrykuj.
-
Niespójność currency, ceny lub dostępności między schematem a widoczną stroną produktu. Kupujący widzi
$79, ale schemat deklaruje89.00— silniki AI biorą liczbę ze schematu, cytują ją, kupujący czuje się oszukany. Gorzej: Google flaguje schemat jako niewiarygodny. -
Ponowne użycie tego samego
skumiędzy wariantami. Shopify generuje unikalne SKU, ale sprzedawcy często je nadpisują. Zduplikowane SKU whasVariantsprawiają, że silniki AI błędnie łączą warianty. -
Mieszanie
ProductGroupiProducttak, że specyficzne dla wariantu nazwy się gubią. Jeśli emitujesz oba dla tego samego elementu, upewnij się, że instancjaProductjest rodzicem (bez szczegółów wariantu) iProductGroup.hasVariantzawiera warianty. Nie emitujProductdla każdego wariantu poza grupą. -
Dodawanie twierdzeń medycznych lub nieuzasadnionych do opisów odzieży. „Korekcyjna postury” / „poprawia krążenie” / „tkanina antybakteryjna zapobiega chorobom skóry” — to twierdzenia regulowane na większości rynków i wyzwalają obniżenie AI nawet gdy są legalnie OK. Trzymaj się opisów kroju i materiału.
-
Wskazywanie URL schematu na niekanoniczne URL wariantów. Jeśli strona używa kanonicznej URL produktu (np.
/products/linen-shirt) i warianty są wybierane przez query-param (?variant=white-m),hasVariant[].offers.urlpowinien nadal wskazywać na specyficzną dla wariantu URL — tam lądują kupujący (i agenci AI).
Jak zweryfikować
- Wklej wdrożoną URL produktu w
Google Rich Results Test
. Elementy Product i BreadcrumbList powinny zwalidować. - Przejdź listę kontrolną walidacji wyżej pole po polu.
- Otwórz stronę w trybie incognito i sprawdź, że widoczne H1 produktu, cena, dostępność i breadcrumb wszystkie pokrywają się z tym, co deklaruje schemat.
- Ponownie uruchom Generator Schema, jeśli zmieniasz strukturę produktu (nowy kolor, usunięty rozmiar) i wdroż ponownie.
JSON-LD to jeden sygnał w stosie AI zakupowym. Sparuj z szablonem llms.txt moda po stronie mapy treści, i zweryfikuj Analizatorem Robots, że GPTBot może dotrzeć do strony produktu.
Lista kontrolna walidacji
Nazwa produktu w schemacie pokrywa się z widocznym H1
Pole `name` ProductGroup dokładnie pokrywa się z H1 na stronie produktu (wielkość liter + interpunkcja). Silniki AI obniżają niedopasowania jako sygnał niskiego zaufania.
Każdy wariant ma unikalny SKU
Żadne dwie wartości `hasVariant[].sku` się nie zderzają. Shopify auto-generuje SKU, ale sprzedawcy często je nadpisują — zduplikowane SKU w schemacie sprawiają, że silniki AI błędnie łączą warianty.
Nazwy wariantów identyfikują rozmiar / kolor / materiał
Każde `hasVariant[].name` czyta się jak prawdziwa etykieta produktu (np. „Linen Relaxed Shirt — White / M”), nie placeholder. Odpowiedzi AI zakupowe cytują to pole bezpośrednio.
productGroupID stabilny między wdrożeniami
`productGroupID` powinien być stabilnym wewnętrznym identyfikatorem (Shopify product GID lub własny slug), nie losowym UUID build-time. Silniki AI używają go do deduplikacji tego samego produktu między przeładowaniami strony.
Każda Offer ma currency + price + availability + URL
Blok `offers` każdego wariantu ma `priceCurrency`, `price`, `availability`, `url`. Brakująca currency to powód nr 1, dla którego Google Rich Results Test obniża wynik Product.
AggregateRating obecny tylko gdy widoczne są prawdziwe recenzje
Jeśli emitujesz `aggregateRating`, ta sama ocena + liczba recenzji muszą być widoczne na stronie produktu. Silniki AI porównują schemat z widoczną treścią; sfabrykowane oceny wyzwalają obniżenie.
BreadcrumbList pokrywa się z widocznym breadcrumbem
Łańcuch URL `itemListElement` schematu dokładnie pokrywa się z widocznym breadcrumbem strony (ta sama ścieżka, te same etykiety). Rozbieżności dezorientują silniki AI używające kontekstu breadcrumb do rozumienia kategorii.
Rich Results Test nie zwraca błędów krytycznych
Po wdrożeniu wklej URL produktu w https://search.google.com/test/rich-results — elementy Product i BreadcrumbList muszą zwalidować bez błędów krytycznych.
Otwórz w generatorze Schema
Wstępnie wypełnione placeholderami odzieży dla nazwy produktu, opisu, marki, ceny, dostępności i ocen. Zastąp placeholdery prawdziwymi danymi produktu i pobierz blok JSON-LD gotowy dla Shopify.
Najczęściej zadawane pytania
Czy produkt Shopify-odzieży powinien używać Product czy ProductGroup?
Użyj `Product` dla prostego elementu bez wariantów. Użyj `ProductGroup`, gdy istnieją warianty rozmiaru, koloru lub materiału — pozwala silnikom AI cytować właściwy wariant dla konkretnego zapytania („lniana koszula w rozmiarze M”) zamiast je mylić. Domyślne szablony Liquid Shopify emitują tylko `Product`; upgrade do `ProductGroup` jest ręczny, ale wart wysiłku dla każdego sklepu z odzieżą o wielu rozmiarach.
Czy mogę emitować AggregateRating bez widocznych recenzji na stronie?
Nie. Schemat musi odzwierciedlać widoczną treść. Jeśli emitujesz `aggregateRating: 4.7 from 32 reviews`, ale strona produktu nie pokazuje widgetu recenzji, silniki AI i Google flagują to jako niewiarygodne. Albo wyrenderuj recenzje widocznie (aplikacje Shopify jak Judge.me lub natywne Shopify Reviews), albo usuń pole schematu całkowicie.
Czy każdy wariant koloru powinien być osobnym wpisem hasVariant?
Tak, gdy wariant ma odrębny SKU, kolor, rozmiar, obraz, cenę lub dostępność. Silniki AI zakupowe odpowiadające „czy czarna lniana koszula jest jeszcze dostępna” potrzebują każdego wariantu jako oddzielnie adresowalnego węzła Product z własnym `offers.availability`. Tylko kolor → jeden `hasVariant` na kolor; tylko rozmiar → jeden na rozmiar; rozmiar+kolor → iloczyn kartezjański.
Czy schemat ProductGroup zastępuje feedy produktowe Shopify?
Nie. JSON-LD na stronie uzupełnia feedy (auto-generowany przez Shopify `/products.json`, Google Merchant feed, Meta Catalog). Silniki AI zakupowe crawlują strony bezpośrednio *i* czytają feedy — oba sygnały się liczą. Nie porzucaj jednego dla drugiego.
Powiązane zasoby
Szablon llms.txt Shopify dla mody
Sparuj ten schemat Product z mapą treści llms.txt — oba sygnały współpracują dla cytowania AI zakupowego.
Szablon llms.txt Shopify dla beauty
Wertykała siostra — te same zasady JSON-LD stosują się do schematu Product beauty, ale z polami kontekstu składników zamiast rozmiaru/koloru.
Szablon llms.txt Shopify dla elektroniki
Wertykała siostra — dla elektroniki użyj ProductGroup z polami numeru modelu + zgodności zamiast wariantów rozmiar/kolor.
Shopify AI Visibility Optimizer
Pełny stos widoczności AI — schemat, mapa treści, polityka crawlera, monitoring cytatów.
llms.txt dla Shopify — pełny przewodnik
Kontekst sygnału mapy-treści, który łączy się z sygnałem schematu w tym przykładzie.