Перейти к содержимому
Выберите тему

Структурированные данные и JSON-LD

Что такое структурированные данные, словарь Schema.org и формат JSON-LD, зачем они сайту, готовому к поиску и AI, и какая разметка нужна магазину, блогу, форуму, базе знаний и фотогалерее

Три разных слова

Что описываем

  • структурированные данныесами сведения о странице в машинном виде

Какими словами

  • Schema.orgобщий словарь типов и свойств: Product, Article, price, author

Как записываем

  • JSON-LDотдельный блок данных в коде страницы
  • микроданные, RDFaатрибуты прямо в HTML-тегах

Словарь один, способов записи три. Google рекомендует JSON-LD.

В обиходе всё это называют микроразметкой. Слово привычное, но неточное: микроданные - лишь один из трёх форматов.

Блок JSON-LD лежит в коде страницы и на экране не виден:

<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Чайник электрический Volna 1,7 л",
"sku": "VLN-17-W",
"brand": { "@type": "Brand", "name": "Volna" },
"offers": {
"@type": "Offer",
"price": "2490",
"priceCurrency": "RUB",
"availability": "https://schema.org/InStock"
}
}
</script>

@context называет словарь, @type - тип сущности. Остальное - свойства этого типа. Регистр букв важен: Product и product - разные слова.

Что машина узнаёт на каждом слое
  1. robots.txtМожно ли сюда идти
  2. sitemap.xmlКакие адреса существуют
  3. llms.txtКакие материалы особенно полезны и где они
  4. JSON-LDЧто находится на этой страницесущность, её свойства и связи
  5. HTML / MarkdownЧто здесь написано

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

llms.txt и структурированные данные работают в паре, но на разных шагах. Первый подсказывает, куда идти. Вторые объясняют, куда машина пришла. Один слой другого не заменяет: Сайт, готовый к AI.

Что известно, а что нет

Подтверждено

  • Google использует структурированные данные, чтобы понимать содержание страницы, и рекомендует формат JSON-LD.
  • Google Merchant Center читает разметку товарных страниц и по ней обновляет цену и наличие в товарных предложениях.
  • Яндекс для товарных страниц с типом Product и предложением Offer даёт данным из разметки максимальный приоритет перед другими источниками.
  • У обеих поисковых систем есть свои валидаторы разметки.

Не доказано

  • Что конкретная AI-система читает JSON-LD чужого сайта напрямую. Говорить об этом можно только по документации самой системы.
  • Что разметка увеличивает число цитирований в ответах нейросетей.

Чего это не означает

  • Разметка не условие индексации: страницу найдут и без неё.
  • Разметка не фактор ранжирования. Она делает страницу пригодной для расширенных результатов, но показ никто не гарантирует.

Разметку читают поисковые системы, и это записано в их документации. Через поиск она доходит и до AI-систем.

Польза для AI не сводится к прямому чтению. AI-поиск и агенты часто берут сведения из поисковых систем, а те разметку читают.

Тип выбирают по тому, что на самом деле находится на странице.

Сайт Страница Тип Schema.org Главные свойства
Любой каждая страница WebPage, BreadcrumbList название, адрес, даты, путь от главной
Любой главная WebSite, Organization название, логотип, контакты, адрес, профили в соцсетях
Интернет-магазин товар Product, Offer название, артикул, бренд, цена, валюта, наличие, рейтинг
Блог, медиа статья BlogPosting, Article, Person заголовок, автор, дата публикации и обновления, изображение
Форум, сообщество обсуждение DiscussionForumPosting, Comment тема, автор, дата, комментарии, голоса
Вопросы и ответы вопрос с принятым ответом QAPage, Question, Answer вопрос, ответы, отмеченное решение
База знаний вопрос из FAQ FAQPage, Question, Answer вопрос и ответ владельца сайта
Фотогалерея фотография, альбом ImageObject, ImageGallery адрес файла, подпись, размеры, дата загрузки

QAPage и FAQPage легко спутать. Первый тип - для страницы, где вопрос задал один человек, а отвечают другие. Второй - для списка вопросов, на которые отвечает сам владелец сайта.

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

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

Productтовар

  • nameназвание, как на странице
  • skuартикул продавца
  • gtin13 / mpnштрихкод и код производителя, если они есть
  • brandBrand: имя бренда
  • imageадреса изображений
  • offersOffer: предложение
    • priceчисло с точкой, без пробелов и знака валюты
    • priceCurrencyкод валюты: RUB, USD, EUR
    • availabilityInStock, OutOfStock, BackOrder
    • urlадрес страницы товара
  • aggregateRatingAggregateRating: средняя оценка и число отзывов
  • reviewReview: отзывы с автором и текстом

