|
|
||
別の大きめの機能のリリース準備中なんですが、片手間に作ってみました。フレーム使ってるサイトとか今のところ動きませんが、おおむね上手く動くと思います。有志が作ってくれた野良フィード、と同程度のクオリティのものを自動で作れます。
リリースが早かったので「前々から作ってたのかな」みたいな反応もいくつか見ましたが、そういうわけではないです。ただ、過去に似たようなコードを書いたことがあるのですんなり出来ました。
アルゴリズムはこれに改良を加えたものです http://la.ma.la/blog/diary_200705301424.htm
実装開始 http://twitter.com/bulkneets/status/8240819145
リリース http://twitter.com/bulkneets/status/8358993519
twitterでフィードを吐いてないサイトのURLを募集して参考にしました。協力してくれた方に感謝します。よく考えたらなんでもRSSで購読されてるサイトを使えば良いので必要なかったかもしれない。
とりあえず動くものは3時間ぐらいで出来たと思います(面接試験に調度良い)、あとは2日ぐらいかけて精度の調整をやりました。既存のサービスと何が違うの、みたいなのがFAQだと思うのでいくつか比較してみます。
既存の似たようなサービスは沢山あると思うのですが、
というような具合で、タダ乗りしても良さそうなのが無かった。タダ乗りしても良さそうなサービスはこれらと逆の条件を満たしているサービスです。既存のサービスでタダ乗りしても良さげなのがあるならリンク張って終わりというのも考えたのですが、上記と逆の条件を全て満たすようなサービスが無かったので、片手間に作れそうだしせっかくなのでこの際作っておくか、ということになりました。
単体で収益挙げられるような要素が無いですけども、readerの付加価値が上がるので利益が出なくてもまあ問題ないでしょう。ラボですし。
日本語のサイトでも変換出来ます。
http://googlereader.blogspot.com/2010/01/follow-changes-to-any-website.html
http://blogs.itmedia.co.jp/saito/2010/01/google-reader-6.html
any websiteって言うので、なんかインパクトが大きかったみたいで「LDRにも似たような機能を希望」とか要望が飛んできた。それで作ったので、後追いといえば後追いですが、
http://www.google.com/support/reader/bin/answer.py?hl=en&answer=172963
"Currently, only English-language content in HTML format is supported."としっかり書いてあります。英語のサイトに関しても、生成されたフィードが読みやすいとは思えなかった。実際に試さないで「これはすごい」とか「これは便利」とか記事を書くのは止めませんか。
現状英語のサイトにしか対応してないのを知らないで試して残念な思いをしている人がチラホラいる。
http://d.hatena.ne.jp/Imamura/20100202/googlereaderRSS
Page2FeedはGoogle Readerでも上手く動くみたいです。独立したAPIなのでタダ乗り歓迎です
http://bardiche.posterous.com/bbrss
なんでもRSSの問題点をいくつか挙げます。
フィードリーダーから記事をそのまま開いたり、ソーシャルブックマークの情報を参照しやすくするために、なるべく記事のリンクを抽出します。実用性を重視してます。
逆になんでもRSSとは違って日付情報を解析してないので、記事の更新時刻が正確ではありません。フィードリーダーが取得した時刻になるでしょう。
クロールして差分を記録するタイプ(page2rss.comやGoogle)は
過去記事の蓄積と新着部分の判別はRSSリーダー側に任せて、HTMLをフィードに変換する処理は切り分けてしまった方が良いだろうと判断しました。必要なのは帯域とCPUパワーなので、もしアクセスが異常に増えても対応しやすい。1世代分は保存して学習に使った方が精度が上がるかな、とは思ってます。
スコアが高いのだけを出力すれば本文のみのフィードも作れるのですが、意図的に本文以外も入れています。生成されたフィードは未読管理機能があるフィードリーダーで使う前提です。本文以外の要素もフィードに入る場合がありますが、一度既読になってしまえば現れないからです。なので、例えばティッカーやFirefoxのライブブックマークには適さないでしょう。
今のところしてません。例えばサイトごとの定義を作るとメンテナンスコストがかかります。ベースとなるアルゴリズムが優秀であれば、上手くいかないサイトに対してだけパッチを作れば良いことになります。定義作るとしてもタイプ(ニュース、日記、掲示板、など)に応じて各種閾値を調整するみたいな感じになると思います。学習や人力による調整を行わなくても、デフォルト状態でとりあえず良い感じのフィードを出力するのを目的としてます。
元のコードがJavaScriptなんで今度はPerlからJavaScriptに移植すれば何かと役に立つかもしれない。JS実行したDOM構築後のフィード作ったり認証が必要なページをブラウザで解析して送ったりとか。
もう少し技術よりの解説を書くかもしれない。