跳转到内容

给 Bot 塞一个 RSS 订阅

本页内容

之前写的转发 Bot 本来只是拿来收私聊消息的,因为需要广告拦截功能,所以加了 LLM 审核,又为了节省一点 token,顺手加了黑白名单,为了防止别人被误封,又加了申诉,然后闲得没事又加了个 i18n…我草,怎么快2000行代码了,正好我用的RSS工具不怎么好用,为什么不顺便塞个 RSS 呢?kfb,总有一天你会变成一个功能巨多的 bot…

我的需求非常简单:朋友(见友链)的博客更新了,给我发一条 Telegram 消息就行。不需要做成什么信息流阅读器(因为我觉得现在的阅读器设计都挺丑的),几条命令,能够对 rss 列表进行一个增删改查以及基本的收发就够了,所以:

/rss_add # 添加
/rss_list # 列出
/rss_remove # 删除
/rss_refresh # 刷新
/rss_title # 改名
RSS Bot 命令列表
RSS Bot 命令列表

这是一个比较理想的 item:

<item>
<title>文章标题</title>
<link>https://example.com/post</link>
<guid>https://example.com/post</guid>
<description>文章摘要</description>
<pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate>
</item>

然而每个站生成出来的东西都不完全一样,有的没有 content:encoded(比如冬夜没有这个),有的 guid 是链接,有的 guid 是神秘 ID

就比如,这是我的:

<item>
<title>test-2</title>
<link>https://kokosa.icu/zh-cn/blog/test-2/</link>
<guid isPermaLink="true">https://kokosa.icu/zh-cn/blog/test-2/</guid>
<description>这是一篇测试用的文章</description>
<pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate>
<content:encoded>
<p>省略114514字。。。</p>
</content:encoded>
<category>Test</category>
</item>

我一直感觉在RSS里塞整篇文章是非常蠢的,于是现在已经改掉了


推送历史文章,享受刷屏快感()

Section titled “推送历史文章,享受刷屏快感()”

第一次添加 RSS 的时候肯定不能直接把所有文章都推过来,毕竟是消息 bot。有些博客 RSS 会放几十篇文章(而且我都看过了),一加订阅就刷满屏,所以第一次添加订阅时会先抓一次 feed,把当前已有文章全部记录为已读,但是不发送。之后定时刷新发现新 item,才会发通知:

[RSS] Kokosa's Blog
给 Bot 塞一个 RSS 订阅
https://kokosa.icu/zh-cn/blog/2-tgbot-rss.md
Summary: 给转发 Bot 添加 RSS 订阅提醒,支持定时刷新、去重和 AI 摘要。

Worker 不是常驻服务,所以想要定时刷新就得在 wrangler.toml 里写个这玩意:

[triggers]
crons = ["*/30 * * * *"]

每 30 分钟检查一次,为了方便测试我加了一个手动的:

/rss_refresh

然后我发现手动刷新可能和 Cron 刚好撞车,所以需要一个 KV lock,要不两个刷新任务同时刷到可能就发两遍了

手动刷新 RSS 后的通知
手动刷新 RSS 后的通知

既然之前就接入了 Gemini,那通知怎么能只发一个链接呢!于是又让它总结一下文章。之前设置的内容审核的超时时间只有 4 秒,因为审核只需要输出 SAFEUNSAFE 就够了,而摘要要考虑的就多了。所以摘要单独给了 20 秒超时,失败的话最多就是:

Summary: AI summary unavailable.

链接还是会照常发


光速 Vibe 完了才发现,我是不是可以搞个 OpenClaw、Hermes 之类的东西帮我干这些(kfb,你崛起罢,,超越龙虾指日可待,,,)