Dati strutturati per contenuti in abbonamento e protetti da paywall (CreativeWork)

In questa pagina viene spiegato come utilizzare il metodo JSON-LD di schema.org per indicare i contenuti protetti da paywall sul tuo sito con le proprietà CreativeWork. Questi dati strutturati aiutano Google a distinguere i contenuti protetti da paywall dal cloaking, che viola le norme relative allo spam. Scopri di più sui contenuti in abbonamento e protetti da paywall.

Esempio

Ecco un esempio di dati strutturati NewsArticle con contenuti protetti da paywall.

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

Linee guida

Devi rispettare le linee guida generali sui dati strutturati e le linee guida tecniche affinché la tua pagina sia idonea a essere visualizzata nei risultati di ricerca. Inoltre, ai contenuti protetti da paywall si applicano le linee guida che seguono:

  • I formati JSON-LD e Microdati sono metodi accettati per specificare dati strutturati per i contenuti protetti da paywall.
  • Non nidificare le sezioni di contenuti.
  • Utilizza solo selettori .class per la proprietà cssSelector.

Aggiungere il markup ai contenuti protetti da paywall

Se offri un qualsiasi accesso in abbonamento ai contenuti del tuo sito web o se gli utenti devono registrarsi per accedere ai contenuti che vuoi che vengano indicizzati, segui questi passaggi. Il seguente esempio si applica ai dati strutturati NewsArticle. Assicurati di seguire questi passaggi per tutte le versioni della pagina (incluse le versioni AMP e non AMP).

  1. Aggiungi il nome di una classe a ogni sezione di contenuti protetti da paywall della pagina. Ad esempio:
    <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. Aggiungi i dati strutturati NewsArticle.
  3. Aggiungi i dati strutturati JSON-LD evidenziati ai tuoi dati strutturati 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. Convalida il codice utilizzando lo strumento di Test dei risultati avanzati e correggi eventuali errori critici.

Più sezioni di contenuti protetti da paywall

Se in una pagina ci sono diverse sezioni di contenuti protetti da paywall, aggiungi i nomi delle classi sotto forma di array.

Ecco un esempio di sezioni di contenuti protetti da paywall in una pagina:

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

Ecco un esempio di dati strutturati NewsArticle con diverse sezioni di contenuti protetti da paywall.

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

Tipi supportati

Questo markup è supportato per il tipo CreativeWork o per uno dei seguenti tipi più specifici di CreativeWork:

È possibile utilizzare più tipi di schema.org, come ad esempio:

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

Per consentire a Google di comprendere che il tuo articolo include contenuti protetti da paywall, devi includere le proprietà obbligatorie. Puoi aggiungere le proprietà consigliate per una maggiore granularità sulle sezioni di una pagina protette da un paywall (o che richiedono un abbonamento o una registrazione).

Proprietà obbligatorie
isAccessibleForFree

Boolean

Se l'articolo è accessibile da tutti o è protetto da un paywall (oppure richiede un abbonamento o una registrazione). Imposta la proprietà isAccessibleForFree su false per specificare che questa sezione è protetta da un paywall.

Proprietà consigliate
hasPart.cssSelector

CssSelectorType

Un selettore CSS che fa riferimento al nome della classe che hai impostato nel codice HTML per specificare la sezione con paywall.

hasPart.@type

Text

Imposta @type su WebPageElement.

hasPart.isAccessibleForFree

Boolean

Se questa sezione dell'articolo è protetta o meno da un paywall (oppure richiede un abbonamento o una registrazione). Imposta la proprietà isAccessibleForFree su False per specificare che questa sezione è protetta da un paywall.

Considerazioni relative alle pagine AMP

Ecco un elenco di considerazioni da tenere presente se utilizzi le pagine AMP:

  • Se hai una pagina AMP con contenuti protetti da paywall, utilizza amp-subscriptions ove appropriato.
  • Assicurati che il tuo endpoint di autorizzazione conceda l'accesso ai contenuti ai bot appropriati di Google e altri crawler. Questa impostazione è diversa per ciascun publisher.
  • Assicurati che i criteri di accesso dei bot siano gli stessi sia per le pagine AMP che non AMP. In caso contrario, ciò potrebbe causare la visualizzazione di errori relativi a contenuti non corrispondenti in Search Console.

Considerazioni sull'IA generativa nella Ricerca

Le panoramiche di SGE (Search Generative Experience, esperienza generativa nella Ricerca) vengono generate con l'aiuto dell'AI. Sono supportate da informazioni provenienti dal web e dal Knowledge Graph di Google, una raccolta di informazioni su persone, luoghi e cose. I contenuti bloccati tramite i controlli degli snippet non verranno mostrati nelle panoramiche.

SGE è progettata per aiutare le persone a scoprire informazioni utili sul web che supportano le informazioni nella panoramica, e fornisce un punto di partenza per ulteriori approfondimenti. Come più in generale nella Ricerca, le panoramiche di SGE potrebbero includere link a contenuti protetti da paywall come modo per consentire agli utenti di scoprire queste pagine.

SGE durante la navigazione, una funzionalità separata rispetto a SGE nella Ricerca, non mostrerà i punti chiave per gli articoli protetti da paywall, se nella pagina sono presenti dati strutturati per contenuti protetti paywall.

Assicurarsi che Google riesca a eseguire la scansione e l'indicizzazione delle pagine

Se vuoi che Google esegua la scansione e l'indicizzazione dei tuoi contenuti (incluse le sezioni di contenuti protetti da paywall), assicurati che Googlebot e Googlebot-News (se pertinente) riescano ad accedere alla pagina.

Utilizza lo strumento Controllo URL per verificare in che modo Google esegue la scansione e il rendering di un URL sul tuo sito.

Controllare quali informazioni vengono mostrate nei risultati di ricerca

Per impedire a Google di mostrare il link Copia cache per la pagina, usa il meta tag robots noarchive.

Per impedire che determinate sezioni dei tuoi contenuti compaiano negli snippet dei risultati di ricerca, utilizza l'attributo HTML data-nosnippet. Puoi anche limitare il numero di caratteri di uno snippet di risultati di ricerca utilizzando il meta tag robots max-snippet.

Risoluzione dei problemi

Se hai difficoltà con l'implementazione o il debug dei dati strutturati, ecco alcune risorse che potrebbero esserti utili.