Подписка и платный контент

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

Пример

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

<html>
  <head>
    <title>Article headline</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "NewsArticle",
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "https://example.org/article"
      },
      "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"
      },
      "publisher": {
         "name": "The Exemplary Times",
         "@type": "Organization",
         "logo": {
            "@type": "ImageObject",
            "url": "https://example.org/logo.jpg"
         }
      },
      "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"
      }
    }
    

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

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

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

<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, and 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": ["CreativeWork","Article","Person"]

Если у вас есть AMP-страницы

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

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

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

Инструкции:

  • Если вы хотите, чтобы поисковые роботы Google сканировали и индексировали только бесплатный и общедоступный контент на ваших страницах, пропустите этот шаг.
  • Если вам нужно, чтобы мы могли сканировать и индексировать ваши страницы полностью, в том числе и платный контент на них, обеспечьте доступ к ним роботу Googlebot (и роботу Googlebot-News в случае необходимости).
  • Если в результатах поиска Google не должны показываться ссылки на кешированные копии ваших страниц, используйте метатег robots с директивой noarchive.

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

Если у вас возникли трудности в работе со структурированными данными, устранить неполадки помогут ресурсы и сведения, доступные по ссылкам: