Bloggerで各投稿の検索向け説明にスニペットを出力する

はじめに

Bloggerの検索向け説明をすべてのページで書くのは面倒なため、スニペット(記事の最初の文章)を自動的に出力するように設定する。

標準ヘッダー

Blogger標準で次のヘッダーが設定されている。

<b:include data='blog' name='all-head-content'/>

このヘッダー内に検索向け説明は次のように記述されている。

all-head-content...
<b:if cond='data:blog.metaDescription'>
  <meta expr:content='data:blog.metaDescription' name='description'/>
</b:if>
...
<meta expr:content='data:view.description.escaped' property='og:description'/>
...

blog.metaDescription・view.description

blog.metaDescription/view.descriptionの出力を調べると次の出力になる。

  • blog.metaDescription
    • [設定] > [メタタグ] > [検索向け説明を有効にする] 有効時
      • [投稿] > [投稿の設定] > [検索向け説明]
        • 未設定時は、なし
    • [設定] > [メタタグ] > [検索向け説明を有効にする] 無効時
      • なし
  • view.description
    • [設定] > [メタタグ] > [検索向け説明を有効にする] 有効時
      • [投稿] > [投稿の設定] > [検索向け説明]
      • [設定] > [メタタグ] > [検索向け説明]
      • 投稿の設定が優先される
    • [設定] > [メタタグ] > [検索向け説明を有効にする] 無効時
      • 投稿・ページ
        • スニペット
      • その他
        • [設定] > [基本] > [説明]

結論

よって、次の設定とコード追加をすれば目的の出力が得られる。

次の設定に変更する。

  • [設定] > [メタタグ] > [検索向け説明を有効にする] を無効にする。
  • [設定] > [基本] > [説明] を記載する。

all-head-content直後に次のコードを追加する。(all-head-contentを2重に書いてはならない)

<b:include data='blog' name='all-head-content'/>
<b:if cond='!data:blog.metaDescription and data:view.description.escaped'>
  <meta expr:content='data:view.description.escaped' name='description'/>
</b:if>