セルフホストできる軽量RSSジェネレータをつくった

セルフホストできる軽量RSSジェネレータをつくった
カテゴリー: PC
投稿日:
更新日:
書いた人: 山椒ねこまんま

ブログを読むのが趣味なのでRSSリーダーをよく使うのですが、たまにRSSフィードを提供していないブログがあります。 そんなときはHTMLからRSSフィードを生成するためにPolitePolというセルフホストというツールを使っていました。 ただこのツール、まぁまぁリソースを食います。 うちのサーバーはメモリが8GBしかないのでなかなか厳しいです。

そんなわけで、Go+SQLiteで超軽量なRSSジェネレータを作ってみました。 GitHub においてあります。

自作ツールの画面

特徴

使いやすいUI

自作ツールの編集画面

いまどきのシンプルなUIです。 操作感はPolitePolに寄せており、HTML要素をクリックすることで対応するXPathが取得され、対応要素がハイライトされるようになっています。

RSSフィードが公式に提供されている場合知らせてくれる機能もついています。 ただ、リンクをコピーするにはhttps接続が必要になるらしく...

おうちサーバーを簡単にHTTPS接続できるようにするDockerコンテナをつくってみました↓

自作ツールの管理画面

管理画面もシンプルな感じにしてあります。 生成に失敗した場合も見やすいように

AI機能

RSS.appの自動生成機能が便利だったので、AIをつかってXPathを自動抽出できるようにしてみました。 現時点ではGeminiのみの対応です。(API無料だったので)

超軽量

CONTAINER ID   NAME                 CPU %     MEM USAGE / LIMIT    MEM %     NET I/O           BLOCK I/O         PIDS
e3b23edaef2c   shelf_rssgen_nginx   0.00%     2.23MiB / 3.88GiB    0.06%     8.41MB / 8.44MB   15.4MB / 475kB    2
b89a68bf41b6   shelf_rssgen_go      0.04%     10.49MiB / 3.88GiB   0.26%     2.16MB / 6.7MB    41.8MB / 0B       11
c0044a5a6190   politepol            1.55%     148.4MiB / 3.88GiB   3.74%     98.5MB / 64.7MB   8.79GB / 26.4MB   16
f7e416a540c8   dbpolitepol          0.13%     174.6MiB / 3.88GiB   4.39%     15.8MB / 28.6MB   7.22GB / 303kB    29

IntelMacで平常時だとこんな感じのリソース消費になります。 RAM使用量でPolitePolは323MB、対して自作ツールは13MBです。

アクセスが増えるとリソース消費は増えますが、それでも圧倒的に省リソースであることには変わりません。 我ながらなかなかいいものをつくりました。



本ツールの開発にあたり、常時起動にGo + SQLite + nginx、フロント開発時にFarm + React.js + shadcn/uiという技術構成をとってみました。 (web関連でちゃんと開発したのは今回が初めてなのでこの書き方でいいのかよくわかっていませんが)

Flutterでアプリ開発をしていたからか、Reactには初めて触ったのですが思ったよりもスムーズに開発できました。 これならブログもGo + Reactで作り直すのもありかな

同じような技術構成で他にもいくつかセルフホストツールを作る予定なので、よかったらそちらも試してみてくださいね〜


アプリを作ったりしています! よかったらみていってください→ つくったもの
今のイチオシ↓