Структурированные данные

Schema.org и JSON-LD: полный разбор Organization, Product, рейтингов и фото

Обложка статьи: Schema.org и JSON-LD — полный разбор структурированных данных

Полный разбор разметки Schema.org: форматы JSON-LD vs Microdata, приоритет схем для [rich results](/glossary/rich-results), Organization и все подтипы, Product с Offer и AggregateOffer, рейтинги, отзывы и фотографии — с рабочим кодом.

Структурированные данные Schema.org — это словарь, который поисковые системы используют для понимания содержимого страниц. Правильно реализованная разметка превращает обычный сниппет в rich result: со звёздами рейтинга, ценой товара, временем работы организации или фотографией прямо в выдаче Google.

В этой статье разберём полную систему: от выбора формата и приоритетных схем — до конкретного JSON-LD кода для Organization, Product, AggregateRating, Review и ImageObject. Особый акцент — на всех подтипах, которые часто упускают из виду.

Путь JSON-LD: разметка в <script> → Google парсит структуру → rich snippet со звёздами рейтинга и ценой прямо в выдаче.
Google официально рекомендует JSON-LD как предпочтительный формат. В отличие от Microdata и RDFa, JSON-LD размещается в теге <script> и не встраивается в HTML-разметку — это упрощает поддержку и позволяет изменять данные без правки верстки.

Что такое Schema.org и зачем нужна разметка

Schema.org — совместный проект Google, Bing, Yahoo и Яндекса, запущенный в 2011 году. Словарь содержит более 900 типов данных и тысячи свойств. Все типы наследуются от базового Thing и делятся на крупные ветки: Person, Organization, Product, Event, CreativeWork, Action и другие.

+36%

Рост CTR с rich results

Сниппеты со звёздами рейтинга и другими rich elements стабильно показывают более высокий CTR по сравнению с обычными

900+

Типов в Schema.org

Словарь охватывает всё: от рецептов и товаров до научных статей и программных продуктов

JSON-LD

Рекомендация Google

Google официально рекомендует JSON-LD для всех новых реализаций структурированных данных

0

Прямого влияния на позиции

Разметка не повышает позиции напрямую, но rich results увеличивают CTR, что косвенно улучшает ранжирование

Разметка Schema.org решает три задачи одновременно. Для поисковика — однозначно идентифицирует сущности: это организация, а не просто текст с названием; это цена товара, а не просто число. Для пользователя — rich results в SERP повышают информативность сниппета до клика. Для бизнеса — повышенный CTR и присутствие в Knowledge Graph.

Форматы: JSON-LD, Microdata, RDFa

Структурированные данные Schema.org можно добавить тремя способами. Для новых проектов выбор однозначен — JSON-LD, остальные поддерживаются, но неудобны в поддержке.

ФорматГде размещаетсяСвязь с HTMLРекомендация Google
JSON-LDТег <script type="application/ld+json">Отдельно от HTMLПредпочтительный
MicrodataАтрибуты itemscope, itemtype, itempropВстроен в HTML-элементыПоддерживается
RDFaАтрибуты vocab, typeof, propertyВстроен в HTML-элементыПоддерживается
JSON-LD — однозначный выбор для новых проектов: код изолирован от верстки, его легко генерировать динамически, удобно обновлять без правки шаблонов. Microdata и RDFa поддерживаются Google, но их сложнее поддерживать — изменение верстки может сломать разметку.

Базовый шаблон JSON-LD одинаков для любой страницы: тег <script> с типом application/ld+json, внутри — JSON с обязательными полями @context и @type. Тег можно разместить в <head> или в конце <body>. Несколько схем — несколько отдельных <script> тегов.

HTML
<!-- Базовый шаблон JSON-LD -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "Название сайта",
  "url": "https://example.com"
}
</script>

<!-- Несколько схем — несколько <script> блоков -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Компания",
  "url": "https://example.com"
}
</script>

Приоритет схем: что даёт rich results в Google

Не каждая схема из Schema.org превращается в rich result. Google поддерживает ограниченный набор типов, которые дают визуальные улучшения в SERP. Остальные схемы полезны для понимания контента, но не меняют внешний вид сниппета.

Бизнес и организации

LocalBusiness, Restaurant, Store — часы работы, адрес, телефон, рейтинг в Knowledge Panel. Высший приоритет для локального бизнеса.

Товары и цены

Product + Offer — цена, наличие, рейтинг прямо в сниппете. Google Shopping и rich snippets. Обязательно для e-commerce.

