2013年10月10日木曜日

Blogger の構造化データ マークアップのエラーを回避する

2017年7月14日追記: こちらは2013年の記事です。現在は data:post.lastUpdatedISO8601 データタグが使えます。

Blogger を構造化データ テスト ツールで確認すると hatom-entry にエラーが表示されます。

エラー: Missing required field "updated".

気にする必要はないのですが、表示させなくすることもできます。

テンプレートのHTMLソースをひらき、下のタグを検索します。
<abbr class='published' expr:title='data:post.timestampISO8601'>

updated クラスを追加します。
<abbr class='updated published' expr:title='data:post.timestampISO8601'>

モバイル テンプレートを使用している場合は、2ヶ所あると思います。

これは、更新日 (updated) の日付を公開日 (published) と同じ場所から取得してエラーを回避していますので、構造化データのマークアップとしては意味をなしません。

エラーが発生する原因は、Blogger の記事の更新日は内部的には存在しても data タグから取得できないためです。同じ理由で、schema.org の更新日(itemprop="dateModified")も取得できません。

記事のアップデートの日付は、フィードの XML やブログをエクスポートすると <updated> タグ内に確認できます。
このフィード データから JavaScript で取得する方法もあるようですが色々な面でハードルが高いです。

Blogger の データ タグは、たまにこっそり追加されていたりするので、将来取得できるようになるかもしれません。

もし更新日を取得できたとしても、schema.org のマークアップでは、dateModified ではなく、datePublished に振り分けたいです。

schema.org には、dateModified (更新日)、datePublished (公開日)、dateCreated (作成日)などの日付のプロパティがありますが、検証した限りリッチスニペットとしてGoogle の検索結果に表示されるのは、datePublished のみです。(Bing は dateModified)

そのため、datePublished をそのまま公開日という意味合いでマークアップすると、新しくページを更新しても、検索結果の日付から古い内容だと思われてしまいます。

自分のサイトではdatePublished = ページの更新日。覚え書きとしてdateCreated = ページの公開日としてマークアップしています。

ReviewBlogPosting では、記事に対する日付になりますが、SoftwareApplication など、ものが対象のときは、たとえばアプリケーションの公開日として解釈されるパターンがあります。

datePublished は、Google でサポートされているリッチ スニペットの種類の中で、「必須項目」や「表示される項目」になっているものが多いので、設定しておいた方がよい重要な項目です。