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>

Содержимое @id может использоваться для расчета доскроллов и дочтений. Если в качестве идентификатора:

  • Указан URL статьи, Метрика определяет фрагмент после знака # (#fragment). Затем ищет HTML-элемент с этим фрагментом в статье (атрибут id="fragment"). Если фрагмент найден, начинается расчет показателей. Так же обрабатывается URL материала.
  • Указано произвольное значение и код JSON-LD размещен в head, то система рассчитывает показатели по содержимому body. Если в body код размещен внутри другого HTML-элемента, то для расчета используется родительский для разметки элемент. Поэтому данные в отчете могут быть неточными. Таким же образом ведется расчет, если в URL материала не указан фрагмент после знака #.
Заголовок*
Заголовок отображается в отчетах Метрики. Он может быть указан в ключах 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 фрагмент после знака #. Он укажет системе, по какому именно материалу рассчитывать показатели. Подробно

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

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

Пример разметки

Ниже вы можете посмотреть пример разметки новости.

<script type="application/ld+json">
{
   "@context":"http://schema.org",
   "@graph": [
       {
         "@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":"Погода"
                 }
               }
            ]
        },
        {
          "@type": "NewsArticle",
          "@id": "https://www.example-news.com/life/weather/moscow#cao",
          "headline": "В Москве побит температурный рекорд 1922 года",
          "alternativeHeadline": "Температура в ноябре превысила 12 °С",
          "datePublished":"2018-12-11T08:56:49Z",
          "dateModified":"2018-11-06T09:26:10+04:00",
          "text": "В среду, 6 ноября, в Москве был побит температурный рекорд, зафиксированный 
          в 1922 году. Температура воздуха составила плюс 12,1 градуса по Цельсию, 
          как сообщает центр Фобос.",
          "author": [
              {"@type":"Person", "name":"Иван Иванов"}, 
              {"@type":"Person", "name":"Петр Петров"}
           ],
          "about":["Жара", "Москва"],
          "url": "https://www.example-news.com/life/weather/moscow#cao"
        }
    ]
}
</script>
        

Обратите внимание: служба поддержки не обзванивает пользователей. Не следуйте указаниям людей, которые вам звонят и представляются службой поддержки Яндекс.Метрики.