Контент и FAQ

Article, FAQPage, HowTo — FAQ разворачивается прямо в выдаче, расширяя сниппет. Даёт много дополнительного пространства в SERP.

Рейтинги и отзывы

AggregateRating + Review — звёзды в сниппете. Самый заметный визуальный элемент. Работает для Product, LocalBusiness, Recipe, Course.

Тип схемыRich result в GoogleПриоритет
Product + OfferЦена, наличие, рейтинг в сниппете; Shopping карточкиКритический для e-commerce
LocalBusiness + AggregateRatingKnowledge Panel, Map Pack, звёздыКритический для локального бизнеса
FAQPageРаскрываемые вопросы под сниппетомВысокий для контентных страниц
Article / NewsArticleTop Stories карусель, дата публикацииВысокий для медиа и блогов
BreadcrumbListХлебные крошки вместо URL в сниппетеВысокий для любого сайта
HowToПошаговые инструкции с фото в SERPСредний для инструкций
EventКарточка события, дата, местоСредний для event-страниц
RecipeКарточка рецепта с фото, временем, калориямиСредний для кулинарных сайтов
Organization (не Local)Knowledge Graph, логотип в результатахБазовый для всех сайтов

Organization — базовая схема и все подтипы

Organization — базовый тип для любой компании, организации или бренда. Иерархия подтипов широка: каждый добавляет специфические поля. Выбор правильного подтипа важен — Google использует его для определения контекста бизнеса и отображения в Knowledge Panel.

ТипДля когоКлючевые доп. поля
OrganizationЛюбая компания, НКО, бренд без физадресаname, url, logo, sameAs
LocalBusinessЛюбой бизнес с физическим адресомaddress, telephone, openingHours, geo
StoreРозничный магазинcurrenciesAccepted, paymentAccepted
FoodEstablishmentКафе, ресторан (базовый)servesCuisine, menu, hasMap
RestaurantРесторанservesCuisine, menu, acceptsReservations
CafeOrCoffeeShopКофейняservesCuisine
FastFoodRestaurantФастфудservesCuisine
MedicalOrganizationМедучреждение (базовый)medicalSpecialty
HospitalБольницаavailableService, medicalSpecialty
MedicalClinicКлиникаmedicalSpecialty, availableService
DentistСтоматологияavailableService
LegalServiceЮридическая фирма
LawyerАдвокат / юрист
AccountingServiceБухгалтерия / аудит
FinancialServiceБанк, страховая, инвестиции
RealEstateAgentАгентство недвижимости
AutomotiveBusinessАвтодилер, автосервис (базовый)
AutoDealerАвтосалон
AutoRepairАвтосервис
HotelОтельamenityFeature, checkinTime, checkoutTime
SportsActivityLocationСпортивный объект (базовый)availableService
GymOrHealthClubФитнес-клуб
GovernmentOrganizationГосударственная организация
EducationalOrganizationУчебное заведение (базовый)
CollegeOrUniversityУниверситет / колледж
SchoolШкола
CorporationКорпорация (крупный бизнес)tickerSymbol, legalName

Базовая Organization

Базовую схему Organization добавляют на главную страницу любого сайта. Она помогает Google идентифицировать бренд и связать его с профилями через sameAs. Поле @id с уникальным идентификатором позволяет ссылаться на эту организацию из других схем без дублирования данных.

JSON
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://example.com/#organization",
  "name": "Название компании",
  "legalName": "ООО Пример",
  "url": "https://example.com",
  "logo": {
    "@type": "ImageObject",
    "url": "https://example.com/logo.png",
    "width": 200,
    "height": 60
  },
  "description": "Краткое описание компании для Knowledge Graph.",
  "foundingDate": "2015",
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "+7-800-123-45-67",
    "contactType": "customer service",
    "availableLanguage": "Russian"
  },
  "sameAs": [
    "https://vk.com/yourcompany",
    "https://t.me/yourcompany",
    "https://www.instagram.com/yourcompany"
  ]
}

LocalBusiness — физический бизнес с адресом

LocalBusiness — наиболее важный подтип для бизнеса с физическим присутствием. Правильно заполненная схема повышает шансы на появление в Google Map Pack (блок карт в топе выдачи) и Knowledge Panel с часами работы. Ключевые поля: address, geo, openingHoursSpecification, telephone, priceRange.

