
自作RSSレコメンド、育ててたら毎朝が楽しみになった
以下記事のバージョンアップ・機能追加の話です。自作アプリのアイデアの参考になれば幸いです。
新しいニュースが届いたら古いニュースを自動で削除するようにしました。
読み終わったらニュースグループを削除….ニュースグループを削除….みたいな作業が面倒だったので、毎朝新しいニュースが届いたら過去のニュースグループは自動的に削除するようにしました。んー地味だけど便利。ついでにニュースグループ(issue)タイトルに絵文字を付与して視認性を良くしました。

技術系ナレッジサイトについて、週間の「いいね」数を集計し、ランキング化するようにしました。
もともとニュースレターを購読していましたが、メールアプリ ↔️ 自作したニュースレコメンドシステムの行き来が面倒かつメールが埋もれてしまいがちだったので作成。地味ですが、便利です。
(Zennの方のランキング精度は微妙…。非公式API故の精度の低さなのか、集計方法がイマイチなのか原因を特定したい。)

(追記)
Zennの方、取得範囲の問題だったようでしっかり1週間分取得するよう修正したらいい感じになりました。
ただし、今の集計方法だと、集計タイミング直前に投稿された良い記事を見落としてしまう可能性がある気がします。
(集計時点ではいいね数がまだ少ないため今週のランキングに入らず、翌週には集計期間の範囲外になってしまうため)
改善の余地がありそうです。

Geminiにレコメンドしてもらったニュースに対し、「👍良い」「👎悪い」のフィードバックを可能にし、ユーザーフィードバックの情報を元にレコメンド精度を改善するよう変更しました。
今までは設定ファイルをわざわざ更新しなければならない仕組みを取っていましたが、取得したニュース情報の置き場所にフィードバック情報を保持するよう変更しました。今の自分の興味が翌日のレコメンドに反映されるので毎朝ニュースを見るのが楽しみだし、めちゃ便利で最高です。


note注目記事をランキング化したい(検証中)
しれっと注目記事をカテゴリ分けして、「これ興味ある!」みたいなnoteを見つけやすくしたかったのですが、あまり意味はなく...。ランキング化するのはどうだろうかと思い、claudeに実装方法を調べてもらいました。
非公式APIを使ってゴリ押しすれば機能実装できそうですが、非常にお作法のよくない実装になりそう(note側のご迷惑になりそう)だったので断念。
代わりに「注目記事RSSからnote取得」→「蓄積しているフィードバック情報をもとにユーザーの好み度ランキング」みたいなものを作れないか検証しています。
(追記)
結構いい感じです。だけど旅カテゴリに偏りすぎている。学習データが少ないかも。

Geminiのモデルを変更し、コスト削減を行いました。
「Gemini 2.5 flash」→「Gemini 2.5 Flash Lite」かつServiceTier.FLEX(処理優先度が低い代わりに料金が安い)に切り替えたところ、月当たり約158円だった利用額が約5円に圧縮できました。素晴らしい。

今後やりたいこと
現在YouTube Musicで音楽を楽しんでいるのですが、レコメンド精度が微妙です(ショート動画を再生できないよう履歴を保存していないだけかもしれませんが)。
さらに新着ミュージックに明らかにAI生成の音楽が混じっているのも気になります。
そこで、お気に入りアーティストや再生リストに入っているアーティストの新譜情報をお知らせしてくれる機能を実装したいなと考えています。
まとめ
今回のアップデート、振り返るとどれも毎日使うからこそ気になる小さな摩擦を削る作業でした。しかしそれらを潰していったら、いつの間にか「毎朝ニュースを見るのが楽しみ」なシステムを作り上げることができました。
皆さんもぜひセキュリティや利用規約に気をつけながら、自作アプリを楽しんでみてください!