Рядом со страницей товара размечают хлебные крошки (BreadcrumbList) и сам магазин (OnlineStore или Organization).

  • Цена в разметке равна цене на странице. Не «от», не старая, не цена для другого региона.
  • Валюта записывается трёхбуквенным кодом. Знак «₽» машина не разберёт.
  • Наличие берётся из складского учёта, а не ставится InStock всем товарам сразу.
  • Товар без цены не получает Offer. Пустое или нулевое предложение хуже отсутствующего.

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

AggregateOffer для вариантов одного товара не подходит. Этот тип описывает предложения разных продавцов, и Google для карточек продавца требует именно Offer.

gtin - международный штрихкод, mpn - код детали у производителя. По ним системы сопоставляют один и тот же товар в разных магазинах.

Выдумывать их нельзя. У штрихкода есть контрольная цифра, и неверное значение хуже пустого поля. Артикул магазина - это sku, а не mpn.

Крупные площадки получают данные о товаре двумя путями: из фида и со страницы. Если пути расходятся, площадка замечает.

Один источник - два выхода
  1. Каталог магазинацена, наличие, бренд, штрихкод
  2. Разметка на страницеProduct и Offer в JSON-LD
  3. Товарный фидтот же товар для Merchant Center и Яндекса

Разметка и фид должны собираться из одних и тех же полей каталога. Тогда они не разойдутся.

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

Практический вывод: бренд, штрихкод, цвет и размер должны браться в разметку и в фид из одной характеристики товара.

Если магазина ещё нет, проще начать с конструктора, где каталог сам передаётся в товарный поиск Яндекса без отдельного фида: так устроен Яндекс KIT.

  • Разметка описывает то, что видит человек. Отзыв, цена или автор в разметке есть и на странице.
  • Ничего не выдумывается. Нет данных - нет свойства.
  • Тип соответствует странице. Страница категории - не Product, страница «О компании» - не Article.
  • Сущности связаны. Статья ссылается на автора и издателя, товар - на продавца, страница - на сайт. Для связей служит @id.
  • Один источник. Если разметку выводят и тема сайта, и расширение, машина получает два противоречивых описания.
  • Разметка обновляется вместе с содержимым. Изменилась цена - изменилась и разметка.
  1. Открой код страницы и найди блок application/ld+json. Он должен быть в ответе сервера, а не появляться после скриптов.
  2. Проверь страницу в Rich Results Test от Google: какие типы найдены и есть ли ошибки.
  3. Проверь её же в валидаторе микроразметки Яндекса.
  4. Сверь цену, наличие и название с тем, что на экране.
  5. Убедись, что разметка одна: нет второго блока того же типа от темы.
  6. Повтори проверку на трёх-четырёх разных страницах, а не на одной удачной.

Адреса инструментов и разбор ошибок: Проверка файлов и разметки.

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

Вручную остаётся решить, какие характеристики считать брендом и штрихкодом, заполнить карточку компании и проверить результат.

  • Webasyst

    Shop-Script

    Разметка товаров и магазина

    Источник данных
    Товары, артикулы, цены, наличие, отзывы, категории и настройки магазина
    Описывает
    ProductOfferAggregateRatingBreadcrumbListOnlineStore

    готовое решение

    Посмотреть решение
  • Webasyst

    Сайт

    Разметка страниц и компании

    Источник данных
    Страницы сайта, их даты и вложенность, карточка компании из настроек
    Описывает
    WebPageOrganizationWebSiteBreadcrumbList

    готовое решениеБазовая версия бесплатна

    Посмотреть решение
  • Webasyst

    Блог

    Разметка статей и авторов

    Источник данных
    Статьи, даты публикации и обновления, авторы, рубрики и теги
    Описывает
    BlogPostingPersonBlogBreadcrumbList

    готовое решение

    Посмотреть решение
  • Webasyst

    Хаб

    Разметка обсуждений и ответов

    Источник данных
    Опубликованные темы, комментарии, голоса и отмеченное решение
    Описывает
    DiscussionForumPostingCommentQAPagePerson

    готовое решение

    Посмотреть решение
  • Webasyst

    Поддержка

    Разметка вопросов и ответов

    Источник данных
    Только публичные вопросы и ответы; заявки не читаются
    Описывает
    FAQPageQuestionAnswerBreadcrumbList

    готовое решение

    Посмотреть решение
  • Webasyst

    Фото

    Разметка фотографий и альбомов

    Источник данных
    Публичные фотографии и альбомы: подписи, теги, размеры, дата загрузки
    Описывает
    ImageObjectImageGalleryBreadcrumbList

    готовое решение

    Посмотреть решение

Промокод на скидку за первый заказ в Webasyst:BE462B3B6D

Коммерческие расширения из магазина Webasyst. Каждое добавляет в код страницы блок JSON-LD, собранный из данных приложения, без правок темы. Разметку от расширения проверяют теми же валидаторами, что и написанную вручную.

Как это устроено в одной системе: llms.txt и JSON-LD в Webasyst. Все расширения собраны на странице разработчика в магазине Webasyst.