Karuzele uporządkowanych danych (beta)

Google wykorzystuje uporządkowane dane, aby rozpoznawać treści na stronie i pokazywać je w wynikach wyszukiwania w postaci rozszerzonej. Jest to tzw. wynik z elementami rozszerzonymi. Ten przewodnik dotyczy nowego wyniku z elementami rozszerzonymi typu karuzela w wersji beta. Jest to wynik w formie listy, który użytkownicy mogą przewijać w poziomie, aby zobaczyć więcej elementów z danej witryny (tzw. karuzela hosta). Każdy kafelek w karuzeli może zawierać informacje z Twojej witryny o cenie, ocenie i obrazach elementów na stronie.

Aby móc wyświetlać ten wynik z elementami rozszerzonymi w wersji beta, dodaj uporządkowane dane ItemList w połączeniu z co najmniej 1 z tych obsługiwanych elementów uporządkowanych danych:

Oto przykład wyglądu karuzeli w wyszukiwarce Google po dodaniu znaczników ItemList razem z obsługiwanym typem treści:

Nowy wynik z elementami rozszerzonymi typu karuzela

Dostępność funkcji

Ta funkcja jest w wersji beta i w miarę jej rozwijania możesz zauważyć zmiany w wymaganiach lub wytycznych. Jeśli Twoja firma ma siedzibę na terenie EOG lub obsługuje użytkowników z tego obszaru i chcesz dowiedzieć się więcej na ten temat i wyrazić zainteresowanie tymi nowymi usługami, zacznij, wypełniając odpowiedni formularz, (w przypadku zapytań dotyczących lotów użyj formularza zgłoszenia zainteresowania dotyczącego zapytań o loty).

Ta funkcja jest obecnie dostępna tylko w krajach Europejskiego Obszaru Gospodarczego (EOG) na komputerach i urządzeniach mobilnych. Jest ona dostępna w przypadku zapytań dotyczących podróży, informacji lokalnych i zakupów. W przypadku zapytań związanych z zakupami najpierw testujemy tę funkcję w Niemczech, we Francji, w Czechach i w Wielkiej Brytanii.

Dodaj uporządkowane dane

Uporządkowane dane to standardowy format udostępniania informacji o stronie i klasyfikowania jej zawartości. Jeśli dopiero zaczynasz, dowiedz się, jak działają uporządkowane dane.

Oto omówienie dodawania uporządkowanych danych do witryny:

  1. Wybierz jedną stronę podsumowania, która zawiera pewne informacje o każdym z elementów na liście. Może to być np. strona kategorii z listą „Najlepsze hotele w Paryżu” z linkami do stron z informacjami o poszczególnych hotelach w Twojej witrynie. W razie potrzeby możesz łączyć i dopasowywać różne typy elementów (np. hotele, restauracje). Załóżmy np., że masz artykuł „Atrakcje w Szwajcarii”, który zawiera zarówno informacje o lokalnych wydarzeniach, jak i firmach działających lokalnie.
  2. Dodaj do tej strony podsumowania wymagane właściwości. Nie musisz dodawać znaczników do stron z informacjami, aby kwalifikować się do korzystania z tej funkcji w wersji beta. Dowiedz się, w którym miejscu na stronie umieścić uporządkowane dane w zależności od używanego formatu.
  3. Dodaj wymagane i zalecane właściwości odpowiednie do określonego typu treści w karuzeli:

    Możesz wybrać najlepszy typ w zależności od sytuacji. Jeśli na przykład na stronie masz listę hoteli i kwater wakacyjnych, użyj zarówno typu Hotel, jak i VacationRental. Najlepiej jest użyć typu, który najlepiej pasuje do danej sytuacji, ale możesz też użyć typu bardziej ogólnego (np. LocalBusiness).

  4. Przestrzegaj wskazówek.
  5. Zweryfikuj kod za pomocą testu wyników z elementami rozszerzonymi.
  6. Możesz wdrożyć kilka stron z uporządkowanymi danymi i dzięki narzędziu do sprawdzania adresów URL zobaczyć, jak Google je odczytuje. Upewnij się, że Twoja strona jest dostępna dla Google i nie jest blokowana przez plik robots.txt lub tag noindex ani nie wymaga logowania. Jeśli strona wygląda dobrze, możesz poprosić Google o ponowne zindeksowanie adresów URL.
  7. Aby na bieżąco informować Google o przyszłych zmianach, prześlij mapę witryny. Możesz zautomatyzować ten proces za pomocą interfejsu Search Console Sitemap API.

