検索エンジンに記事の公開日を正しく認識してもらう方法

Search Engine Optimization

Googleでの更新日の見え方

検索エンジンに記事の公開日・更新日を正しく認識してもらう方法を紹介しています。注:2019年11月時点の記事です。

公式な仕様ではないので、参考程度にご覧ください。

-


2019年11月時点の結論

GoogleはHTML内の1番最初の<time>タグが公開日として認識される。Bingは謎仕様。

補足資料:Googleの公式情報

いつ公開された情報か不明ですがGoogle 検索に対して公開日を指定するという公式ヘルプがありました。

2019年3月11日にGoogleのウェブマスター向け公式ブログでも公表されていました。

補足資料:schema.org

WHOISを見ると2005年1月14日に登録されており、英語版Wikipediaによると2011年6月2日から公開されたそうです。

補足資料:JSON-LD

2013年6月3日に公式アナウンスされ、2017年9月頃から推奨され始めたようです。

記事公開日:
記事更新日:2019年11月17日

記事の公開日を正しく伝える重要性

公開日を重視するか更新日を重視するかは記事の内容によっても異なりますが、

いつ公開したのかという情報は、著作権や時事の把握において、とても重要です。

2019年11月13日時点、Bingは対応しておらずGoogleのみが対応しています。

2019年11月17日追記
Bingでも、ごく一部のサイトは公開日スニペットが表示されていました。しかし現状Bingにはこれといった法則性はありません。

重要事項1:HTTPヘッダはまったく関係ない[Google, Bing共通]

動的なHTML(PHPやCGI等)での出力であってもLast-ModifiedのHTTPヘッダ有無とは関係なしに<time>タグが優先されるのでページの更新日を検索エンジンに知らせるためだけにLast-Modifiedヘッダ等を出力するのは避けた方が良いです。

もちろん、ブラウザキャッシュをコントロールする目的でLast-Modifiedヘッダを使うのであれば問題ありません。あくまでもGoogleの検索エンジンが認識してくれる記事更新日には影響しないという意味です。

重要事項2:初インデックスされた日以前を公開日とすることはできない

[Googleのみ] Bingは検証材料が少ないので不明

2019年11月14日時点のGoogle検索エンジンでは<time>タグで1番最初に出てきたものが記事の更新日として扱われるという結果になりましたが、検索エンジンに最初にインデックスされた日以前を作成日として認識してもらう事はできませんでした。

<time>タグの日付が初インデックス登録日時より古い場合は、再クロール日時が記事の更新日になるようでした(2019年11月14日に実証済み)

おそらく改竄や不正の防止だと思われます。たとえ作成日が本当だとしても公表していなければ証明する術が無いので妥当ですね。

逆に未来の日時を<time>に入れた場合は公開日として認識されず、その未来の日時が過ぎた後に公開日として認識されました。

正直、この記事を公開するにあたり、技術が悪用されてしまう可能性も懸念していたので個人的にはこの仕様に賛成です。

◎公開日が正しく認識される方法  [2019年11月時点 Googleのみ]

HTML内に<time>タグを1つだけ記述する(2019年11月13日 実証済み)

ページ更新日:<time datetime="2019-11-13">2019/11/13</time>

ページ内に<time>タグが1つだけある場合は再クロール時に即時反映されました。

<time>タグが2つ以上ある場合は、
HTMLの1番最初に出てきた<time>タグが優先されるという結果でした。

日付形式と時差についての補足

<time>タグ内の文字列はyyyy年n月j日という日本語でも問題ありませんが、海外のITサービスだと時差の影響で日にちが1日ずれることがあります。 日本と米国で「公開日」を合わせたい場合は公開日時を日本時間の18時~23時の間でセットすると良いです。 例:<time datetime="2019-11-15T18:00:00+09:00">
協定世界時のUTCで管理しても問題はないのですが、UTCだと日本では1日前の日付を記入することになるので日本時間のJSTを表す+09:00で管理した方が楽です。 日本の17時にロサンゼルスが午前0時になり日付が合うのですが、サーバーの時計が狂うことも想定して1時間余裕をもたせた18時をお勧めしています。公開日に対して厳密でなくていいのであれば時刻表記なしのyyyy-mm-ddで良いです。

