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

Из этой статьи вы узнаете, как с помощью метаданных 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 и другие допустимые форматы микроразметки для структурирования платного контента.
  • Не вкладывайте разделы с контентом друг в друга.
  • Для свойства .class указывайте только селекторы cssSelector.

Как разметить платный контент

Если вы хотите, чтобы роботы 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": ["Article", "LearningResource"]

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

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

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

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

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

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

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

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

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

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

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