Багато видів товарів, зокрема одяг, взуття, меблі, електронні пристрої та валізи, постачаються в різних варіантах. Наприклад, для одного й того самого товару можуть бути доступні різні розміри, кольори, матеріали чи візерунки. Щоб наша система коректно розпізнавала, які товари насправді є різновидами одного й того самого товару, використовуйте клас ProductGroup зі пов’язаними властивостями variesBy, hasVariant і productGroupID, а також структуровані дані Product. Це дозволить згрупувати варіанти. Також за наявності цієї розмітки можна буде пропонувати покупцям інформацію про варіанти ваших товарів за допомогою функції показу асортименту.
Властивість ProductGroup також дозволяє вказати спільні характеристики товару для всіх його варіантів, наприклад назву бренду й відгуки, а також властивості, що визначають окремий варіант товару. Усе це допоможе скоротити інформацію, що дублюється.
Як додати структуровані дані
Структуровані дані — стандартизований формат, який дозволяє надавати пошуковим системам інформацію про сторінку та класифікувати її вміст. Детальніше про принципи роботи структурованих даних…
Нижче в загальних рисах описано, як створити, перевірити та додати на сайт структуровані дані.
- Додайте обов’язкові властивості. Дізнайтеся, в яких частинах сторінки потрібно розміщувати структуровані дані обраного вами формату.
- Дотримуйтесь рекомендацій.
- Перевірте свій код за допомогою інструменту перевірки розширених результатів. Якщо будуть виявлені критичні помилки, усуньте їх. Ми також рекомендуємо усунути некритичні помилки, зазначені в інструменті. Це може призвести до підвищення якості структурованих даних, хоча сторінки будуть придатні для створення розширених результатів і без цього.
- Опублікуйте сторінку й за допомогою інструменту перевірки URL з’ясуйте, як вона виглядає для робота Googlebot. Переконайтеся, що доступ Google до сторінки не заблоковано файлом robots.txt або метатегом
noindexі авторизація на ній не потрібна. Якщо все в порядку, то запросіть повторне сканування ваших URL. - Надішліть нам файл Sitemap, щоб інформувати нас про зміни на сайті. Надсилання такого файлу можна автоматизувати за допомогою Search Console Sitemap API.
Приклади
Існує два основних підходи до дизайну, які використовуються для опису варіантів товару на сайтах електронної комерції. У цьому розділі розповідається, як розмітити варіанти товару залежно від обраного вами підходу до дизайну сайту.
- Одна сторінка: всі варіанти товару доступні на одній сторінці, зазвичай з можливістю вказати параметри запиту. Перезавантаження сторінки не потрібне.
- Кілька сторінок: варіанти одного товару розміщені на різних сторінках.
Односторінковий сайт
Односторінковий сайт являє собою вебсторінку та має такі особливості:
- Якщо не вибрано варіанти товару, то головна сторінка товару доступна за URL
https://www.example.com/coat. - Ця сторінка відкриється і в тому випадку, якщо був вказаний один з варіантів товару, доступних за наступними URL-адресами:
https://www.example.com/coat?size=small&color=greenhttps://www.example.com/coat?size=small&color=lightbluehttps://www.example.com/coat?size=large&color=lightblue
- Якщо користувач вибирає в меню на сторінці інший варіант товару, наприклад товар іншого кольору або розміру, то зображення товару, а також інформація про його ціну та характеристики змінюватимуться динамічно, без перезавантаження сторінки. Розмітка сторінки при цьому не змінюється.
Приклад односторінкового сайту: варіанти товару вкладені у властивість Product Group
У цьому прикладі для варіантів товару, вкладених у властивість верхнього рівня ProductGroup, використовується властивість hasVariant.
- Для рівня
ProductGroupі трьох об’єктівOffer, вкладених у властивістьProduct, налаштовано окремі URL. Також URL можна було вказати за допомогою властивостіProduct. - Загальна назва та опис вказані на рівні
ProductGroup. Назви та описи окремих варіантів товару вказані на рівніProduct. - Також на рівні
ProductGroupописані спільні властивості різних варіантів товарів, наприклад назва бренду, візерунок, матеріал та інформація для покупців. ProductGroupвказує на відмінні характеристики окремого варіанту товару, при цьому використовується властивістьvariesBy.- Властивість
ProductGroupвказує на батьківський товар, для якого використовується властивістьproductGroupID. Цю властивість не потрібно повторювати для об’єктаProduct, для якого використовується властивістьinProductGroupWithID.
Цей підхід до дизайну сайту представляє групи та варіанти товарів найбільш компактно та зручно.
<html>
<head>
<title>Wool winter coat</title>
<script type="application/ld+json">
[
{
"@context": "https://schema.org/",
"@type": "ProductGroup",
"name": "Wool winter coat",
"description": "Wool coat, new for the coming winter season",
"url": "https://www.example.com/coat",
"brand": {
"@type": "Brand",
"name": "Good brand"
},
"audience": {
"@type": "PeopleAudience",
"suggestedGender": "unisex",
"suggestedAge": {
"@type": "QuantitativeValue",
"minValue": 13,
"unitCode": "ANN"
}
},
"productGroupID": "44E01",
"pattern": "striped",
"material": "wool",
"variesBy": [
"https://schema.org/size",
"https://schema.org/color"
],
"hasVariant": [
{
"@type": "Product",
"sku": "44E01-M11000",
"gtin14": "98766051104214",
"image": "https://www.example.com/coat_small_green.jpg",
"name": "Small green coat",
"description": "Small wool green coat for the winter season",
"color": "Green",
"size": "small",
"offers": {
"@type": "Offer",
"url": "https://www.example.com/coat?size=small&color=green",
"priceCurrency": "USD",
"price": 39.99,
"itemCondition": "https://schema.org/NewCondition",
"availability": "https://schema.org/InStock",
"shippingDetails": { "@id": "#shipping_policy" },
"hasMerchantReturnPolicy": { "@id": "#return_policy" }
}
},
{
"@type": "Product",
"sku": "44E01-K11000",
"gtin14": "98766051104207",
"image": "https://www.example.com/coat_small_lightblue.jpg",
"name": "Small light blue coat",
"description": "Small wool light blue coat for the winter season",
"color": "light blue",
"size": "small",
"offers": {
"@type": "Offer",
"url": "https://www.example.com/coat?size=small&color=lightblue",
"priceCurrency": "USD",
"price": 39.99,
"itemCondition": "https://schema.org/NewCondition",
"availability": "https://schema.org/InStock",
"shippingDetails": { "@id": "#shipping_policy" },
"hasMerchantReturnPolicy": { "@id": "#return_policy" }
}
},
{
"@type": "Product",
"sku": "44E01-X1100000",
"gtin14": "98766051104399",
"image": "https://www.example.com/coat_large_lightblue.jpg",
"name": "Large light blue coat",
"description": "Large wool light blue coat for the winter season",
"color": "light blue",
"size": "large",
"offers": {
"@type": "Offer",
"url": "https://www.example.com/coat?size=large&color=lightblue",
"priceCurrency": "USD",
"price": 49.99,
"itemCondition": "https://schema.org/NewCondition",
"availability": "https://schema.org/BackOrder",
"shippingDetails": { "@id": "#shipping_policy" },
"hasMerchantReturnPolicy": { "@id": "#return_policy" }
}
}
]
},
{
"@context": "https://schema.org/",
"@type": "OfferShippingDetails",
"@id": "#shipping_policy",
"shippingRate": {
"@type": "MonetaryAmount",
"value": 2.99,
"currency": "USD"
},
"shippingDestination": {
"@type": "DefinedRegion",
"addressCountry": "US"
},
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"handlingTime": {
"@type": "QuantitativeValue",
"minValue": 0,
"maxValue": 1,
"unitCode": "DAY"
},
"transitTime": {
"@type": "QuantitativeValue",
"minValue": 1,
"maxValue": 5,
"unitCode": "DAY"
}
}
},
{
"@context": "http://schema.org/",
"@type": "MerchantReturnPolicy",
"@id": "#return_policy",
"applicableCountry": "US",
"returnPolicyCountry": "US",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"merchantReturnDays": 60,
"returnMethod": "https://schema.org/ReturnByMail",
"returnFees": "https://schema.org/FreeReturn"
}
]
</script>
</head>
<body>
</body>
</html>Приклад односторінкового сайту: варіанти товару вказуються окремо від Product Group
Структура цього сайту схожа на описану в попередньому прикладі, але варіанти товару вказані окремо від властивості ProductGroup, тобто не вкладені в нього. Такий підхід до дизайну сайту може бути простішим при використанні деяких систем управління контентом.
<html>
<head>
<title>Wool winter coat</title>
<script type="application/ld+json">
[
{
"@context": "https://schema.org",
"@type": "ProductGroup",
"@id": "#coat_parent",
"name": "Wool winter coat",
"description": "Wool coat, new for the coming winter season",
"url": "https://www.example.com/coat",
// ... other ProductGroup-level properties
"brand": {
"@type": "Brand",
"name": "Good brand"
},
"productGroupID": "44E01",
"variesBy": [
"https://schema.org/size",
"https://schema.org/color"
]
},
{
"@context": "https://schema.org",
"@type": "Product",
"isVariantOf": { "@id": "#coat_parent" },
"name": "Small green coat",
"description": "Small wool green coat for the winter season",
"image": "https://www.example.com/coat_small_green.jpg",
"size": "small",
"color": "green",
// ... other Product-level properties
"offers": {
"@type": "Offer",
"url": "https://www.example.com/coat?size=small&color=green",
"price": 39.99,
"priceCurrency": "USD"
// ... other offer-level properties
}
},
{
"@context": "https://schema.org",
"@type": "Product",
"isVariantOf": { "@id": "#coat_parent" },
"name": "Small dark blue coat",
"description": "Small wool light blue coat for the winter season",
"image": "https://www.example.com/coat_small_lightblue.jpg",
"size": "small",
"color": "light blue",
// ... other Product-level properties
"offers": {
"@type": "Offer",
"url": "https://www.example.com/coat?size=small&color=lightblue",
"price": 39.99,
"priceCurrency": "USD"
// ... other offer-level properties
}
},
{
"@context": "https://schema.org",
"@type": "Product",
"isVariantOf": { "@id": "#coat_parent" },
"name": "Large light blue coat",
"description": "Large wool light blue coat for the winter season",
"image": "https://www.example.com/coat_large_lightblue.jpg",
"size": "large",
"color": "light blue",
// ... other Product-level properties
"offers": {
"@type": "Offer",
"url": "https://www.example.com/coat?size=large&color=lightblue",
"price": 49.99,
"priceCurrency": "USD"
// ... other offer-level properties
}
}
]
</script>
</head>
<body>
</body>
</html>Багатосторінковий сайт
Розмітка багатосторінкового сайту має такі особливості:
- Наприклад, светр блакитного кольору доступний у розмірах S і L, для яких передбачені окремі URL:
https://www.example.com/coat/lightblue?size=smallhttps://www.example.com/coat/lightblue?size=large
- Такий самий светр зеленого кольору є тільки в розмірі S, для нього задано URL
https://www.example.com/coat/green?size=small. - Вибравши будь-який із цих двох варіантів кольорів, покупець потрапить на іншу сторінку, тобто при виборі товару іншого кольору в інтерфейсі сайту сторінка перезавантажується.
- На всіх сторінках сайту використовується однакова розмітка.
Зверніть увагу, що визначення ProductGroup відсутнє тільки на тій сторінці, на яку посилаються інші сторінки сайту. Це пов’язано з тим, що визначення ProductGroup повинно посилатися на спільні характеристики варіантів товару, такі як бренд, матеріал і вікова група, для якої призначений товар. При цьому повне визначення ProductGroup повинно повторюватися на сторінці кожного варіанту товару.
Приклад багатосторінкового сайту: варіанти товару вкладені у властивість Product Group
Принцип роботи такого багатосторінкового сайту такий самий, як і в односторінкового сайту з першого прикладу, – варіанти товару Product вкладені в об’єкт верхнього рівня ProductGroup за допомогою властивості hasVariant. Визначення ProductGroup дублюється на всіх сторінках. Зверніть увагу:
- У
ProductGroupвідсутній канонічний URL, оскільки немає єдиної адреси, що представляєProductGroup. - На кожній сторінці у властивості
ProductGroupміститься повний опис варіантів товару, представлених на сторінці, а також варіанту, пов’язаного з варіантами на іншій сторінці за допомогою властивостіurl, завдяки чому система знаходить усі варіанти одного товару.
<html>
<head>
<title>Wool winter coat, light blue color</title>
<script type="application/ld+json">
[
{
"@context": "https://schema.org/",
"@type": "ProductGroup",
"name": "Wool winter coat",
"description": "Wool coat, new for the coming winter season",
// ... other ProductGroup-level properties
"brand": {
"@type": "Brand",
"name": "Good brand"
},
"productGroupID": "44E01",
"variesBy": [
"https://schema.org/size",
"https://schema.org/color"
],
"hasVariant": [
{
"@type": "Product",
"name": "Small light blue coat",
"description": "Small wool light blue coat for the winter season",
"image": "https://www.example.com/coat_small_lightblue.jpg",
"size": "small",
"color": "light blue",
// ... other Product-level properties
"offers": {
"@type": "Offer",
"url": "https://www.example.com/coat/lightblue?size=small",
"price": 39.99,
"priceCurrency": "USD"
// ... other offer-level properties
}
},
{
"@type": "Product",
"name": "Large light blue coat",
"description": "Large wool light blue coat for the winter season",
"image": "https://www.example.com/coat_large_lightblue.jpg",
"size": "large",
"color": "light blue",
// ... other Product-level properties
"offers": {
"@type": "Offer",
"url": "https://www.example.com/coat/lightblue?size=large",
"price": 49.99,
"priceCurrency": "USD"
// ... other offer-level properties
}
},
{ "url": "https://www.example.com/coat/green?size=small" }
]
}
]
</script>
</head>
<body>
</body>
</html>Приклад багатосторінкового сайту: варіанти товару розміщені окремо від Product Group
Структура цього сайту схожа на структуру багатосторінкового сайту, описану в попередньому прикладі, але варіанти товару вказані окремо від властивості ProductGroup, тобто не вкладені в нього. Такий підхід до дизайну сайту може бути простішим при використанні деяких систем управління контентом.
<html>
<head>
<title>Wool winter coat, lightblue color</title>
<script type="application/ld+json">
[
{
"@context": "https://schema.org/",
"@type": "ProductGroup",
"@id": "#coat_parent",
"name": "Wool winter coat",
"description": "Wool coat, new for the coming winter season",
"brand": {
"@type": "Brand",
"name": "Good brand"
},
"audience": {
"@type": "PeopleAudience",
"suggestedGender": "unisex",
"suggestedAge": {
"@type": "QuantitativeValue",
"minValue": 13,
"unitCode": "ANN"
}
},
"productGroupID": "44E01",
"pattern": "striped",
"material": "wool",
"variesBy": [
"https://schema.org/size",
"https://schema.org/color"
]
},
{
"@context": "https://schema.org",
"@type": "Product",
"isVariantOf": { "@id": "#coat_parent" },
"sku": "44E01-K11000",
"gtin14": "98766051104207",
"image": "https://www.example.com/coat_lightblue.jpg",
"name": "Small light blue coat",
"description": "Small wool light blue coat for the winter season",
"color": "light blue",
"size": "small",
"offers": {
"@type": "Offer",
"url": "https://www.example.com/coat/lightblue?size=small",
"priceCurrency": "USD",
"price": 39.99,
"itemCondition": "https://schema.org/NewCondition",
"availability": "https://schema.org/InStock",
"shippingDetails": { "@id": "#shipping_policy" },
"hasMerchantReturnPolicy": { "@id": "#return_policy" }
}
},
{
"@context": "https://schema.org",
"@type": "Product",
"isVariantOf": { "@id": "#coat_parent" },
"sku": "44E01-X1100000",
"gtin14": "98766051104399",
"image": "https://www.example.com/coat_lightblue.jpg",
"name": "Large light blue coat",
"description": "Large wool light blue coat for the winter season",
"color": "light blue",
"size": "large",
"offers": {
"@type": "Offer",
"url": "https://www.example.com/coat/lightblue?size=large",
"priceCurrency": "USD",
"price": 49.99,
"itemCondition": "https://schema.org/NewCondition",
"availability": "https://schema.org/BackOrder",
"shippingDetails": { "@id": "#shipping_policy" },
"hasMerchantReturnPolicy": { "@id": "#return_policy" }
}
},
{
"@context": "https://schema.org",
"@type": "Product",
"isVariantOf": { "@id": "#coat_parent" },
"url": "https://www.example.com/coat/green?size=small"
},
{
"@context": "https://schema.org/",
"@type": "OfferShippingDetails",
"@id": "#shipping_policy",
"shippingRate": {
"@type": "MonetaryAmount",
"value": 2.99,
"currency": "USD"
},
"shippingDestination": {
"@type": "DefinedRegion",
"addressCountry": "US"
},
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"handlingTime": {
"@type": "QuantitativeValue",
"minValue": 0,
"maxValue": 1,
"unitCode": "DAY"
},
"transitTime": {
"@type": "QuantitativeValue",
"minValue": 1,
"maxValue": 5,
"unitCode": "DAY"
}
}
},
{
"@context": "https://schema.org/",
"@type": "MerchantReturnPolicy",
"@id": "#return_policy",
"applicableCountry": "US",
"returnPolicyCountry": "US",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"merchantReturnDays": 60,
"returnMethod": "https://schema.org/ReturnByMail",
"returnFees": "https://schema.org/FreeReturn"
}
]
</script>
</head>
<body>
</body>
</html>Правила
Щоб структуровані дані для розмітки варіантів товару могли використовуватися в Пошуку Google, вони повинні відповідати наведеним нижче вимогам.
- Загальні рекомендації щодо використання структурованих даних
- Головне про Пошук
- Технічні вимоги
- Вимоги до розміщення безкоштовних пропозицій (при використанні функцій показу асортименту)
Технічні вимоги
- Кожен варіант товару повинен мати у своїй розмітці структурованих даних унікальний ідентифікатор. Вказати ідентифікатор можна за допомогою властивостей
skuабоgtin. - Кожна група товарів повинна мати у своїй розмітці структурованих даних унікальний ідентифікатор. Вказати ідентифікатор можна за допомогою властивості
inProductGroupWithIDу властивостях варіанта товаруProductабо властивостіproductGroupID, яка знаходиться вProductGroup. - Переконайтеся, що структуровані дані
Productдодані до властивостей варіантів товарів відповідно до списку обов’язкових властивостей для представлення інформації про асортимент (або опису товарів). - У випадку з односторінковим сайтом має бути лише один канонічний URL для всієї групи
ProductGroup, до якої належать всі варіанти товару. Зазвичай це базова URL-адреса, що веде на сторінку без попередньо вибраного варіанту товару, наприкладhttps://www.example.com/winter_coat. - Кожна сторінка багатосторінкового сайту повинна мати власну повну розмітку для всіх об’єктів, що знаходяться на цій сторінці. Це означає, що позасторінкові об’єкти не впливають на розуміння розмітки на самій сторінці.
- Сайт повинен надавати можливість заздалегідь вибрати варіант товару безпосередньо за URL, вказавши його в параметрах запиту URL, наприклад
https://www.example.com/winter_coat/size=small&color=green. Завдяки цьому система може сканувати і розпізнавати окремі варіанти товару. Щоб користувачі могли заздалегідь вибрати варіант товару, необхідно налаштувати відображення правильного зображення, ціни та інформації про наявність, а також дозволити покупцям додати варіант товару в кошик. - Якщо ви прагнете підвищити рейтинг товарів зі свого магазину в Google Покупках, рекомендуємо додати в вихідний HTML-код структуровані дані
Product. - Якщо ви використовуєте розмітку
Product, згенеровану за допомогою JavaScript, врахуйте, що через динамічно створювану розмітку може знизитися частота й точність сканування для Покупок. Це може завдавати незручностей користувачам під час перегляду інформації, що швидко змінюється, наприклад відомостей про наявність і ціну товарів. Якщо ви створюєте розміткуProductза допомогою JavaScript, у вашого сервера має бути достатньо обчислювальних ресурсів для обробки підвищеного трафіку від Google.
Типи структурованих даних
Щоб ваші структуровані дані можна було використовувати в Пошуку Google, необхідно встановити всі обов’язкові властивості. Ви також можете додати рекомендовані властивості, щоб покупцям було зручніше знайомитися з інформацією.
Product Group
Google розпізнає властивості розмітки ProductGroup, перераховані нижче. Повний опис типу ProductGroup наведено на сторінці schema.org/ProductGroup. У розмітці інформації про товар використовуйте властивості типу ProductGroup, вказані нижче.
| Обов’язкові властивості | |
|---|---|
name | Назва групи товарів ( |
| Рекомендовані властивості | |
|---|---|
aggregate | Властивість |
brand | Інформація про бренд для всієї групи товарів ( |
brand. | Назва бренду групи товарів ( |
description |
Опис |
has | Вкладена властивість Властивість варіанта товару |
product | Ідентифікатор групи товарів або батьківський SKU. Цей ідентифікатор необхідно надати для властивості |
review | Властивість |
url | Тільки для односторінкових сайтів: URL (без можливості вибору варіантів товару), за яким розташована властивість |
varies | Відмінні особливості варіантів товару в групі товарів (
|
Усунення несправностей
Якщо у вас виникли труднощі з додаванням або налагодженням структурованих даних, вам допоможуть ресурси та інформація, доступні за наведеними нижче посиланнями.
- Якщо ви використовуєте систему управління контентом (CMS) або доручили налаштування сайту іншій людині, зверніться за допомогою до неї або розробника CMS. Не забудьте переслати йому повідомлення про проблему, отримані вами в Search Console.
- Google не гарантує відображення вашого контенту в результатах пошуку, які формуються на основі структурованих даних. Можливі причини, з яких ваші матеріали можуть не відображатися у вигляді розширених результатів, перераховані в загальних рекомендаціях щодо використання структурованих даних.
- Ознайомтеся зі списком типових помилок у структурованих даних та звітом про структуровані дані, які неможливо обробити, і перевірте, чи правильно ви додали розмітку.
- Якщо ми вжили заходів щодо сторінки вручну, неприпустимі структуровані дані на ній будуть проігноровані доти, доки ви не виправите код. При цьому сама сторінка може з’являтися в результатах пошуку й далі. Щоб усунути проблеми зі структурованими даними, скористайтеся звітом про заходи, вжиті вручну.
- Ще раз вивчіть рекомендації, щоб з’ясувати, чи відповідає їм ваш контент. Проблема може бути пов’язана зі спамом у контенті або розмітці, а не з помилками в синтаксисі. Тоді її не вдасться виявити за допомогою інструменту перевірки розширених результатів.
- Дізнайтеся, що може спричинити відсутність розширених результатів або зменшення їх загальної кількості.
- Робот Googlebot сканує та індексує сторінки не одразу після оновлення контенту. З моменту публікації сторінки може пройти кілька днів, поки Google не виявить і просканує її. Ми зібрали на окремій сторінці відповіді на поширені запитання про сканування та індексацію.
- При необхідності ставте запитання на форумі Центру Пошуку Google