July 17, 2003

TrackBack を辿って視覚化できるか?

[ ウェブログに関すること ]

TrackBack 技術仕様書 を読みながら、ツリーBBSのスレッドのような形式でサイト間の TrackBack を視覚化できないかなと考えてみました。

TrackBack 仕様書によれば、TrackBack URL に対して ?__mode=rss というクエリを渡すことで特定の TrackBack URL へ投げられた ping の一覧が RSS で得られるとあります。例えば 7/15 のエントリ「みなさんの blog のキーワード算出してみました」への TrackBack Ping 一覧は以下の URL から取得できます。

http://naoya.dyndns.org/~naoya/cgi-bin/mt/mt-tb.cgi/276?__mode=rss

この RSS をパースすることで、プログラムからこのエントリへの TrackBack を辿ることができます。例えば TrackBack を辿った先に Going My Way のエントリ「Blogで使われる言葉の分析」があり、RSS にはこのエントリへの permalink が含まれています。

この TrackBack を辿った先のエントリでも TrackBack を受信しています。TrackBack の視覚化のためには TrackBack を辿った先の TrackBack も辿れる必要があるので、permalink の URL から TrackBack URL を取得する必要がでてきます。これには仕様書にある"TrackBack Ping URL の自動検知"が使えそうです。各エントリのページには RDF が埋め込まれており Description 要素の属性として trackback:ping 属性が記述されており、そこに該当エントリに対する TrackBack URL が載っています。HTML をパースして RDF を取得し、その中から trackback:ping 属性の値を拾うことで TrackBack URL が取得できるというわけです。

まとめると、

  1. TrackBack URL に ?__mode=rss クエリを渡して ping 一覧 RSS を取得
  2. RSS の link 要素に記述された URL を辿る
  3. 辿った先の HTML をパースして RDF を取得する
  4. RDF の Description要素の trackback:ping 属性から TrackBack URL を取得
  5. 取得した URL に対して 1 からの処理を繰り返す

この要領で再帰処理を行えば、ツリー構造が得られると思うのでそれを適当に整形して出力しれやれば視覚化できそうです。

辿り続けて元のエントリに帰ってきた場合にチェックしておかないと無限ループに陥ってしまうとか、リクエストに失敗した場合はどうするとか、パフォーマンスはどうだとか色々問題もありますが、実装次第ではうまくいくかな? めんどくさそうだけど。(笑)

Posted by naoya at July 17, 2003 12:14 AM  b_entry.gif
コメント [2件]

http://ishinao.net/wl/list.html?q=TrackBack+Tracer
こういうのもあったりします。

[1] Posted by: jouno at July 17, 2003 08:40 AM [返信]

jouno さん

TrackBack Tracer のページは以前に一度目にしたことがあります。改めて読んでみると、トラックバックの視覚化はウェブサイトでやるよりも、表現手段が豊富なクライアントでやった方が実用的だろうなあと思いました。

トラフィックやパフォーマンスについても、このソフトのように能動的に辿っていく方が現実的かもしれませんね。

[2] Posted by: naoya at July 18, 2003 12:56 AM [返信]