higuchi.com blog

The means justifies the ends

寄ってらっしゃい [Google Sitemaps]

このところ、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_Lastmodを試してます。
以下のような表示になりうまくいきません。
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>
-- ここまで --
2005/10/6 21:05
Host: iipe43.nirai.ne.jp - 210.148.252.43

樋口 理さんのコメント:

毎度お世話になっております。 :-)

手抜きをしていたため、環境によってエラーが出ることがあったようです。
直してみました。同じリンクからダウンロードして、試してみていただけますか?お手数をおかけします。
2005/10/6 22:58

な!さんのコメント:

 試しました。

今度は問題なく表示できました。
すばやい対応、ありがとうございました。
2005/10/7 06:33
Host: iipe43.nirai.ne.jp - 210.148.252.43

な!さんのコメント:

Nucleusのバージョンを3.22RC1にしたところまたglobalfunctions.phpにてエラーが出ました。
今回は1133行です。

NP_UpdateTimeをlastmodの時間表示に使っても同じくエラーがでたので、サクラキャンドルさんのところに質問しまたところ、globalfunctions.phpの大幅な変更に伴うもののようです。
そのなかでformatDate()の変更が今回のエラーにつながっているとのコト。
http://juntwo.s57.xrea.com/...
のコメント欄にやり取りがあります。

NP_Lastmodに関してもformatDate()を呼び出す最終行あたりに同じような変更を加えたところうまく動いているようです。
2005/12/2 11:08
Host: 135.hosp.pref.okinawa.jp - 202.238.197.135

樋口 理さんのコメント:

ありがとうございます。確認しました。
たぶん、NP_Lastmod.phpの最後のほうにある
echo formatDate('utc', $lastmod, '');
というところを
echo formatDate('utc', $lastmod, '', $this->blog);
に変更すればよいのではないかと思います。少し調べてみますので少々お待ちを。
2005/12/2 12:31

な!さんのコメント:

をー、なるほど。
echo formatDate('utc', $lastmod, '', $this->blog);
にしたら、エラーが消えました。
2005/12/2 22:37
Host: iipe43.nirai.ne.jp - 210.148.252.43

コメントを書く

関連するかもしれない記事

検索エンジンとの付き合い方 [mod_rewriteの術]

blogをサイトの「上のほう」の階層に置くようになってから、Googleをはじめとする検索エンジンのロボッ...

この記事を読む »

コンテンツサイトでのターゲティング広告 [Google Content-Targeted Adwords]

昨年末の御手洗さんを問い詰める会で冗談交じりに話していた「Blogのコンテンツに合わせて『突然ですが...

この記事を読む »

もったいない [Google Mobile Gateway を排除するサービス]

Google Mobile Gateway っていうサービス、ご存じですか? PC ブラウザ用の大きなページを、携帯電話...

この記事を読む »

探し物は何ですか [検索エンジンからのトラフィックを分析する]

ちょっと思うところがあって、@ITの記事ページに検索エンジンからたどりついた人がいったい何を検索し...

この記事を読む »

探し物はなんですか その2 [検索キーワードプラグイン]

以前に書いたとおり、検索サイト経由でどこかのページにたどり着いた場合、たどり着いた先のページがあ...

この記事を読む »

230円

訳あって短い [シガーライターソケット用USB電源アダプタ]

最近お気に入りの香港ガジェット通販サイト DealExtreme.com からご紹介。 前回の記事にもちらっと出...

この記事を読む »

広告の実験 [Google AdSense]

Google Adwords に掲載している広告を、他のコンテンツサイトに掲載する Google AdSense というプログラ...

この記事を読む »

「ソーテック」で検索して訪問した数

Google様から嫌われてしまったらしい [検索結果のコントロール]

このブログ、人さまよりちょっと長いことやっているせいで、外からのリンクも多く、ずいぶんと検索結果...

この記事を読む »

モバイルフレンドリー [ブログのデザインをレスポンシブにしてみたよ]

Google 様が「今後、モバイル端末でも読みやすいように考慮されているページが検索結果の上位に現れ...

この記事を読む »

探してなんぼ [Google WebSearch]

グーグルの新しいサービスGoogle WebSearch(グーグル ウェブサーチ)が始まりました。 グーグルなどWe...

この記事を読む »