Wytyczne

Aby Twoja strona kwalifikowała się do wyświetlania w wynikach z elementami rozszerzonymi w karuzeli (w wersji beta), musisz przestrzegać podstawowych zasad dotyczących wyszukiwarki i ogólnych wytycznych dotyczących uporządkowanych danych. W przypadku wyników z elementami rozszerzonymi w postaci karuzeli (w wersji beta) obowiązują też te wytyczne:

  • Użycie typów ogólnych jest dozwolone. Aby jednak używać zalecanych właściwości, musisz używać odpowiednich typów. Na przykład, aby użyć właściwości amenityFeature, użyj typu LodgingBusiness.
  • Użycie dodatkowych pól jest dozwolone, ale niekoniecznie pojawią się one w wyniku z elementami rozszerzonymi.
  • Witryna musi zawierać stronę podsumowania i kilka stron z informacjami. Obecnie ta funkcja nie obsługuje innych scenariuszy, np. strony zawierającej wszystkie informacje, na której „szczegóły” są punktami zakotwiczenia na tej samej stronie.
  • Znaczniki muszą się znajdować na stronie podsumowania lub na stronie kategorii, która ma postać listy i zawiera informacje o co najmniej 3 elementach, a następnie prowadzi do innych stron w Twojej witrynie, gdzie można znaleźć więcej informacji o tych elementach. Nie musisz dodawać znaczników do stron z informacjami, ale musisz umieścić adresy URL tych stron w znacznikach strony podsumowania.

Przykłady

Poniżej przedstawiono ogólną strukturę karuzeli. Kolejność podana w znacznikach to kolejność, która zostanie użyta do określenia kolejności kafelków w wyniku z elementami rozszerzonymi w karuzeli.


  <html>
    <head>
      <title>Top 5 Restaurants in Italy</title>
      <script type="application/ld+json">
        {
        "@context": "https://schema.org",
        "@type": "ItemList",
          "itemListElement": [
            {
              "@type": "ListItem",
                "position": 1,
                "item": {
                  "@type": "Restaurant",
                  "name": "Trattoria Luigi",
                  "image": [
                    "https://example.com/photos/1x1/photo.jpg",
                    "https://example.com/photos/4x3/photo.jpg",
                    "https://example.com/photos/16x9/photo.jpg"
                  ],
                  "priceRange": "$$$",
                  "servesCuisine": "Italian",
                  "aggregateRating": {
                    "@type": "AggregateRating",
                    "ratingValue": 4.5,
                    "reviewCount": 250
                  },
                "url": "https://www.example.com/trattoria-luigi"
              }
            },
            {
              "@type": "ListItem",
                "position": 2,
                "item": {
                  "@type": "Restaurant",
                  "name": "La Pergola",
                  "image": [
                    "https://example.com/photos/1x1/photo.jpg",
                    "https://example.com/photos/4x3/photo.jpg",
                    "https://example.com/photos/16x9/photo.jpg"
                  ],
                  "priceRange": "$$$",
                  "servesCuisine": "Italian",
                  "aggregateRating": {
                    "@type": "AggregateRating",
                    "ratingValue": 4.9,
                    "reviewCount": 1150
                  },
                "url": "https://www.example.com/la-pergola"
              }
            },
            {
              "@type": "ListItem",
              "position": 3,
              "item": {
                "@type": "Restaurant",
                "name": "Pasta e Basta",
                "image": [
                  "https://example.com/photos/1x1/photo.jpg",
                  "https://example.com/photos/4x3/photo.jpg",
                  "https://example.com/photos/16x9/photo.jpg"
                ],
                "priceRange": "$$$",
                "servesCuisine": "Italian",
                "aggregateRating": {
                  "@type": "AggregateRating",
                  "ratingValue": 4.2,
                  "reviewCount": 690
                },
              "url": "https://www.example.com/pasta-e-basta"
              }
            }
          ]
        }
      </script>
    </head>
    <body>
    </body>
  </html>
  

