Структурированные данные для подписок и платного контента (CreativeWork)

Из этой статьи вы узнаете, как с помощью свойств для типа CreativeWork в формате JSON-LD от schema.org пометить на своем сайте платный контент. Структурированные данные помогают Google отличить платный контент от материалов, которые скрыты с помощью маскировки и тем самым нарушают наши правила в отношении веб-спама. Подробнее о подписках и платном контенте

Пример

Ниже приведен пример кода, в котором платный контент помечен с помощью структурированных данных типа NewsArticle.

<html>
  <head>
    <title>Article headline</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "NewsArticle",
      "headline": "Article headline",
      "image": "https://example.org/thumbnail1.jpg",
      "datePublished": "2025-02-05T08:00:00+08:00",
      "dateModified": "2025-02-05T09:20:00+08:00",
      "author": {
        "@type": "Person",
        "name": "John Doe",
        "url": "https://example.com/profile/johndoe123"
      },
      "description": "A most wonderful article",
      "isAccessibleForFree": "False",
      "hasPart":
        {
        "@type": "WebPageElement",
        "isAccessibleForFree": "False",
        "cssSelector" : ".paywall"
        }
    }
    </script>
  </head>
  <body>
    <div class="non-paywall">
      Non-Paywalled Content
    </div>
    <div class="paywall">
      Paywalled Content
    </div>
  </body>
</html>

Правила

Чтобы ваша страница появлялась в результатах поиска, вы должны соблюдать общие правила в отношении структурированных данных и технические требования. Кроме того, разметка платного контента должна соответствовать правилам, приведенным ниже.

  • Для структурирования платного контента используйте микроданные или формат JSON-LD.
  • Не вкладывайте разделы с контентом друг в друга.
  • Для свойства cssSelector указывайте только селекторы .class.

Как добавить разметку для платного контента

Если вы хотите, чтобы роботы Google индексировали ваш контент, для доступа к которому нужна подписка или регистрация, выполните описанные ниже действия. В качестве примера приведена разметка контента со структурированными данными типа NewsArticle. Повторите перечисленные действия для всех вариантов страницы, включая ее AMP-версию.

  1. Присвойте имя класса каждому разделу с платным контентом на вашей странице. Пример:
    <body>
    <p>This content is outside a paywall and is visible to all.</p>
    <div class="paywall">This content is inside a paywall, and requires a subscription or registration.</div>
    </body>
  2. Добавьте структурированные данные типа NewsArticle.
  3. Включите структурированные данные JSON-LD, которые выделены в нашем примере, в структурированные данные типа NewsArticle.
    {
    "@context": "https://schema.org",
    "@type": "NewsArticle",
    "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://example.org/article"
    },
    (...)
    "isAccessibleForFree": "False",
    "hasPart": {
    "@type": "WebPageElement",
    "isAccessibleForFree": "False",
    "cssSelector": ".paywall"
    }
    }
  4. Протестируйте свой код с помощью инструмента проверки расширенных результатов. Если будут обнаружены критические ошибки, устраните их.

Что делать, если платных разделов несколько

Если на странице имеется несколько разделов с платным контентом, объедините их имена классов в один массив.

Код страницы с двумя платными разделами может выглядеть так:

<body>
<div class="section1">This content is inside a paywall, and requires a subscription or registration.</div>
<p>This content is outside a paywall and is visible to all.</p>
<div class="section2">This is another section that's inside a paywall, or requires a subscription or registration.</div>
</body>

Вот пример того, как внедрить структурированные данные типа NewsArticle для этих разделов:

{
  "@context": "https://schema.org",
  "@type": "NewsArticle",
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://example.org/article"
    },
  (...)
  "isAccessibleForFree": "False",
  "hasPart": [
    {
      "@type": "WebPageElement",
      "isAccessibleForFree": "False",
      "cssSelector": ".section1"
    }, {
      "@type": "WebPageElement",
      "isAccessibleForFree": "False",
      "cssSelector": ".section2"
    }
  ]
}

Поддерживаемые типы

Такую разметку можно использовать с типом CreativeWork или одним из следующих подтипов CreativeWork:

Можно указать несколько типов schema.org, например такие:

"@type": ["Article", "LearningResource"]

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

Обязательные свойства
isAccessibleForFree

Boolean

Указывает на то, является ли статья общедоступной или для доступа к ней требуется оплата, подписка или регистрация. Если раздел платный, задайте для свойства isAccessibleForFree значение False.

Рекомендуемые свойства
hasPart.cssSelector

CssSelectorType

Селектор CSS, который ссылается на имя класса, указанное в HTML, чтобы обозначить платный раздел.

hasPart.@type

Text

Задайте для свойства @type значение WebPageElement.

hasPart.isAccessibleForFree

Boolean

Указывает на то, является ли раздел платным или доступ к нему требует подписки или регистрации. Если раздел платный, задайте для свойства isAccessibleForFree значение False.

О чем следует помнить, если у вас есть AMP-страницы

Следуйте этим рекомендациям:

  • Если у вас есть AMP-страницы с платным контентом, используйте при необходимости компонент amp-subscriptions.
  • Убедитесь, что ваше средство авторизации предоставляет роботам Google и других поисковых систем доступ к контенту. Корректно настроить его может только сам издатель.
  • Проверьте, одинаковые ли правила доступа к обычным и AMP-страницам вы настроили для робота. В противном случае в Search Console будут наблюдаться ошибки несоответствия контента.

Особенности генеративной модели Google Поиска

Результаты поиска с использованием технологии SGE (Search Generative Experience – генеративной модели Google Поиска) формируются с помощью ИИ. При этом используется информация как из интернета, так и из сети знаний Google, содержащей разнообразные сведения о людях, местах и объектах. Контент, заблокированный с использованием настроек описаний страниц, не будет представлен в результатах поиска.

SGE упрощает поиск нужной информации в интернете: полученные результаты содержат общие сведения и в то же время могут послужить отправной точкой для углубленного изучения темы. В частности, результаты поиска в формате SGE могут содержать ссылки на платный контент на ваших страницах.

В отличие от функции "SGE в Поиске", SGE при просмотре не будет отображать основные положения платных статей, если на странице имеются структурированные данные для платного контента.

Убедитесь, что Google может сканировать и индексировать ваши страницы

Если вам нужно, чтобы мы сканировали и индексировали ваш контент, в том числе в платных разделах, обеспечьте доступ к ним роботу Googlebot (и роботу Googlebot-News в случае необходимости).

Используйте инструмент проверки URL, чтобы получить данные о том, как Google сканирует и обрабатывает ваши веб-страницы.

Управляйте показом своего контента в результатах поиска

Если вы не хотите, чтобы в результатах поиска Google появлялись ссылки на кешированные копии ваших страниц, используйте тег meta с атрибутом noarchiverobots.

Чтобы запретить показ в Google контента из определенных разделов, используйте HTML-атрибут data-nosnippet. Вы также можете задать ограничение на длину фрагмента в результатах поиска с помощью тега meta с атрибутом max-snippetrobots.

Устранение неполадок

Если у вас возникли трудности с добавлением или отладкой структурированных данных, вам помогут ресурсы и сведения, доступные по приведенным ниже ссылкам.