Balisage Contenu payant (paywall) avec CreativeWork
Signalez votre contenu derrière un paywall avec CreativeWork, isAccessibleForFree et hasPart pour éviter d'être confondu avec du cloaking.
Le balisage du contenu payant utilise la méthode schema.org en JSON-LD pour signaler à Google qu’une partie de votre page est soumise à un paywall, à l’aide des propriétés CreativeWork. Son rôle est essentiel : il aide Google à distinguer un paywall légitime d’une technique de dissimulation (cloaking), qui enfreint les règles concernant le spam. Sans ce signal, un contenu affiché différemment aux robots et aux internautes pourrait être perçu comme trompeur.
Pour le SEO d’un éditeur ou d’un média par abonnement, ce balisage permet de faire indexer un contenu réservé tout en restant conforme. Il ne concerne que le contenu destiné à être exploré et indexé : si vous ne voulez pas indexer votre contenu payant, ce balisage ne vous est pas utile.
C’est le balisage le plus mal compris que je rencontre : sans lui, un contenu réservé qui s’affiche différemment aux robots peut être assimilé à du cloaking, ce qui est sanctionnable. Le déclarer correctement, c’est se mettre en règle tout en restant indexable. Mon conseil aux médias par abonnement : isolez précisément les sections payantes dans le balisage, ne masquez pas plus que ce qui est réellement verrouillé.
Les propriétés du paywall
Le balisage repose sur quelques propriétés clés. La propriété isAccessibleForFree, au niveau de l’article, indique si le contenu est libre ou payant. La structure hasPart précise ensuite quelle section précise est concernée, via un sélecteur CSS.
Le tableau ci-dessous récapitule les propriétés à connaître, leur type et leur rôle dans la déclaration d’un contenu payant.
| Propriété | Type | Rôle |
|---|---|---|
isAccessibleForFree |
Boolean |
Indique si l’article est libre ; mettez false pour un contenu payant (obligatoire) |
hasPart.@type |
Text |
À définir sur WebPageElement (recommandé) |
hasPart.isAccessibleForFree |
Boolean |
Indique si la section est payante ; mettez false dans ce cas (recommandé) |
hasPart.cssSelector |
CssSelectorType |
Sélecteur de classe pointant vers la section payante (recommandé) |
{
"@context": "https://schema.org",
"@type": "NewsArticle",
"headline": "Titre de l'article",
"image": "https://example.org/thumbnail1.jpg",
"datePublished": "2025-02-05T08:00:00+08:00",
"author": {
"@type": "Person",
"name": "Jean Dupont"
},
"isAccessibleForFree": false,
"hasPart": {
"@type": "WebPageElement",
"isAccessibleForFree": false,
"cssSelector": ".paywall"
}
}
Baliser une ou plusieurs sections
La logique est simple. Vous ajoutez d’abord un nom de classe autour de chaque section payante dans votre code HTML, par exemple une classe paywall. Vous ajoutez ensuite les données structurées de l’article (NewsArticle ou un autre type CreativeWork), en vous appuyant au besoin sur le balisage Article, puis vous y reliez le bloc hasPart. L’attribut cssSelector reprend exactement le nom de classe défini dans le HTML.
Si plusieurs sections d’une même page sont payantes, déclarez-les sous forme de tableau dans hasPart, avec un objet WebPageElement par section et son propre sélecteur (par exemple .section1 et .section2). N’utilisez que des sélecteurs de classe pour cssSelector.
Types acceptés et IA générative
Ce balisage est accepté pour le type CreativeWork ou l’un de ses types plus spécifiques : Article, NewsArticle, Blog, Comment, Course, HowTo, Message, Review ou WebPage. Vous pouvez combiner plusieurs types schema.org, par exemple Article et LearningResource.
Pensez aussi à la cohérence sur toutes les versions de votre page, y compris AMP : la règle d’accès pour les robots doit être identique entre AMP et version standard, sinon des erreurs de correspondance peuvent apparaître dans la Search Console. Avant publication, prenez le temps de tester vos données structurées. Enfin, les Aperçus IA et le Mode IA respectent les commandes d’aperçu de la recherche pour le contenu présenté.
Deux règles évitent les rejets. N’imbriquez pas de sections de contenu les unes dans les autres, et n’utilisez que des sélecteurs de classe (.class) pour la propriété cssSelector. Si vous ne voulez pas que le contenu payant soit accessible au navigateur à la diffusion, choisissez une implémentation de paywall qui ne le transmet pas au navigateur, plutôt qu’une simple solution JavaScript côté client.
À faire
- définir isAccessibleForFree sur false pour le contenu payant
- faire correspondre cssSelector au nom de classe HTML
- déclarer plusieurs sections en tableau
- aligner les règles AMP et standard
À éviter
- imbriquer des sections de contenu
- utiliser un sélecteur autre qu’une classe
- baliser un contenu que vous ne voulez pas indexer
- laisser des règles d’accès incohérentes entre versions
Points clés à retenir
- Ce balisage distingue un paywall légitime du cloaking interdit.
- Définissez isAccessibleForFree sur false pour le contenu payant.
- Faites pointer cssSelector vers le nom de classe de la section.
- Déclarez plusieurs sections payantes sous forme de tableau.
- Utilisez uniquement des sélecteurs de classe et n'imbriquez pas les sections.
L’essentiel du balisage Contenu payant.
Quiz : testez vos connaissances
Quiz : testez vos connaissances
-
À quoi sert le balisage du contenu payant ?
- À signaler à Google qu'une section est derrière un paywall, pour éviter la confusion avec du cloaking
- À empêcher Google d'indexer la page entière
- À afficher le prix de l'abonnement dans les résultats
Ce balisage signale à Google qu’une section est derrière un paywall, ce qui évite que la page soit confondue avec du cloaking, une pratique contraire aux règles.
-
Quelle valeur donner à isAccessibleForFree pour un contenu payant ?
- La valeur true
- La valeur paywall
- La valeur false
La propriété
isAccessibleForFreedoit être réglée surfalsepour le contenu payant, au niveau de l’article. -
Quel type de sélecteur faut-il utiliser pour désigner une section payante ?
- Un sélecteur de balise comme article
- Un sélecteur d'identifiant (#id) unique
- Un sélecteur de classe (.class) correspondant au nom de classe HTML
N’utilisez qu’un sélecteur de classe (
.class) qui correspond au nom de classe ajouté autour de la section payante dans votre code HTML.
Besoin d'un accompagnement SEO ?
Vous diffusez du contenu par abonnement et voulez le faire indexer en toute conformité ?