Definicje typów uporządkowanych danych

Aby treści mogły wyświetlać się w wynikach z elementami rozszerzonymi, musisz w nich zastosować wymagane właściwości. Możesz też dodawać do nich właściwości zalecane, aby wzbogacać informacje o treściach dla wygody użytkowników.

ItemList

ItemList to kontener na wszystkie elementy listy. Wszystkie adresy URL elementów na liście muszą wskazywać różne strony w tej samej domenie.

Pełną definicję znaczników ItemList znajdziesz na schema.org/ItemList.

Właściwości wymagane
itemListElement

ListItem

Lista elementów. Aby określić listę, zdefiniuj element ItemList, który zawiera co najmniej 3 elementy itemListElement.item.

itemListElement.item

Podtyp LocalBusiness, Product lub Event

Pojedynczy element na liście. Wypełnij ten obiekt:

Przykład: w przypadku hotelu podaj właściwości priceRange i amenityFeature.

itemListElement.position

Integer

Pozycja elementu w karuzeli. Liczba od 1 wzwyż.

Typowe właściwości elementów listy (LocalBusiness, Product, lub Event)

Wszystkie typy elementów karuzeli mają te same poniższe właściwości.

Właściwości wymagane
image

Powtórzone pole URL lub ImageObject

Co najmniej 1 zdjęcie obiektu lub produktu (np. zdjęcie hotelu). Nie dodawaj logo do tej właściwości obrazu.

Dodatkowe wytyczne dotyczące obrazów:

  • Na każdej stronie musi się znajdować co najmniej jeden obraz (niezależnie od tego, czy są do niego dodane znaczniki). Google wybierze obraz najlepiej pasujący do wyników wyszukiwania pod względem rozdzielczości i współczynnika proporcji.
  • Adresy URL obrazów muszą być dostępne do pobrania i zindeksowania. Aby sprawdzić, czy Google może uzyskać dostęp do Twoich adresów URL, użyj narzędzia do sprawdzania adresów URL.
  • Obrazy muszą symbolizować treści objęte znacznikami.
  • Pliki graficzne muszą być w formacie obsługiwanym przez Grafikę Google.
  • Najlepsze efekty zapewni użycie wielu obrazów o wysokiej rozdzielczości (o iloczynie szerokości i wysokości wynoszącym co najmniej 50 tys. pikseli) i tych formatach obrazu: 16:9, 4:3 i 1:1.

Przykład:

"image": [
  "https://example.com/photos/1x1/photo.jpg",
  "https://example.com/photos/4x3/photo.jpg",
  "https://example.com/photos/16x9/photo.jpg"
]
name

Text

Nazwa ciągu tekstowego elementu. Na przykład nazwa hotelu lub oferty wakacyjnej. item.name to tytuł pojedynczego elementu w karuzeli. Formatowanie HTML jest ignorowane.

url

URL

Kanoniczny adres URL strony z informacjami o produkcie (np. samodzielna strona pojedynczego hotelu lub kwatery wakacyjnej, do której odwołuje się strona podsumowania). Wszystkie adresy URL na liście muszą być unikalne, ale muszą działać w obrębie tej samej domeny (tej samej domeny lub subdomeny/superdomeny co strona bieżąca).

Właściwości zalecane
aggregateRating.bestRating

Number

Najwyższa wartość dopuszczalna w tym systemie ocen (np. 5 / 10). Jeśli pominiesz właściwość bestRating, zostanie domyślnie przyjęta wartość 5.

aggregateRating.ratingCount

Number

