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 のみです。

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

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

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