Руководство · Стандарт или спецификация
Schema.org Product и Offer для AI-commerce
Как описывать товар, предложение, цену, валюту, наличие, идентификаторы и варианты так, чтобы машинное представление не расходилось с видимой карточкой товара.
- Опубликовано
- Обновлено
Ограничение: материал объясняет проверяемый технический сигнал. Его наличие не гарантирует ранжирование, индексацию, цитирование или включение сайта в ответы ИИ.
Product описывает сущность, Offer — коммерческое предложение
В Schema.org Product представляет товар или услугу как сущность, а Offer — конкретное предложение передать права на него, например продать по определённой цене и в определённом состоянии наличия. Связь обычно задаётся через свойство `offers` у Product.
Для машинного потребителя особенно важна согласованность: название, цена, валюта и availability в JSON-LD не должны расходиться с тем, что пользователь видит на странице. Противоречивые данные хуже отсутствующих, потому что создают несколько взаимоисключающих версий товара.
Что проверяет AI Web Check
AI-commerce проверяется только после подтверждения, что сайт относится к интернет-магазинам. На ограниченной выборке товарных страниц сервис ищет Product/ProductGroup, Offer/AggregateOffer, основные поля, цену и валюту, availability, бренд, идентификаторы, canonical и признаки вариантов.
Дополнительно сравниваются некоторые однозначные HTML и JSON-LD значения. Сервис не сохраняет цены, названия, SKU/GTIN или полная разметка: в диагностике остаются только нормализованные статусы и счётчики.
Минимальный пример
В реальном магазине добавляйте только подтверждаемые свойства. Если есть варианты, не подменяйте отдельные SKU одной случайной ценой: моделируйте варианты так, чтобы цена, availability и canonical относились к правильной сущности.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Example Device",
"sku": "SKU-123",
"offers": {
"@type": "Offer",
"price": "199.00",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"url": "https://example.com/product/device"
}
}
</script>Проверка одной карточки без догадок
Для одной товарной страницы сначала зафиксируйте видимые название, цену, валюту, наличие и конечный URL. Затем найдите Product или ProductGroup и связанный с ним Offer, который описывает тот же товар или тот же вариант. Сравнивать нужно одну сущность с одной сущностью, а не случайную цену из страницы со случайным Offer.
Если используются варианты, добавьте в проверку SKU, GTIN или отдельный URL варианта. Canonical должен описывать реальную предпочтительную страницу, а не служить способом скрыть расхождение между вариантами.
- Видимая цена и price относятся к одному варианту и одной валюте.
- priceCurrency соответствует валюте, которую видит пользователь.
- availability описывает текущее состояние именно этого Offer.
- Product, Offer, SKU/GTIN и URL позволяют однозначно понять, какой вариант проверяется.
- Canonical согласован с предпочтительным публичным URL карточки.
Когда сравнение нужно остановить
Не каждую страницу можно честно свести к одной цене и одному Offer. Если на экране показан диапазон «от», цена зависит от региона или авторизации, а вариант выбирается только после действия пользователя, автоматическая проверка может не иметь однозначной пары для сравнения.
В таком случае безопаснее зафиксировать ограничение и проверить сценарий вручную, чем объявлять противоречием два значения, которые относятся к разным вариантам или условиям продажи.
- Несколько цен без однозначного признака выбранного варианта.
- Разные валюты или региональные цены на одной странице без явного контекста.
- Цена или наличие доступны только после входа пользователя.
- ProductGroup содержит варианты, но Offer нельзя однозначно связать с конкретным SKU/URL.
Типичные ошибки
- Цена в JSON-LD обновляется реже, чем видимая цена на странице.
- priceCurrency отсутствует или не соответствует отображаемой валюте.
- availability остаётся InStock после фактического снятия товара с продажи.
- Один Product используется для нескольких вариантов без однозначной связи SKU/GTIN/canonical.
- Разметка описывает товар, которого нет в основном содержимом страницы.
Как исправлять
Формируйте видимую карточку и JSON-LD из одной товарной модели. Цена, валюта, availability, URL и идентификаторы должны обновляться в одном транзакционном контуре, а не копироваться в шаблон вручную.
Для AI-commerce важнее качество и согласованность нескольких реальных товарных карточек, чем количество типов Schema.org на каждой странице. Сначала устраните противоречия, потом расширяйте семантику.