Хорошие SEOшники сообщество

Микроразметка Schema.org: готовые блоки и как проверить

Микроразметка — это способ объяснить поиску, что именно написано на странице: где цена, где рейтинг, где автор. Сама по себе она в топ не поднимает. Она меняет вид сниппета и помогает роботу понять страницу без догадок. Ниже — готовые куски кода, разница между Яндексом и Google и способ проверить, что всё работает.

Чего ждать и чего не ждать

Разметка даёт три вещи: расширенный сниппет (цена, наличие, рейтинг, навигационная цепочка), однозначное понимание сущностей на странице и данные для сервисов, которые читают сайт машинно — от агрегаторов до нейросетевых ответов.

Чего она не даёт: роста позиций сама по себе. Страница без текста и без спроса не вырастет оттого, что в ней появился itemprop. И расширенный сниппет не гарантирован: оба поисковика решают сами, показывать его или нет.

Словари и синтаксисы: что из этого нужно вам

В статьях про микроразметку легко утонуть в словах «словарь», «синтаксис»,

«формат». Разница простая.

Словарь — набор слов, которыми описывают сущности. Основной и

единственный, который нужен для поиска, — schema.org:

его понимают Яндекс, Google и остальные. Open Graph — отдельный маленький

словарь, он отвечает не за поиск, а за вид ссылки в соцсетях и мессенджерах;

его ставят дополнительно, он разметку schema.org не заменяет. Микроформаты

(hCard, hRecipe) — наследие прошлого десятилетия, новые сайты на них

не делают.

Синтаксис — способ записать словарь в коде. Их три:

для Google;

в тегах. Основной для Яндекса;

смысла нет.

Выбор между JSON-LD и микроданными и есть главный практический вопрос, и он

решается не вкусом, а тем, какой поисковик вам важнее.

Главное: Яндекс и Google читают разметку по-разному

Это тот вопрос, который в нашем чате возвращается чаще всего: «schema для Яндекса и JSON-LD для Google — так и надо?»

Google предпочитает JSON-LD: отдельный блок <script type="application/ld+json"> в коде страницы. Микроданные он тоже понимает, но в документации рекомендует именно JSON-LD.

Яндекс в документации говорит прямо: данные в формате JSON-LD используются Яндекс Почтой, при формировании навигационной цепочки в сниппете и для вопросов и ответов на мобильной выдаче. Всё остальное — товары, организация, отзывы, статьи — он берёт из микроданных schema.org, то есть из атрибутов itemscope, itemtype и itemprop прямо в вёрстке.

Отсюда практический вывод, который экономит время:

Готовые блоки

Работает у обоих, ставится одним блоком в <head> или в конце <body>.


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {"@type": "ListItem", "position": 1, "name": "Главная", "item": "https://example.ru/"},
    {"@type": "ListItem", "position": 2, "name": "Каталог", "item": "https://example.ru/catalog/"},
    {"@type": "ListItem", "position": 3, "name": "Ноутбуки", "item": "https://example.ru/catalog/noutbuki/"}
  ]
}
</script>

Организация и контакты

Для компании с адресом и телефоном берите LocalBusiness, для сервиса без физического офиса — Organization. Для Яндекса это же нужно продублировать микроданными на странице контактов.


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Экополис",
  "url": "https://example.ru/",
  "telephone": "+7 495 000-00-00",
  "email": "info@example.ru",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "Москва",
    "streetAddress": "ул. Правды, д. 1",
    "postalCode": "125040",
    "addressCountry": "RU"
  },
  "openingHours": "Mo-Fr 09:00-18:00"
}
</script>

Микроданными то же самое выглядит так:


<div itemscope itemtype="https://schema.org/LocalBusiness">
  <span itemprop="name">Экополис</span>
  <div itemprop="address" itemscope itemtype="https://schema.org/PostalAddress">
    <span itemprop="addressLocality">Москва</span>,
    <span itemprop="streetAddress">ул. Правды, д. 1</span>
  </div>
  <span itemprop="telephone">+7 495 000-00-00</span>
</div>

Товар

Для Яндекса — микроданными, прямо в карточке товара.


<div itemscope itemtype="https://schema.org/Product">
  <h1 itemprop="name">Ноутбук Lenovo ThinkPad X1</h1>
  <img itemprop="image" src="/img/x1.jpg" alt="Lenovo ThinkPad X1">
  <div itemprop="description">14 дюймов, 16 ГБ, 512 ГБ SSD</div>
  <div itemprop="offers" itemscope itemtype="https://schema.org/Offer">
    <meta itemprop="priceCurrency" content="RUB">
    <span itemprop="price">149900</span> ₽
    <link itemprop="availability" href="https://schema.org/InStock">
    в наличии
  </div>
