JSON-LD

Формат вставки schema.org-разметки

Современный способ добавлять структурированные данные.

JSON-LD — формат структурированной разметки, рекомендованный Google. Вставляется в head страницы как тег <script type="application/ld+json"> и содержит JSON-объект со схемой данных по словарю schema.org.

В отличие от microdata и RDFa, JSON-LD не размечает существующий HTML, а лежит отдельно — это удобно поддерживать. Один блок JSON-LD может содержать @graph с несколькими сущностями, связанными через @id.

<script>
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Что такое canonical",
  "author": {
    "@type": "Person",
    "name": "Никита Вихров"
  },
  "datePublished": "2026-06-04"
}
</script>
Структурированные данные в формате JSON-LD внутри тега <script>
Пример из практики

{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[...]}

Главная ловушка JSON-LD — рассинхрон с тем, что видит пользователь. Разметка должна описывать контент, который реально есть на странице: цену в Product, текст вопросов в FAQPage, шаги в HowTo. Если в JSON-LD цена 1990, а на странице 2490, или FAQ размечен, но визуально его нет, Google трактует это как разметку-обманку и снимает расширенный сниппет, иногда с ручной санкцией за spammy structured markup. Проверять обязательно в Rich Results Test и отчёте «Улучшения» в Search Console, а у Яндекса — в Вебмастере, раздел «Информация о сайте → Товары и цены / Валидатор микроразметки».

Яндекс и Google читают JSON-LD по-разному. Google опирается на чистый schema.org и даёт за корректную разметку звёзды, цены, хлебные крошки в выдаче. Яндекс часть schema.org понимает (Organization, BreadcrumbList, Product), но для товаров, отзывов и рецептов исторически предпочитает свой формат и микроформаты, поэтому FAQ-разметка, которую снял Google в 2023, у Яндекса так и не давала расширений. Практическое правило: ставьте один блок @graph с Organization и WebSite на всех страницах, BreadcrumbList и тип контента — на конкретных, связывайте сущности через @id, чтобы не плодить дубли. Связь с JavaScript SEO: если JSON-LD дорисовывается скриптом, убедитесь, что он есть в отрендеренном DOM, иначе робот его не увидит.

Что
Отдельный script

Блок в head или body, не привязанный к вёрстке — данные лежат как чистый JSON.

Как
Граф через @id

@graph объединяет Organization, WebSite, BreadcrumbList; сущности связаны по @id без дублирования.

Зачем
Расширенный сниппет

Google рисует звёзды, цену и крошки в выдаче; данные должны совпадать с видимым контентом, иначе снимут.

Три причины ставить JSON-LD отдельным блоком, а не размечать HTML вручную.
Контрпример

Интернет-магазин разметил у 600 карточек Product с offers, но цену подставлял JS после загрузки, а в исходном HTML стоял заглушечный 0. Google в Rich Results Test видел price: 0 и не показывал цену в сниппете, плюс в Search Console висело 600 ошибок «Either offers, review, or aggregateRating should be specified». Перенесли цену в серверный рендер JSON-LD — за 3 недели цены появились в выдаче, CTR