Łączna liczba ocen elementu w Twojej witrynie.

aggregateRating.ratingValue

Number lub Text

Numeryczna ocena jakości elementu: liczba, ułamek lub procent (np. 4, 60% lub 6 / 10). Google potrafi interpretować skalę ułamkową i procentową, ponieważ skala jest określana w postaci ułamka lub procentu. W przypadku wartości liczbowych domyślna jest skala 5-punktowa, gdzie 1 to wartość najniższa, a 5 – najwyższa. Jeśli stosowana jest inna skala, użyj właściwości bestRatingworstRating.

W przypadku cyfr dziesiętnych, aby podać wartość, użyj nie przecinka, lecz kropki (na przykład 4.4, a nie 4,4). W Mikrodanych i RDFa możesz zastąpić widoczne treści za pomocą atrybutów content. Dzięki temu możesz przedstawić użytkownikowi dowolną konwencję stylu, a jednocześnie spełnić wymaganie dotyczące kropki w uporządkowanych danych. Na przykład:

<span itemprop="ratingValue" content="4.4">4,4</span> stars

Dodatkowe definicje właściwości związanych z typem

LocalBusiness (i podtypy)

Oprócz właściwości ListItem Google obsługuje w przypadku wyników z elementami rozszerzonymi w karuzeli także te właściwości LocalBusiness (w tym ich podtypy). Te właściwości należy zagnieździć w polu itemListElement.item.

Właściwości zalecane
amenityFeature

LocationFeatureSpecification

Tylko w przypadku kategorii LodgingBusiness: udogodnienia (np. cechy lub usługi) zakwaterowania.

"amenityFeature": {
  "@type": "LocationFeatureSpecification",
  "name" : "beachAccess",
  "value": true
}
priceRange

Text

Względny przedział cenowy firmy, zwykle określony przez znormalizowaną liczbę symboli waluty. Podaj przedział cenowy w jednym z tych formatów:

  • Poziom cen: np. „$”, „$$", "$$$”.
  • Zakres: na przykład „$-$$”.

To pole musi zawierać mniej niż 12 znaków. Jeśli długość tekstu przekracza 12 znaków, Google nie wyświetli zakresu cen dla danej firmy.

servesCuisine

Text

Tylko restauracje: rodzaj kuchni serwowanej w restauracji.

Product

Oprócz właściwości ListItem Google obsługuje w przypadku wyników z elementami rozszerzonymi w karuzeli także te właściwości Product. Umieść te właściwości poniżej elementu: itemListElement.item.

Właściwości zalecane
offers

Offer lub AggregateOffer

Zagnieżdżona właściwość Offer lub AggregateOffer na potrzeby sprzedaży produktu. Uwzględnij właściwości zalecane w przypadku Offer lub AggregateOffer (w zależności od Twoich treści).

Jeśli używasz Offer, w tym tych właściwości:

  • offers.price
  • offers.priceCurrency

Jeśli używasz AggregateOffer, w tym tych właściwości:

  • offers.highPrice
  • offers.lowPrice
  • offers.priceCurrency
offers.highPrice

Number

Najwyższa cena spośród wszystkich dostępnych ofert. Jeśli określasz pojedynczą cenę za pomocą atrybutu price, nie musisz dodawać właściwości highPrice ani lowPrice.

offers.lowPrice

Number

Najniższa cena spośród wszystkich dostępnych ofert. Jeśli określasz pojedynczą cenę za pomocą atrybutu price, nie musisz dodawać właściwości highPrice ani lowPrice.

offers.price

Number

Cena produktu lub składnik ceny oferowanej w przypadku dołączenia do atrybutu PriceSpecification i jego podtypów. Jeśli określasz przedział cenowy za pomocą elementów lowPrice i highPrice, nie używaj właściwości price.

offers.priceCurrency

Text

Waluta służąca do opisania ceny produktu podana w 3-literowym formacie ISO 4217. Jeśli nie podasz waluty, domyślną wartością będzie USD.

Event