JSON
{
  "@context": "https://schema.org",
  "@type": "Restaurant",
  "@id": "https://example.com/#business",
  "name": "Ресторан Берёзка",
  "url": "https://example.com",
  "telephone": "+7-495-123-45-67",
  "email": "info@example.com",
  "servesCuisine": ["Русская кухня", "Европейская кухня"],
  "priceRange": "₽₽",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "ул. Арбат, 10",
    "addressLocality": "Москва",
    "addressRegion": "Москва",
    "postalCode": "119019",
    "addressCountry": "RU"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 55.7493,
    "longitude": 37.5885
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
      "opens": "12:00",
      "closes": "23:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Saturday", "Sunday"],
      "opens": "12:00",
      "closes": "00:00"
    }
  ],
  "image": "https://example.com/photos/restaurant.jpg",
  "hasMap": "https://maps.google.com/?cid=XXXXXX"
}
Дни недели в openingHoursSpecification пишутся по-английски с заглавной буквы: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday. Время — в 24-часовом формате HH:MM. Круглосуточно: opens "00:00", closes "23:59".

sameAs — связь с внешними профилями

Поле sameAs сообщает Google, что ваша организация идентична профилям на внешних платформах. Это ключевое поле для построения Knowledge Graph — базы сущностей Google. Чем больше авторитетных источников подтверждают существование организации, тем выше вероятность появления в Knowledge Panel.

  • Wikidata (наиболее авторитетный): https://www.wikidata.org/wiki/Q...
  • Wikipedia: https://ru.wikipedia.org/wiki/...
  • VK, Instagram, Facebook, LinkedIn, Twitter/X
  • YouTube канал организации
  • 2GIS, Яндекс.Карты (для локального бизнеса)
  • Отраслевые каталоги — для медицины, юридических услуг, недвижимости

Product — схема товара и все подтипы

Product — базовая схема для любого товара или продукта. Работает вместе с Offer (цена и наличие) и AggregateRating (рейтинг). Правильно реализованная схема даёт rich result в Google: цену, статус наличия и звёзды рейтинга прямо в сниппете.

ТипДля чегоОсобенности
ProductБазовая схема любого товараname, image, description обязательны
OfferКонкретное предложение: цена + наличиеprice, priceCurrency, availability обязательны
AggregateOfferДиапазон цен (несколько офферов)lowPrice, highPrice, offerCount
ProductGroupГруппа товаров с вариантамиvariesBy, hasVariant
IndividualProductКонкретный вариант в ProductGroupisVariantOf → ProductGroup
BrandБренд товара (вложен в Product)name обязателен

Базовая Product с Offer

Google требует минимальный набор полей для rich result: name, image, description, а также вложенный Offer с priceCurrency, price и availability. Без хотя бы одного из этих полей сниппет товара не будет обогащён.

JSON
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Кроссовки беговые Air X Pro",
  "description": "Лёгкие беговые кроссовки с пенной подошвой для асфальта. Вес 230 г, дроп 10 мм.",
  "sku": "AIRX-001-BLK",
  "mpn": "AIRX001",
  "gtin13": "4607134200010",
  "brand": {
    "@type": "Brand",
    "name": "RunMax"
  },
  "image": [
    "https://example.com/photos/airx-front.jpg",
    "https://example.com/photos/airx-side.jpg",
    "https://example.com/photos/airx-back.jpg"
  ],
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/products/air-x-pro",
    "priceCurrency": "RUB",
    "price": "5990",
    "priceValidUntil": "2026-12-31",
    "itemCondition": "https://schema.org/NewCondition",
    "availability": "https://schema.org/InStock",
    "seller": {
      "@type": "Organization",
      "name": "RunMax Store"
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "128"
  }
}
Значения availability: InStock (есть), OutOfStock (нет), PreOrder (предзаказ), Discontinued (снят). Всегда указывайте с полным префиксом https://schema.org/ — сокращённая форма (просто "InStock") не гарантирована к распознаванию.

AggregateOffer — диапазон цен

Если товар предлагается несколькими продавцами или существует в нескольких вариантах — используйте AggregateOffer. Показывает диапазон цен (lowPricehighPrice) вместо единой цены.

