ErisPulse 的全功能 RSS/Atom 订阅器模块。在聊天中订阅任意源,按计划自动轮询抓取并以富文本卡片推送新内容。配备交互式菜单、批量导入、关键词过滤、多群隔离,以及订阅健康检查——定时探活全部源,发现失效链接自动通知所在群。
功能特性
| 功能 | 说明 |
|---|---|
| 订阅抓取 | 订阅任意 RSS/Atom 源,定时抓取并推送新内容 |
| 富文本卡片 | 自动降级渲染:Html > Markdown > Text |
| 交互式菜单 | /rss 进入引导式菜单,回复编号即可操作 |
| 快捷订阅 | /rss <URL> 一键订阅 |
| 批量添加 | 一次粘贴多个地址批量导入 |
| 关键词过滤 | 黑名单 / 白名单,普通关键词或正则,会话级或全局级 |
| 多目标独立 | 多群 / 多用户各自独立订阅 |
| 智能去重 | 同一条目绝不重复推送 |
| 暂停 / 恢复 | 随时暂停或恢复任一订阅 |
| 健康检查 | 定时探活全部源,失效源标记并 @订阅人通知到群 |
| 导出订阅 | 一键导出全部订阅列表 |
| 仪表盘 | 网页端完整增删改查 + 改 URL + 一键清理失效源 |
安装
epsdk install RssReader
# 或
pip install ErisPulse-RssReader
依赖
feedparser>=6.0、beautifulsoup4>=4.12已在依赖中声明,安装时自动拉取。
使用
模块加载后通过斜杠命令交互:
命令列表
| 命令 | 说明 |
|---|---|
/rss |
打开交互式菜单 |
/rss <URL> |
快速订阅 RSS 源 |
菜单内回复编号操作:
| 编号 | 操作 |
|---|---|
| 1 | 添加订阅 |
| 2 | 查看订阅列表 |
| 3 | 删除订阅 |
| 4 | 暂停 / 恢复订阅 |
| 5 | 测试 RSS 源 |
| 6 | 立即推送 |
| 7 | 批量添加订阅 |
| 8 | 过滤规则管理 |
| 9 | 导出订阅 |
| 10 | 修改推送间隔 |
| 11 | 订阅健康检查(管理本人添加的失效源;管理员可管理全部) |
HTTP API
模块注册以下 HTTP 端点:
| 端点 | 说明 |
|---|---|
GET /RssReader/api/stats |
订阅 / 过滤统计 |
GET /RssReader/api/subscriptions |
查询订阅(可选 target_type & target_id) |
POST /RssReader/api/subscriptions |
添加订阅 |
GET /RssReader/api/subscriptions/export |
导出全部订阅 |
GET /RssReader/api/subscriptions/unhealthy |
查询失效订阅 |
POST /RssReader/api/subscriptions/health-check |
立即体检 |
POST /RssReader/api/subscriptions/purge-unhealthy |
一键删除全部失效 |
PUT /RssReader/api/subscriptions/{id} |
更新订阅(支持改 url) |
DELETE /RssReader/api/subscriptions/{id} |
删除订阅 |
POST /RssReader/api/subscriptions/{id}/toggle |
暂停 / 恢复 |
GET /RssReader/api/filters |
查询过滤规则 |
POST /RssReader/api/filters |
添加过滤规则 |
DELETE /RssReader/api/filters/{id} |
删除过滤规则 |
配置
首次加载自动生成默认配置,可在 ErisPulse 配置中修改 RssReader 节:
[RssReader]
default_interval = 30 # 默认推送间隔(分钟)
max_items_per_push = 5 # 每次推送最大条数
auto_start = true # 启动时自动开始抓取
max_subs_per_chat = 20 # 每个聊天最大订阅数
admins = [] # 管理员用户 ID(健康检查可管理全部订阅)
health_check_interval = 1440 # 健康检查间隔(分钟)
health_check_fail_threshold = 3 # 连续失败几次判定失效
health_check_probe_timeout = 10 # 体检单个源的最长超时(秒)
| 参数 | 默认值 | 说明 |
|---|---|---|
default_interval |
30 |
默认推送间隔(分钟) |
max_items_per_push |
5 |
每次推送最大条数 |
auto_start |
true |
启动时自动开始抓取 |
max_subs_per_chat |
20 |
每个聊天最大订阅数 |
admins |
[] |
管理员用户 ID(健康检查可管理全部订阅) |
health_check_interval |
1440 |
健康检查间隔(分钟) |
health_check_fail_threshold |
3 |
连续失败几次判定失效 |
health_check_probe_timeout |
10 |
体检单个源最长超时(秒) |
推送效果
推送时自动检测平台能力,按 Html > Markdown > Text 优先级降级展示:
- 单条更新 → 详细卡片(标题、作者、时间、摘要、链接)
- 多条更新 → 摘要列表(标题 + 时间)
架构
RssReader/
├── Core.py 模块入口,注册命令、HTTP 路由与仪表盘视图
├── rss.py RSS/Atom 抓取与解析,FeedItem 数据模型,源探活
├── store.py 存储层,订阅 / 历史 / 过滤规则 CRUD + 健康状态
├── scheduler.py 调度器,逐源轮询 + 健康检查任务 + 失效通知
└── templates.py Html / Markdown / Text 降级模板
自 v1.2 起,存储层为每条订阅记录
added_by / last_status / last_check_at / last_error / fail_count,支持定时健康检查;添加者可管理自己添加的失效源,管理员可管理全部。
License
- Code: MIT License
Related · ErisPulse · Documentation · Issues
Metadata
Release files for ErisPulse-RssReader 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| erispulse_rssreader-1.2.0.tar.gz | 546.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| erispulse_rssreader-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 575.9 kB
Release files / erispulse_rssreader-1.2.0.tar.gz
| Download URL | erispulse_rssreader-1.2.0.tar.gz |
|---|---|
| Size | 546.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6e5bcb2c8912c0c6bd36afbf8c0303db53a42efabb70ed90ee76f3655221f384
|
|
BLAKE2b-256 checksum How to use checksums |
0ebf5473c81754e9c43460264792d4de1f3525e4541cb3cfc623bd6d09c975b0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.
Transparency logRelease files / erispulse_rssreader-1.2.0-py3-none-any.whl
| Download URL | erispulse_rssreader-1.2.0-py3-none-any.whl |
|---|---|
| Size | 29.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b595ed3eb258544aa714cf3c83c0a747dc859eae7cf7e4099fbb7d9832074ee2
|
|
BLAKE2b-256 checksum How to use checksums |
a2e94386f063d7d511dcee09db5747b7cb4c2ee8ad5f4be477ba767ab41b13bd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 5, 2026.
Transparency log