Пример Product Schema для Shopify-одежды
Готовые к копированию JSON-LD Product и ProductGroup примеры для Shopify-одежды — охватывает варианты по размеру и цвету, offers, хлебные крошки, и правила AggregateRating, которые определяют, действительно ли AI-движки цитируют вашу страницу товара.
Страницы товаров одежды на Shopify цитируются AI-движками шопинга на
основе того, насколько точно JSON-LD описывает ландшафт вариантов.
Покупатель, спрашивающий «льняная рубашка, которая сидит по размеру в
medium» в ChatGPT, Perplexity или Gemini, нуждается в том, чтобы AI
распознал, что конкретный вариант существует, есть в наличии, имеет
цену, и описан отдельно от вариантов L и XL. Общая schema Product
без деталей вариантов заставляет AI угадывать; ProductGroup с
hasVariant даёт ему данные для уверенного цитирования.
Этот пример даёт два готовых к копированию JSON-LD блока: ProductGroup
для матрицы вариантов и BreadcrumbList для контекста категории. Оба
откалиброваны для чистого прохождения Google Rich Results Test и
отражения видимого содержимого страницы (правило, которое AI-движки
действительно применяют на практике).
Когда использовать Product vs ProductGroup
| Случай | Schema | Почему |
|---|---|---|
| Моно-SKU товар (один размер, один цвет) | Product | Нет матрицы вариантов — ProductGroup излишен. |
| Одежда только с вариантами размера | ProductGroup + variesBy: size | AI-запросы шопинга обусловлены размером. |
| Одежда только с вариантами цвета | ProductGroup + variesBy: color | AI-запросы обусловлены цветом. |
| Одежда с матрицей размер × цвет | ProductGroup + оба variesBy | Декартово произведение вариантов; каждый hasVariant уникальный SKU. |
| Bundle / kit (несколько родителей) | Product на item + кастомный isRelatedTo | ProductGroup описывает варианты одного товара, не мульти-товарные bundle-ы. |
Стандартные Liquid-шаблоны Shopify выдают Product независимо от
количества вариантов. Апгрейд до ProductGroup для любого магазина
одежды с несколькими размерами — одноразовое редактирование темы (или
Shopify-приложение, которое делает это автоматически); прирост
цитирования AI-шопингом стоит усилий.
ProductGroup JSON-LD (одежда с вариантами)
Вставьте в шаблон страницы товара, заменив значения-заглушки. Пример
показывает подмножество из 2 вариантов; в продакшене у вас будет одна
запись hasVariant на реальный 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
Свяжите ProductGroup с BreadcrumbList, чтобы AI-движки понимали
иерархию категории, в которой живёт ваш товар. URL хлебных крошек
должны точно совпадать с видимыми хлебными крошками страницы.
{
"@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"
}
]
} Частые ошибки (по частоте)
-
Размечать варианты, которые не видны и не выбираемы на странице. Schema должна отражать видимую реальность. Если ваша страница товара показывает только S / M / L, но JSON-LD объявляет XS до XXL, AI-движки рано или поздно попытаются процитировать вариант, который 404, и понизят магазин.
-
Использовать AggregateRating без виджета отзывов. Либо отображайте отзывы видимо (приложение Shopify Reviews), либо удалите поле schema. Не фабрикуйте.
-
Несоответствие currency, цены или наличия между schema и видимой страницей товара. Покупатель видит
$79, но schema объявляет89.00— AI-движки берут число из schema, цитируют его, покупатель чувствует себя обманутым. Хуже: Google помечает schema как ненадёжную. -
Повторное использование того же
skuдля нескольких вариантов. Shopify генерирует уникальные SKU, но мерчанты часто перезаписывают их. Дублирующиеся SKU вhasVariantприводят к тому, что AI-движки неправильно объединяют варианты. -
Смешивание
ProductGroupиProductтак, что специфичные для варианта имена теряются. Если вы выдаёте оба для одного и того же item, убедитесь, что экземплярProduct— это родитель (без деталей вариантов) иProductGroup.hasVariantсодержит варианты. Не выдавайтеProductдля каждого варианта вне группы. -
Добавление медицинских или неподтверждённых заявлений к описаниям одежды. «Корректирующая осанку» / «улучшает кровообращение» / «антибактериальная ткань предотвращает кожные болезни» — это регулируемые заявления на большинстве рынков и триггерят понижение AI даже когда законно. Оставайтесь при описаниях посадки и материала.
-
Указание URL schema на неканонические URL вариантов. Если страница использует одну каноническую URL товара (например,
/products/linen-shirt), а варианты выбираются через query-param (?variant=white-m),hasVariant[].offers.urlдолжен всё равно указывать на специфичную для варианта URL — там приземляются покупатели (и AI-агенты).
Как проверить
- Вставьте развёрнутую URL товара в
Google Rich Results Test
. Элементы Product и BreadcrumbList должны валидироваться. - Пройдите чек-лист валидации выше поле за полем.
- Откройте страницу в режиме инкогнито и проверьте, что видимый H1 товара, цена, наличие и хлебные крошки все совпадают с тем, что объявляет schema.
- Перезапустите Генератор Schema, если меняете структуру товара (новый цвет, удалённый размер), и передеплойте.
JSON-LD — это один сигнал в стеке AI-шопинга. Свяжите с шаблоном llms.txt fashion для стороны карты контента, и проверьте с помощью Анализатора Robots, что GPTBot может достучаться до страницы товара.
Контрольный список проверки
Название товара в schema совпадает с видимым H1
Поле `name` ProductGroup точно совпадает с H1 на странице товара (регистр + пунктуация). AI-движки понижают несовпадения как сигнал низкого доверия.
У каждого варианта уникальный SKU
Никакие два значения `hasVariant[].sku` не сталкиваются. Shopify авто-генерирует SKU, но мерчанты часто перезаписывают — дублирующиеся SKU в schema приводят к тому, что AI-движки неправильно объединяют варианты.
Названия вариантов идентифицируют размер / цвет / материал
Каждый `hasVariant[].name` читается как реальная этикетка товара (например, «Linen Relaxed Shirt — White / M»), не заглушка. AI-ответы шопинга цитируют это поле напрямую.
productGroupID стабилен между развёртываниями
`productGroupID` должен быть стабильным внутренним идентификатором (Shopify product GID или собственный slug), не случайным build-time UUID. AI-движки используют его для дедупликации одного товара между перезагрузками страницы.
У каждого Offer есть currency + price + availability + URL
Блок `offers` каждого варианта имеет `priceCurrency`, `price`, `availability`, `url`. Отсутствие currency — причина №1, по которой Google Rich Results Test понижает результат Product.
AggregateRating присутствует только если видны реальные отзывы
Если вы выдаёте `aggregateRating`, тот же рейтинг + число отзывов должны быть видны на странице товара. AI-движки сравнивают schema с видимым содержимым; сфабрикованные рейтинги триггерят понижение.
BreadcrumbList совпадает с видимыми хлебными крошками
Цепочка URL `itemListElement` schema точно совпадает с видимыми хлебными крошками страницы (тот же путь, те же метки). Расхождения сбивают с толку AI-движки, использующие контекст хлебных крошек для понимания категории.
Rich Results Test не возвращает критических ошибок
После развёртывания вставьте URL товара в https://search.google.com/test/rich-results — элементы Product и BreadcrumbList должны валидироваться без критических ошибок.
Открыть в генераторе Schema
Предзаполнено заглушками одежды для названия товара, описания, бренда, цены, наличия и рейтингов. Замените заглушки реальными данными товара и скачайте готовый для Shopify JSON-LD блок.
Часто задаваемые вопросы
Должен ли товар Shopify-одежды использовать Product или ProductGroup?
Используйте `Product` для простого товара без вариантов. Используйте `ProductGroup`, как только существуют варианты по размеру, цвету или материалу — это позволяет AI-движкам цитировать правильный вариант для конкретного запроса («льняная рубашка размера M») вместо их смешения. Стандартные Liquid-шаблоны Shopify выдают только `Product`; апгрейд до `ProductGroup` ручной, но стоит того для любого магазина одежды с несколькими размерами.
Можно ли выдавать AggregateRating без видимых отзывов на странице?
Нет. Schema должна отражать видимое содержимое. Если вы выдаёте `aggregateRating: 4.7 from 32 reviews`, но на странице товара нет виджета отзывов, AI-движки и Google помечают это как ненадёжное. Либо отрендерите отзывы видимо (приложения Shopify такие как Judge.me или нативный Shopify Reviews), либо удалите поле schema полностью.
Должен ли каждый вариант цвета быть отдельной записью hasVariant?
Да, когда у варианта различные SKU, цвет, размер, изображение, цена или наличие. AI-движкам шопинга, отвечающим «есть ли ещё в наличии чёрная льняная рубашка», нужен каждый вариант как отдельно адресуемый узел Product с собственным `offers.availability`. Только цвет → один `hasVariant` на цвет; только размер → один на размер; размер+цвет → декартово произведение.
Заменяет ли schema ProductGroup продуктовые feed-ы Shopify?
Нет. JSON-LD на странице дополняет feed-ы (авто-генерируемый Shopify `/products.json`, Google Merchant feed, Meta Catalog). AI-движки шопинга сканируют страницы напрямую *и* читают feed-ы — оба сигнала важны. Не отказывайтесь от одного ради другого.
Связанные ресурсы
Шаблон llms.txt Shopify для fashion
Свяжите эту Product schema с картой контента llms.txt — оба сигнала работают вместе для цитирования AI-шопингом.
Шаблон llms.txt Shopify для beauty
Сестринская вертикаль — те же принципы JSON-LD применимы к Product schema beauty, но с полями контекста ингредиентов вместо размера/цвета.
Шаблон llms.txt Shopify для electronics
Сестринская вертикаль — для электроники использовать ProductGroup с полями модели + совместимости вместо вариантов размер/цвет.
Shopify AI Visibility Optimizer
Полный стек AI-видимости — schema, карта контента, политика краулеров, мониторинг цитирования.
llms.txt для Shopify — полное руководство
Контекст по сигналу карты-контента, который сочетается с сигналом schema в этом примере.