Uporządkowane dane dotyczące treści płatnych i dostępnych w ramach subskrypcji (CreativeWork)

Z tego artykułu dowiesz się, jak używać formatu JSON-LD schema.org, aby 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 zasadami dotyczącymi spamu. 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",
      "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>

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 jest oparte na subskrypcji lub jeśli dostęp do treści, które mają być indeksowane, wymaga rejestracji użytkownika, wykonaj te czynności. Podany tu przykład dotyczy uporządkowanych danych NewsArticle. Pamiętaj, żeby 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. Na 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"
    }
    }
  4. Zweryfikuj kod za pomocą testu wyników z elementami rozszerzonymi i napraw błędy krytyczne.

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, or 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"
    }
  ]
}

Typy obsługiwane

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": ["Article", "LearningResource"]

Aby robot Google rozpoznał, że Twój artykuł zawiera treści płatne, musisz w nim określić wymagane właściwości. Możesz dodać właściwości zalecane, aby dokładniej określić, które sekcje strony są dostępne za paywallem (albo wymagają subskrypcji bądź rejestracji).

Właściwości wymagane
isAccessibleForFree

Boolean

Określa, czy artykuł jest ogólnodostępny czy ukryty za paywallem (albo wymaga subskrypcji lub rejestracji). Ustaw właściwość isAccessibleForFree na false, aby wskazać, że ta sekcja jest za paywallem.

Właściwości zalecane
hasPart.cssSelector

CssSelectorType

Selektor CSS, który odwołuje się do nazwy klasy ustawionej w kodzie HTML, aby określić sekcję płatną.

hasPart.@type

Text

Ustaw wartość @type na WebPageElement.

hasPart.isAccessibleForFree

Boolean

Określa, czy ta sekcja artykułu jest dostępna za paywallem (albo wymaga subskrypcji lub rejestracji). Ustaw właściwość isAccessibleForFree na False, aby wskazać, że ta sekcja jest za paywallem.

Uwaga dotycząca 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 przypadkach komponentu 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.

Uwagi na temat generatywnej AI w wyszukiwarce

Przeglądy SGE (generatywnej AI w wyszukiwarce) są generowane za pomocą AI. Są w nich wykorzystywane informacje z całego internetu oraz Grafu wiedzy Google – zbioru informacji o ludziach, miejscach i rzeczach. Treści zablokowane za pomocą ustawień fragmentów nie są wyświetlane w przeglądach.

Wyszukiwanie z wykorzystaniem generatywnej AI ułatwia znajdowanie w internecie przydatnych informacji, bo pojawiają się w przeglądzie i stanowią punkt wyjścia do dalszych poszukiwań. Podobnie jak w przypadku wyszukiwarki, przeglądy SGE mogą zawierać linki do treści płatnych, co umożliwia użytkownikom odkrywanie tych stron.

Jeśli na stronie znajdują się uporządkowane dane paywalla, funkcja SGE podczas przeglądania, funkcja oddzielna od SGE w wyszukiwarce, nie będzie pokazywać najważniejszych punktów artykułów płatnych.

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, by 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 tagu noarchive robots meta.

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 we fragmencie w wyniku wyszukiwania, używając tagu max-snippet robots meta.

Rozwiązywanie problemów

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