はてなブログのサイトマップが改良され、ようやくGoogleがインデックスしてくれる件

Googleにキーワードを入力して表示される検索結果
この検索結果に表示されるためには、Google様の巨大なインデックスにWebサイトの各ページが登録されていなければなりませぬ。


普通ならばブログを書けば自動的にGoogle様の方から巡回してきてくれて、インデックス化されるわけですが・・・・"はてなブログ"はアホだった!(←現在はだいぶ解消されているので最後までお読みください。)

https://…/2020/05/06/ 最近Googleでこのブログの記事が検索ヒットしないと思った件

さすがにGoogle様といえども、各サイトの全てのURLをたどるのはなかなか大変。そこで各サイトが目次とも言うべき『サイトマップ』を準備してあげることで、簡単に全てのURLを辿れるという仕組み。


しかし・・・・"はてなブログ"が自動で提供するサイトマップがアホで、Google様がうまく巡回できない状態が長い間続いていました。そこでURLを手で一つ一つ登録しなければいけないという、ものすごい手間をかける事態に。

https://…/2020/05/18/ Googleサーチコンソールで日記URLを一つ一つ手動送信している件
https://…/2020/06/04/ だいぶGoogleインデックスの登録状況が改善されてきた件

何がアホなのかって・・・・"はてなブログ"のサイトマップって次のような構造をしているのですが・・・・

  1. はてなブログが提供するサイトマップは2階層に分かれている
  2. 親階層は{sitemap_index.xml}というファイルで、子階層の月別のサイトマップファイルへのリンクと、月毎の最終更新日時を示している
  3. 子階層は、その年月のすべての記事へのリンクと、記事毎の最終更新日時を示している

・・・・2項の月別の最終更新日時を正しく示しておらず、サイト全体の最終更新日時がすべての月に同一値がセットされていたということ。それとGoogleが子階層を取得しようとした際に読み込みエラーがかなりの確率で発生すること・・・・なのです。


Google側は前回クロールの後に更新があった記事だけを効率的にクロールしたいのですが、サイトマップの最終更新日時がすべて同一値で返されるため、全記事をクロールしなければならなくなる・・・・
私もプログラムを職業としているのでわかるのですが、月毎の最終更新日時を求めるのは、該当月の記事全てをチェックしなければならないのでディスクに負荷がかかる。なので簡易的にブログ一つに一つの最終更新日時を持っておいて、それを返すという横着をしている。
はてな側が負荷がかかって嫌なことをGoogle様側に押し付けていたわけですが、こんなことをしたらGoogle様側にはさらに負荷がかかる!


ご丁寧にGoogle様は全ての子階層サイトマップをリクエストするのですが、これに対してはてな側が答えられず、取得エラーになる・・・・

f:id:TARSAMA:20200524211326g:plain
・【使いまわし画素】Googleサーチコンソールでの、サイトマップ子要素の読み込み状況

はてな、アホでしょ・・・・
きちんと月毎の最終更新日時を返すようにすれば、Google様からの子要素サイトマップ自体のリクエストが減るから取得エラーが発生する確率も低くなるでしょうに。


それが数ヶ月ほど前に改善され、月別に正しく最終更新日時を返すようになりました。
なので、ブログを更新し、きちんと手動でpingを打つ(内容が更新されたことを知らせる合図)ことで、Google様側からサイトマップを読みに来てくれて、更新した記事のみインデックス化してくれる・・・


ここまで書いたこととは別に、Google様側で把握しているサイトマップが変な状態になっていて、一部子階層を認識していない。どうやっても認識しない・・・・
そこでサーチコンソールからサイトマップを一旦削除して再び作り直し、再クロールしていただきました。


すると・・・・Google様サイトからの流入数が跳ね上がりました。やっぱり今までの方法だとだいぶインデックス漏れがあったのね(泣)

f:id:TARSAMA:20201208165233g:plain
・いきなり検索からの流入数が跳ね上がった・・・・

様々なキーワードでこのブログがヒットして、やってきた方が一日125クリック前後で推移していましたが、325クリックぐらいに増加。


おおっ! これで無駄な手作業から開放される~♪