osmosfeedを使って自分のためのアンテナ(RSSリーダー)を作成する

github.com

  • yamlファイルにRSSフィードを書き溜めておく
  • 新着記事一覧のhtmlを静的ファイルとして作成する
  • GitHub Pages配下に設置する
  • これを定期的に動くGitHub Actions上で実行する

そうすることでRSSフィードのためのアンテナを用意することができるようになる。というのがosmosfeedの特徴。上述した環境をかんたんに用意するためのテンプレートも存在しており、テンプレートを使用したリポジトリを作成した後、yamlを埋めるだけでosmosfeedを使えるようになる。既存のRSS追うやつと違って、これはGitHub上にyamlで管理するだけなので大変にお手軽で、移植性もかなり高い。なにより、GitHub Actionsと連携するのがとても賢いなと思い、自分もこれに従ってみることにした。

これまでははてなブログの購読リストのみを使用していたが、性質上はてなブログしか集めることができないために他種の媒体を追うのが困難になっていた。今回によってRSSフィードを配信している媒体であればなんでも追えるようになったのだと思う。

運用してすぐに「更新日時をかなり未来に置いておくことで、特定の記事を記事順の先頭に置くハック」の存在を思い出す。アンテナの先頭もそういった記事で埋まってしまう。これらの記事は意味合い的には新着記事ではなく、アンテナ運用の上ではただ邪魔なだけなので、「未来の記事はアンテナに含めない」のような対応が必要になった*1。ので、PRを投げた。投げてから反映されるまでの間は自分のネームスペース上にosmosfeedをpublishし、それを利用するように変更していた。昨日くらいにマージ、最新版がpublishされたようなのでそちらを利用するように変更した。

また、osmosfeedが吐き出すhtmlは事前に用意されたテンプレートを使用しているのだが、これを自分で用意することも可能。今回、記事のサムネイルを記事一覧右側に設置したかったので、そのように対応した。ただ、サムネを取得する方法があまり良いとは言えない方法だった*2ので、どうするのが妥当か?を聞いてみたところ (osmoscraft/osmosfeed discussion#75) 、現在取り組まれているv2にサムネイル取得のためのコードが存在し(または用意中で)、これをバックポートすることで対応できるのではないか?という話を頂いた。今後に期待すると良さそう。

ここで書いたそれぞれの対応は、osmosfeedの性質によって実現できる対応だと思った。体験がかなり良い。

もしこれを見ているあなたも試したくなったのであれば、以下のページを参考にするか、手っ取り早くは先程挙げたテンプレートからリポジトリを作成すればよい。

paiza.hatenablog.com

GitHub Pagesは性質上パブリックなものなので、生成結果のアンテナもパブリックなものとして公開される。これを利用することで、「特定の界隈をまとめたアンテナをその界隈に対して共有することもできる」と考えた。これは共有知としてかなり有用なのではないか。GitHubで管理されている性質上、誰でもフォークでき、もし追加すべきブログがあるのであればそれを対象に加えることもできるだろう*3。そういった記事をこれから別記事として書く。

*1:もうすこし賢い対応方法はあるだろうが、この対応で自分の要望は解決されるので問題なし

*2:そもそもRSSフィードとしてサムネを用意する方法がめちゃくちゃたくさんあって簡単に対応できない

*3:しかしこれはgitに対する知見が前提になってしまう