Microdata vs JSON-LD

Какой синтаксис из мира schema.org выбрать для разметки сайта

июнь 09 , 2016

В мире микроразметки schema.org данные для поисковой системы можно передать двумя основными синтаксисами microdata и json-ld. Сейчас мы разберемся что лучше, предпочтительней, и каким способом лучше размечать страницы сайта.

Микроразметка Microdata

Microdata - это способ разметки микроданных. Информация размечается непосредственно в тегах сайта с помощью основных атрибутов itemscope, itemtype и itemprop. Этот вариант на лето 2016 года наиболее популярен. Во-многом из-за его раннего появления.

Для внедрения микроразметки необходимо создать оболочку размечаемых данных. Например, в обрамляющий div надо добавить атрибуты itemscope (указывает на контейнер для микроданных) и itemtype (указывает на тип данных). Далее уже в этом блоке добавляем itemprop (значение). Пример кода для разметки страницы продукта:

<div itemscope itemtype="https://schema.org/Product" style="display:none;">
<meta itemprop="name" content="HTC Touch HD" />
<link itemprop="url" href="https://microdata.pro/demo/index.php?route=product/product&amp;product_id=28" />
<link itemprop="image" href="https://microdata.pro/demo/image/catalog/demo/htc_touch_hd_1.jpg" />
<meta itemprop="brand" content="HTC" />
<meta itemprop="manufacturer" content="HTC" />
<meta itemprop="model" content="Товар 1" />
<meta itemprop="gtin12" content="upc" />
<meta itemprop="gtin8" content="ean" />
<meta itemprop="productID" content="isbn" />
<meta itemprop="category" content="Телефоны и PDA" />
<div itemprop="aggregateRating" itemscope itemtype="https://schema.org/AggregateRating">
<meta itemprop="ratingValue" content="4.5">
<meta itemprop="reviewCount" content="2">
</div>
<div itemprop="offers" itemscope itemtype="https://schema.org/Offer">
<meta itemprop="priceCurrency" content="RUB" />
<meta itemprop="price" content="122.00" />
<link itemprop="availability" href="https://schema.org/InStock" />
</div>
... и т.д.

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

JSON-LD - это способ передачи данных в текстовом формате json (Linked Data, LD). Он достаточно прост для понимания и отлично воспринимается поисковыми роботами. Уже начиная с 2014 года google рекомендует его использовать для разметки данных о компании. 

Для разметки этим способом достаточно создать блок script type="application/ld+json" c кодом json. Для примера, разметим карточку товара:

<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"url": "https://microdata.pro/demo/index.php?route=product/product&amp;product_id=28",
"category": "Телефоны и PDA",
"image": "https://microdata.pro/demo/image/catalog/demo/htc_touch_hd_1.jpg",
"brand": "HTC",
"manufacturer": "HTC",
"model": "Товар 1",
"gtin12": "upc",
"gtin8": "ean",
"productID": "isbn",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"reviewCount": "2"
},"description": "рус  ",				  
"name": "HTC Touch HD",
"offers": {
"@type": "Offer",
"availability": "https://schema.org/InStock",
"price": "122.00",
"priceCurrency": "RUB"
... и т.д.

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

Какие настройки выбрать для разметки в модуле MicrodataPro

Для полной универсальности что бы понравится всем поисковым роботам я рекомендую оставлять в настройках двойной синтаксис Microdata + JSON-LD. Каждый робот отдает предпочтение одному из форматов, а разметив всеми- выберет наиболее подходящий. Тем более что модуль передает одни и те же данные только двумя синтаксисами.

UPD: недавно выяснилось что Яндекс видит только microdata а если включить также и json-ld он почему-то перестает видить microdata. По этому если в приоритете Яндекс - ставим один синтаксис, если google - два. Более подробно в статье Почему в Яндексе нет красивых сниппетов микроразметки