rss_radio

RSSRadio

ydzat / rss_radio
Plugin306 downloadsCommand1Event Listener1productivityutility

RSSRadio - RSS feed aggregator + group chat digest with AI-powered summarization and virtual broadcaster personalities for QQ groups

RSSRadio

RSS feed aggregator + Group chat digest with AI-powered summarization and virtual broadcaster personalities

RSS订阅聚合 + 群聊日刊生成,结合AI智能摘要与虚拟主播人格系统


Notices / 公告

v1.1.0 (2026-02-26)

  • Scheduled auto-publish (settings.yaml groups) is newly implemented and not yet fully tested in production. If auto-publish does not trigger as expected, use !daily publish as a workaround.
  • Per-group configuration currently requires manually editing settings.yaml. This will be migrated to the WebUI once LangBot supports per-group plugin configuration in a future release.
  • RSSHub mirror availability varies by region. If RSS sources return empty results, try configuring a self-hosted RSSHub instance via the WebUI settings.
  • This plugin is optimized for QQ (aiocqhttp) only. Forward card rendering on other platforms is untested and may not work.

  • 每日定时推送功能(settings.yaml 群组配置)为新实现,尚未经过充分的生产环境测试。如定时推送未正常触发,可使用 !daily publish 手动发布。
  • 按群独立配置目前需手动编辑 settings.yaml。待 LangBot 未来版本支持按群插件配置后,将迁移至 WebUI。
  • RSSHub 镜像可用性因地区而异。如 RSS 源返回空结果,请在 WebUI 设置中配置自建 RSSHub 实例。
  • 本插件仅针对 QQ(aiocqhttp) 优化,转发卡片在其他平台上未经测试,可能无法正常显示。

English | 中文

Recent Changes / 更新日志

See CHANGELOG.md for full history.

v1.1.0 (2026-02-26)

  • New: settings.yaml as single source of truth for sources, roles, groups, prompts
  • New: Per-group configuration and scheduled auto-publish
  • New: RSSHub mirror cache persisted across restarts
  • Fixed: Scheduled auto-publish not firing (groups not persisted in memory)
  • Changed: Removed source/role toggles from WebUI; managed via settings.yaml only

v1.0.0 (2026-02-25)

  • Renamed from "Daily Magazine" to RSSRadio
  • Parallel RSS fetching with mirror racing
  • Added 6 gaming RSS sources
  • QQ forward card delivery

English

Overview

RSSRadio is a LangBot plugin that aggregates both external RSS feeds and internal group chat messages into AI-powered daily digests. It fetches news from multiple RSS sources (via RSSHub mirrors with parallel racing), generates daily summaries of group conversations, and delivers everything to QQ groups as merged forward cards with customizable virtual broadcaster personalities.

Features

  • Multi-source RSS Aggregation: 18 built-in RSS sources across categories:

    • Tech News (36Kr, Sspai)
    • Academic Papers (arXiv AI/ML/CV/NLP)
    • Developer News (Juejin, Hacker News)
    • Social Media (Zhihu Hot, Douban Movies)
    • Finance (CLS Telegraph)
    • Gaming (Gamersky, 3DM, Xiaoheihe, Steam News, Elite GalNet, etc.)
  • Parallel RSS Fetching: Race multiple RSSHub mirrors simultaneously - first success wins, with persistent mirror cache across restarts

  • AI-Powered Summarization: LLM-generated concise news summaries and commentaries

  • Virtual Broadcaster System: Customizable virtual roles with distinct personalities:

    • 🎙️ News Anchor - Professional news delivery
    • 📰 Reporter - Group chat digest specialist
    • 🎭 Critic - Opinionated commentary
    • 📊 Analyst - In-depth analysis
  • Group Chat Digest: AI-generated daily summary of group conversations

  • Per-Group Configuration: Each group can have independent sources, roles, publish time, and commentator bindings

  • Scheduled Auto-Publish: Groups configured in settings.yaml auto-publish at specified times

  • QQ Forward Card: All content delivered as a single merged forward card

Installation

  1. Install via LangBot plugin manager or upload .lbpkg file
  2. Configure LLM model in WebUI plugin settings
  3. Edit data/plugins/ydzat__rss_radio/config/settings.yaml to configure groups, sources, roles, and prompts
  4. Click "Save Config" in WebUI to reload the plugin

Configuration

RSSRadio uses a two-tier configuration system:

WebUI Settings (manifest.yaml)

Basic settings editable via LangBot WebUI:

