Микроразметка Schema.org: готовые блоки и как проверить
Микроразметка — это способ объяснить поиску, что именно написано на странице: где цена, где рейтинг, где автор. Сама по себе она в топ не поднимает. Она меняет вид сниппета и помогает роботу понять страницу без догадок. Ниже — готовые куски кода, разница между Яндексом и Google и способ проверить, что всё работает.
Чего ждать и чего не ждать
Разметка даёт три вещи: расширенный сниппет (цена, наличие, рейтинг, навигационная цепочка), однозначное понимание сущностей на странице и данные для сервисов, которые читают сайт машинно — от агрегаторов до нейросетевых ответов.
Чего она не даёт: роста позиций сама по себе. Страница без текста и без спроса не вырастет оттого, что в ней появился itemprop. И расширенный сниппет не гарантирован: оба поисковика решают сами, показывать его или нет.
Словари и синтаксисы: что из этого нужно вам
В статьях про микроразметку легко утонуть в словах «словарь», «синтаксис»,
«формат». Разница простая.
Словарь — набор слов, которыми описывают сущности. Основной и
единственный, который нужен для поиска, — schema.org:
его понимают Яндекс, Google и остальные. Open Graph — отдельный маленький
словарь, он отвечает не за поиск, а за вид ссылки в соцсетях и мессенджерах;
его ставят дополнительно, он разметку schema.org не заменяет. Микроформаты
(hCard, hRecipe) — наследие прошлого десятилетия, новые сайты на них
не делают.
Синтаксис — способ записать словарь в коде. Их три:
- JSON-LD — отдельный блок в
<script>, не трогает вёрстку. Основной
для Google;
- микроданные — атрибуты
itemscope,itemtype,itempropпрямо
в тегах. Основной для Яндекса;
- RDFa — тоже атрибуты, в вебе встречается реже; осваивать его сегодня
смысла нет.
Выбор между JSON-LD и микроданными и есть главный практический вопрос, и он
решается не вкусом, а тем, какой поисковик вам важнее.
Главное: Яндекс и Google читают разметку по-разному
Это тот вопрос, который в нашем чате возвращается чаще всего: «schema для Яндекса и JSON-LD для Google — так и надо?»
Google предпочитает JSON-LD: отдельный блок <script type="application/ld+json"> в коде страницы. Микроданные он тоже понимает, но в документации рекомендует именно JSON-LD.
Яндекс в документации говорит прямо: данные в формате JSON-LD используются Яндекс Почтой, при формировании навигационной цепочки в сниппете и для вопросов и ответов на мобильной выдаче. Всё остальное — товары, организация, отзывы, статьи — он берёт из микроданных schema.org, то есть из атрибутов itemscope, itemtype и itemprop прямо в вёрстке.
Отсюда практический вывод, который экономит время:
- крошки и FAQ — JSON-LD, его хватает обоим;
- товар, организация, отзывы — микроданными в вёрстке, иначе Яндекс их не увидит;
- дублировать одно и то же обоими способами не надо: это не усиливает сигнал, но удваивает места, где рассинхронизируются данные.
Готовые блоки
Навигационная цепочка (крошки)
Работает у обоих, ставится одним блоком в <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 отрабатывает
предсказуемее.
Что ставить на какую страницу
| Страница | Тип | Чем размечать |
|---|---|---|
| Любая внутренняя | BreadcrumbList | JSON-LD |
| Главная | Organization или WebSite | JSON-LD + микроданные |
| Контакты, филиалы | LocalBusiness | микроданные |
| Карточка товара | Product + Offer | микроданные, для Google — ещё JSON-LD |
| Категория каталога | ItemList | JSON-LD |
| Статья, новость | Article | JSON-LD |
| Страница с вопросами | FAQPage | JSON-LD |
| Отзывы на странице | Review, AggregateRating | микроданные |
Как проверить
Валидатор Яндекса — webmaster.yandex.ru/site/tools/microtest. Принимает и адрес, и кусок кода. Показывает, какие сущности он увидел и каких обязательных полей не хватает.
Проверка расширенных результатов Google — search.google.com/test/rich-results. Отвечает на другой вопрос: не «валидна ли разметка», а «годится ли она для расширенного сниппета».
Отчёты в панелях. В Яндекс Вебмастере раздел «Информация о сайте → Микроразметка», в Google Search Console — отдельные отчёты по типам. Они показывают разметку не на одной странице, а по всему сайту, и именно там видно, что на половине карточек её нет.
Частая ситуация: валидатор зелёный, а сниппет прежний. Это нормально. Валидатор говорит, что разметка прочитана, а решение показывать расширенный сниппет поисковик принимает сам и не сразу: нужно дождаться переобхода, а дальше это его выбор.
Как добавить, если разработчика нет
Генераторы. Для разовой разметки главной, контактов или статьи хватает
генератора: он собирает готовый блок JSON-LD по заполненной форме. Рабочие —
и Merkle. Результат всё равно стоит
прогнать через валидатор: генератор не знает, что написано у вас на странице.
Конструкторы сайтов. В Тильде блок кода вставляется в настройках
страницы, в разделе «Дополнительно». В Битриксе разметка товара обычно
уже есть в шаблоне компонента каталога, но неполная — чаще всего не хватает
наличия и валюты. В WordPress её добавляют SEO-плагины, и там обратная
беда: плагин размечает всё подряд, включая страницы, где разметка только
мешает.
Чего не стоит делать: вставлять в каждую страницу один и тот же блок
Organization «на всякий случай» и размечать статический текст, который
потом поменяют в базе, а в разметке забудут. Разметка должна собираться
из тех же полей, что и видимая часть страницы, иначе она разойдётся
с ней в первый же месяц.
Шесть ошибок, которые встречаются чаще всего
itemprop вне itemscope. Самая частая. Свойство работает только внутри элемента, у которого объявлен тип. Вынесли цену в соседний блок — она потерялась.
Товар без цены. Если у части товаров цены нет, Product без offers для поиска бесполезен, а пустая цена или ноль — хуже, чем ничего. Либо выводите цену, либо не размечайте эти карточки как товар.
Разметка того, чего нет на странице. Отзывы, подтянутые с Яндекс.Карт и размеченные на своём сайте, рейтинг без единого отзыва, цена, которой не видно, — это нарушение правил обоих поисковиков, и за него разметку перестают учитывать целиком.
Крошки в разметке, которых нет на странице. Разметка описывает то, что человек видит. Нет цепочки в вёрстке — не надо её выдумывать в JSON-LD.
Один тип на всё. Article на главной, Product на категории, LocalBusiness на каждой странице сайта — поисковик это читает, но пользы не прибавляется, а ошибок прибавляется.
Разметка «на всякий случай» в каждом <div>. Размечать нужно сущности, а не вёрстку. Десять вложенных itemscope без смысла только мешают валидатору.
ТЗ разработчику
Чтобы внедрение не растянулось на месяц, отдавайте задачу списком переменных, а не ссылкой на schema.org:
- На каких шаблонах ставим: карточка товара, категория, статья, контакты, главная.
- Какие поля подставляются из базы: название, цена, валюта, наличие, артикул, изображение, бренд.
- Что делать, когда поле пустое: не выводить блок целиком, а не подставлять ноль.
- Формат: JSON-LD в шаблоне или атрибуты в вёрстке — по таблице выше.
- Как проверяем приёмку: обе ссылки на валидаторы и список страниц для проверки.
Если разметку делает подрядчик со стороны, пункт про приёмку — не формальность: по нему видно, сделана работа или сдана. О том, как проверить исполнителя до подписания договора, — в разборе как выбрать 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-плагины, и там чаще встречается обратная проблема: плагин размечает всё подряд, включая страницы, где это не нужно.
Спросите в чате сообщества
Самое интересное всплывает в обсуждении: в чате отвечают практикующие специалисты, те, кто занимается продвижением каждый день. Приносите свои случаи и спорьте — вступление бесплатное, в том числе для заказчиков.