Oprócz właściwości ListItem Google obsługuje w przypadku wyników z elementami rozszerzonymi w karuzeli także te właściwości Event. Umieść te właściwości poniżej elementu: itemListElement.item.

Właściwości zalecane
offers

Offer lub AggregateOffer

Zagnieżdżona właściwość Offer lub AggregateOffer na potrzeby sprzedaży produktu. Uwzględnij właściwości zalecane w przypadku Offer lub AggregateOffer (w zależności od Twoich treści).

Jeśli używasz Offer, w tym tych właściwości:

  • offers.price
  • offers.priceCurrency

Jeśli używasz AggregateOffer, w tym tych właściwości:

  • offers.highPrice
  • offers.lowPrice
  • offers.priceCurrency
offers.highPrice

Number

Najwyższa cena spośród wszystkich dostępnych ofert. Jeśli określasz pojedynczą cenę za pomocą atrybutu price, nie musisz dodawać właściwości highPrice ani lowPrice.

offers.lowPrice

Number

Najniższa cena spośród wszystkich dostępnych ofert. Jeśli określasz pojedynczą cenę za pomocą atrybutu price, nie musisz dodawać właściwości highPrice ani lowPrice.

offers.price

Number

Ceny biletów, w tym opłaty za obsługę i inne. Pamiętaj, aby ją zaktualizować w przypadku zmiany cen lub wyprzedania wszystkich biletów. Jeśli określasz przedział cenowy za pomocą właściwości lowPrice i highPrice, nie używaj właściwości price.

Jeśli wydarzenie jest dostępne bez opłat – manipulacyjnych lub innych – ustaw właściwość price na 0.

"offers": {
  "@type": "Offer",
  "price": 0
}
offers.priceCurrency

Text

Waluta służąca do opisania ceny produktu podana w 3-literowym formacie ISO 4217. Jeśli nie podasz waluty, domyślną wartością będzie USD.

Przykłady typowych scenariuszy

Restaurant – przykład

Oto przykład karuzeli restauracji zapisanej w postaci kodu JSON-LD.


<html>
    <head>
      <title>Top 5 Restaurants in Paris</title>
      <script type="application/ld+json">
        {
          "@context": "https://schema.org",
          "@type": "ItemList",
          "itemListElement": [
            {
              "@type": "ListItem",
              "position": 1,
              "item": {
                "@type": "Restaurant",
                "name": "Trattoria Luigi",
                "image": [
                  "https://example.com/photos/1x1/photo.jpg",
                  "https://example.com/photos/4x3/photo.jpg",
                  "https://example.com/photos/16x9/photo.jpg"
                ],
                "priceRange": "$$$",
                "servesCuisine": "Italian",
                "aggregateRating": {
                  "@type": "AggregateRating",
                  "ratingValue": 4.5,
                  "reviewCount": 250
                },
                "url": "https://www.example.com/restaurant-location-1"
              }
            },
            {
              "@type": "ListItem",
              "position": 2,
              "item": {
                "@type": "Restaurant",
                "name": "La Pergola",
                "image": [
                  "https://example.com/photos/1x1/photo.jpg",
                  "https://example.com/photos/4x3/photo.jpg",
                  "https://example.com/photos/16x9/photo.jpg"
                ],
                "priceRange": "$$$",
                "servesCuisine": "Italian",
                "aggregateRating": {
                  "@type": "AggregateRating",
                  "ratingValue": 4.9,
                  "reviewCount": 1150
                },
                "url": "https://www.example.com/restaurant-location-2"
              }
            },
            {
              "@type": "ListItem",
              "position": 3,
              "item": {
                "@type": "Restaurant",
                "name": "Pasta e Basta",
                "image": [
                  "https://example.com/photos/1x1/photo.jpg",
                  "https://example.com/photos/4x3/photo.jpg",
                  "https://example.com/photos/16x9/photo.jpg"
                ],
                "priceRange": "$$$",
                "servesCuisine": "Italian",
                "aggregateRating": {
                  "@type": "AggregateRating",
                  "ratingValue": 4.2,
                  "reviewCount": 690
                },
                "url": "https://www.example.com/restaurant-location-3"
              }
            }
          ]
        }
      </script>
    </head>
    <body>
    </body>
  </html>

