Googleの無料blogホスティングサービスのBloggerですが、更新pingがWeblogs.comにしか送信できません。いっぱい送った方がSEO的にいいとかいう話もありますが、手動で送るのは面倒です。
またFeedBurnerなどRSS関連のサービスやソフトを使おうとするとフィードの更新がポーリング周期になってしまうのはうれしくありません。FeedBurnerがフィードを取り込んではじめてRSSリーダなどに反映されるため、さらに遅くなるからです。また更新pingを送信すればFeedBurnerは即時にフィードを更新してくれますが、順序やタイミングとりも必要です。
対策として、簡単なping送信スクリプトをでっち上げて更新メールをきっかけにpingを送ってみました。新規の時のみで既存記事の編集は捉えられません。まあ誰でも考え付くものなので、どなたか既にやっておられるかもしれませんが。。。
ping送信スクリプトの設定
スクリプトはXMLRPC::Lite(SOAP::Lite)を使っておりとても短いです。中は見ればわかると思います。
ping-blogger.pl.txt(update 7/7/20)をダウンロード。エディタで開いて以下の項目を設定してください。ファイルをping-blogger.plとリネーム。サーバ上の(出来ればパスの通った)適当な場所にコピーして実行権を与えてください。
- ご自分のblog URL
- ping送信先リスト(デフォルトでは日米FeedBurnerとpingooだけです^^;)
- 送信間隔
- 最初のサーバはFeedBurnerを想定しており、次との間隔は15秒です。
- 次のサーバからはデフォルトでは3秒間隔で送信します。
procmail方式
Blogger標準機能である記事投稿時のメール送信機能を使ってメールを送信、これをきっかけにping送信。メール処理時間を考えても、数秒から数十秒でpingが送られます。使ってみると、ほぼリアルタイムに近い感覚になります。
ただしDOSアタックに弱そうなのと、スパム対策は必須。
必要なもの
手順
- Unix/Linuxサーバ
- procmailが使えること
- perlとXMLRPC (perl-SOAP-Lite)
- ping送信スクリプトは設置済みとします
- ping専用アカウントを作る(推奨) or既存メールアカウント
- procmailのレシピ例(.procmailrcに追加)
Bloggerの更新メールかどうかチェックするようなレシピを適当に書く。以下の例ならばBloggerのメールアドレス、メールアドレス、必要ならばスクリプトのパスを設定
:0hwc
* ^From:.*<BLOGGER_MAIL_ADDRESS>
* ^To:.*<YOUR_MAIL_ADDRESS>
* ^Return-Path:.*blogger.bounces.google.com
|ping-blogger.pl
- bloggerの管理画面から"設定"=>"メール"で1のアカウントにメール送信
cron方式
cronとスクリプトでrssをポーリングし、更新があったらpingを送信。
チェックの間隔が余り短いとネットワークや負荷が上がってしまうため、あまりよろしくなさそうです。
ただしFeedBurnerやRSSリーダのポーリング周期に追加する形でcron jobが走ることになるので、さほど速くなくても平均的な更新時間が速くなるはずです。
例えばサービス側が1時間に一回のチェックの場合は15~30分でいいのでは。
タスクスケジューラと組み合わせればWindowsでも同じようなことが出来るかも。
必要なもの
手順
- Unix/Linuxサーバ
- perlとXMLRPC
- cronが使えること
- wget/touch/shellなど
- ping送信スクリプトは設置済みとします
- 更新チェック用シェルスクリプトもperlスクリプトと同様に設置
- crontab -eでシェルスクリプトを定期的に実行
以上な感じです。サーバの管理が出来る方にはなんのことはない話ですが。
適当にサービス化?
使ってみたいとのご希望があるのなら、信頼性はありませんが、URLの登録とメール送信だけで使って頂けるようにしてみても便利かもしれないと思っています。ご意見をお待ちしています。
今のところうまく動いてるのでWebのインターフェースでも作ればいいかもですね。




コメント (1)
bloggerで更新pingを打つ方法を探してました。スクリプトは便利そうなので使わせていただこうと思ってます。よろしくお願いします。
投稿者: taka | 2008年11月18日 00:35
日時: 2008年11月18日 00:35