Доработка и ремонт сайтов

Bossert.tech — Schema.org и YML-фид для Google и Яндекса

Для интернет-магазина Bossert.tech была полностью переработана структурированная разметка сайта под требования Google и Яндекса, устранены дубли и ошибки старой микроразметки, настроены товарные карточки, категории, рейтинги, данные компании, доставка и возвраты. Дополнительно разработан автоматический YML-фид товаров для передачи ассортимента в Яндекс Товары.

Schema.org и YML-фид

Bossert.tech — интернет-магазин промышленного и производственного оборудования. На сайте представлены муфельные печи, оборудование для фотокерамики, керамические принтеры, расходные материалы и сопутствующие товары.

Задача заключалась не просто в добавлении Schema.org, а в создании единой системы структурированных данных, которую корректно понимают одновременно Яндекс и Google. Дополнительно требовалось подготовить автоматическую передачу товарного ассортимента в сервисы Яндекса через YML-фид.

Исходная ситуация

Сайт работает на OpenCart с шаблоном Journal2 и большим количеством доработок, накопившихся за время эксплуатации проекта. Структурированные данные на сайте уже присутствовали частично, но были реализованы неоднородно.

На разных страницах одновременно использовались устаревшая микроразметка data-vocabulary.org, отдельные элементы Schema.org, HTML Microdata, JSON-LD, собственная разметка темы, разметка отзывов и Open Graph.

В результате поисковые системы в некоторых случаях получали несколько вариантов одних и тех же сущностей. Например, хлебные крошки на товарных страницах могли одновременно передаваться двумя разными способами.

В футере также находился собственный JSON-LD-блок Organization, внутри которого присутствовал программный комментарий. Для JavaScript комментарии допустимы, однако JSON их не поддерживает, поэтому такой блок нельзя было считать корректным JSON-LD.

Таким образом, перед внедрением новой разметки необходимо было сначала проанализировать существующую систему, удалить конфликты и только после этого сформировать единую структуру.

Аудит существующей микроразметки

Сначала была изучена структура OpenCart и шаблонов Journal2. Были определены основные типы публичных страниц сайта:

  • главная страница;
  • категории товаров;
  • карточки товаров;
  • страницы производителей;
  • акции;
  • информационные страницы;
  • статьи;
  • блог;
  • FAQ;
  • карта сайта;
  • списки статей.

Отдельно были найдены участки старой микроразметки, которые могли конфликтовать с новой. После этого была разработана единая архитектура Schema.org для всего сайта.

Микроразметка карточек товаров

Основное внимание уделялось товарным страницам. Для каждой карточки реализована структура Product + Offer.

В структурированные данные автоматически передаются реальные данные из OpenCart:

  • название товара;
  • URL карточки;
  • описание;
  • изображения;
  • модель;
  • бренд;
  • SKU;
  • MPN;
  • GTIN, EAN или UPC при наличии;
  • цена;
  • валюта;
  • наличие;
  • состояние товара;
  • продавец;
  • рейтинг;
  • количество отзывов.

Корректная передача цены

Особое внимание было уделено цене товара. На странице стоимость может отображаться, например, как 84 000 ₽, однако передавать такую строку напрямую в Offer.price нельзя.

Поэтому структурированные данные получают исходное числовое значение из OpenCart, например 84000.00, а валюта передаётся отдельно как RUB. Это позволяет Google и Яндексу корректно распознавать цену товара.

Работа со скидками

Если в OpenCart установлена специальная цена, микроразметка автоматически получает именно текущую стоимость товара. Таким образом, пользователь, Google, Яндекс и товарный фид получают согласованные данные.

Бренд товаров

Для собственной продукции используется бренд Bossert. Если для конкретного товара в OpenCart указан другой производитель, система может использовать его. Для собственной продукции предусмотрено резервное значение Bossert.

Рейтинг и отзывы

На карточках товаров размещены реальные отзывы покупателей. В сущность Product добавляется AggregateRating с указанием среднего рейтинга, количества отзывов, минимальной и максимальной оценки.

Например, на странице керамического принтера КС-5 поисковая система корректно распознала рейтинг 5 из 5 на основании 8 отзывов.

При проверке была обнаружена дополнительная проблема: старый шаблон размечал каждый отзыв как самостоятельный Review, но не указывал, к какому товару относится отзыв. В результате валидатор показывал предупреждение Отсутствует поле itemReviewed для каждого отзыва.

Конфликтующая разметка была удалена. Сами отзывы остались на странице, а общий рейтинг продолжает корректно передаваться внутри Product.

Исправление двойных BreadcrumbList

Ещё одна найденная проблема — одновременный вывод двух вариантов хлебных крошек. Один BreadcrumbList формировался через JSON-LD, второй — через HTML Microdata.

Для пользователя это было незаметно, однако поисковая система видела две одинаковые структуры. Старая конфликтующая разметка была удалена, при этом сами визуальные хлебные крошки остались без изменений.

Теперь на странице присутствует один корректный BreadcrumbList.

Микроразметка категорий