</div>

Для Google тот же товар в JSON-LD:


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Ноутбук Lenovo ThinkPad X1",
  "image": "https://example.ru/img/x1.jpg",
  "sku": "X1-16-512",
  "offers": {
    "@type": "Offer",
    "price": "149900",
    "priceCurrency": "RUB",
    "availability": "https://schema.org/InStock",
    "url": "https://example.ru/catalog/x1/"
  }
}
</script>

Статья


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Заголовок, как он написан на странице",
  "description": "Короткое описание",
  "datePublished": "2026-10-04",
  "dateModified": "2026-10-04",
  "author": {"@type": "Person", "name": "Имя Фамилия"},
  "publisher": {"@type": "Organization", "name": "Название сайта"},
  "mainEntityOfPage": "https://example.ru/blog/stati/"
}
</script>

Вопросы и ответы

Яндекс по документации использует их для структурированного отображения на мобильной выдаче. У Google с августа 2023 года FAQ-сниппеты показываются крайне ограниченному кругу сайтов, так что рассчитывать на расширенный сниппет в Google не стоит — но разметка остаётся полезной для понимания страницы.

Важно: вопросы и ответы в разметке должны дословно совпадать с тем, что видит человек на странице.


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [{
    "@type": "Question",
    "name": "Сколько ждать результата от SEO?",
    "acceptedAnswer": {"@type": "Answer", "text": "Первые изменения видны через 2–3 месяца."}
  }]
}
</script>

Какие типы бывают и какие нужны именно вам

Типов в schema.org больше восьмисот, но для обычного сайта работают

полтора десятка. Остальные можно не читать.

Нужны почти всем: Organization или LocalBusiness, BreadcrumbList,

WebSite, Article для блога.

Нужны по роду сайта: Product и Offer интернет-магазину,

JobPosting сайту с вакансиями, Event площадке с мероприятиями,

Recipe кулинарному проекту, VideoObject там, где видео — основной

контент, Course школе, Service сайту услуг.

Работают выборочно, проверяйте перед внедрением: FAQPage

и HowTo — Google резко сузил их показ, Review и AggregateRating

обоими поисковиками проверяются строго и при нарушении правил

перестают учитываться целиком.

Разметка ItemList на страницах категорий даёт поиску понять, что это

перечень, а не один товар. CollectionPage на категории ставят реже:

практика показывает, что ItemList с вложенными Product отрабатывает

предсказуемее.

Что ставить на какую страницу

СтраницаТипЧем размечать
Любая внутренняяBreadcrumbListJSON-LD
ГлавнаяOrganization или WebSiteJSON-LD + микроданные
Контакты, филиалыLocalBusinessмикроданные
Карточка товараProduct + Offerмикроданные, для Google — ещё JSON-LD
Категория каталогаItemListJSON-LD
Статья, новостьArticleJSON-LD
Страница с вопросамиFAQPageJSON-LD
Отзывы на страницеReview, AggregateRatingмикроданные

Как проверить

Валидатор Яндекса — webmaster.yandex.ru/site/tools/microtest. Принимает и адрес, и кусок кода. Показывает, какие сущности он увидел и каких обязательных полей не хватает.

Проверка расширенных результатов Google — search.google.com/test/rich-results. Отвечает на другой вопрос: не «валидна ли разметка», а «годится ли она для расширенного сниппета».

Отчёты в панелях. В Яндекс Вебмастере раздел «Информация о сайте → Микроразметка», в Google Search Console — отдельные отчёты по типам. Они показывают разметку не на одной странице, а по всему сайту, и именно там видно, что на половине карточек её нет.

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

Как добавить, если разработчика нет

Генераторы. Для разовой разметки главной, контактов или статьи хватает

генератора: он собирает готовый блок JSON-LD по заполненной форме. Рабочие —

у Technical SEO

и Merkle. Результат всё равно стоит

прогнать через валидатор: генератор не знает, что написано у вас на странице.

Конструкторы сайтов. В Тильде блок кода вставляется в настройках

страницы, в разделе «Дополнительно». В Битриксе разметка товара обычно

уже есть в шаблоне компонента каталога, но неполная — чаще всего не хватает

