RSS 阅读器怎么读微信公众号?wewe-rss API 三个接口全解
2026/9/18 19:55:14 网站建设 项目流程

RSS 阅读器怎么读微信公众号?wewe-rss API 三个接口全解

【免费下载链接】wewe-rss🤗更优雅的微信公众号订阅方式,支持私有化部署、微信公众号RSS生成(基于微信读书)项目地址: https://gitcode.com/GitHub_Trending/we/wewe-rss

wewe-rss 是一个可私有化部署的微信公众号 RSS 生成工具(基于微信读书),内置的 wewe-rss API 只有 3 个 GET 接口,覆盖源列表、聚合内容、格式转换的完整链路。在 Web 控制台添加公众号之后,它们就以标准订阅源的形式存在,可以被任意 RSS 客户端订阅,也可以把内容输出给下游脚本消费。接口与后台服务同进程运行(NestJS),默认端口 4000。

一次请求的调用链是这样的:请求先命中 feeds.controller.ts 里的路由,交给handleGenerateFeed,从数据库查出文章,用 feed 库渲染成对应格式,再设置好 Content-Type 返回给客户端。

先拿到已订阅的公众号列表

curl http://localhost:4000/feeds

返回一个 JSON 数组,每个订阅源一条记录:

[ { "id": "mpId", "name": "某技术公众号", "intro": "公众号介绍", "cover": "https://example.com/cover.jpg", "syncTime": 1710000000, "updateTime": 1710000000 } ]

其中id就是后面内容接口 URL 里要用的标识。这个路径不需要AUTH_CODE鉴权,顺手可以当探测接口用。

获取聚合内容的三种格式:Atom、RSS、JSON

聚合端点固定写作all,格式由 URL 后缀决定:

curl http://localhost:4000/feeds/all.atom # 默认 curl http://localhost:4000/feeds/all.rss curl http://localhost:4000/feeds/all.json

三者分别对应 Atom 1.0、RSS 2.0、JSON Feed 1.0,返回的 Content-Type 也随格式切换。后缀写错时(比如.xml)会自动回退为 Atom。由于三种格式由同一份数据渲染而来,从 RSS 转 Atom 只需要改后缀,不需要重新取数,适合"公众号源接入 FreshRSS / NetNewsWire"这类场景。只想要单个源的内容时,把all换成列表里的id即可:/feeds/{id}.rss

用分页与标题关键词过滤订阅内容

内容接口支持四个查询参数:

  • limit:每页条数,聚合端点默认 30,单源端点默认 10
  • page:页码,从 1 开始,服务端按skip = (page - 1) * limit取数
  • title_include/title_exclude:标题关键词包含/排除,多个关键词用|分隔
curl "http://localhost:4000/feeds/all.atom?page=2&limit=10" curl "http://localhost:4000/feeds/all.json?title_include=AI|前端" curl "http://localhost:4000/feeds/all.rss?title_exclude=招聘"

一个容易忽略的细节:关键词过滤发生在分页取数并渲染之后,是订阅源过滤的最后一步,所以边分页边过滤时,单页实际条数可能小于limit。过滤逻辑见 feeds.service.ts。

强制刷新单个订阅源与开启全文模式

默认情况下接口只携带标题、摘要图等元信息,正文内容需要通过全文模式获取:

curl "http://localhost:4000/feeds/all.atom?mode=fulltext"

URL 参数优先于全局配置;也可以在部署时设置FEED_MODE=fulltext让所有请求默认走全文。全文模式下服务会去 mp.weixin.qq.com 抓取文章页,提取正文节点并压缩 HTML 后写入content字段。

⚠️ 全文请求比摘要模式明显更慢,且计入限速,建议只在对内容消费频率高的源上启用。

强制刷新某个源:

curl "http://localhost:4000/feeds/{id}.rss?update=true"

update=true会异步触发该源从微信读书同步文章,不阻塞响应——本次请求返回的通常还是旧快照,稍后再请求才能拿到新内容。更新逻辑同样位于 feeds.service.ts。

自定义更新周期与 Docker 部署

定时任务负责同步所有启用状态的源,默认 Cron 表达式为35 5,17 * * *(Asia/Shanghai 时区,即每天 5:35 与 17:35 各一轮)。想改频率只需设置CRON_EXPRESSION环境变量:

export CRON_EXPRESSION="30 * * * *"

wewe-rss Docker 部署方面,仓库自带 docker-compose.yml,包含 MySQL 8.3 与应用镜像cooderl/wewe-rss:latest两个服务,应用对外暴露 4000 端口:

git clone https://gitcode.com/GitHub_Trending/we/wewe-rss cd wewe-rss && docker compose up -d

⚠️ 上线前请修改 compose 文件中的AUTH_CODEMYSQL_ROOT_PASSWORD;若部署到公网,还需把SERVER_ORIGIN_URL设为外部可访问的域名,否则生成 feed 里的link字段会是内网地址。

集成到前端与轮询场景,以及几个注意事项

前端集成可以很简单:React 组件里一次fetch('/feeds/all.json')后遍历items渲染列表即可,不需要额外封装。第三方推送场景适合轮询 json 接口,对比 feed 的updated时间或首条条目的链接,有变化就推送,例如钉钉机器人——仓库里的 wewe-rss-dingtalk/ 模块可以直接参考。

性能层面记住三个数字:全文 HTML 有 LRU 缓存,容量 5000 条,重复读取同一篇文章不会重复抓取原站;接口限流由MAX_REQUEST_PER_MINUTE控制,默认每分钟 60 次;AUTH_CODE只保护管理类接口,/feeds系列路径不受影响。

📌 接下来的使用路径可以这样走:先用/feeds拿到源列表,用/feeds/all.atom在阅读器里订阅;需要更精细的控制时再叠加分页与标题关键词参数;如果发现内容更新不及时,优先检查CRON_EXPRESSIONSERVER_ORIGIN_URL是否配置正确。

【免费下载链接】wewe-rss🤗更优雅的微信公众号订阅方式,支持私有化部署、微信公众号RSS生成(基于微信读书)项目地址: https://gitcode.com/GitHub_Trending/we/wewe-rss

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询