JSON
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Смартфон Galaxy S25",
  "brand": { "@type": "Brand", "name": "Samsung" },
  "image": "https://example.com/galaxy-s25.jpg",
  "offers": {
    "@type": "AggregateOffer",
    "priceCurrency": "RUB",
    "lowPrice": "79990",
    "highPrice": "109990",
    "offerCount": "3",
    "offers": [
      {
        "@type": "Offer",
        "name": "128 GB / Чёрный",
        "price": "79990",
        "priceCurrency": "RUB",
        "availability": "https://schema.org/InStock"
      },
      {
        "@type": "Offer",
        "name": "256 GB / Белый",
        "price": "89990",
        "priceCurrency": "RUB",
        "availability": "https://schema.org/InStock"
      },
      {
        "@type": "Offer",
        "name": "512 GB / Фиолетовый",
        "price": "109990",
        "priceCurrency": "RUB",
        "availability": "https://schema.org/PreOrder"
      }
    ]
  }
}

ProductGroup — товар с вариантами

ProductGroup — группа связанных товаров, отличающихся параметрами (размер, цвет, материал). Используется на карточке товара с вариантами. Каждый конкретный вариант — вложенный Product с isVariantOf, указывающим на родительский ProductGroup.

JSON
{
  "@context": "https://schema.org",
  "@type": "ProductGroup",
  "name": "Кроссовки Air X Pro",
  "description": "Беговые кроссовки в нескольких цветах и размерах.",
  "url": "https://example.com/products/air-x-pro",
  "brand": { "@type": "Brand", "name": "RunMax" },
  "productGroupID": "AIRX-PRO",
  "variesBy": ["https://schema.org/color", "https://schema.org/size"],
  "hasVariant": [
    {
      "@type": "Product",
      "name": "Air X Pro — Чёрный, 42",
      "sku": "AIRX-BLK-42",
      "color": "Чёрный",
      "size": "42",
      "offers": {
        "@type": "Offer",
        "price": "5990",
        "priceCurrency": "RUB",
        "availability": "https://schema.org/InStock"
      }
    },
    {
      "@type": "Product",
      "name": "Air X Pro — Синий, 44",
      "sku": "AIRX-BLU-44",
      "color": "Синий",
      "size": "44",
      "offers": {
        "@type": "Offer",
        "price": "5990",
        "priceCurrency": "RUB",
        "availability": "https://schema.org/OutOfStock"
      }
    }
  ]
}
Для получения rich result по Product Google требует: name, image и вложенный Offer. Без Offer (цены и наличия) расширенный сниппет не отобразится. Дополнительно: brand, sku или gtin13 улучшают шансы попасть в Google Shopping.

AggregateRating и Review — рейтинги и отзывы

Звёзды рейтинга в поисковой выдаче — самый заметный визуальный элемент сниппета. Реализуются через два связанных типа: AggregateRating (суммарный рейтинг) и Review (отдельный отзыв). Оба типа всегда вкладываются в родительскую схему: Product, LocalBusiness, Recipe, Course, Book и другие.

AggregateRating — суммарный рейтинг

AggregateRating отражает совокупную оценку: среднее значение и количество голосов. Google отображает его как звёзды в сниппете. Обязательные поля: ratingValue (среднее значение) и reviewCount или ratingCount.

JSON
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Кроссовки Air X Pro",
  "image": "https://example.com/airx.jpg",
  "offers": {
    "@type": "Offer",
    "price": "5990",
    "priceCurrency": "RUB",
    "availability": "https://schema.org/InStock"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "bestRating": "5",
    "worstRating": "1",
    "reviewCount": "128",
    "ratingCount": "215"
  }
}
ratingCount — общее количество оценок (включая без текста). reviewCount — количество текстовых отзывов. Если только звёздочки без текста — используйте ratingCount. Если только текстовые отзывы — reviewCount. Можно указать оба поля одновременно.

Review — отдельные отзывы

Review — схема отдельного текстового отзыва. Вкладывается в родительский объект через свойство review. Каждый Review содержит автора, оценку и текст. Google может отображать фрагмент текста отзыва в rich snippet.

JSON
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Кроссовки Air X Pro",
  "image": "https://example.com/airx.jpg",
  "offers": {
    "@type": "Offer",
    "price": "5990",
    "priceCurrency": "RUB",
    "availability": "https://schema.org/InStock"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "128"
  },
  "review": [
    {
      "@type": "Review",
      "reviewRating": {
        "@type": "Rating",
        "ratingValue": "5",
        "bestRating": "5"
      },
      "name": "Отличные кроссовки для ежедневных пробежек",
      "reviewBody": "Бегаю в них уже 3 месяца — подошва держит хорошо, нога не устаёт. Рекомендую для асфальта.",
      "datePublished": "2026-03-15",
      "author": {
        "@type": "Person",
        "name": "Алексей К."
      }
    },
    {
      "@type": "Review",
      "reviewRating": {
        "@type": "Rating",
        "ratingValue": "4",
        "bestRating": "5"
      },
      "reviewBody": "Хорошая амортизация, но размер немного маломерит. Брать на 0.5 размера больше.",
      "datePublished": "2026-04-01",
      "author": {
        "@type": "Person",
        "name": "Мария С."
      }
    }
  ]
}
Критическое требование Google: отзывы в разметке должны быть реальными отзывами реальных пользователей с вашего сайта. Нельзя: добавлять только 5-звёздочные отзывы, скрывать негативные, публиковать отзывы от имени редакции. Нарушение — ручное наказание и потеря rich results.