Przykład kwater (Hotels i VacationRental)

Oto przykład karuzeli z hotelami w postaci kodu JSON-LD.


<html>
    <head>
      <title>Top 5 Hotels in Paris</title>
      <script type="application/ld+json">
        {
        "@context": "https://schema.org",
        "@type": "ItemList",
            "itemListElement": [
              {
                "@type": "ListItem",
                "position": 1,
                "item": {
                  "@type": "Hotel",
                  "name": "Four Seasons Hotel George V, Paris",
                  "image": [
                    "https://example.com/photos/1x1/photo.jpg",
                    "https://example.com/photos/4x3/photo.jpg",
                    "https://example.com/photos/16x9/photo.jpg"
                  ],
                  "priceRange": "$$$$",
                  "amenityFeature": {
                      "@type": "LocationFeatureSpecification",
                      "name" : "internetType",
                      "value": "Free"
                  },
                  "aggregateRating": {
                    "@type": "AggregateRating",
                    "ratingValue": 4.9,
                    "reviewCount": 50
                  },
                  "url": "https://www.example.com/four-seasons"
                }
              },
              {
                "@type": "ListItem",
                "position": 2,
                "item": {
                  "@type": "VacationRental",
                  "name": "Downtown Condo",
                  "image": [
                    "https://example.com/photos/1x1/photo.jpg",
                    "https://example.com/photos/4x3/photo.jpg",
                    "https://example.com/photos/16x9/photo.jpg"
                  ],
                  "priceRange": "$$",
                  "amenityFeature": {
                    "@type": "LocationFeatureSpecification",
                    "name" : "instantBookable",
                    "value": true
                  },
                  "aggregateRating": {
                    "@type": "AggregateRating",
                    "ratingValue": 4.7,
                    "reviewCount": 827
                  },
                  "url": "https://www.example.com/downtown-condo"
                }
              },
              {
                "@type": "ListItem",
                "position": 3,
                "item": {
                  "@type": "Hotel",
                  "name": "Ritz Paris",
                  "image": [
                    "https://example.com/photos/1x1/photo.jpg",
                    "https://example.com/photos/4x3/photo.jpg",
                    "https://example.com/photos/16x9/photo.jpg"
                  ],
                  "priceRange": "$$$$",
                  "amenityFeature": {
                    "@type": "LocationFeatureSpecification",
                    "name" : "freeBreakfast",
                    "value": true
                },
                "aggregateRating": {
                  "@type": "AggregateRating",
                  "ratingValue": 4.9,
                  "reviewCount": 1290
                },
                "url": "https://www.example.com/ritz-paris"
              }
            }
          ]
        }
      </script>
    </head>
    <body>
    </body>
  </html>

Przykład strony Atrakcje

Oto przykład karuzeli Atrakcji w postaci kodu JSON-LD.