Для товарных категорий пришлось учитывать различия в рекомендациях Google и Яндекса. Для универсального описания каталожной страницы используются CollectionPage и ItemList.

При этом Яндекс отдельно поддерживает товарную структуру OfferCatalog с вложенными Offer. Поэтому категории дополнительно адаптированы под требования Яндекса.

Для каждого товара категории поисковой системе передаются URL, название, описание, изображение, цена, валюта и наличие.

Микроразметка производителей

Для страниц производителей используются сущности Brand и ItemList. Поисковой системе становится проще понять связь между брендом, товарным ассортиментом и отдельными карточками товаров.

Информационные страницы и статьи

Для обычных информационных страниц используется тип WebPage. Для статей и публикаций применяются Article и BlogPosting в зависимости от типа материала.

Это позволяет поисковой системе отличать коммерческие товарные страницы от информационного контента.

FAQ

Для страницы часто задаваемых вопросов используется FAQPage. При этом намеренно не применялся QAPage, поскольку этот тип предназначен для страниц с одним вопросом и пользовательскими ответами.

Принцип реализации заключался в том, чтобы не использовать максимальное количество типов Schema.org, а выбирать только те сущности, которые соответствуют реальному содержимому страницы.

Данные компании

Для магазина сформирована отдельная сущность компании. Первоначально использовался общий тип Organization, затем после проверки Google он был уточнён до более подходящего для интернет-магазина типа OnlineStore.

В структурированные данные компании передаются:

  • название;
  • URL сайта;
  • логотип;
  • изображение;
  • email;
  • телефон;
  • адрес;
  • контактная точка;
  • ссылки на официальные социальные сети.

Телефон нормализован в международный формат. Для компании используется постоянный идентификатор https://bossert.tech/#business, благодаря чему другие сущности могут ссылаться на одного и того же продавца.

Например, Product содержит Offer, а Offer через свойство seller связан с единой сущностью интернет-магазина.

Разметка WebSite

Отдельно сформирована сущность WebSite, связанная с компанией через свойство publisher. Таким образом, поисковая система получает явную связь между сайтом и организацией Bossert.

Исправление слишком длинного description

При проверке страницы керамического принтера КС-5 через Google Rich Results Test выяснилось, что в поле Product.description попадал практически весь текст товарной страницы.

В описание включались комплектация, технология работы, преимущества, инструкции, себестоимость, окупаемость, гарантия, FAQ и другие блоки. В результате структурированное описание становилось чрезмерно длинным.

Логика была изменена: теперь в первую очередь используется meta_description товара. Если оно отсутствует, применяется очищенное основное описание с ограничением длины.

Политика возврата

Google рекомендует интернет-магазинам передавать информацию о правилах возврата. Поэтому была добавлена сущность MerchantReturnPolicy, связанная с действующей публичной офертой магазина.

В товарный Offer добавлена связь hasMerchantReturnPolicy.

При этом в микроразметку не добавлялись вымышленные условия только ради получения полностью зелёного результата валидатора. Структурированные данные должны соответствовать реальным условиям магазина.

Доставка

Для товаров была добавлена информация о доставке через shippingDetails и общую политику доставки по России.

Стоимость и срок доставки намеренно не были зафиксированы искусственно, поскольку Bossert работает с транспортными компаниями, а конечные условия зависят от региона, веса, габаритов оборудования и тарифа перевозчика.

Вместо вымышленных значений поисковой системе передаётся реальная модель доставки.

Автоматический YML-фид для Яндекса

Следующим этапом стала автоматизация передачи товарного ассортимента в Яндекс. Вместо статического XML-файла был разработан генератор YML-фида, который получает данные непосредственно из базы OpenCart.

Фид доступен по постоянному адресу:

https://bossert.tech/yandex-feed.xml

Главное преимущество такого решения — отсутствие необходимости вручную обновлять XML. Если администратор меняет цену, наличие, описание, изображение, скидку или характеристику товара, новые данные автоматически попадают в YML.

Какие товары попадают в фид

В YML включаются только товары, которые действительно доступны для продажи.

Основные условия:

  • товар активен;
  • цена больше нуля;
  • товар есть в наличии;
  • товар относится к продаваемому ассортименту.

Сервисные услуги и ремонт из товарного фида исключены.

Какие данные передаются в YML

Для каждого товара автоматически формируются основные поля:

  • id;
  • name;
  • vendor;
  • vendorCode;
  • url;
  • price;
  • oldprice при наличии скидки;
  • currencyId;
  • categoryId;
  • picture;
  • description;
  • barcode при наличии;
  • param для характеристик.

Для собственной продукции используется бренд Bossert. Регион продаж — Россия.

Категории в YML

Фид содержит полноценный блок категорий с реальной структурой каталога OpenCart. Каждый товар связан с соответствующим categoryId, благодаря чему Яндекс может корректнее классифицировать ассортимент магазина.

Изображения товаров

В фид передаётся основное изображение товара и дополнительные фотографии. Реализована поддержка нескольких изображений для одного предложения, что особенно важно для сложного технического оборудования.

Характеристики товаров

