📝
RSS+ニュースのAI要約をするDiscord botを作った(Cloudflare Workers)
RSS+ニュースのAI要約をするDiscord botを作った(Cloudflare Workers)
Cloudflare WorkersとWorkers KVを活用し、DiscordにRSS新着記事を自動投稿しつつ、OpenAIで記事要約を付与するサーバーレスRSSボットを作りました。
Claudflare Workers自体は初なので 9割vibe codingで完成.
完成形
リポジトリ
スクショ
- cronでRSSの最新投稿をpost
- AI(4o-mini-high)でサマリ
- rss.appあたりを使うと好きなサイトのフィードを作れて便利
背景
- 情報収集にRSSを使っていたが、とにかく読みづらい
- 情報の質がまちまちで、RSSにある概要も短すぎる。要約の質が高ければ目grepが捗りそう
- RSSのクライアントを普段使っているSNS(Discord)にする方が習慣化しやすい
- できるだけコストをかけたくない
- Cloudflare Workersを採用。全てCLIから操作でき、AIとの親和性が高い
- rss.appとか既存のDiscord botもあるけど
- openaiのapi、テキスト生成は意外と安い。またクレジット制なのでパンクの心配なし
採用技術
- Cloudflare Workers: cronトリガーで5分毎に実行
-
Workers KV: RSSリスト(
RSS_KV
) & 最終公開タイムスタンプ(LAST_PUBLISHED
)管理 -
Discord Slash Commands:
/rss add/remove/list/run
- node-fetch: RSSフィード取得
- OpenAI API: chat.completionsで要約生成(ビスケ口調)
ポイント
- 記事本文抽出はWorkers上で最大の課題
- discord.jsは導入せず純粋JSでDiscord HTTPインタラクション/Webhookを利用
- Cloudflare Workers環境ではNode.jsのコアモジュールが利用できないため。
- 純粋なJavaScriptで実装し、Slash Commandsの登録はDiscord APIを直接叩きます。デプロイ時にAPIを直接叩く手間は増えますが、依存関係を減らしシンプルに保てます。
- モデルにはgpt-4o-miniを選定。gpt-3.5に比べ安価かつ性能良好
- openai apiは最新モデルのmini版がコスパ高い傾向
- 最近はモデルのcompare UIが変わった。モデルが増えすぎたためであろうが、個人的には一覧性が高いのが好み
Discord bot の主な機能とコマンド
主な機能:
- Cron Trigger (
*/5 * * * *
) による定期的なRSSフィードのチェック - 新着記事(最新3件)を検知し、OpenAI APIで要約(ビスケ口調)してDiscordに投稿
- Workers KV でRSSフィードリストと記事の最終公開タイムスタンプを管理
Slash Commands:
-
/rss add <feed_url>
: RSSフィードを登録します。 -
/rss remove <feed_url>
: 登録されているRSSフィードを削除します。 -
/rss removeall
: 登録されている全てのフィードを削除します。 -
/rss list
: 登録中のRSSフィード一覧を表示します。 -
/summarize <url>
: 指定されたURLの記事を要約します。
デバッグ・開発用コマンド:
-
/rss run
: 即座にRSSフィードをフェッチし、新着があれば投稿します。 -
/rss testfeed <feed_url>
: 指定されたRSSフィードの取得を試します。
要約プロンプト例
単純な指示だけでは、期待する要約にならないことがあります。
記事内に具体的な機能・人物などがあれば、それをピックアップして言及させるとうまくいきました。
また要約の口調を工夫することで、読むモチベーションが上がります。
あなたはハンターハンターの「ビスケ」のように振る舞い、記事を要約してください。
- 最も重要な指示:必ず語尾に「〜だわさ」や「〜わさ」をつけ、ビスケのお姉さん口調で話すこと。
- 記事の内容を日本語で簡潔に、3〜5文程度で要約して。改行を適切に含めて読みやすく。
- 記事内に具体的な機能・人物などがあれば、それをピックアップして言及すること。
- 感想や意見は鵜呑みにせず、事実ベースで要約すること。
- 可能であれば、「ゴン」や「キルア」に語りかける要素も自然に含めてちょうだい。
まとめ
Cloudflare Workers と Workers KV を利用して、低コストで運用可能な RSS リーダー兼要約 Discord bot を構築しました。
Discussion
本文抽出、やっぱり https://blog.chairoi.me/entry/cloudflare-workers-go-readability-wasm した方が良さそう