наличия и валюты. В WordPress её добавляют SEO-плагины, и там обратная

беда: плагин размечает всё подряд, включая страницы, где разметка только

мешает.

Чего не стоит делать: вставлять в каждую страницу один и тот же блок

Organization «на всякий случай» и размечать статический текст, который

потом поменяют в базе, а в разметке забудут. Разметка должна собираться

из тех же полей, что и видимая часть страницы, иначе она разойдётся

с ней в первый же месяц.

Шесть ошибок, которые встречаются чаще всего

itemprop вне itemscope. Самая частая. Свойство работает только внутри элемента, у которого объявлен тип. Вынесли цену в соседний блок — она потерялась.

Товар без цены. Если у части товаров цены нет, Product без offers для поиска бесполезен, а пустая цена или ноль — хуже, чем ничего. Либо выводите цену, либо не размечайте эти карточки как товар.

Разметка того, чего нет на странице. Отзывы, подтянутые с Яндекс.Карт и размеченные на своём сайте, рейтинг без единого отзыва, цена, которой не видно, — это нарушение правил обоих поисковиков, и за него разметку перестают учитывать целиком.

Крошки в разметке, которых нет на странице. Разметка описывает то, что человек видит. Нет цепочки в вёрстке — не надо её выдумывать в JSON-LD.

Один тип на всё. Article на главной, Product на категории, LocalBusiness на каждой странице сайта — поисковик это читает, но пользы не прибавляется, а ошибок прибавляется.

Разметка «на всякий случай» в каждом <div>. Размечать нужно сущности, а не вёрстку. Десять вложенных itemscope без смысла только мешают валидатору.

ТЗ разработчику

Чтобы внедрение не растянулось на месяц, отдавайте задачу списком переменных, а не ссылкой на schema.org:

  1. На каких шаблонах ставим: карточка товара, категория, статья, контакты, главная.
  2. Какие поля подставляются из базы: название, цена, валюта, наличие, артикул, изображение, бренд.
  3. Что делать, когда поле пустое: не выводить блок целиком, а не подставлять ноль.
  4. Формат: JSON-LD в шаблоне или атрибуты в вёрстке — по таблице выше.
  5. Как проверяем приёмку: обе ссылки на валидаторы и список страниц для проверки.

Если разметку делает подрядчик со стороны, пункт про приёмку — не формальность: по нему видно, сделана работа или сдана. О том, как проверить исполнителя до подписания договора, — в разборе как выбрать SEO-специалиста.

Частые вопросы

Нужно ли дублировать разметку и микроданными, и JSON-LD?

Нет. Выберите формат по типу данных: крошки и FAQ — JSON-LD, товары, организация и отзывы — микроданные. Дублирование не усиливает сигнал, а создаёт второе место, где данные разойдутся.

Какой тип ставить на главную: WebSite или Article?

Ни в коем случае не Article: главная не статья. Для сайта компании — Organization или LocalBusiness, для контентного проекта — WebSite. Эти типы можно сочетать в одном блоке JSON-LD.

Если использовать не все свойства типа, разметка учтётся?

Да, учтётся. Но у каждого типа есть обязательные поля, без которых сущность не собирается: у товара это название и предложение с ценой, у организации — название. Что именно обязательно, показывает валидатор.

Адрес в JSON-LD писать латиницей или кириллицей?

Адрес страницы — латиницей, в том виде, в каком он открывается. Названия и адреса организации — на том языке, на котором они написаны на странице.

Нужна ли разметка хлебных крошек, если крошек на странице нет?

Нет. Размечается то, что видит человек. Если цепочка нужна в сниппете, сначала добавьте её в вёрстку, потом размечайте.

Валидатор Google требует идентификатор, что в нём писать?

Речь о поле @id или sku в зависимости от типа. Для товара подойдёт артикул из базы, для организации — адрес сайта. Главное, чтобы значение было постоянным и не менялось от сборки к сборке.

Разметка добавлена, а расширенный сниппет не появился. Что не так?

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

Где это лежит в Тильде, Битриксе и WordPress?

В Тильде — блок T123 или вставка кода в настройках страницы, товары размечаются в карточках каталога автоматически не всегда. В Битриксе разметка товара обычно уже есть в шаблоне компонента catalog.element, но часто неполная. В WordPress её добавляют SEO-плагины, и там чаще встречается обратная проблема: плагин размечает всё подряд, включая страницы, где это не нужно.

Спросите в чате сообщества

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

← Все материалы