△ 構造化データはGoogleの公式情報だが<time>が優先される

構造化データ JSON-LD (2019年11月15日 実証済み)

詳細については https://developers.google.com/search/docs/data-types/article#non-amp をご確認ください。 非AMPでよければプロパティが少なくて済みます。 AMP対応にしたい場合は必須プロパティが多くなります。今後どうなるかは不明ですが2019年11月15日時点では正しく認識されないという結果でした。

published date の JSON-LD 構造化データ例

△個人的に非推奨ですが自動で認識されていた例  [Googleのみ]

HTMLタグ内に、
日付を連想させる yyyy/mm/dd や yyyy-mm-dd 表記があった場合

即時での反映はされませんがGoogleの場合はインデックスに登録されてから、ある程度日数が経ったページで反映されていたことが確認できています。

sitemapで<lastmod>を明示していても、HTML内の「更新日」等の近くにある直近のyyyy/mm/dd形式が優先されていました。

詳しい仕様は不明ですが<a>や<small>等のHTMLタグに日付関連の文字列だけが入っていると記事更新日として認識されるようでした。

○日本語サイトで認識されていたもの

<small>ページ更新日:2017/10/10</small>

×日本語サイトで認識されなかったもの

<h3>更新履歴 <small>(2008/03/18)</small></h3>

日付を括弧で括っているからか、「履歴」という文言が「日」として連想できないからか、上記の記述では認識されていませんでした。

○英語サイトで認識されていたもの

<small>Page updated at 2017-06-23 14:17 UTC</small>
<div>Last update: 2019-10-10</div>

×英語サイトで認識されなかったもの

<span title="2014-07-23 09:23:34Z">Jul 23 '14 at 9:23</span>

<span>のタイトル属性に日付が入っていますが、HTMLタグ内の表記がyyyy-mm-dd形式ではない(記事の投稿日時としてatは日付の前につくべき)ので、認識されていませんでした。

○複数ある場合(昇順)

<div>
  <h2>#1 <a href="#1">2019-10-27 23:42:08</a></h2>
  <p>トピック1</p><p>内容1</p>
</div>

<div>
  <h2>#2 <a href="#2">2019-10-28 22:51:19</a></h2>
  <p>返信2</p><p>内容2</p>
</div>

1番上の日付が使われ、古い日付が反映されていました。

○複数ある場合(降順)

<div>
   <p>Comment by A on
   <time datetime="2019-11-12T00:35:39-05:00">
   November 12, 2019</time></p>
   <p>Commnet A</p>
</div>

<div>
   <p>Comment by B on
   <time datetime="2019-10-29T06:04:55-04:00">
   October 29, 2019</time></p>
   <p>Commnet B</p>
</div>

1番上の日付が使われ、直近の日付が反映されていました。

× sitemapの<lastmod>は更新日スニペットには影響しない

2019年11月16日 実証済み  [Google, Bing共通]
<url>
    <loc>http://www.dispatch-base.com/</loc>
    <!-- 2007年6月の時点でlastmodを設定していたが
           2019年11月までの12年間、
        ↓ 公開日スニペットに使われることはなかった -->
    <lastmod>2007-06-10T11:54:34+00:00</lastmod>
</url>

試しに2019年11月14日に<lastmod>を最新の日時にして、Google Search Consoleで再クロール依頼をかけた直後の生ログを見てみましたが、手動でのクロールリクエスト時はsitemapを読み込みに来なかったので、sitemapに細かい情報を付加してもあまり意味がないと感じています。

× <meta property>は認識されない  [Google, Bing共通]

HTML内のmetaタグ (2019年11月12日 実証済み)

<meta property="article:published_time" content="2019-11-12T04:47:58+0000">

Open Graph protocol というSNS時代に一時 流行ったタグですが、2019年11月現在のGoogleとBingでは認識されませんでした。

そもそも<meta property="article:published_time">自体が認識されない(もしくは無視されている)という結果です。

-
-