ImageObject — фотографии в разметке

Изображения в Schema.org указываются двумя способами: как строка с URL ("image": "https://example.com/photo.jpg") или как объект ImageObject с метаданными. Для большинства схем достаточно строки, но для Article, Recipe, HowTo Google рекомендует ImageObject — он позволяет указать размеры, подпись и формат.

Тип схемыТребования к изображениюМин. ширина
ProductХотя бы одно изображение товара, белый фон предпочтителен800 px рекомендован
Article / NewsArticleМинимум 3 изображения: 16:9, 4:3, 1:11200 px
RecipeИзображение готового блюда обязательноЛюбой, 1200×628 оптимально
LocalBusinessФото входа, интерьера, фасадаЛюбой
Organization (лого)Прямоугольное, белый/прозрачный фон112×112 мин, до 1×10 ratio
Пример Schema.org разметки изображения через JSON-LD:
JSON
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Кроссовки Air X Pro",
  "image": [
    {
      "@type": "ImageObject",
      "url": "https://example.com/airx-front.jpg",
      "width": 1200,
      "height": 1200,
      "caption": "Кроссовки Air X Pro — вид спереди"
    },
    {
      "@type": "ImageObject",
      "url": "https://example.com/airx-side.jpg",
      "width": 1200,
      "height": 1200,
      "caption": "Кроссовки Air X Pro — вид сбоку"
    }
  ],
  "offers": {
    "@type": "Offer",
    "price": "5990",
    "priceCurrency": "RUB",
    "availability": "https://schema.org/InStock"
  }
}
Для Article Google требует хотя бы одно изображение шириной 1200 px с соотношением сторон 16:9, 4:3 или 1:1. Предоставьте все три варианта — Google выберет подходящий для каждого плейсмента. Изображения должны быть индексируемы (не закрыты в robots.txt) и иметь стабильный URL.

Объединение схем на одной странице

На одной странице можно (и нужно) размещать несколько схем — отдельными блоками <script>. Пример полной разметки карточки товара: организация-продавец, хлебные крошки, товар с ценой, рейтингом и отзывом.

HTML
<!-- Схема 1: Организация-продавец (на всех страницах сайта) -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://example.com/#organization",
  "name": "RunMax Store",
  "url": "https://example.com",
  "logo": "https://example.com/logo.png"
}
</script>

<!-- Схема 2: Хлебные крошки -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "Главная", "item": "https://example.com" },
    { "@type": "ListItem", "position": 2, "name": "Обувь", "item": "https://example.com/shoes" },
    { "@type": "ListItem", "position": 3, "name": "Air X Pro" }
  ]
}
</script>

<!-- Схема 3: Товар с ценой, рейтингом и отзывом (на странице товара) -->
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Кроссовки Air X Pro",
  "description": "Беговые кроссовки для асфальта.",
  "sku": "AIRX-001",
  "brand": { "@type": "Brand", "name": "RunMax" },
  "image": "https://example.com/airx.jpg",
  "offers": {
    "@type": "Offer",
    "price": "5990",
    "priceCurrency": "RUB",
    "availability": "https://schema.org/InStock",
    "priceValidUntil": "2026-12-31",
    "seller": { "@id": "https://example.com/#organization" }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "128",
    "bestRating": "5"
  },
  "review": {
    "@type": "Review",
    "reviewRating": { "@type": "Rating", "ratingValue": "5" },
    "author": { "@type": "Person", "name": "Алексей К." },
    "reviewBody": "Отличные кроссовки, бегаю в них каждый день.",
    "datePublished": "2026-04-10"
  }
}
</script>
Обратите внимание: seller: { "@id": "https://example.com/#organization" } — ссылка на ранее определённую организацию по её @id. Это называется graph linking: Google связывает сущности в единый граф знаний без дублирования данных.