Характеристики из OpenCart автоматически преобразуются в элементы param. Например, в фид могут передаваться мощность, максимальная температура, напряжение, размеры, вес и другие технические параметры.

Для промышленного оборудования это особенно важно, поскольку пользователь часто выбирает товар не только по названию и цене, но и по техническим характеристикам.

Скидочные цены

Если для товара действует специальная цена OpenCart, в YML автоматически передаются текущая стоимость и старая цена через элементы price и oldprice.

Это позволяет Яндексу корректно отображать скидку и одновременно поддерживает соответствие между сайтом и товарным фидом.

Синхронизация Schema.org и YML

Один из ключевых принципов реализации — микроразметка и товарный фид получают данные из одной базы OpenCart.

То есть карточка товара, Schema.org и YML используют одни и те же исходные значения цены, наличия, бренда, URL и других параметров.

Это минимизирует вероятность ситуации, когда на странице указана одна цена, в Schema.org другая, а в фиде Яндекса третья.

Проверка в Яндексе

После внедрения страница товара была протестирована валидатором микроразметки Яндекса.

На примере страницы https://bossert.tech/printer-ks-5 корректно распознавались Product, Offer, цена, валюта RUB, наличие InStock, бренд, AggregateRating, Organization, WebSite и BreadcrumbList.

Во время тестирования были обнаружены предупреждения по отдельным отзывам и двойным хлебным крошкам. Ошибки были устранены на уровне общих шаблонов, поэтому исправление распространилось не только на КС-5, но и на остальные соответствующие страницы сайта.

Проверка в Google

После этого товарная страница была протестирована через Google Rich Results Test.

Google корректно распознал данные товара и продавца, но показал дополнительные рекомендации по полям address, image, hasMerchantReturnPolicy, shippingDetails и длине description.

Все эти замечания были последовательно проанализированы и исправлены там, где на сайте существовали реальные данные для заполнения.

При этом не использовался подход «заполнить любое значение ради зелёного валидатора». Если точная стоимость или срок доставки зависят от транспортной компании, фиктивные цифры в разметку не добавляются.

Итоговая структура микроразметки

После завершения работ товарная карточка содержит логически связанную структуру:

Product → Brand → Offer → Seller → Return Policy → Shipping Policy → AggregateRating

Для сайта и компании используются:

OnlineStore + WebSite

Для навигации:

BreadcrumbList

Для каталогов:

CollectionPage + ItemList + OfferCatalog

Для информационных материалов:

Article + BlogPosting + WebPage + FAQPage

Дополнительно работает автоматический YML-фид товарного каталога.

Что получил заказчик

В результате Bossert.tech получил не отдельные фрагменты SEO-разметки, а полноценную систему структурированных товарных данных.

Google и Яндекс могут получать структурированную информацию о товарах, ценах, валюте, наличии, брендах, рейтингах, продавце, изображениях, категориях, условиях возврата и доставке.

Яндекс дополнительно получает весь доступный товарный ассортимент через автоматический YML-фид.

Основное преимущество решения — автоматизация. Администратору магазина не требуется отдельно поддерживать карточку товара, Schema.org и XML-фид. Все необходимые данные формируются непосредственно из каталога OpenCart.

Что было сделано

  • проведён аудит существующей микроразметки;
  • найдены и удалены устаревшие и конфликтующие элементы;
  • внедрена актуальная Schema.org;
  • разметка адаптирована под требования Google и Яндекса;
  • реализованы Product и Offer;
  • настроена передача цены, валюты и наличия;
  • реализована передача бренда;
  • добавлен AggregateRating;
  • исправлены ошибки Review;
  • устранено дублирование BreadcrumbList;
  • размечены категории товаров;
  • размечены производители;
  • размечены статьи и информационные страницы;
  • добавлены OnlineStore и WebSite;
  • добавлена политика возврата;
  • добавлена политика доставки;
  • исправлено слишком длинное описание Product;
  • разработан автоматический генератор YML-фида;
  • добавлена передача категорий;
  • добавлена передача нескольких изображений;
  • добавлена передача характеристик товаров;
  • реализована обработка специальных цен;
  • из товарного фида исключены услуги и ремонт;
  • выполнена проверка через инструменты Яндекса и Google;
  • проведена проверка изменённых PHP-шаблонов на синтаксические ошибки.

Результат проекта

Вместо частично устаревшей и местами конфликтующей микроразметки Bossert.tech получил современную систему передачи товарных данных, рассчитанную одновременно на Google и Яндекс.

При реализации основным принципом было не формальное получение «зелёного валидатора», а передача поисковым системам реальных и согласованных данных магазина.

Структурированные данные должны помогать поисковой системе правильно понимать сайт, а не содержать вымышленные цены, сроки и условия только ради отсутствия предупреждений в валидаторе.

В результате Schema.org и YML-фид стали полноценной частью технической инфраструктуры интернет-магазина и автоматически синхронизируются с товарным каталогом OpenCart.

Есть похожая задача?

Пришлите ссылку на сайт и опишите желаемый результат.

Обсудить в Telegram