Как проверить, что цены в разметке совпадают с контентом

Как проверить, что цены в разметке совпадают с контентом

Разметка 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 шага, которые можно сделать сегодня:

  1. Открой 5 страниц товаров, сравни цены на сайте с ценами в исходном коде (Ctrl+U, найди type="Product").
  2. Запусти проверку через Яндекс.Вебмастер (раздел «Валидатор микроразметки») или Google Rich Results Test.
  3. Если нашёл расхождения — проверь, откуда CMS берёт данные для разметки, и подключи её к тому же источнику, что отдаёт цену на страницу.