
Виды микроразметки на сайте в статьях обычно валят в один список: Schema.org, микроформаты, Open Graph, JSON-LD, RDFa. Список выглядит внушительно и почти не помогает, потому что смешивает два разных вопроса — что вы описываете и чем это записано. Словарь задаёт смысл: вот это организация, вот это товар, вот это цена. Формат задаёт способ записи: отдельным блоком в коде или атрибутами внутри вёрстки. Разложив список по этим двум осям, дальше уже несложно понять, что ставить на карточку товара, что на страницу услуг, а что не ставить вообще.
Практический интерес здесь предельно конкретный. Разметка не поднимает позиции сама по себе — поисковые системы не устают это повторять, и опыт подтверждает. Она делает другое: даёт право на расширенный сниппет, снижает вероятность, что робот неправильно поймёт содержимое страницы, и служит опорой для генеративных ответов, которые всё чаще стоят между вашим сайтом и человеком. Разница между «поднимает позиции» и «повышает кликабельность на той же позиции» на деньгах видна одинаково, только достигается она разными способами.
Что микроразметка даёт на практике
Робот читает страницу как поток текста и тегов. Строка «Диван Осло, 34 900, в наличии, 4,8» для него — набор символов, в котором надо угадать, что название, что цена, а что оценка. Разметка снимает угадывание: каждому фрагменту приписывается роль из общего словаря, одинакового для всех сайтов.
Из этого следуют три эффекта, и полезно понимать, какой из них насколько надёжен.
| Эффект | В чём выражается | Насколько на это можно рассчитывать |
|---|---|---|
| Расширенный сниппет | Хлебные крошки, цена, наличие, рейтинг, даты в результатах поиска | Право на показ, а не гарантия: решение принимает поиск |
| Точность понимания | Робот не путает цену со скидкой, а автора — с героем материала | Работает всегда, если разметка соответствует видимому содержимому |
| Передача данных в сервисы | Товарные площадки, карточки организаций, агрегаторы отзывов | Зависит от конкретного сервиса и его требований |
| Опора для нейросетевых ответов | Факты берутся из структурированного блока, а не выуживаются из текста | Повышает шанс на корректное цитирование, гарантий нет |
| Прямое влияние на позиции | — | Не влияет; это подтверждали и Google, и Яндекс |
Последняя строка объясняет, почему разметка так плохо продаётся как отдельная услуга и так хорошо окупается как часть работы над шаблонами. Её ценность не в позиции, а в кликабельности и в том, что содержимое страницы становится машиночитаемым — что с ростом доли ответов, собранных алгоритмами, стоит дороже, чем раньше.
Три формата записи: JSON-LD, микроданные, RDFa
Формат — это способ, которым словарь попадает в код. Смысл при этом одинаковый: одну и ту же карточку товара можно описать любым из трёх, и поиск поймёт все три.
| Формат | Как выглядит | Плюсы | Минусы |
|---|---|---|---|
| JSON-LD | Отдельный блок скрипта с типом application/ld+json в head или в теле страницы | Не трогает вёрстку, легко генерировать и править, удобно версионировать | Данные дублируются: изменили цену в шаблоне — надо менять и в блоке |
| Микроданные | Атрибуты itemscope, itemtype, itemprop прямо в HTML-тегах | Данные берутся из того же места, что видит человек, — рассинхрона не бывает | Захламляет вёрстку, ломается при редизайне, тяжело отлаживать |
| RDFa | Атрибуты vocab, typeof, property в тегах | Гибче в описании связей между сущностями | Избыточен для типовых задач, поддержка в движках хуже |
Практический выбор в большинстве случаев — JSON-LD. Он не зависит от вёрстки, поэтому переживает смену шаблона; его можно собрать на сервере из тех же данных, что рисуют страницу; ошибку в нём видно сразу, потому что блок читается целиком. Микроданные остаются оправданными там, где разметку добавляют к готовому шаблону без доступа к серверной части — например, правкой темы на конструкторе.
Одно предупреждение по JSON-LD: он должен быть в исходном коде страницы, а не появляться после выполнения сценариев на стороне браузера. Разметка, которую дорисовывает менеджер тегов, часто не попадает в обработку, и вы получаете формально валидный блок, которого поиск не видит. Проверяется это просмотром исходного кода страницы, а не панелью разработчика — панель показывает уже собранный документ.
Schema.org: как устроен словарь и как выбрать тип
Schema.org — совместный словарь, который поддерживают крупнейшие поисковые системы, включая Яндекс. Устроен он как дерево типов: есть общая вершина Thing, от неё идут ветки CreativeWork, Organization, Product, Event, Person и так далее, а у каждого типа — набор свойств. Свойством может быть строка, число, дата или другой объект: например, у Product свойство offers содержит объект Offer с ценой, валютой и наличием.
Выбор типа — единственное место, где ошибаются системно, поэтому вот ориентир по типовым страницам.
| Страница | Основной тип | Что добавить рядом |
|---|---|---|
| Главная сайта компании | Organization | BreadcrumbList не нужен, WebSite — по желанию |
| Страница контактов, филиал с адресом | LocalBusiness или его подтип | PostalAddress, OpeningHoursSpecification, geo |
| Карточка товара | Product | Offer, AggregateRating, Review, BreadcrumbList |
| Страница услуги | Service | Organization как provider, BreadcrumbList |
| Статья блога | Article или BlogPosting | Person как автор, даты, BreadcrumbList |
| Раздел каталога | Разметка не нужна | Только BreadcrumbList |
| Страница с вопросами и ответами | FAQPage | Ничего, вопросы должны быть видимы |
| Страница с видео | VideoObject | Длительность, дата загрузки, обложка |
Строка про раздел каталога не опечатка. Списки товаров размечать типом Product не нужно и вредно: тип описывает один товар, а не витрину. Всё, что имеет смысл на странице категории, — хлебные крошки.
Подробнее об этом — в статье «Виды поисковой SEO оптимизации».
Организация, филиалы и контакты
Разметка организации решает задачу, которую иначе решать нечем: однозначно связать сайт с юридическим лицом или предпринимателем, его контактами и профилями. Минимальный набор свойств — название, адрес сайта, логотип, телефон, адрес. Отдельно стоит свойство sameAs: в нём перечисляют ссылки на профили компании в справочниках и соцсетях, и это самый прямой способ сообщить поиску, что вот эти страницы — про вас, а не про однофамильца.
LocalBusiness — подтип организации для бизнеса с физической точкой: магазин, клиника, мастерская, кафе. Здесь появляются часы работы, координаты и диапазон цен. Ключевое условие — точка действительно существует и адрес указан на сайте. Ставить LocalBusiness интернет-магазину без офиса, куда можно прийти, не следует: разметка описывает то, чего нет, а это прямое нарушение правил.
Важная деталь про несколько филиалов. Каждому филиалу нужна своя страница со своим адресом и своей разметкой. Попытка перечислить пять адресов в разметке на одной странице контактов даёт кашу, из которой сервисы не могут вытащить конкретную точку. Одна страница — одна организация или один филиал.
Товары, цены и отзывы
Product — самый требовательный тип, и одновременно самый выгодный: именно он даёт в выдаче цену, наличие и звёзды рейтинга. Обязательный минимум — название и предложение с ценой, валютой и статусом наличия. Дальше по возрастанию пользы: изображение, описание, бренд, артикул и штрихкод, состояние товара, срок действия цены.
Про цену два правила, нарушение которых встречается чаще всего. Цена в разметке должна совпадать с ценой, которую видит человек на той же странице, включая ситуацию со скидками: если на странице зачёркнуто 40 000 и написано 34 900, в разметку идёт 34 900. И цена должна быть числом без пробелов и символа валюты — валюта передаётся отдельным свойством.
Из чего складывается продвижение сайта и как оно работает:
Отзывы — отдельная история с подвохом. Review описывает один отзыв, AggregateRating — сводную оценку. Оба типа работают, когда отзывы реальные и видны на самой странице. А вот показ звёзд для отзывов о самой компании, размещённых на её же сайте, ограничен: такие оценки считаются заинтересованными, и расширенный сниппет по ним не выводится. Звёзды остаются рабочей историей для отзывов о конкретных товарах, а не для строчки «нас оценили на 5,0» на главной.
Вывод отсюда не «не размечайте отзывы», а «не стройте на них план»: попытка обойти ограничение фиктивными оценками приводит к санкциям за разметку, не соответствующую содержимому.
BreadcrumbList — самая недооценённая разметка и, пожалуй, единственная, которую стоит поставить вообще везде, кроме главной. Она показывает путь до страницы и заменяет в сниппете голый адрес на понятную цепочку разделов. Условия простые: цепочка совпадает с видимыми на странице крошками, элементы идут по порядку, у каждого есть позиция и ссылка. Последний элемент — текущая страница, ссылку на саму себя обычно не ставят.
Тему разбирал отдельно: «Поиск битых ссылок на сайте».
Article и BlogPosting описывают материал: заголовок, изображение, даты публикации и изменения, автор. Автор указывается объектом Person или Organization, а не строкой — это важно, потому что строка не позволяет связать материал с профилем автора. Дата изменения ставится только тогда, когда текст действительно правился: обновление даты без правки содержимого — приём, который поиск давно научился отличать.
FAQPage требует отдельного разговора. Несколько лет назад эта разметка щедро давала раскрывающиеся вопросы прямо в выдаче, и её ставили массово. Сейчас показ таких блоков резко ограничен, и рассчитывать на расширенный сниппет по ней не стоит. Означает ли это, что разметка стала бесполезной? Нет, но её ценность сместилась: структурированный блок вопросов и ответов остаётся удобной опорой для генеративных ответов и для голосовых сервисов. Ставить её имеет смысл там, где вопросы реально нужны людям и видны на странице, и не имеет — на всех страницах подряд одинаковым набором из пяти вопросов.
То же касается HowTo — разметки пошаговых инструкций. Её показ в выдаче тоже свернули. Это общая закономерность: набор расширенных сниппетов меняется, поэтому строить стратегию вокруг одного конкретного вида результатов рискованно, а размечать содержимое по существу — нет.
Микроформаты и другие ранние схемы
До Schema.org согласованного словаря не было, и роль стандарта играли микроформаты — договорённость размечать данные через обычные классы в вёрстке. Самые известные: hCard для контактов и людей, hCalendar для событий, hReview для отзывов, hRecipe для рецептов, hProduct для товаров. Позже появилась вторая версия с именами вида h-card и p-name.
Их достоинство — простота: никаких отдельных блоков, только классы на тех же элементах, которые и так есть в вёрстке. Недостаток решающий: словарь узкий, развитие фактически остановилось, а поисковые системы перевели документацию и требования на Schema.org.
Практическая позиция такая. Специально внедрять микроформаты сегодня незачем — всё, что они описывают, лучше описывается через Schema.org. Если микроформаты уже стоят на сайте — например, остались от старого шаблона, — снимать их не нужно: они не мешают и не конфликтуют. Ставить рядом Schema.org можно и нужно, две схемы на одной странице друг другу не противоречат. Единственное, чего делать не стоит, — оставлять микроформаты в качестве единственной разметки на новом проекте, рассчитывая на расширенные сниппеты.
Open Graph: соседняя разметка для соцсетей и мессенджеров
Если нужна помощь по теме — заказать сайт.
Open Graph часто попадает в списки видов микроразметки, и формально это оправдано: он тоже описывает страницу набором свойств и технически построен на RDFa. Но задача у него другая. Schema.org объясняет содержимое поисковым роботам, Open Graph собирает карточку превью при отправке ссылки в мессенджер или соцсеть: заголовок, описание, картинка, тип, адрес.
Отсюда два практических следствия. Первое: одно не заменяет другое. Наличие тегов og:title и og:image никак не помогает получить расширенный сниппет в поиске, а разметка Product никак не влияет на то, как ссылка выглядит в мессенджере. Ставят обе. Второе: у Open Graph свои правила — требования к размеру и весу картинки, поведение кэша превью, отличия между площадками. Разбор с минимальным набором тегов, размерами картинки и типовыми поломками есть в отдельном материале про метатег Open Graph, здесь повторять его нет смысла.
Смежный материал по теме — «Хлебные крошки на сайте что это».
Единственное, что стоит держать в голове при обзоре видов: Open Graph нужен любому сайту, где ссылками делятся, и это гораздо более широкий круг, чем кажется. Ссылку на карточку товара отправляют в переписке чаще, чем публикуют в соцсети, и пустая или битая карточка превью в этот момент стоит вам заказа.
Проверка разметки и типовые ошибки
Проверять надо всегда и до выкатки на весь сайт. Инструменты:
- Валидатор микроразметки в Яндекс Вебмастере — проверяет Schema.org, микроформаты, Open Graph и RDFa, показывает, что именно робот Яндекса извлёк со страницы.
- Тест расширенных результатов Google — показывает, на какие виды сниппетов страница претендует и что мешает.
- Валидатор Schema.org — проверяет корректность разметки безотносительно требований конкретного поиска.
- Отчёты в Вебмастере и Search Console — единственный способ увидеть ошибки массово, по всем страницам сразу, а не по одной.
Порядок разумной проверки: сначала одна страница каждого типа в валидаторе, затем выкатка на раздел, затем через две-три недели — отчёт по всему сайту. Ошибки в шаблоне размножаются на тысячи страниц, и ловить их поштучно потом дороже.
| Ошибка | Чем оборачивается | Как чинить |
|---|---|---|
| В разметке данные, которых нет на странице | Нарушение правил, вплоть до санкций за спамную разметку | Правило простое: размечать только видимое |
| Цена в разметке не совпадает с ценой на странице | Сниппет с неверной ценой, потеря доверия и жалобы | Собирать разметку из тех же данных, что и вёрстку |
| Два блока разметки от темы и от плагина | Конфликтующие данные, поиск выбирает произвольно | Отключить одну из систем, оставить единственный источник |
| JSON-LD добавляется скриптом в браузере | Разметки для робота фактически нет | Генерировать на сервере, проверять по исходному коду |
| Разметка в скрытом блоке | Не засчитывается, риск претензий | Показывать содержимое человеку |
| Даты в произвольном формате | Свойство игнорируется | Формат ISO: год-месяц-день, при необходимости со временем |
| LocalBusiness без реального адреса | Некорректные данные в справочниках, риск санкций | Использовать Organization, если точки нет |
| FAQPage на всех страницах с одним набором вопросов | Разметка обесценивается, польза нулевая | Ставить там, где вопросы уникальны и полезны |
| Разметка на закрытых от индексации страницах | Работа впустую | Сверить со списком индексируемых страниц |
Первая строка таблицы — единственное место, где разметка может навредить, а не просто не помочь. Правила у обеих поисковых систем на этот счёт совпадают и формулируются одинаково: структурированные данные должны описывать то, что реально есть на странице и видно человеку. Нарисованный рейтинг 4,9 при отсутствии отзывов, цена ниже реальной, выдуманные вопросы и ответы ради блока в выдаче — это не хитрость, а повод для ручных мер, после которых расширенные сниппеты у сайта перестают показываться вообще.
Частые вопросы
Поднимет ли микроразметка позиции? Сама по себе — нет, и это официальная позиция поисковых систем. Она даёт право на расширенный сниппет и делает содержимое машиночитаемым. Рост кликов на прежней позиции трафик увеличивает, но это другой механизм, и обещать по нему позиции нельзя.
Какой формат выбрать, если сайт на популярной системе управления? Смотрите, что уже умеет ваш движок или сборка, и не плодите второй источник. Большинство современных решений отдаёт JSON-LD — этого достаточно. Если разметка ставится вручную поверх готовой темы без доступа к серверной части, микроданные проще.
Можно ли поставить сразу все типы разметки на всякий случай? Нельзя, и это одна из самых частых ошибок. Каждый тип описывает конкретную сущность; лишние типы либо игнорируются, либо создают противоречия. Одна страница — одна основная сущность плюс хлебные крошки.
Нужна ли разметка, если сайт небольшой и товаров нет? Нужна в минимальном объёме: организация на главной или странице контактов, хлебные крошки на внутренних страницах, Article на материалах блога. Это делается один раз в шаблоне и дальше работает без обслуживания.
Как быть с разметкой отзывов, если её звёзды больше не показывают? Разделять два случая. Отзывы о товарах и услугах с реальными оценками размечать стоит — они и показываются, и используются сервисами. Сводную оценку компании на своей же странице размечать можно, но рассчитывать на звёзды в выдаче не следует.
Через сколько появится расширенный сниппет? После переобхода страницы, то есть от нескольких дней до нескольких недель. Ускорить можно переобходом через Вебмастер. Если через месяц после корректной разметки сниппет не появился — это не ошибка, поиск не обязан показывать расширенный результат по каждому запросу.
Влияет ли разметка на ответы нейросетей? Прямой зависимости никто не подтверждал, но механика очевидна: факт, записанный отдельным полем, извлекается надёжнее, чем тот же факт в середине абзаца. Поэтому цену, адрес, часы работы, автора и даты стоит держать и в тексте, и в разметке.
Коротко
- Виды микроразметки делятся на две оси: словарь — Schema.org, микроформаты, Open Graph; формат записи — JSON-LD, микроданные, RDFa. Смешивать их в один список бессмысленно.
- Рабочее сочетание для большинства сайтов — словарь Schema.org, записанный через JSON-LD, сгенерированный на сервере и видимый в исходном коде страницы.
- Тип выбирают по сущности страницы: Organization и LocalBusiness для компании, Product с Offer для товара, Article для материала, BreadcrumbList почти везде.
- Набор расширенных сниппетов меняется: показ блоков вопросов, инструкций и звёзд для самооценки компании ограничивали, поэтому план не строят вокруг одного вида результатов.
- Микроформаты доживают свой век: снимать существующие не надо, внедрять новые незачем; Open Graph решает соседнюю задачу и нужен дополнительно, а не вместо.
- Единственный способ навредить разметкой — описать то, чего на странице нет; за это снимают расширенные сниппеты целиком.
Если не уверены, какая разметка нужна вашим страницам и не конфликтуют ли между собой блоки от темы и плагинов, приходите на SEO-консультацию: разберём типы страниц, проверим, что робот реально извлекает, и составим список правок по шаблонам.
Увеличьте позиции и продажи вашего сайта
Профессиональное SEO-продвижение с гарантией результата. Выберите подходящую услугу:
Остались вопросы по продвижению?
Меня зовут Анатолий Кузнецов, я SEO-оптимизатор с 20-летним стажем. Разберу ваш сайт, отвечу на вопросы и подскажу, что улучшить для роста позиций в Яндексе и Google.
Связаться со мной →
Комментарии
Игнат Нечипоренко
Про два блока разметки от темы и от плагина — прямо про нас. Обнаружили случайно: в валидаторе Яндекса на карточке товара оказалось два Product с разной ценой, одна с учётом скидки, вторая без. Сколько это шло, неизвестно, но сниппет периодически показывал странные цифры.
Анатолий Кузнецов автор
Случай типовой и лечится в одно действие, только это действие надо выбрать правильно. Не пытайтесь править обе разметки так, чтобы они совпали, — при следующем обновлении темы или плагина они снова разойдутся. Оставьте единственный источник: обычно проще отключить разметку в теме, потому что плагин настраивается гибче и обновляется чаще. После отключения обязательно проверьте карточку в валидаторе повторно — иногда тема отдаёт разметку не одним куском, а вставками в вёрстке, и часть остаётся. И заведите привычку прогонять по одной странице каждого типа после любого обновления движка: разметка ломается именно там.
Семён Нестеренко
Хорошо, что про хлебные крошки написано отдельно. У нас их не было в разметке вообще, только в вёрстке. Поставили на все внутренние страницы — в выдаче вместо длинного адреса появилась цепочка разделов, кликабельность в отчётах подросла заметно, при том что позиции не менялись.
Фёдор Малафеев
Не соглашусь с тем, что FAQPage потеряла смысл. Мы держим её на страницах услуг, и вопросы регулярно всплывают в ответах ассистентов — люди приходят и говорят фразами прямо из наших ответов. Позиций это не даёт, но узнаваемость даёт.
Анатолий Кузнецов автор
Мы с вами не спорим — в статье как раз сказано, что ценность сместилась, а не исчезла. Разница между вашим случаем и массовым внедрением в том, что у вас вопросы уникальные для каждой услуги и отвечают на реальные обращения клиентов. Когда FAQPage ставят на все страницы одинаковым набором из пяти общих вопросов, ни выдача, ни ассистенты этого не используют, потому что ценность блока нулевая. Добавлю практическое: раз вы видите отдачу, следите за тем, чтобы ответы были самодостаточными — по два-три предложения, с числом или условием внутри. Обрывки вроде «зависит от проекта» не цитируются ничем.
Белла Нилова
Замечание про JSON-LD, вставляемый через менеджер тегов, стоит целой статьи. У нас именно так и было: агентство отчиталось о внедрении, в панели разработчика блок виден, все довольны. В исходном коде страницы его не было, и Вебмастер разметки не видел.
Лариса Муравлёва
Вопрос про несколько филиалов. У нас сеть из девяти пунктов выдачи, все на одной странице «Контакты» списком. Сделать девять отдельных страниц ради разметки кажется избыточным — они одинаковые по содержанию, только адрес и часы разные. Не получим ли мы девять почти одинаковых страниц и проблемы с дублями?
Анатолий Кузнецов автор
Отдельные страницы делать стоит, но не ради разметки — ради спроса. Люди ищут пункт выдачи с названием района или улицы, и такая страница отвечает на этот запрос, а общий список контактов не отвечает. Чтобы не получить дубли, каждая должна иметь своё: адрес и как добраться, ориентиры, часы, схему проезда, телефон, фотографию входа. Этого достаточно, чтобы страницы различались по существу, а не по одной строке адреса. Разметка LocalBusiness ставится на каждую свою, страница контактов остаётся общим списком со ссылками и размечается как Organization. Если девять полноценных страниц сейчас не потянуть — начните с трёх самых загруженных точек и посмотрите на показы через месяц.
Трофим Неверов
Про цену без пробелов и символа валюты — банальность, но именно на ней у нас всё и ломалось. Шаблон подставлял отформатированную строку с неразрывными пробелами, валидатор ругался, а разработчик не понимал, что не так, потому что визуально всё правильно.
Эдуард Мызников
Полезное разделение словаря и формата записи. Раньше искренне считал, что JSON-LD и Schema.org — конкурирующие варианты и надо выбрать что-то одно. Теперь понятно, что это как язык и способ записи, а спорить можно только про второе.
Клавдия Мокроусова
Вопрос по отзывам. У нас производственная компания, товаров как таковых нет, есть услуги и живые отзывы клиентов на отдельной странице. Размечать их как Review имеет смысл, если звёзды всё равно не покажут? Или это работа впустую?
Анатолий Кузнецов автор
Ограничение касается сводной оценки компании, выставленной на её же сайте, — это и есть заинтересованная самооценка. Отдельные отзывы об услугах размечать имеет смысл, и вот почему. Во-первых, разметка Review связывает текст отзыва с автором, датой и предметом отзыва, и эти связи используются при машинном разборе страницы. Во-вторых, размеченные отзывы корректнее попадают в генеративные ответы, когда речь идёт о репутации. В-третьих, это дешёво: разметка ставится один раз в шаблоне страницы отзывов. Только не ставьте рядом AggregateRating со средним баллом по компании — вот он бесполезен, а при выдуманных цифрах ещё и опасен.
Прохор Мостовой
Ценно, что про раздел каталога сказано прямо. У нас предыдущий подрядчик разметил категории как Product, объясняя это тем, что «там же товары». Валидатор Google выдавал десятки ошибок по обязательным полям, и никто не мог понять, откуда они берутся.
Оксана Мухортова
Взяла в работу совет проверять по одной странице каждого типа после обновления движка. У нас после обновления темы слетела разметка Article на всём блоге — заметили через два месяца, когда в отчётах Search Console провалилось число страниц с корректными данными.
Герман Мигунов
Спорный, на мой взгляд, тезис про микроформаты. Яндекс их поддерживает до сих пор, и у нас на сайте медцентра hCard с контактами работает много лет без нареканий. Зачем переделывать то, что не сломано, ради модного словаря?
Анатолий Кузнецов автор
Переделывать не нужно, и в статье это сказано прямо: снимать существующие микроформаты не надо. Вопрос не в моде, а в охвате. hCard описывает контакты и больше ничего — у вас медцентр, а значит есть услуги, врачи, расписание приёма, отзывы, статьи. Всё это Schema.org описывает типами, которых в микроформатах просто нет. Плюс расширенные сниппеты и передача данных в справочники строятся на Schema.org, а на микроформатах — нет. Практический порядок такой: hCard оставьте как есть, добавьте на страницу контактов LocalBusiness через JSON-LD, дальше по мере надобности разметьте врачей и услуги. Конфликта между двумя схемами не возникнет, а возможностей станет больше.
Софья Мерзликина
Добавлю по проверке. Отчёты в Search Console и Вебмастере действительно единственный способ увидеть массовые ошибки. Мы полгода проверяли разметку поштучно в валидаторе и были уверены, что всё хорошо, пока не открыли сводный отчёт: ошибка в шаблоне карточки касалась четырёх тысяч страниц.