web-dev-qa-db-ja.com

この特定のサイトに「mainEntityOfPage」を実装する方法は?

こちらをご覧ください: https://developers.google.com/structured-data/testing-tool?url=https%253A%252F%252Fglamourina.net%252Fen%252F

このサイトにmainEntityOfPageを正しく追加するにはどうすればよいですか?

Googleドキュメントの例では、次のようなものが表示されます。

<div itemscope itemtype="http://schema.org/NewsArticle">

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

しかし、これは一人の著者のブログです。そして、それはblogPostsを備えています。

<article itemscope itemtype="https://schema.org/BlogPosting" class="singlearticles">

次のように変更すると良いでしょうか?

<article itemprop="blogPost" itemscope itemtype="https://schema.org/BlogPosting">
<meta itemscope itemprop="mainEntityOfPage"  itemType="https://schema.org/WebPage" itemid="https://linktoarticle"/>

mainEntityOfPageの使用法をよく理解しているかどうかはわかりません。この特定のケース/ウェブサイトに対して私ができることを誰かが提案できれば幸いです。一般的には、各サイトは異なるmainEntityOfPageを持つことができますが、このサイトの適切な実装を知って理解する必要があります。

17
Pikk

GoogleのMicrodataの例について

GoogleのMicrodataの例は無効です。 meta要素にitemprop属性がある場合、content属性が必要です( details )。

MicrodataでmainEntityOfPageを指定するさまざまな方法 について説明しました。最もわかりやすいのは、(別のMicrodataアイテムの代わりに)URL値を作成するlink要素です。

<link itemprop="mainEntityOfPage" href="http://example.com/article-1" />

mainEntity

mainEntityOfPage の使用を理解する方が簡単です。最初にその逆プロパティ mainEntity を見ると、.

WebPageを含むBlogPostingの場合、次のようになります。

<body itemscope itemtype="http://schema.org/WebPage">
  <article itemprop="mainEntity" itemscope itemtype="http://schema.org/BlogPosting">
  </article>
</body>

つまり、WebPageBlogPostingがあり、BlogPostingはこのWebPageで説明されている「プライマリエンティティ」です。これを示すことは、たとえば、著者を説明するPerson、関連する投稿のための5つのBlogPostingアイテム、メタデータを提供するWebSiteアイテムなど、関連するアイテムがさらにある場合に特に意味があります。など。mainEntity/mainEntityOfPageのおかげで、消費者はそのページのプライマリ/メインアイテムが何であるか(つまり、ページの略)を知ることができます。

mainEntityOfPage

mainEntityOfPageを使用した次の例は、上記のmainEntityを使用した例と同等の構造化データになります。

<article itemscope itemtype="http://schema.org/BlogPosting">
  <div itemprop="mainEntityOfPage" itemscope itemtype="http://schema.org/WebPage">
  </div>
</article>

ご覧のとおり、BlogPostingアイテムの要素にはWebPageアイテムの要素が含まれています。もちろん、これはかなり珍しいマークアップです。

しかし、 mainEntityOfPage プロパティは、値として(CreativeWork)アイテムを期待するだけでなく、代わりにURLを期待します。したがって、WebPageアイテムを明示的に提供する代わりに、代わりにページのURLを提供できます。

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

(これは Articles Rich Snippet のドキュメントによると、Googleが期待するものです。)

Excursus:ページと投稿のURL

多くのサイトでは、WebページのURLとブログ投稿のURLを区別していません。これらのサイトでは、次のように述べるのはばかげているように見えるかもしれません

http://example.com/article-1 (the blog post)
is the 'mainEntityOfPage' 
http://example.com/article-1 (the web page) 
http://example.com/article-1 (the web page) 
has 'mainEntity' 
http://example.com/article-1 (the blog post)

ただし、とにかく便利な場合があります(たとえば、他のアイテムにはこのステートメントがないため、プライマリアイテムを選択する場合、または空白ノードの場合など)。

ただし、サイトによっては(特に Linked Data の場合)区別されるため、次のように表示される場合があります

http://example.com/article-1#this (the blog post)
is the 'mainEntityOfPage' 
http://example.com/article-1 (the web page) 
http://example.com/article-1 (the web page) 
has 'mainEntity' 
http://example.com/article-1#this (the blog post)

ここに、 http://example.com/article-1#thisはブログの投稿を表し、http://example.com/article-1は、この投稿に関する情報(または投稿自体のコンテンツ)を含むページを表します。より明確な例は、人とこの人に関するページです。または、建物とこの建物に関するページ。例については私の答えを参照してください なぜこれをしたいのか 。 (ただし、上記で説明したように、区別する必要はありません。両方に同じURLを使用できます。)

47
unor