RSS 推送插件需要同时处理订阅源、推送目标和任务计划。简单轮询容易在重启、网络异常和重复条目上产生混乱,因此插件把配置、调度、去重和渲染拆开处理。
项目概览
项目仓库:RhoninSeiei/astrbot_plugin_rss_forwarder。
结构上,main.py 组装 RSSConfig、FeedStorage、FeedFetcher、FeedParser、FeedPipeline、FeedDispatcher、RSSScheduler 和命令模块。用途是把 RSS、RSSHub 或 Atom 源按任务规则转发到多个会话目标。
应用场景包括技术博客转发、新闻源分发、多语言摘要、群组订阅策略管理和日报汇总。
配置模型
配置中包含 feed、target 和 job 三类对象。feed 负责源地址和抓取参数,target 负责输出位置和渲染偏好,job 负责把 feed 与 target 组合起来并定义执行周期。
抓取层保存 ETag、Last-Modified 和最近条目指纹。新增内容进入去重 TTL 集合,确认未发送后才交给渲染层。
日报与后备
日报任务按时间窗口汇总新增条目,先生成文本摘要,再按目标偏好输出为文本或图片。翻译服务和 LLM 摘要都带有后备策略:外部能力不可用时,插件仍会发送标题、摘要和链接。
启动延迟保护用于避免插件刚启动时集中发送历史条目。第一次运行只建立基线,之后再按增量推送。
实现原理是抓取层负责 RSS/Atom 解析,存储层保存指纹、ETag 和 Last-Modified,管线层完成去重、增强、渲染和分发。文本与图片卡片共享同一条目模型,翻译和摘要作为增强步骤挂在发送前。