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

Размечаем смысл данных машиночитаемо, чтобы поисковик понимал: это статья, это товар, это рейтинг.

Структурированные данные — разметка по словарю Schema.org, которая описывает суть контента машине. JSON-LD — рекомендованный Google формат этой разметки: блок JSON в <script>.

Зачем это нужно

Из обычного HTML поисковик понимает текст, но не его роль: что «4.8» — это рейтинг, «1200 ₽» — цена, а «20 июня» — дата публикации. Структурированные данные явно говорят: «вот объект Article, у него такой заголовок, автор и дата». Это открывает rich results — расширенные сниппеты со звёздами, ценами, FAQ-аккордеонами (о них — следующий урок).

JSON-LD против микроразметки

Schema.org можно размечать тремя способами: Microdata и RDFa (атрибуты прямо в HTML-тегах) и JSON-LD (отдельный блок). Google рекомендует JSON-LD, потому что он не смешивается с вёрсткой: данные лежат отдельным скриптом, их легко генерировать на сервере и не нужно трогать разметку шаблона.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Что такое canonical и как убрать дубли",
  "datePublished": "2026-06-20",
  "author": { "@type": "Organization", "name": "CodeChick" }
}
</script>

Анатомия JSON-LD

  • @context — всегда "https://schema.org", задаёт словарь.
  • @type — тип объекта: Article, Product, FAQPage, BreadcrumbList и др.
  • остальные ключи — свойства этого типа из спецификации Schema.org.

На codechick.io JSON-LD используется как живой пример: страницы туториалов размечены, чтобы поисковик понимал их как обучающий контент.

Как работает под капотом: генерация разметки

JSON-LD почти всегда генерируется на сервере из данных страницы. Поскольку это просто JSON, его удобно собирать как словарь и сериализовать. На Python:

import json

def article_jsonld(title, date, author):
    data = {
        "@context": "https://schema.org",
        "@type": "Article",
        "headline": title,
        "datePublished": date,
        "author": {"@type": "Organization", "name": author},
    }
    return json.dumps(data, ensure_ascii=False, indent=2)

print(article_jsonld("Как убрать дубли страниц", "2026-06-20", "CodeChick"))

Вывод:

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Как убрать дубли страниц",
  "datePublished": "2026-06-20",
  "author": {
    "@type": "Organization",
    "name": "CodeChick"
  }
}

Сериализованную строку вставляют в <script type="application/ld+json"> в <head>.

Частые ошибки

  • Разметка не соответствует видимому контенту — например, рейтинг в JSON-LD, которого нет на странице. Это нарушение правил, грозит санкциями.
  • Невалидный JSON — хвостовая запятая или неэкранированная кавычка ломают весь блок.
  • Неверный @type или обязательные поля пропущены — rich result не покажется.
  • JSON-LD только на клиенте, который бот не дождался — лучше отдавать в исходном HTML.

Итог

  • Структурированные данные (Schema.org) объясняют поисковику смысл контента машиночитаемо.
  • JSON-LD — рекомендованный формат: отдельный <script type="application/ld+json">, удобно генерировать на сервере.
  • Разметка обязана соответствовать видимому на странице контенту, иначе санкции.
Проверьте себя
1. Какой формат структурированных данных рекомендует Google?
AMicrodata
BRDFa
CJSON-LD — отдельный блок <script type="application/ld+json">
DXML-разметку в sitemap
2. Что обязательно содержит JSON-LD объект?
AТолько @type
B@context (словарь Schema.org) и @type (тип объекта)
CТолько цену и рейтинг
DТег <meta>
3. Почему опасно указывать в JSON-LD рейтинг, которого нет на видимой странице?
AЭто замедлит загрузку
BРазметка должна соответствовать контенту; расхождение нарушает правила и грозит санкциями
CJSON-LD не поддерживает рейтинги
DРейтинг можно указывать только в meta description