Разметка Schema.org передаёт цену товара поисковым системам и ИИ-ботам в структурированном виде. Если в разметке указано 1 500 BYN, а на странице написано 1 900 BYN, алгоритм считывает это как попытку манипуляции и исключает сайт из расширенных сниппетов и нейроответов. Этот материал показывает, как найти расхождения до того, как они повлияют на видимость, какие инструменты использовать и как автоматизировать проверку.
Почему расхождения опасны для бизнеса
Поисковые системы используют микроразметку для формирования карточек товаров в выдаче: цена, наличие, рейтинг отображаются над ссылкой на сайт. ИИ-боты — Алиса в Яндексе, AI Overview в Google — берут данные из той же разметки для генерации ответов. Когда цена в разметке не совпадает с видимым текстом страницы, алгоритм фиксирует несоответствие.
Последствия:
- Карточка товара перестаёт появляться в расширенных сниппетах.
- Сайт исключается из источников для ИИ-ответов.
- Статус индексации страницы помечается как «ошибка валидации структурированных данных».
Для интернет-магазина потеря расширенного сниппета означает падение CTR на 15–30%, по данным исследований микроразметки для малого бизнеса. Для локальной компании отсутствие в нейроответах — это невидимость для четверти потенциальных клиентов, использующих быстрые ответы Алисы (Яндекс, около 46,5 млн пользователей ежемесячно).
Где искать расхождения
Типичные точки рассинхронизации:
- Цена изменилась на сайте, но разметка обновляется вручную или через кеш.
- Акционная цена показывается через JavaScript, а в разметке осталась базовая.
- Наличие товара изменилось (кончился, появился), но атрибут availability в разметке не обновлён.
- Валюта на странице в BYN, в разметке — в USD или RUB.
- Цена отображается через подгрузку из внешнего источника (API склада, CRM), а разметка статична в HTML.
Проверь три элемента разметки Product или Offer:
| Атрибут | Где проверить | Частая ошибка |
|---|---|---|
| price | Число без символов валюты, точка как разделитель (49.90) | Запятая вместо точки, указана цена со скидкой без базовой |
| priceCurrency | Код ISO 4217 (BYN, RUB, USD) | Указан текст «BYN» вместо кода, пропущена валюта |
| availability | URL из словаря Schema.org (InStock, OutOfStock) | Написано «в наличии» текстом, указан статус для другого товара |
Как проверить вручную
Открой страницу товара. Посмотри цену, которую видит посетитель. Открой исходный код страницы (Ctrl+U или правая кнопка мыши → «Просмотр кода страницы»). Найди блок с type="Product" или type="Offer". Сравни значение атрибута price с видимой ценой на странице.
Проверь три момента:
- Числа совпадают. Если на сайте «1 900 BYN», в разметке должно быть "price": "1900" или "price": "1900.00".
- Валюта одинаковая. Если на сайте белорусские рубли, в разметке "priceCurrency": "BYN".
- Статус наличия совпадает с реальным. Товар закончился — в разметке должно быть "availability": "https://schema.org/OutOfStock".
Повтори для 5–10 товаров из разных категорий. Если находишь расхождения — проверь остальные страницы автоматически.
Как автоматизировать проверку
Ручная проверка подходит для сайта на 10–50 товаров. Для каталога на сотни позиций нужен скрипт или сервис.
Вариант 1: Яндекс.Вебмастер, раздел «Валидатор микроразметки». Загрузи список URL страниц товаров (до 100 штук за раз). Сервис покажет найденные типы разметки и ошибки валидации. Ошибка «цена не соответствует содержимому» означает расхождение.
Вариант 2: Google Rich Results Test. Вставь URL или код страницы. Инструмент распознаёт разметку и показывает предпросмотр карточки. Если цена в предпросмотре отличается от цены на скриншоте страницы — есть расхождение.
Вариант 3: Скрипт на Python с библиотекой BeautifulSoup. Скрипт загружает HTML страницы, извлекает цену из видимого текста (например, из элемента с классом .price) и из JSON-LD разметки, сравнивает значения. Если не совпадают — выводит URL в лог.
Для проектов на CMS (например, WordPress, OpenCart, 1С-Битрикс) проверь, есть ли плагин для автоматической синхронизации. Плагины обычно обновляют разметку при изменении цены в админке, но могут не учитывать акции, скидки или изменения через API.
Как настроить автоматическое обновление разметки
Если цены меняются часто — через промокоды, сезонные акции или синхронизацию со складом — разметку нужно генерировать динамически.
Подключи разметку к источнику цен:
- Если цена хранится в базе данных, выводи её в разметку через серверный шаблон (PHP, Python, Node.js). Один запрос к БД вместо двух ручных правок.
- Если цена подгружается через JavaScript, добавь скрипт, который обновляет JSON-LD после загрузки актуальной цены. Разметка должна меняться одновременно с видимым текстом.
- Если используешь CDN или кеш, настрой инвалидацию разметки при обновлении товара. Кеш не должен отдавать устаревший JSON-LD.
Проверь, что разметка обновляется при изменении наличия. Товар закончился — атрибут availability переключается на OutOfStock. Появился — возвращается InStock. Это можно настроить через триггер в CMS или скрипт, который опрашивает API склада.
Типичные ошибки
- Разметка обновляется вручную, а цены — автоматически из CRM. Решение: подключи разметку к тому же источнику данных, что и видимую цену.
- Цена в разметке указана с учётом скидки, но на странице показана базовая. Решение: используй два атрибута — price для цены со скидкой и priceValidUntil для срока действия акции.
- Валюта в разметке не совпадает с валютой на сайте (например, BYN на сайте, USD в разметке). Решение: всегда проверяй priceCurrency при добавлении разметки.
- Наличие товара изменилось, но разметка осталась прежней. Решение: синхронизируй availability с состоянием склада через API или триггеры CMS.
- Разметка кешируется отдельно от контента. Решение: настрой одинаковое время жизни кеша для HTML и JSON-LD или инвалидируй оба одновременно.
Что проверить после настройки
Через неделю после внедрения автоматического обновления разметки проверь:
- Открой 10 случайных товаров, сравни цену на странице с ценой в исходном коде.
- Измени цену одного товара в админке, обнови страницу в браузере, проверь, что разметка обновилась.
- Запусти валидатор Яндекс.Вебмастера или Google Rich Results Test для нескольких URL.
Если расхождений нет — настройка работает. Повторяй проверку раз в месяц или после обновления CMS, смены поставщика данных, изменения шаблонов.
3 шага, которые можно сделать сегодня:
- Открой 5 страниц товаров, сравни цены на сайте с ценами в исходном коде (Ctrl+U, найди type="Product").
- Запусти проверку через Яндекс.Вебмастер (раздел «Валидатор микроразметки») или Google Rich Results Test.
- Если нашёл расхождения — проверь, откуда CMS берёт данные для разметки, и подключи её к тому же источнику, что отдаёт цену на страницу.



