Разбор разметки бизнеса и товаров
В предыдущем уроке мы подготовили фрагмент товарных данных для возможной передачи платформе. Он ещё не является готовым фидом: неизвестны изображения, идентификаторы, доставка и допустимость выбранного рынка. Теперь рассмотрим другую форму представления тех же сведений — структурированные данные на странице. Наша задача состоит в том, чтобы сопоставить разметку с видимым предложением, а не получить красивую отметку любой ценой.
Продолжим работу с вымышленным «ВелоМастером». Исходным состоянием служит after.json урока 24. В каталоге по-прежнему пять SKU и четыре модели, стоимость цепи VM-C9 составляет 1290 рублей, остаток равен двенадцати. Эти учебные числа не относятся к ProfessorWeb. Никакие внешние валидаторы и поисковые кабинеты в этом уроке не запускались.
Начинаем с предмета страницы
На странице мастерской находятся адрес и описание обслуживания. В карточке цепи находятся характеристики конкретного товара. На странице категории перечислено несколько моделей. Внешне все три документа могут иметь одинаковые карточки и кнопки, но они описывают разные сущности. Поэтому сначала назовём предмет документа обычными словами, а затем выберем подходящий тип разметки.
Для Центра предметом будет отдельное место обслуживания на Учебной улице, 10. Для VM-C9 предметом является цепь на девять скоростей, а не весь ассортимент цепей. Для шлема VM-H1 предметом является модель с двумя размерами. Такая последовательность помогает заметить ошибку, когда шаблон вставляет Product на любую страницу магазина, включая каталог из десятков товаров.
Google разделяет товарные представления для страниц покупки и других товарных страниц; требования следует выбирать по реальному сценарию документа. Само присутствие JSON-LD не гарантирует специального оформления результата. Это описано в введении в товарную разметку. В нашем примере сценарий покупки ещё не реализован, поэтому мы не заявляем готовность к merchant listings.
Составляем таблицу соответствия
Для каждого поля нужны три вещи: значение, источник и видимое место. Цена без источника превращается в предположение. Источник без видимого места может означать, что страница скрывает важное условие. Видимый текст без владельца данных легко устаревает после очередной поставки. Запишем небольшой редакционный разбор.
| Поле | Учебное значение | Что требуется сопоставить |
|---|---|---|
| name | Цепь VM-C9 | Название карточки и товарная модель |
| price | 1290 RUB | Видимая цена той же комплектации |
| sku | VM-C9 | Артикул учёта, а не идентификатор филиала |
| availability | Кандидат, не подтверждён | Остаток и возможность исполнения заказа |
| image | Неизвестно | Подтверждённое изображение конкретного товара |
| shippingDetails | Неизвестно | Реальные условия выбранного рынка |
Обратите внимание на наличие. Двенадцать единиц в учебном каталоге ещё не доказывают, что магазин может выполнить заказ в выбранной стране и передать товар покупателю. Положительный остаток остаётся кандидатом для дальнейшего согласования. Мы не меняем исходные данные ради удобного значения InStock.
С ценой возникает другая опасность. На странице замены цепи работа стоит 1200 рублей, а деталь оплачивается отдельно. Нельзя перенести эту сумму в Offer товара VM-C9. Нельзя также объявить 2490 рублей универсальной ценой ремонта: это сумма конкретного учебного случая LAB-041 с определённой деталью. Услуга, товар и согласованный заказ имеют разные основания цены.
Описываем варианты без второго каталога
У шлема VM-H1 есть размеры M и L. Их SKU различаются, а базовый адрес карточки остаётся общим. Параметры size=M и size=L предназначены для предвыбора. В предыдущих уроках мы приняли модель единой страницы; обработчик выбора здесь по-прежнему отсутствует. Разметка не должна изображать работающий интерфейс, которого ещё нет.
Документация Google по вариантам различает подходы с одной и несколькими страницами. Согласуйте выбранную модель, адреса вариантов и реальные предложения прежде, чем переносить пример ProductGroup в шаблон. У нас размеры относятся к одной модели шлема; цепи на девять и десять скоростей остаются отдельными моделями, поскольку назначение различается.
Для редакционной сверки достаточно сохранить фрагмент описания связей. Он показывает структуру данных, но намеренно не объявлен готовой разметкой расширенного результата.
{
"group": "VM-H1",
"page": "/shop/products/vm-h1/",
"varies_by": "size",
"variants": [
{"sku": "VM-H1-M", "size": "M", "price_rub": 2990},
{"sku": "VM-H1-L", "size": "L", "price_rub": 2990}
],
"publication_ready": false
}
Отделяем место обслуживания от рекламного рейтинга
Для двух пунктов нужны разные адреса и разные условия работы. В Речном выполняется диагностика, а замена цепи передаётся в Центр. Общий шаблон, копирующий список всех услуг на оба адреса, создаст неправильное обещание независимо от того, насколько аккуратно написан JSON-LD. Сначала исправляют содержание, затем представление машинных данных.
В описании LocalBusiness Google рассматривает сведения о конкретном месте. Неизвестные телефон и координаты не следует заполнять правдоподобными значениями. Часы работы у нас учебные, местные; часовой пояс и свободные интервалы записи не подтверждены. Это не расписание доступных заказов.
Отдельно проверим отзывы. У нас нет подтверждённых клиентских отзывов, поэтому aggregateRating отсутствует. Самостоятельно составленный кейс мастерской не превращается в оценку покупателя. Правила Google для review snippet ограничивают самослужащие рейтинги LocalBusiness и Organization; подходящий синтаксис не отменяет этого ограничения.
Ещё один способ сверки — поменять направление чтения. Начните с поля в разметке и найдите на странице то же обещание. Затем начните с заметного условия страницы и проверьте, не противоречит ли ему машинное описание. Для VM-C10 видимое отсутствие товара должно сохраняться во всех представлениях. Для Речного название места не должно маскировать передачу работы. Так проверка охватывает и лишнее обещание, и потерянное ограничение, хотя никаких специальных результатов поиска пока не наблюдается.
Читаем ожидаемый результат
В материалах урока таблица evidence-map.csv связывает поля с видимыми частями документов. При самостоятельной сверке читатель должен обнаружить одинаковые цену и SKU в модели товара и карточке, разные роли двух пунктов и отсутствие выдуманных изображений. Если значение подтверждено только для одной комплектации, оно не распространяется на остальные автоматически.
Полезно начать чтение с самой заметной ошибки: убрать источник таблицы и попытаться объяснить цену незнакомому человеку. Если объяснение требует устного дополнения «деталь вообще-то отдельно», страница ещё не готова. Разметка должна описывать понятное предложение, а не компенсировать неполный текст невидимыми полями.
Итогом станет редакционное решение о соответствии данных странице и перечень неизвестных полей. Исходный каталог останется прежним. Мы не получили заключения внешнего валидатора, не подтвердили допуск платформы и не наблюдали поисковую выдачу. В следующем уроке рассмотрим, что меняется при подготовке предложения для другого языка и рынка.