[PR] 本ブログの商品紹介リンクには広告が含まれています
このところ、Yahoo!の新検索エンジンであるYSTのクローラー(インターネット上のページをリンク伝いに読み込んで検索対象に加えていくロボット)がすごい勢いで新着ページを読み込んでいくようになって、Googleのクローラーが見劣りして見えます。このブログに新しい記事を載せると、早いときには次の日にはYahoo!の検索結果に現れてYahoo!経由のトラフィックがどんどん流れ込んでくるのに比べ、Googleはトップページだけは読み込んでも、その先の個別の記事ページは3、4日遅れ、という感じなのです(
NP_SearchedPhraseプラグインで、検索キーワードの履歴を表示しているので、記事ごとにどこの検索サイトから人がやって来ているか一目瞭然)。
負けるなGoogle、というわけで、しぶしぶ
Google Sitemapsを試してみることにしました。Google Sitemapsは、Googleのクローラーに「うちのサイトには全部でこれこれこういうページがあって、それぞれ何月何日に更新されたからね」というサイトマップをXMLを使って知らせる仕組みです。クローラーがリンクをたどってもたもたとページを探して回るのではなく、サイトマップで教えたページを決めうちで読み込みに来るので、新しいページの更新も早くなるんじゃないかと期待できます。
Sitemapsに「このページを読め」と指示するためのXML(サイトマップと呼びます)は、Nucleusのスキンをひとつ専用に作るだけで自動的に生成できます。ありがたいことにNP_Cles()さんのところで
Sitemaps用のスキンファイルと表示用PHPファイルが公開されているので、それをいただいて来ました。
nakahara21.comのまみおさんが、その
PHPファイルを改造して圧縮した状態で送信するパッチを出していらっしゃったので、これもいただき。
準備ができたらSitemapsにログインして、サイトのページの一覧を示すXMLのありかを教えてあげれば完成です。
さて、せっかくページの一覧を更新日時付きで知らせるのなら、記事を書き換えたときやコメントが追加されたときに「変わったよ」と知らせてあげて、すぐに検索インデックスに反映して欲しいところ。積極的に知らせないとサイトマップの更新日時が変わってないのをいいことにクローラーがずっと来ない恐れもありますし。ところが、Nucleusはそれぞれのアイテム(記事)を後から編集しても、更新日時を記録しておく場所がない設計になっています。で、更新日時を記録しておくNP_UpdateTimeというプラグインをまみおさんが作っていらっしゃって、それを利用して最終更新日時を知らせるようにする方法が『
農場主の日常 » Google Sitemaps 対応』に紹介されているのですが、これでも更新日時が変わるのは記事を書き換えたときだけで、コメントが追加されたときはなにも起こりません。
そこで、最新のコメント追加日時を反映したページ更新日時を表示する小さなプラグインを作ってみました。
を解凍してプラグインディレクトリに置いてインストールしてください。
<%Lastmod%>というテンプレート変数が使えるようになります。この変数はアイテムの一番新しいコメントの日時、コメントがないときは記事の公開日時(NP_UpdateTimeがインストールしてあれば、最終更新日時)をUTCで表示します。ですから、サイトマップを表示するテンプレートの中の、更新日時を表示する部分を
<lastmod><%Lastmod%></lastmod>
と書き換えればOK。
おまけ機能として、記事を書き込んだときにGoogleに対してサイトマップを更新したことを知らせる"Resubmit"を自動的に送信する機能をつけておきました。各ブログの設定の画面で、そのブログのサイトマップのXMLのありか(URL)を入力しておけば、記事の書き込みの直後に送信されるはずです。
サイトマップのXMLは正常に出力されて、Google Sitemapsサービスに認識されることは今たしかめたのですが、NP_UpdateTime(実は、インストールしてもいない)との連携と、Resubmitはテストできていません。なにか不都合に気がついたら、ぜひお教えください。
さて、GoogleのクローラーはYahoo!に負けずに速攻でやってくるようになるでしょうか。
[2007/2/25 追記] しづきさんが、Yahoo!にも"Resubmit"する機能をつけてくださいました。上のリンクからダウンロードできます。
[2008/6/18 追記] 上記のVersion 0.4は、NP_UpdateTimeがインストールされていない環境では、正しいタイムスタンプを返さないバグがありましたので、修正しました。からダウンロードして上書きしてください。
な!さんのコメント:
以下のような表示になりうまくいきません。
NP_UpdateTimeはインストールしてありますが、これをアンインストールしても同じです。
-- ここから --
-<url>
<loc>http://otohsan.com/item/9</loc>
-<lastmod>
<br/>
<b>Warning</b>
: Missing argument 3 for formatdate() in
<b>/home/otohsan/www/nucleus/libs/globalfunctions.php</b>
on line
<b>1052</b>
<br/>
2005-06-18T11:17:13Z
</lastmod>
</url>
-- ここまで --