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.
Для разметки нескольких сущностей на странице вы можете использовать:
Для каждого узла графа укажите @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>
Для каждой сущности укажите @id
— ссылку на раздел страницы, содержащий описываемую сущность.
В примере ниже описываются две новостные статьи "@type":"NewsArticle"
. Указаны идентификатор статьи (ключ @id
), дата публикации (ключ datePublished
) и авторы статьи (ключ author
) в виде массива из двух элементов. Авторы описываются с помощью вложенных сущностей класса Person
.
<script type="application/ld+json">
[{
"@context": "http://schema.org",
"@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": "Петр Петров"}]
},
{
"@context": "http://schema.org",
"@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.
Какие материалы можно разметить
Метрика поддерживает разметку следующих материалов:
- Статья, новость или пост в блоге (
Article
,NewsArticle
илиBlogPosting
) - Описание фильма (
Movie
) - Обзор или отзыв (
Review
) - Рецепт (
Recipe
) - Вопрос-ответ (
Question
илиQAPage
)
Другие материалы, размеченные по стандарту, не попадут в отчеты Метрики.
Как разметить материал
Разметьте материал в соответствии с приведенными ниже правилами, чтобы он корректно обрабатывался Метрикой. Для получения более полной статистики рекомендуем разметить все элементы материала, но обязательными являются только три — идентификатор, заголовок и текст.
Если вы уже используете JSON-LD, проверьте, соответствует ли разметка на вашем сайте этим требованиям. Примеры кода в правилах не являются единственно правильным вариантом разметки.
Разметку можно добавить на сайт автоматически — например, с помощью плагинов для WordPress. Перед использованием убедитесь, что выбранный плагин позволяет передать в код страницы все нужные элементы разметки.
Внимание
Если на одной странице несколько материалов, размечайте каждый из них отдельно, чтобы статистика собиралась правильно.
Укажите следующие элементы материала (обязательные элементы отмечены звездочкой):
Идентификатор*
-
Идентификатор указывается с помощью зарезервированного ключа
@id
. Он позволяет Метрике отличать материалы друг от друга. Идентификатор не отображается в отчетах. Идентификатором может быть, например, ссылка на материал или произвольное уникальное значение."@id": "https://www.example-news.com/life/weather/moscow#cao"
Если ключ
@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#cao" } } </script>
Содержимое
@id
может использоваться для расчета доскроллов и дочтений. Если в качестве идентификатора:- Указан URL статьи, Метрика определяет фрагмент после знака # (
#fragment
). Затем ищет HTML-элемент с этим фрагментом в статье (атрибутid="fragment"
). Если фрагмент найден, начинается расчет показателей. Так же обрабатывается URL материала. - Указано произвольное значение и код JSON-LD размещен в
head
, то система рассчитывает показатели по содержимомуbody
. Если вbody
код размещен внутри другого HTML-элемента, то для расчета используется родительский для разметки элемент. Поэтому данные в отчете могут быть неточными. Таким же образом ведется расчет, если в URL материала не указан фрагмент после знака #.
- Указан 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": [ {"@type": "Event", "name": "Жара"}, {"@type": "Event", "name": "Москва"} ]
Тип (
@type
) передавать необязательно или укажите любой, который поддерживается стандартом.Если не найден ключ
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#cao"
Если разметка верна и правильно подключен счетчик, через некоторое время по материалу начнет собираться статистика в Метрике.
Пример разметки
Ниже вы можете посмотреть пример разметки новости.
<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": {
"@type": "Event",
"name": "Москва"
},
"url": "https://www.example-news.com/life/weather/moscow#cao"
}
]
}
</script>
Узнайте больше
Полезные ссылки |
Онлайн-обучение |
itemprop |
Описание свойства |
Классы |
|
|
Идентификатор Идентификатор позволяет Метрике отличать материалы друг от друга. Он не отображается в отчетах.
|
|
Идентификатор Свойство будет использоваться, если не найдено свойство
|
типа |
Заголовок Заголовок может быть указан с помощью свойств
в отчете статья будет называться «В Москве побит температурный рекорд 1922 года Температура в ноябре превысила 12 °С». Если не найдено ни одно из свойств выше, в качестве заголовка будет использоваться значение свойства |
типа |
Заголовок Заголовок может быть указан с помощью свойств
в отчете статья будет называться «В Москве побит температурный рекорд 1922 года Температура в ноябре превысила 12 °С». Если не найдено ни одно из свойств выше, в качестве заголовка будет использоваться значение свойства |
типа |
Текст статьи В тексте определяется количество символов. Это нужно для определения объема материала. В качестве текста учитывается только содержимое вложенных тегов, символы самих тегов не учитываются. Мы рекомендуем размечать текст материала так, чтобы туда не попадало лишнее: рекламные баннеры, блоки комментариев и т. п., иначе объем материала и показатели статистики могут рассчитаться неправильно.
Если не найдено свойство Если ни одно из свойств не найдено, в качестве текста берется все содержимое тега, помеченного как Примечание Полную статистику можно получить по материалу, в тексте которого больше 500 символов. |
типа или или |
Автор Автор указывается с помощью свойства
Значение также может быть взято из:
Благодаря этим данным можно посмотреть статистику по отдельным авторам в Метрике. |
типа |
Тематика В качестве тематик можно разметить, например, ключевые слова или хэштеги. Для этого нужно определить свойство
|
типа |
Дата публикации Даты публикации
или в атрибуте
|
|
Дата изменения Даты публикации
или в атрибуте
|
Класс |
|
типа или или |
Рубрика Рубрика — это раздел сайта, посвященный определенной теме. Для разметки рубрики используйте класс Вложенность рубрик задается с помощью свойства Рубрикой материала будет считаться значение свойства Примечание На данный момент в статистике отображаются два уровня вложенности рубрик.
|
Другое |
|
Каноническая ссылка URL материала указывается с помощью свойства
Если не найдено свойство Найденное значение может использоваться при генерации идентификатора материала. |
Описание свойства
Идентификатор
Идентификатор позволяет Метрике отличать материалы друг от друга. Он не отображается в отчетах.
<meta itemprop="identifier" content="12345">
Описание свойства
Заголовок
Заголовок может быть указан с помощью свойств headline
или alternativeHeadline
и отображается в отчетах Метрики. Если заданы оба свойства, их значения будут записаны через пробел. Например, если заголовки размечены так:
<h1 itemprop="headline">В Москве побит температурный рекорд 1922 года</h1>
<h2 itemprop="alternativeHeadline">Температура в ноябре превысила 12 °С</h2>
в отчете статья будет называться «В Москве побит температурный рекорд 1922 года Температура в ноябре превысила 12 °С».
Если не найдено ни одно из свойств выше, в качестве заголовка будет использоваться значение свойства name
.
Описание свойства
Заголовок
Заголовок может быть указан с помощью свойств headline
или alternativeHeadline
и отображается в отчетах Метрики. Если заданы оба свойства, их значения будут записаны через пробел. Например, если заголовки размечены так:
<h1 itemprop="headline">В Москве побит температурный рекорд 1922 года</h1>
<h2 itemprop="alternativeHeadline">Температура в ноябре превысила 12 °С</h2>
в отчете статья будет называться «В Москве побит температурный рекорд 1922 года Температура в ноябре превысила 12 °С».
Если не найдено ни одно из свойств выше, в качестве заголовка будет использоваться значение свойства name
.
Описание свойства
Дата публикации
Даты публикации datePublished
и изменения dateModified
записываются в формате ISO 8601.
html <meta itemprop="datePublished" content="2018-12-11T08:56:49Z" />
или в атрибуте datetime
тега time
.
<time itemprop="dateModified" datetime="2018-12-11T07:30:00Z">10:30, 11 декабря 2018 </time>
Описание свойства
Дата изменения
Даты публикации datePublished
и изменения dateModified
записываются в формате ISO 8601.
html <meta itemprop="datePublished" content="2018-12-11T08:56:49Z" />
или в атрибуте datetime
тега time
.
<time itemprop="dateModified" datetime="2018-12-11T07:30:00Z">10:30, 11 декабря 2018 </time>
Описание свойства
Рубрика
Рубрика — это раздел сайта, посвященный определенной теме. Для разметки рубрики используйте класс BreadcrumbList
. С его помощью описывается цепочка связанных страниц («хлебные крошки»), которая обычно заканчивается текущим материалом. Внутри BreadcrumbList
должно быть определено несколько сущностей типа ListItem
, размеченных свойством itemListElement
, которые описывают текущую и более широкие рубрики.
Вложенность рубрик задается с помощью свойства position
класса ListItem
. Например, в рубрике «Жизнь» могут содержаться вложенные рубрики «Погода» и «Происшествия». При position = '1'
материал находится на верхнем уровне («Жизнь»), при position = '2'
— на втором («Погода»).
Рубрикой материала будет считаться значение свойства name
сущности ListItem
с наибольшим значением position
.
Примечание
На данный момент в статистике отображаются два уровня вложенности рубрик.
<ol itemscope itemtype="http://schema.org/BreadcrumbList">
<li itemprop="itemListElement" itemscope
itemtype="http://schema.org/ListItem">
<a itemprop="item" href="//example-news.ru/life">
<span itemprop="name">Жизнь</span></a>
<meta itemprop="position" content="1" />
</li>
<li itemprop="itemListElement" itemscope
itemtype="http://schema.org/ListItem">
<a itemprop="item" href="//example-news.ru/life/weather">
<span itemprop="name">Погода</span></a>
<meta itemprop="position" content="2" />
</li>
</ol>
Описание свойства
Автор
Автор указывается с помощью свойства author
. Если авторов несколько, укажите их в разных тегах.
html <div itemprop="author">Иван Иванов</div>
Значение также может быть взято из:
-
свойства
name
классаPerson
<div itemprop="author" itemscope itemtype="http://schema.org/Person"> <span itemprop="name">Иван Иванов</span> </div>
-
атрибута ссылки
href
<link itemprop='author' href="/example/authors/ivan_ivanov.html"/>
Благодаря этим данным можно посмотреть статистику по отдельным авторам в Метрике.
Описание свойства
Тематика
В качестве тематик можно разметить, например, ключевые слова или хэштеги. Для этого нужно определить свойство about
для каждой тематики. Значение может быть взято из свойства name
любого класса:
<div itemprop="about">Жара</div>
<div itemprop="about" itemscope itemtype="https://schema.org/Thing">
<span itemprop="name">Москва</span>
</div>
Описание свойства
Каноническая ссылка
URL материала указывается с помощью свойства url
.
<a itemprop="url" href="https://www.example-news.com/life/weather/moscow">example-news.com</a>
Если не найдено свойство url
, система будет искать каноническую ссылку. Такая ссылка используется как указание на основной материал, если текущая страница дублирует страницу на сайте. Каноническая ссылка размечается специальным атрибутом rel="canonical"
. Например, если материал является дублем страницы http://www.example-news.com/page
, в нем указывается <link rel="canonical" href="http://www.example-news.com/page"/>
. В качестве URL материала будет использоваться значение атрибута href
канонической ссылки.
Найденное значение может использоваться при генерации идентификатора материала.