返回博客

AstrBot / RSS / Automation

面向 AstrBot 的 RSS 推送编排插件设计

记录多订阅源、多目标会话、日报汇总与翻译后备的 RSS 推送插件。

RSS 推送插件需要同时处理订阅源、推送目标和任务计划。简单轮询容易在重启、网络异常和重复条目上产生混乱,因此插件把配置、调度、去重和渲染拆开处理。

项目概览

项目仓库:RhoninSeiei/astrbot_plugin_rss_forwarder

结构上,main.py 组装 RSSConfigFeedStorageFeedFetcherFeedParserFeedPipelineFeedDispatcherRSSScheduler 和命令模块。用途是把 RSS、RSSHub 或 Atom 源按任务规则转发到多个会话目标。

应用场景包括技术博客转发、新闻源分发、多语言摘要、群组订阅策略管理和日报汇总。

配置模型

配置中包含 feed、target 和 job 三类对象。feed 负责源地址和抓取参数,target 负责输出位置和渲染偏好,job 负责把 feed 与 target 组合起来并定义执行周期。

抓取层保存 ETag、Last-Modified 和最近条目指纹。新增内容进入去重 TTL 集合,确认未发送后才交给渲染层。

日报与后备

日报任务按时间窗口汇总新增条目,先生成文本摘要,再按目标偏好输出为文本或图片。翻译服务和 LLM 摘要都带有后备策略:外部能力不可用时,插件仍会发送标题、摘要和链接。

启动延迟保护用于避免插件刚启动时集中发送历史条目。第一次运行只建立基线,之后再按增量推送。

实现原理是抓取层负责 RSS/Atom 解析,存储层保存指纹、ETag 和 Last-Modified,管线层完成去重、增强、渲染和分发。文本与图片卡片共享同一条目模型,翻译和摘要作为增强步骤挂在发送前。