Валидация разметки

После реализации разметку обязательно нужно проверить. Google предоставляет два официальных инструмента, а Search Console даёт реальную картину того, что видит краулер на проиндексированных страницах.

Шаг 1Rich Results Test

Откройте search.google.com/test/rich-results, введите URL или HTML-код. Инструмент покажет: какие rich results доступны для данной схемы, какие поля обязательны и что заполнено неверно. Только здесь видно, даст ли разметка visual enhancements в SERP.

Шаг 2Schema Markup Validator

Откройте validator.schema.org для полной валидации по стандарту Schema.org. Проверяет обязательные свойства каждого типа и предупреждает о несовместимых комбинациях — полезно при сложных вложенных схемах.

Шаг 3Google Search Console

Search Console → Улучшения (Enhancements) → выберите тип схемы. Раздел показывает реальные ошибки на проиндексированных страницах. Ошибки здесь — это то, что мешает rich results прямо сейчас, на живых URL.

Быстрая проверка: убедитесь, что JSON-LD доступен в HTML-ответе сервера, а не добавляется только через JavaScript. Откройте DevTools → Network → найдите первый запрос → Preview → найдите script type="application/ld+json". Если блока нет — Googlebot может не видеть разметку.

Чеклист структурированных данных

JSON-LD базовая реализация

  • Тег <script type="application/ld+json"> добавлен в <head> или конец <body>
  • Каждый блок содержит @context: "https://schema.org" и @type
  • Все главные сущности имеют уникальный @id в формате URL с фрагментом (#name)
  • JSON валиден — нет лишних запятых, все кавычки закрыты
  • Разметка присутствует в HTML-ответе сервера (не только через JS)

Organization / LocalBusiness

  • Выбран правильный подтип (Restaurant, Dentist, AutoDealer и т.д.) вместо просто Organization
  • Заполнены: name, url, telephone, address (для LocalBusiness)
  • Добавлен geo с точными координатами (latitude, longitude)
  • openingHoursSpecification заполнен: дни по-английски, время в формате HH:MM
  • sameAs ссылается минимум на соцсети + Wikidata (если есть)

Product

  • Заполнены: name, description, image (минимум одно изображение)
  • Вложен Offer с полями: price, priceCurrency, availability, priceValidUntil
  • availability использует полный URL: https://schema.org/InStock
  • Указаны sku и/или gtin13 для Google Shopping
  • AggregateRating вложен, если на странице есть рейтинги пользователей

Рейтинги и отзывы

  • AggregateRating содержит ratingValue, reviewCount, bestRating, worstRating
  • Значения AggregateRating соответствуют реальным данным с сайта
  • Review вложен в родительский объект (Product / LocalBusiness), а не отдельным блоком
  • Каждый Review имеет author (Person), reviewRating, datePublished, reviewBody
  • Отзывы в разметке — реальные отзывы реальных пользователей

FAQ

Нет. Google официально заявляет, что структурированные данные не являются сигналом ранжирования. Разметка помогает Google понять контент, но не повышает позиции механически. Косвенный эффект есть: rich results повышают CTR, а высокий CTR — сигнал качества. Поэтому правильная разметка работает, но не как прямой ranking factor.
Технически можно — GTM может вставить тег <script> с JSON-LD. Но Google предпочитает разметку в HTML-ответе сервера, а не через JavaScript. Разметка через GTM может не распознаваться при crawling, если Googlebot не выполняет JS-рендеринг страницы. Оптимальный вариант — генерировать JSON-LD на сервере.
Google не требует фиксированного количества. На практике: если отзывов менее 10 — включите все. Если сотни — достаточно 3–5 свежих. Важнее качество: каждый Review должен иметь текст, автора и дату. Если отзывов слишком мало, Google может не показать звёзды в сниппете.
Причин несколько: (1) Google ещё не переиндексировал страницу — подождите 1–4 недели; (2) reviewCount слишком мал; (3) Страница не соответствует политикам Google (отзывы выглядят накрученными); (4) Rich results для данного типа конкурируют с другими элементами SERP. Проверьте Search Console → Улучшения.
Используйте отдельный Offer для каждой валюты или несколько Offer внутри AggregateOffer. Поле priceCurrency принимает ISO 4217 коды: RUB, USD, EUR, KZT. Google отображает цену той страны/языка, для которой предназначена страница. Убедитесь, что hreflang настроен правильно и каждая локаль видит разметку со своей валютой.