リッチリザルトテストで「検出されません」エラー。原因と対応
- 投稿日/更新日
解決法
Googleのリッチリザルトテストは一部のデータ形式しか対応していません。Googleのドキュメント「検索ギャラリー」を確認して、対応している形式にしてみましょう。私の場合は、ページ自体のタイプをWebPageにしていたのが原因でした。
解説
SEOとしてリッチリザルト対応すなわち構造化データを用意しておくことはもはや常識ですが、テストツールとしてはGoogleのリッチリザルトテストが有名です。さて、このテストツールでチェックしていたところ、とある現象に出くわしました。
書き方が悪かったのかな? URLがおかしいのかな? それとも「,」を入れ忘れたのかな? Googleの機嫌が悪いのかな? いろいろ検証したのですが、全く検出されません。文法のエラーや警告が出ることはよくありますが、このような構造データ自体が無いという現象は初めてでした。
Googleの仕様だった
Googleはドキュメントで下記のように言っています。
検索用の構造化データでは主に schema.org のボキャブラリが使用されていますが、Google 検索の動作の定義には、schema.org のドキュメントではなく Google 検索セントラルのドキュメントを使用してください
https://developers.google.com/search/docs/advanced/structured-data/intro-structured-data
Schema.orgが用意している様々なプロパティをGoogleはすべて対応しておらず、一部しか見てませんよということです。それは分かっとります。でも動かんぞ…といろいろ探っていたところ原因が判明しました。
NG例
"@type": "WebPage",
OK例
"@type": "BlogPosting",
今回、現象の原因となった記述は @type”:”WebPage” 。ただこのTYPEはmainEntityOfPageプロパティの中でも使用しており、こちらは認識されています。どうやらGoogleとしては、ページ自体の主たるTYPEに「WebPage」を使用しても認識しないということにしているようです。そんなぁ。
先述の通り、Googleは一部のTYPEしか認識しないので、検索ギャラリーで掲載しているものから類似のものでTYPEを設定するしかないようです。たとえばブログであれば、「Article」にあたりますので、Articleスターターガイドページを見ると、「Article、NewsArticle、BlogPostingいずれかを記述」と書いてあります。ということで今回私はBlogPostingをチョイスしました。
よく似た「WebSite」タイプに関してはこんなドキュメントも有りました。
https://developers.google.com/search/docs/advanced/structured-data/sitelinks-searchbox
「サイトリンク検索ボックス」機能のために「WebSite」TYPEは利用できるけど、それ以外はどうもできないようです。うーんそれってどうなんですかねぇ…。
今回はリッチリザルトテストで検出されない事態になりましたが、Schema.orgのスキーママークアップ検証ツールでは@type":"WebPage"
でもエラーはでてきません。なので当面は両方のツールで確認しておいた方が良さそうですね。
ちなみに、どうしてもWebpageが使いたい、でもリッチリザルトテストでも確認したいという場合は、並列記述することでテストできる場合があります。これは私が発見した裏技ですが、意外にアリかもしれません。
<script type="application/ld+json"> { "@context": "http://schema.org", "@type": ["WebPage","BlogPosting"]
備忘録として残しておきます。