JSON-LD

JSON-LD — это способ разметки, при котором данные передаются с помощью объектов связанных данных (Linked Data, LD).

Принципы разметки

Данные в формате JSON-LD описываются набором разделенных запятыми пар ключ-значение. Формат предусматривает зарезервированные ключи, с помощью которых можно определять контекст описания или связывать объекты различным образом. Например, @context определяет словарь объектов (в данном случае — Schema.org), а @type — тип описываемой сущности. Полный список зарезервированных ключей приведен в документации JSON-LD.

Сущность описывается в фигурных скобках { } в теге <script> с атрибутом type="application/ld+json" или type="ld+json". Укажите, что для разметки используется стандарт Schema.org — "@context":"http://schema.org". С помощью ключа @type укажите класс Schema.org, определяющий описываемую сущность. Разметьте свойства сущности — в качестве ключей используйте свойства заданного класса Schema.org.

Для разметки нескольких сущностей на странице вы можете использовать граф — @graph. Для каждого узла графа укажите @id — ссылку на раздел страницы, содержащий описываемую сущность.

В примере ниже описываются две новостные статьи "@type":"NewsArticle". Указаны идентификатор статьи (ключ @id), дата публикации (ключ datePublished) и авторы статьи (ключ author) в виде массива из двух элементов. Авторы описываются с помощью вложенных сущностей класса Person.

<script type="application/ld+json">
{  
  "@context": "http://schema.org",
  "@graph" : [
    {
     "@type": "NewsArticle",
     "@id": "https://www.example-news.com/life/weather/moscow#cao",  
     "datePublished": "2018-12-11T08:56:49Z",
     "author": [{"@type":"Person", "name":"Иван Иванов"}, 
        {"@type":"Person", "name":"Петр Петров"}]
    },
    {
     "@type": "NewsArticle",
     "@id": "https://www.example-news.com/life/weather/moscow#zao",  
     "datePublished": "2018-12-11T09:56:49Z",
     "author": [{"@type":"Person", "name":"Иван Иванов"}, 
        {"@type":"Person", "name":"Алексей Алексеев"}]
    }
  ]
}
</script>

Подробнее о JSON-LD.

Какие материалы можно разметить

Как разметить материал

Разметьте материал в соответствии с приведенными ниже правилами, чтобы он корректно обрабатывался Метрикой. Для получения более полной статистики рекомендуем разметить все элементы материала, но обязательными являются только три — идентификатор, заголовок и текст. Если вы уже используете JSON-LD, проверьте, соответствует ли разметка на вашем сайте этим требованиям. Примеры кода в правилах не являются единственно правильным вариантом разметки.

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

Внимание. Если на одной странице несколько материалов, размечайте каждый из них отдельно, чтобы статистика собиралась правильно.

Укажите следующие элементы материала (обязательные элементы отмечены звездочкой):

Идентификатор*

Идентификатор указывается с помощью зарезервированного ключа @id. Он позволяет Метрике отличать материалы друг от друга. Идентификатор не отображается в отчетах. Идентификатором может быть, например, ссылка на материал или произвольное уникальное значение.

"@id": "https://www.example-news.com/life/weather/moscow#сao"

Если ключ @id не был найден, система попытается найти его во вложенных сущностях в ключах mainEntity или mainEntityOfPage.

<script type="application/ld+json">
{  
  "@context": "http://schema.org",  
  "@type": "NewsArticle",  
  "mainEntityOfPage": {
         "@type": "WebPage",
         "@id": "https://www.example-news.com/life/weather/moscow#сao"
      }
}
</script>
Заголовок*
Заголовок отображается в отчетах Метрики. Он может быть указан в ключах headline или alternativeHeadline. Если найдены оба ключа, их значения будут записаны через пробел. Например, если заголовки размечены так:
"headline": "В Москве побит температурный рекорд 1922 года",
"alternativeHeadline": "Температура в ноябре превысила 12 °С"

