Microdata vs JSON-LD
Какой синтаксис из мира schema.org выбрать для разметки сайта
В мире микроразметки 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&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&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 - два. Более подробно в статье Почему в Яндексе нет красивых сниппетов микроразметки