SettingRequiredDescription
LLM ModelYesModel for content generation
Default Publish TimeNoFallback publish time (default: 08:00)
RSSHub URLNoCustom RSSHub instance (default: https://rsshub.app)
RSS Fetch IntervalNoFetch interval in minutes (default: 60)
Items Per SourceNoMax items per RSS source (default: 5)
Max Messages Per DayNoMax chat messages for digest (default: 500)
Data Retention DaysNoChat history retention (default: 30)

Advanced Settings (settings.yaml)

All advanced configuration is done in data/plugins/ydzat__rss_radio/config/settings.yaml:

  • defaults - Default sources, roles, and publish time for all groups
  • groups - Per-group configuration (sources, roles, publish time, commentator bindings)
  • roles - Virtual broadcaster personality definitions (name, icon, style, purpose)
  • commentator_preferences - Content categories each commentator prefers
  • prompts - AI prompt templates for all content generation

Groups listed in settings.yaml are auto-registered for scheduled publishing and are locked from command modifications (managed via file only).

After editing settings.yaml, go back to the WebUI plugin config page and click "Save Config" to reload.

Usage

CommandDescription
!dailyShow today's digest status
!daily publishManually publish digest
!daily configShow current configuration
!daily config sourcesList enabled sources
!daily config rolesList enabled roles
!daily config bindingsShow commentator bindings
!daily set sources <ids>Set enabled sources (comma-separated)
!daily set roles <roles>Set enabled roles
!daily set time HH:MMSet publish time
!daily set order <ids>Set source display order
!daily set position inline|endSet commentary position
!daily bind <role> <sources>Bind commentator to sources
!daily unbind <role> <sources>Unbind commentator (use all to unbind all)
!daily helpShow detailed help

Note: Groups managed by settings.yaml cannot be modified via commands. Edit the YAML file instead.

Available Sources

IDNameCategory
chat_digestGroup Chat DigestGeneral
36kr36Kr HotTech
sspaiSspaiTech
juejinJuejin HotTech
hackernewsHacker NewsTech
arxiv_aiarXiv AIAcademic
arxiv_mlarXiv MLAcademic
arxiv_cvarXiv CVAcademic
arxiv_nlparXiv NLPAcademic
zhihu_hotZhihu HotSocial
douban_movieDouban MoviesSocial
cls_telegraphCLS TelegraphFinance
gamerskyGamerskyGaming
3dmgame3DM GameGaming
xiaoheiheXiaoheiheGaming
yxdzqbGame DealsGaming
steam_newsSteam NewsGaming
elite_galnetElite GalNetGaming

Current Limitations

  1. Platform: Optimized for QQ (aiocqhttp). Other platforms may not support merged forward cards.
  2. RSSHub Dependency: Most sources rely on RSSHub availability.
  3. LLM Costs: Multiple LLM calls per publish (greeting, summaries, commentaries, closing).
  4. Rate Limits: Some sources may have rate limits or require authentication.

Roadmap

  • Migrate per-group config to WebUI (pending LangBot support for per-group plugin settings)
  • Custom RSS sources via commands
  • Image/media support in digests
  • Multi-language content support
  • More platform support (Telegram, Discord)

Requirements

  • LangBot >= 1.0.0
  • Python >= 3.10

中文

概述

RSSRadio 是一个 LangBot 插件,同时支持外部 RSS 订阅聚合内部群聊日刊生成。它从多个 RSS 源(通过 RSSHub 镜像并行竞速获取)抓取新闻,同时记录群聊消息并生成每日总结,使用 LLM 生成摘要,最终以合并转发卡片的形式发送到 QQ 群,支持可定制的虚拟主播人格。

功能特性

  • 多源 RSS 聚合:18 个内置 RSS 源,涵盖多个类别:

    • 科技资讯(36氪、少数派)
    • 学术论文(arXiv AI/ML/CV/NLP)
    • 开发者资讯(掘金、Hacker News)
    • 社交热点(知乎热榜、豆瓣热映)
    • 财经金融(财联社电报)
    • 游戏资讯(游民星空、3DM、小黑盒、Steam新闻、Elite GalNet 等)
  • 并行 RSS 获取:同时向多个 RSSHub 镜像发起请求,首个成功即返回,镜像缓存跨重启持久化

  • AI 智能摘要:使用 LLM 生成简洁的新闻摘要和评论

  • 虚拟主播系统:可定制的虚拟角色:

    • 🎙️ 群主播 - 专业新闻播报
    • 📰 群报社 - 群聊日刊专员
    • 🎭 群评论家 - 观点鲜明的点评
    • 📊 群分析师 - 深度分析
  • 群聊日刊:AI 生成的群聊每日总结

  • 按群独立配置:每个群可独立设置订阅源、角色、发布时间和评论家绑定

  • 定时自动发布:在 settings.yaml 中配置的群组会自动在指定时间发布速报

  • QQ 转发卡片:所有内容以单条合并转发卡片形式发送

安装

  1. 通过 LangBot 插件管理器安装或上传 .lbpkg 文件
  2. 在 WebUI 插件设置中配置 LLM 模型
  3. 编辑 data/plugins/ydzat__rss_radio/config/settings.yaml 配置群组、订阅源、角色和 Prompt 模板
  4. 回到 WebUI 插件配置页面,点击「保存配置」重载插件

配置说明

RSSRadio 采用两级配置系统:

WebUI 设置(manifest.yaml)

通过 LangBot WebUI 编辑的基本设置:

设置项必需说明
LLM 模型用于内容生成的模型
默认发布时间兜底发布时间(默认:08:00)
RSSHub URL自定义 RSSHub 实例(默认:https://rsshub.app)
RSS 抓取间隔抓取间隔,单位分钟(默认:60)
每源条目数每个 RSS 源最多显示条目数(默认:5)
每日最大消息数群聊日刊最多处理消息数(默认:500)
数据保留天数聊天记录保留天数(默认:30)

高级设置(settings.yaml)

所有高级配置在 data/plugins/ydzat__rss_radio/config/settings.yaml 中编辑:

  • defaults — 所有群组的默认订阅源、角色和发布时间
  • groups — 按群配置(订阅源、角色、发布时间、评论家绑定)
  • roles — 虚拟主播人格定义(名称、图标、风格、用途)
  • commentator_preferences — 各评论家偏好的内容类别
  • prompts — 所有内容生成的 AI Prompt 模板

settings.yaml 中列出的群组会自动注册定时发布,且锁定命令修改(仅通过文件管理)。

修改 settings.yaml 后,回到 WebUI 插件配置页面点击**「保存配置」**即可重载。

使用方法

命令说明
!daily查看今日速报状态
!daily publish手动发布速报
!daily config查看当前配置
!daily config sources查看已启用的订阅源
!daily config roles查看已启用的角色
!daily config bindings查看评论家绑定
!daily set sources <源>设置订阅源(逗号分隔)
!daily set roles <角色>设置启用的角色
!daily set time HH:MM设置发布时间
!daily set order <源>设置显示顺序
!daily set position inline|end设置评论位置
!daily bind <角色> <源>绑定评论家到指定源
!daily unbind <角色> <源>解除绑定(用 all 解除全部)
!daily help显示详细帮助

注意:settings.yaml 管理的群组无法通过命令修改配置,请直接编辑 YAML 文件。

可用订阅源

ID名称类别
chat_digest群聊日刊通用
36kr36氪热榜科技
sspai少数派科技
juejin掘金热榜科技
hackernewsHacker News科技
arxiv_aiarXiv AI学术
arxiv_mlarXiv ML学术
arxiv_cvarXiv CV学术
arxiv_nlparXiv NLP学术
zhihu_hot知乎热榜社交
douban_movie豆瓣热映社交
cls_telegraph财联社电报财经
gamersky游民星空游戏
3dmgame3DM游戏网游戏
xiaoheihe小黑盒游戏
yxdzqb游戏打折情报游戏
steam_newsSteam新闻游戏
elite_galnetElite GalNet游戏

当前限制

  1. 平台支持:针对 QQ(aiocqhttp)优化,其他平台可能不支持合并转发卡片
  2. RSSHub 依赖:大部分源依赖 RSSHub 可用性
  3. LLM 成本:每次发布会有多次 LLM 调用(开场、摘要、评论、结尾)
  4. 速率限制:部分源可能有速率限制或需要认证

开发路线

  • 按群配置迁移至 WebUI(等待 LangBot 支持按群插件配置)
  • 通过命令添加自定义 RSS 源
  • 摘要中的图片/媒体支持
  • 多语言内容支持
  • 更多平台支持(Telegram、Discord)

系统要求

  • LangBot >= 1.0.0
  • Python >= 3.10

Contributing / 贡献

Contributions are welcome! 欢迎贡献!

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License / 许可证

MIT

Use RSSRadio in Feishu/Lark bots, DingTalk bots, WeCom bots, WeChat bots, QQ bots, Slack bots, Discord bots, Telegram bots, LINE Bots, and Matrix Bots.

Host your bot on LangBot Cloud and connect this extension to the collaboration platforms your team already uses.

Open LangBot Cloud

Comments