Subskrypcja i treści płatne

Z tego artykułu dowiesz się, jak używać formatu JSON-LD schema.org, by oznaczać w witrynie treści płatne za pomocą właściwości CreativeWork. Uporządkowane dane pomagają Google odróżnić treści płatne od maskowania, które jest niezgodne z naszymi wytycznymi. Dowiedz się więcej o treściach płatnych i dostępnych w ramach subskrypcji.

Przykład

Oto przykład uporządkowanych danych NewsArticle z treściami płatnymi.

<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>

Wytyczne

Aby umożliwić wyświetlanie strony w wynikach wyszukiwania, musisz zapewnić jej zgodność z ogólnymi wytycznymi dotyczącymi uporządkowanych danych oraz ze wskazówkami technicznymi. W przypadku treści płatnych obowiązują też te wytyczne:

  • Użycie formatu JSON-LD i mikrodanych to akceptowane metody definiowania uporządkowanych danych w przypadku treści płatnych.
  • Nie zagnieżdżaj sekcji z treścią.
  • Dla właściwości cssSelector używaj tylko selektorów .class.

Dodawanie znaczników do treści płatnych

Jeśli korzystanie z Twojej witryny wymaga subskrypcji lub jeśli dostęp do treści, które mają być indeksowane, wymaga rejestracji użytkownika, wykonaj czynności opisane poniżej. Podany tu przykład dotyczy uporządkowanych danych NewsArticle. Pamiętaj, aby wykonać te czynności w przypadku wszystkich wersji Twojej strony (w tym AMP i innych niż AMP).

  1. Dodaj nazwę klasy do każdej sekcji z treściami płatnymi na stronie. Przykład:
    <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. Dodaj uporządkowane dane NewsArticle.
  3. Dodaj zaznaczone uporządkowane dane JSON-LD do uporządkowanych danych obiektu NewsArticle.
    {
      "@context": "https://schema.org",
      "@type": "NewsArticle",
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "https://example.org/article"
      },
      (...)
      "isAccessibleForFree": "False",
      "hasPart": {
        "@type": "WebPageElement",
        "isAccessibleForFree": "False",
        "cssSelector": ".paywall"
      }
    }

Wiele sekcji z treściami płatnymi

Jeśli na stronie masz wiele sekcji z treściami płatnymi, dodaj nazwy klas w postaci tablicy.

Oto przykład sekcji z treściami płatnymi na stronie:

<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>

Oto przykład uporządkowanych danych obiektu NewsArticle z wieloma sekcjami zawierającymi treści płatne.

{
  "@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"
    }
  ]
}

Obsługiwane typy

Te znaczniki są obsługiwane w przypadku typu CreativeWork lub jednego z bardziej określonych typów CreativeWork:

Można używać wielu typów schema.org, np. tych:

"@type": ["CreativeWork","Article","Person"]

Uwagi dotyczące stron AMP

Oto lista uwag, o których musisz pamiętać, jeśli używasz stron AMP:

  • Jeśli masz stronę AMP z treściami płatnymi, użyj w odpowiednich miejscach komponentów amp-subscriptions.
  • Upewnij się, że punkt końcowy autoryzacji zapewnia dostęp do treści odpowiednim robotom Google i innych firm – zależy to od wydawcy.
  • Upewnij się, że zasady dostępu dla botów są takie same w przypadku stron AMP i stron w innych formatach. W przeciwnym razie w Search Console mogą zostać zgłoszone błędy niezgodności treści.

Jak sprawdzić, czy Google może indeksować i skanować Twoje strony

Jeśli chcesz, żeby roboty Google indeksowały i skanowały całą stronę (w tym sekcje płatne), sprawdź, czy Googlebot (a w odpowiednich przypadkach także Googlebot-News) ma dostęp do strony.

Użyj narzędzia do sprawdzania adresów URL, aby zobaczyć, jak Google indeksuje i renderuje adres URL w Twojej witrynie.

Określanie, jakie informacje mają być widoczne w wynikach wyszukiwania

Aby w Google nie wyświetlał się link do Twojej strony zapisany w pamięci podręcznej, użyj metatagu robots noarchive.

Jeśli chcesz wykluczyć niektóre fragmenty treści z wyników wyszukiwania, użyj atrybutu HTML data-nosnippet. Możesz też ograniczyć liczbę znaków w opisie wyniku wyszukiwania, używając metatagu robots max-snippet.

Rozwiązywanie problemów

Jeśli masz problem z zastosowaniem uporządkowanych danych, skorzystaj z tych rozwiązań: