らくとん倶楽部
ラクトンC10(γ-デカラクトン)とラクトンC11(γ-ウンデカラクトン)の香りに魅了された日々の備忘録

Article(記事)の構造化データのmainEntityOfPageには何を指定すれば良いのか

Article(記事)の構造化データのmainEntityOfPageには何を指定すれば良いのか

ウェブサイトのコンテンツ情報をGoogleをはじめとした検索エンジンに的確に伝えるための手段である構造化データ。この構造化データが正しく記述されているかどうかをチェックするためのツールがGoogleから提供されています。それが「構造化データテストツール」です。

ふと本サイトの記事をチェックしてみると以下のようなエラーが指摘されていました。

mainEntityOfPageのエラー

mainEntityOfPageのところで、赤字で「は identifier プロパティの認識される有効なターゲット タイプではありません。」とエラーとなっています。主語がどれを指しているのか不明ですが、「有効なターゲットタイプではない」という指摘から察するに、「@type」を「WebPage」としているところに問題がありそうです。

mainEntityOfPageとは

そもそもmainEntityOfPageとは何なのでしょうか。http://schema.org/mainEntityOfPageに記載されている「background notes」を見ると、以下のような記述があります。

mainEntityOfPage "Indicates a page (or other CreativeWork) for which this thing is the main entity being described."

Many (but not all) pages have a fairly clear primary topic, some entity or thing that the page describes. For example a restaurant's home page might be primarily about that Restaurant, or an event listing page might represent a single event. The mainEntity and mainEntityOfPage properties allow you to explicitly express the relationship between the page and the primary entity.

Related properties include sameAs, about, and url.

The sameAs and url properties are both similar to mainEntityOfPage. The url property should be reserved to refer to more official or authoritative web pages, such as the item's official website. The sameAs property also relates a thing to a page that indirectly identifies it. Whereas sameAs emphasises well known pages, the mainEntityOfPage property serves more to clarify which of several entities is the main one for that page.

mainEntityOfPage can be used for any page, including those not recognized as authoritative for that entity. For example, for a product, sameAs might refer to a page on the manufacturer's official site with specs for the product, while mainEntityOfPage might be used on pages within various retailers' sites giving details for the same product.

about is similar to mainEntity, with two key differences. First, about can refer to multiple entities/topics, while mainEntity should be used for only the primary one. Second, some pages have a primary entity that itself describes some other entity. For example, one web page may display a news article about a particular person. Another page may display a product review for a particular product. In these cases, mainEntity for the pages should refer to the news article or review, respectively, while about would more properly refer to the person or product.

日本語に翻訳するとこんな感じです。

mainEntityOfPageはページ(またはその他のCreativeWork)が主に何について書かれているものなのかを指し示します。

多くのページでは(全てではありませんが)、そのページに関する極めて明確なメインとなるトピックが存在します。例えば、レストランのホームページには、そのレストランに関するメインとなる情報のページや、各種イベントをリストアップしたページなどが記載されていることでしょう。mainEntityとmainEntityOfPageプロパティは、ページとメインとなるエンティティ間の関係性をあなたが明示的に指定するために用いられます。

関連するプロパティには、sameAsabouturlがあります。

sameAsおよびurlプロパティはどちらもmainEntityOfPageと同じです。urlプロパティはよりオフィシャルなウェブページを参照するために用いられるべきでしょう。sameAsプロパティもまた間接的に特定するページに関連しています。sameAsはウェルノウンなページを意味し、mainEntityOfPageプロパティは複数存在するエンティティの中でどれがそのページのメインとなるエンティティかを明確化するために用いられます。

mainEntityOfPageはいかなるページでも使用することが出来ます。そのエンティティの公式ページでなくとも構いません。例えば、とある製品において、sameAsはその製品の製造者のオフィシャルサイトを参照する一方で、mainEntityOfPageは同じ製品に関する詳細な情報を提供する様々な小売店のサイトのページで用いられます。

aboutはmainEntityと基本的に同じですが、2つの重要な違いがあります。一つ目は、aboutは複数のエンティティやトピックスを参照することができますが、mainEntityはメインの一つだけに用いられるべきという点です。二つ目は、あるページは他のエンティティを記述したメインのエンティティである場合がるという点です。例えば、あるウェブページが特定の人物に関するニュース記事だとしましょう。別のページには特定の製品に関するレビューが書かれています。この場合、これらのページのmainEntityはニュース記事なのかレビューなのかを指し示すのに対し、aboutは人物なのか製品なのかを指し示すために用いられます。

意味わかりました?わからないですよね。こういう時はGoogle検索してみるのが良さそうです。検索にヒットしたページをいくつか読むと何やら諸説入り乱れているのがわかります。

mainEntityOfPageはそのページのメインとなる構造化データ?

いくつかのサイトでは「mainEntityOfPageはそのページに記載されている複数の構造化データのうち、最も重要な構造化データを指定する」と書かれています。例えば、映画に関するウェブサイトにおいて、映画情報の構造化データであるMovieとともに、参考情報としてその映画が上映されている映画館情報の構造化データ MovieTheaterの両方が書かれている場合に、検索エンジンがこのページは映画館に関するページだと誤解しないように、明示的に映画(Movie)を指定するというものです。

この説が正しいとすれば、確かに本サイトの記事にはArticleの構造化データがあるだけで、mainEntityOfPageに対して以下のように指定しているWebPageの構造化データは存在しません。※JSON-LD形式

"mainEntityOfPage":
{
"@type": "WebPage",
"@id": "/IT/SEO.mainEntityOfPage.php"
}

は identifier プロパティの認識される有効なターゲット タイプではありません。」というエラーも納得です。

ではなぜ、WebPageなどと指定していたのでしょうか?それはhttp://schema.org/mainEntityOfPageのサンプルコードとして以下のように記述されていたためです。

"mainEntityOfPage":
{
"@type": "WebPage",
"@id": "http://cathscafe.example.com/"
}

これにならって、@typeをWebPage、@idにURLを指定するよう解説しているページが多数ありました。なぜ@idがURLになるのかは謎ですが、公式サイトのサンプルがそうなっているのですから、それなりに説得力のある解説です。

そこで、@typeにWebPageではなく、Articleを指定してみました。ところが、ひとたびArticleを指定すると、Articleに必須または推奨とされているプロパティを指定せよと一斉に警告してきます。その中にはmainEntityOfPageも含まれています。これでは無限ループに陥ってしまいます。

いっそmainEntityOfPageを無くしてみた場合

なにやら混乱してきたので、思い切ってmainEntityOfPageを削除してみました。すると、以下のように「mainEntityOfPage」は推奨フィールドです。値があれば指定してください。という警告が出てしまいました。

mainEntityOfPage未指定時

エラーではなく警告(Warning)なので、このままでも問題無いと思われますが、BugとかErrorとかWarningとかが気になって仕方が無い性分な人にとってはこの警告は苦痛以外の何物でもありません。

とりあえずmainEntityOfPageを復活させておきます。

コードスニペットだとエラー検出されない

さらにGoogle検索を進めると、「構造化データテストツールにおいてURL指定ではなくコードスニペットでチェックするとエラーは検出されないので、このエラーは無視しても良い」というものがありました。

チェック対象となるページのURLを指定して、構造化データテストツールに実際のページへアクセスさせて構造化データをチェックするのではなく、ページのHTMLコードをコピペしてチェックするのがコードスニペットです。上述通り、コードスニペットでチェックさせると確かにエラーは検出されませんでした。やはり無視で良いのでしょうか。

mainEntityOfPageはCanonical URL(正規URL)

さらにGoogle検索を続けていると、Google開発者向けサイトのProperty list for article structured data (Article構造化データのプロパティ一覧)(英語)に以下のような記述があるのを発見しました。

mainEntityOfPage
URL; recommended (AMP), ignored (non-AMP)

The canonical URL of the article page. Specify mainEntityOfPage when the article is the primary topic of the article page.

これを日本語にすれば、「mainEntityOfPageはAMPページでは指定推奨、非AMPページでは無視。記事ページのCanonical URL(正規URL)を指定。」となります。

Canonical URL(正規URL)とはAMP対応のページの元となるページ(基本的には非AMPページ)のURLの事を指します。何という事でしょう。mainEntityOfPageにはこのCanonical URL(正規URL)を指定しろと明記されているではありませんか。

そこで構造化データのmainEntityOfPageプロパティを次のようにシンプルに記述してみました。

"mainEntityOfPage": "/IT/SEO.mainEntityOfPage.php"

すると以下の通り、めでたくエラーが解消されました。

mainEntityOfPageのエラーが解消した状態

まとめ

記事(Article)スキーマにおける構造化データのmainEntityOfPageプロパティは、http://schema.org/mainEntityOfPageのサンプルのように、「@type」や「@id」を指定するのではなく、単純に非AMPページを参照するCanonical URL(正規URL)を指定すればOKのようです。このmainEntityOfPageプロパティはAMPページでのみ有効で、非AMPでは無視されます。

MFI(モバイルファーストインデックス)時代のSEOの知識と技術をまとめた1冊。本書では、Webサイトに実施すべき一通りのSEO施策に関して、その背景から実際の考え方、そして技術まで踏み込んだ実装方法をまとめています。SEOにはどういった施策があるのか、どういった手順で取り組むべきなのか、そして、どのように実装していけば効果的なのか。悩めるマーケティング担当、SEO担当だけでなく、実装を担当するエンジニアにも役立つ内容となっています。
Amazonで購入 楽天で購入
Amazonで購入 楽天で購入
らくとん
作成日 2019年01月26日 17時41分
更新日 2019年04月25日 00時35分
6119文字
Twitter Facebook はてなブックマーク Pocket
■ 関連記事
らくとん倶楽部らくとん倶楽部
Author: らくとん
「パンくずリスト」なる言葉をご存知でしょうか?ウェブサイトを閲覧する中で、今自分がどのようなカテゴリのページを見ているのかを把握し、それを視覚化するために設けられた道先案内役とも言える文字列のことを「...
らくとん倶楽部らくとん倶楽部
Author: らくとん
アフィリエイトリンク等の外部リンクがクリックされた事をGoogleアナリティクスで集計する方法は、少しググれば沢山出てきます。Googleタグマネージャ(GTM:Google Tag Manager)...