Nouveau mainEntityOfPage requis pour les données structurées d'articles

12

J'ai regardé les données structurées de l'article comme proposé par Google et j'ai vu qu'il y avait de nouveaux champs obligatoires et recommandés, ils n'étaient pas là la semaine dernière. Voici le lien:

https://developers.google.com/structured-data/rich-snippets/articles

La première propriété de la liste est:

  • mainEntityOfPage. @ id (recommandé)

Je ne comprends pas quelle doit être la valeur de la propriété? Quelle est cette propriété? Est-ce un lien vers:

..ou un lien vers le blog actuel comme:

Ils ont ceci dans leur exemple de code:

<meta itemscope itemprop="mainEntityOfPage"  itemType="https://schema.org/WebPage" itemid="https://google.com/article" />

C'est ce que j'ai actuellement, il n'est pas encore conforme aux règles de l'outil de test - je suis toujours occupé à ajouter toutes les propriétés requises et en même temps à essayer d'y ajouter les propriétés recommandées:

<div itemscope itemtype="http://schema.org/BlogPosting">
   <h1 itemprop="headline">
      <a href="http:///www.example.com/blog/1001/my-blog-article" itemprop="url">My Blog Article</a>
   </h1>
   <p>Written by
      <span itemprop="author" itemscope itemtype="http://schema.org/Person">
         <span itemprop="name">Mase Kind</span>
      </span> on
      <time itemprop="datePublished" datetime="2015-11-16T15:30:00+02:00">November 16, 2015</time>
      <meta itemprop="dateModified" content="2015-12-10T12:29:00+02:00" />
      <div itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
         <div itemprop="logo" itemscope itemtype="http://schema.org/ImageObject"></div>
         <meta itemprop="name" content="My Company Name" />
      </div>
   </p>
   <div itemprop="articleBody">
      <p>first article body</p>
   </div>
</div>

J'ai également ceci dans mon document:

<body itemscope itemtype="http://schema.org/WebPage">
...
</body>

Est-ce que cela entrera en conflit avec l'exemple de code fourni par Google?

Brendan Vogt
la source
Je viens de voir la même chose arriver sur mon site ce matin et j'ai atterri sur ce fil.
dasickle

Réponses:

14

La mainEntityOfPagepropriété est utilisée pour donner l'URL d'une page sur laquelle la chose est l'entité principale. Cela pourrait devenir plus clair si vous regardez la propriété inverse mainEntity: cela donne l'entité principale d'une page ( voir un exemple ).

Par exemple, pour une page Web contenant un seul article de blog, vous pouvez en fournir un:

  • BlogPostingmainEntityOfPageWebPage
  • WebPagemainEntityBlogPosting

Ces propriétés sont utiles pour transmettre le contenu principal d'une page (car les pages peuvent contenir plusieurs éléments, par exemple un ItemListavec des WebPageéléments associés , un Persondécrivant l'auteur, un WebSitedonnant des métadonnées, etc.).

(Voir ma réponse sur Stack Overflow pour une explication plus détaillée.)


Il y a deux façons d'utiliser mainEntityOfPage:

  • fournir l'URL de la page
  • incorporer / référencer l'élément de page (généralement a WebPage)

La seconde n'a souvent pas beaucoup de sens (vous préférez utiliser la propriété inverse mainEntity), et c'est probablement pour cette raison que Google recommande / attend la première.

Pour fournir l'URL, vous pouvez simplement utiliser un linkélément:

<article itemscope itemtype="http://schema.org/BlogPosting">
  <link itemprop="mainEntityOfPage" href="http://example.com/article-1" />
</article>

L'outil de test de données structurées de Google accepte cela.

Dans l' exemple Articles Rich Snippet , Google utilise metaà la itemidplace un élément avec :

<meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="https://google.com/article"/>

Il s'agit de microdonnées HTML5 + non valides: si l' metaélément a un itempropattribut, il doit également avoir un contentattribut .

unor
la source
que se passe-t-il si nous fournissons également du contenu avec une URL en méta, par exemple, <meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="https://google.com/article" content='https://google.com/article' /> il validera bien et ne montrera pas d'erreur dans l'outil de test de données structurées
StarWars
@StarWars: Oui, c'est la façon de rendre cet metaélément valide. Notez que la contentvaleur serait ignorée, vous pouvez donc fournir une valeur vide.
unor
ok, j'ai maintenant ajouté content = "" à la balise META.
StarWars
Pourquoi Google utilise metaplutôt que linkdans ses exemples? ces deux éléments sont validés dans l'outil de test de données structurées. Bien que l'aperçu soit différent. Quand linkest utilisé, il a mainEntityOfPage http://example.com/article-1alors dans le cas de metacelui-ci des spectacles @idet des @typeattributs.
StarWars du
@StarWars: Oui, c'est exactement la différence: la metafaçon de créer un nouvel élément avec un type et un URI comme identifiant, la linkfaçon dont les liens sont simplement vers une page. Je ne sais pas pourquoi la documentation de Google utilise meta, d'autant plus que je pense que le linkchemin est plus simple.
unor
2

Quelle est cette propriété?

Il est complémentaire aux propriétés urlet sameAs, comme décrit en mainEntityarrière - plan .

Il a un nom idiosyncratique car il peut être appliqué à tous les éléments de type Thing. S'il ne s'appliquait qu'à Articlescela, il aurait pu être appelé mainTopic/ mainTopicOfArticleet être plus clair.

Je ne comprends pas quelle doit être la valeur de la propriété?

La valeur de la propriété devrait être un élément de type CreativeWorkou un URLréférencement qui fonctionne selon Schema.org. Cela signifie que cela pourrait également être un Articleou BlogPostingcomme vous l'avez mentionné. Cependant, si vous créez des pages AMP, la valeur doit être une URL.

Est-ce que cela entrera en conflit avec l'exemple de code fourni par Google?

Malgré ce que dit l'outil de test de données structurées de Google, leur documentation ne recommande plus d'utiliser les mainEntityOfPagepages non AMP, vous êtes donc libre de l'omettre.

Josh Habdas
la source