Przejdź do głównej treści
🇵🇱

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.

4 min read

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życiaSchemaDlaczego
Mono-SKU (jeden rozmiar, jeden kolor)ProductBrak macierzy wariantów — ProductGroup to przesada.
Odzież tylko z wariantami rozmiaruProductGroup + variesBy: sizeZapytania AI zakupowe są warunkowane rozmiarem.
Odzież tylko z wariantami koloruProductGroup + variesBy: colorZapytania AI są warunkowane kolorem.
Odzież z macierzą rozmiar × kolorProductGroup + oba variesByIloczyn kartezjański wariantów; każdy hasVariant to unikalny SKU.
Bundle / zestaw (wielu rodziców)Product na element + custom isRelatedToProductGroup 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.

ProductGroup JSON-LD (warianty odzieży) json
{
  "@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"
      }
    }
  ]
}

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.

BreadcrumbList JSON-LD json
{
  "@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)

  1. 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.

  2. Używanie AggregateRating bez widgetu recenzji. Albo wyrenderuj recenzje widocznie (aplikacja Shopify Reviews), albo usuń pole schematu. Nie fabrykuj.

  3. Niespójność currency, ceny lub dostępności między schematem a widoczną stroną produktu. Kupujący widzi $79, ale schemat deklaruje 89.00 — silniki AI biorą liczbę ze schematu, cytują ją, kupujący czuje się oszukany. Gorzej: Google flaguje schemat jako niewiarygodny.

  4. Ponowne użycie tego samego sku między wariantami. Shopify generuje unikalne SKU, ale sprzedawcy często je nadpisują. Zduplikowane SKU w hasVariant sprawiają, że silniki AI błędnie łączą warianty.

  5. Mieszanie ProductGroup i Product tak, że specyficzne dla wariantu nazwy się gubią. Jeśli emitujesz oba dla tego samego elementu, upewnij się, że instancja Product jest rodzicem (bez szczegółów wariantu) i ProductGroup.hasVariant zawiera warianty. Nie emituj Product dla każdego wariantu poza grupą.

  6. 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.

  7. 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.url powinien nadal wskazywać na specyficzną dla wariantu URL — tam lądują kupujący (i agenci AI).

Jak zweryfikować

  1. Wklej wdrożoną URL produktu w

    Google Rich Results Test

    . Elementy Product i BreadcrumbList powinny zwalidować.
  2. Przejdź listę kontrolną walidacji wyżej pole po polu.
  3. 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.
  4. 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