в отчете статья будет называться «В Москве побит температурный рекорд 1922 года Температура в ноябре превысила 12 °С».

Если не найден ни один из ключей выше, в качестве заголовка будет использоваться значение ключа name или itemReviewed (для класса Review).

Текст*

Текст должен содержаться в ключе text. В тексте определяется количество символов — это нужно для определения объема материала и расчета метрик доскроллов и дочтения.

"text": "В среду, 6 ноября, в Москве был побит температурный рекорд, зафиксированный 
  в 1922 году. Температура воздуха составила плюс 12,1 градуса по Цельсию, 
  как сообщает центр Фобос."
Если ключ text не найден, в качестве текста будет взято:
  • содержимое элемента, расположенного по якорю из значения ключа url или @id:

     "@context" : "https://schema.org",
     "@type" : "Article",
     "url":"https://www.example-news.com/life/weather/moscow#cao"
  • содержимое узла, в который вложена описываемая сущность (если это не <head>);

  • содержимое <body> страницы во всех остальных случаях.

При расчете объема текста символы тегов не учитываются.

Примечание. Полную статистику можно получить по материалу, в тексте которого больше 500 символов. Материал с более коротким текстом будет учитываться только в рециркуляции.
Автор

Автор указывается с помощью ключа author. Если авторов несколько, перечислите их в массиве.

 "author": [
    {"@type":"Person", "name":"Иван Иванов"}, 
    {"@type":"Person", "name":"Петр Петров"}
  ]

Если ключ не был найден, система попытается найти его во вложенных сущностях в ключах mainEntity или mainEntityOfPage.

<script type="application/ld+json">
{  
  "@context": "http://schema.org",  
  "@type": "NewsArticle", 
  "@id": "12345", 
  "mainEntityOfPage": {
         "@type": "WebPage",
         "author": {"@type":"Person", "name":"Иван Иванов"} 
      }
}
</script>

Благодаря этим данным можно посмотреть статистику по отдельным авторам.

Тематика

В качестве тематик можно разметить, например, ключевые слова или хэштеги. Укажите тематики в ключе about:

"about":["Жара", "Москва"]

Если не найден ключ about, система попытается найти значения в ключах name или alternateName.

Даты публикации и изменения

Даты публикации и изменения указываются в ключах datePublished и dateModified. Даты записываются в формате ISO 8601.

"datePublished":"2018-12-11T08:56:49Z",
"dateModified":"2018-11-06T09:26:10+04:00"
Рубрика

Рубрика — это раздел сайта, посвященный определенной теме. Для разметки рубрики используйте ключ BreadcrumbList. С его помощью описывается цепочка связанных страниц («хлебные крошки»), которая обычно заканчивается текущим материалом. Внутри BreadcrumbList в ключе itemListElement должно быть определено несколько сущностей типа ListItem, которые описывают текущую и более широкие рубрики.

Вложенность рубрики задается с помощью ключа position. Например, в рубрике «Жизнь» могут содержаться вложенные рубрики «Погода» и «Происшествия». При "position":"1" материал находится на верхнем уровне («Жизнь»), при "position":"2" — на втором («Погода»).

Рубрикой материала будет считаться значение ключа name с наибольшим значением position .

Примечание. На данный момент в статистике отображаются два уровня вложенности рубрик.
{
  "@context":"http://schema.org",
  "@type":"BreadcrumbList",
  "itemListElement":[
    {
      "@type":"ListItem",
      "position":1,      
      "item":{
          "@id":"//example-news.ru/life",
          "name":"Жизнь"}
    },
    {
      "@type":"ListItem",
      "position":2,
      "item":{
          "@id":"//example-news.ru/life/weather",
          "name":"Погода"}
    }]
}
URL материала

URL материала должен содержаться в ключе url.

"url": "https://www.example-news.com/life/weather/moscow#сao"

Если разметка верна и правильно подключен счетчик, через некоторое время по материалу начнет собираться статистика в Метрике.