# JSON-LD: что это и как разметить сайт для поиска и нейросетей

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

Страница: https://llms-full-txt.ru/guides/json-ld/
Указатель сайта: https://llms-full-txt.ru/llms.txt

Структурированные данные - это описание страницы, написанное для машины: что здесь находится, как оно называется, кто автор, сколько стоит, есть ли в наличии.

Человек понимает это из оформления. Программе нужно сказать прямо. Для этого есть общий словарь [Schema.org](https://schema.org/) и удобный формат записи JSON-LD.

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

## Словарь, формат и сами данные

- Три разных слова
- Что описываем
- структурированные данные
- сами сведения о странице в машинном виде
- Какими словами
- Schema.org
- общий словарь типов и свойств: Product, Article, price, author
- Как записываем
- JSON-LD
- отдельный блок данных в коде страницы
- микроданные, RDFa
- атрибуты прямо в HTML-тегах
- Словарь один, способов записи три. Google рекомендует JSON-LD.

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

## Как это выглядит

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

```html
<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` - разные слова.

## Место в общей схеме

- Что машина узнаёт на каждом слое
- сущность, её свойства и связи

`llms.txt` и структурированные данные работают в паре, но на разных шагах. Первый подсказывает, куда идти. Вторые объясняют, куда машина пришла. Один слой другого не заменяет: [Сайт, готовый к AI](https://llms-full-txt.ru/guides/ai-ready-site/).

## Кто это читает

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

- [Google](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data) использует структурированные данные, чтобы понимать содержание страницы, и рекомендует формат JSON-LD.
- [Google Merchant Center](https://support.google.com/merchants/answer/3246284) читает разметку товарных страниц и по ней обновляет цену и наличие в товарных предложениях.
- [Яндекс](https://yandex.ru/support/webmaster/ru/supported-schemas/strict-microdata-offers) для товарных страниц с типом `Product` и предложением `Offer` даёт данным из разметки максимальный приоритет перед другими источниками.
- У обеих поисковых систем есть свои валидаторы разметки.

**Не доказано**

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

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

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

Польза для 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` легко спутать. Первый тип - для страницы, где вопрос задал один человек, а отвечают другие. Второй - для списка вопросов, на которые отвечает сам владелец сайта.

## Интернет-магазин: главный пример

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

- Из чего состоит разметка товара
- товар
- название, как на странице
- артикул продавца
- штрихкод и код производителя, если они есть
- Brand: имя бренда
- адреса изображений
- Offer: предложение
- число с точкой, без пробелов и знака валюты
- код валюты: RUB, USD, EUR
- InStock, OutOfStock, BackOrder
- адрес страницы товара
- AggregateRating: средняя оценка и число отзывов
- Review: отзывы с автором и текстом

### Цена и наличие

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

### Варианты товара

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

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

### Штрихкод и код производителя

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

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

### Разметка и товарный фид

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

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

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

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

Если магазина ещё нет, проще начать с конструктора, где каталог сам передаётся в товарный поиск Яндекса без отдельного фида: так устроен [Яндекс KIT](https://llms-full-txt.ru/go/kit/).

## Правила, общие для любого сайта

- **Разметка описывает то, что видит человек.** Отзыв, цена или автор в разметке есть и на странице.
- **Ничего не выдумывается.** Нет данных - нет свойства.
- **Тип соответствует странице.** Страница категории - не `Product`, страница «О компании» - не `Article`.
- **Сущности связаны.** Статья ссылается на автора и издателя, товар - на продавца, страница - на сайт. Для связей служит `@id`.
- **Один источник.** Если разметку выводят и тема сайта, и расширение, машина получает два противоречивых описания.
- **Разметка обновляется вместе с содержимым.** Изменилась цена - изменилась и разметка.

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

1. Открой код страницы и найди блок `application/ld+json`. Он должен быть в ответе сервера, а не появляться после скриптов.
2. Проверь страницу в [Rich Results Test](https://search.google.com/test/rich-results) от Google: какие типы найдены и есть ли ошибки.
3. Проверь её же в [валидаторе микроразметки Яндекса](https://webmaster.yandex.ru/site/tools/microtest/).
4. Сверь цену, наличие и название с тем, что на экране.
5. Убедись, что разметка одна: нет второго блока того же типа от темы.
6. Повтори проверку на трёх-четырёх разных страницах, а не на одной удачной.

Адреса инструментов и разбор ошибок: [Проверка файлов и разметки](https://llms-full-txt.ru/guides/validation/).

## Что автоматизируется

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

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

Как это устроено в одной системе: [llms.txt и JSON-LD в Webasyst](https://llms-full-txt.ru/guides/webasyst/). Все расширения собраны на странице разработчика в магазине Webasyst.