<html>
    <head>
      <title>Top 5 Things To Do in Paris</title>
      <script type="application/ld+json">
        {
          "@context": "https://schema.org",
          "@type": "ItemList",
          "itemListElement": [
            {
              "@type": "ListItem",
              "position": 1,
              "item": {
                "@type": "Event",
                "name": "Paris Seine River Dinner Cruise",
                "image": [
                  "https://example.com/photos/1x1/photo.jpg",
                  "https://example.com/photos/4x3/photo.jpg",
                  "https://example.com/photos/16x9/photo.jpg"
                ],
                "offers": {
                  "@type": "Offer",
                  "price": 45.00,
                  "priceCurrency": "EUR"
                },
                "aggregateRating": {
                  "@type": "AggregateRating",
                  "ratingValue": 4.2,
                  "reviewCount": 690
                },
                "url": "https://www.example.com/event-location1"
              }
            },
            {
              "@type": "ListItem",
              "position": 2,
              "item": {
                "@type": "LocalBusiness",
                "name": "Notre-Dame Cathedral",
                "image": [
                  "https://example.com/photos/1x1/photo.jpg",
                  "https://example.com/photos/4x3/photo.jpg",
                  "https://example.com/photos/16x9/photo.jpg"
                ],
                "priceRange": "$",
                "aggregateRating": {
                  "@type": "AggregateRating",
                  "ratingValue": 4.8,
                  "reviewCount": 4220
                },
                "url": "https://www.example.com/localbusiness-location"
              }
            },
            {
              "@type": "ListItem",
              "position": 3,
              "item": {
                "@type": "Event",
                "name": "Eiffel Tower With Host Summit Tour",
                "image": [
                  "https://example.com/photos/1x1/photo.jpg",
                  "https://example.com/photos/4x3/photo.jpg",
                  "https://example.com/photos/16x9/photo.jpg"
                ],
                "offers": {
                  "@type": "Offer",
                  "price": 59.00,
                  "priceCurrency": "EUR"
                },
                "aggregateRating": {
                  "@type": "AggregateRating",
                  "ratingValue": 4.9,
                  "reviewCount": 652
                },
                "url": "https://www.example.com/event-location2"
              }
            }
          ]
        }
      </script>
    </head>
    <body>
    </body>
  </html>
  

Product – przykład

Oto przykład karuzeli produktów zapisanej w postaci kodu JSON-LD.


<html>
    <head>
      <title>Top coats of the season</title>
      <script type="application/ld+json">
        {
          "@context": "https://schema.org",
          "@type": "ItemList",
          "itemListElement": [
            {
              "@type": "ListItem",
              "position": 1,
              "item": {
                "@type": "Product",
                "name": "Puffy Coat Series by Goat Coat",
                "image": [
                  "https://example.com/photos/1x1/photo.jpg",
                  "https://example.com/photos/4x3/photo.jpg",
                  "https://example.com/photos/16x9/photo.jpg"
                ],
                "offers": {
                  "@type": "AggregateOffer",
                  "lowPrice": 45.00,
                  "highPrice": 60.00,
                  "priceCurrency": "EUR"
                },
                "aggregateRating": {
                  "@type": "AggregateRating",
                  "ratingValue": 4.9,
                  "reviewCount": 50
                },
                "url": "https://www.example.com/puffy-coats"
              }
            },
            {
              "@type": "ListItem",
              "position": 2,
              "item": {
                "@type": "Product",
                "name": "Wool Coat Series by Best Coats Around",
                "image": [
                  "https://example.com/photos/1x1/photo.jpg",
                  "https://example.com/photos/4x3/photo.jpg",
                  "https://example.com/photos/16x9/photo.jpg"
                ],
                "offers": {
                  "@type": "AggregateOffer",
                  "lowPrice": 189.00,
                  "highPrice": 200.00,
                  "priceCurrency": "EUR"
                },
                "aggregateRating": {
                  "@type": "AggregateRating",
                  "ratingValue": 4.7,
                  "reviewCount": 827
                },
                "url": "https://www.example.com/wool-coats"
              }
            },
            {
              "@type": "ListItem",
              "position": 3,
              "item": {
                "@type": "Product",
                "name": "Antartic Coat by Cold Coats",
                "image": [
                  "https://example.com/photos/1x1/photo.jpg",
                  "https://example.com/photos/4x3/photo.jpg",
                  "https://example.com/photos/16x9/photo.jpg"
                ],
                "offers": {
                  "@type": "Offer",
                  "price": 45.00,
                  "priceCurrency": "EUR"
                },
                "aggregateRating": {
                  "@type": "AggregateRating",
                  "ratingValue": 4.9,
                  "reviewCount": 1290
                },
                "url": "https://www.example.com/antartic-coat"
              }
            }
          ]
        }
      </script>
    </head>
    <body>
    </body>
  </html>
  

Rozwiązywanie problemów

Jeśli masz problem z zastosowaniem lub debugowaniem uporządkowanych danych, skorzystaj z tych rozwiązań: