RSS Reader 是一个纯前端应用,数据保存在本机浏览器;RSS 代理和 AI 能力可以部署到 Cloudflare Worker。默认代理只转发请求,不保存用户信息。AI 接口也只通过 Worker 转发到 Responses API 兼容接口,模型密钥留在 Worker 环境变量里,不暴露给浏览器。
- 三栏阅读体验:订阅源、标题列表、正文阅读区并排展示,左右栏都可折叠。
- 本地优先:订阅、文件夹、已读、星标和阅读设置保存在浏览器本地。
- 配置同步:只导出订阅 URL、文件夹和设置,不导出文章缓存和正文内容。
- 可分享文章路径:打开文章后 URL 会带上文章路径,方便复制、收藏和回到同一篇文章。
- 内置 RSS 代理:解决浏览器直接请求 RSS 时遇到的 CORS、HTTPS 和混合内容问题。
- AI 阅读模式:标题含中文的文章生成摘要;英文等非中文标题的文章直接全文翻译成中文,支持流式输出。
- 可调提示词:中文摘要和非中文全文翻译的提示词都在设置里,可随时调整。
- Cloudflare Access 支持:
/rss可以公开,/ai/*可以单独加登录保护,避免公开消耗你的模型额度。 - 桌面版本:Electron 版本可以直接抓取 RSS,不需要额外代理。
npm install
npm run dev构建 Web 版本:
npm run build桌面开发:
npm run electron:dev打包当前系统的桌面 App:
npm run app:distserver/proxy.js 同时支持 RSS 代理和 AI 转发:
GET /rss?url={url}:RSS 代理,默认公开。GET /health:Worker 健康检查。GET /ai/health:AI 路由健康检查,也可用来触发 Cloudflare Access 登录。POST /ai/responses:AI 转发接口,接收前端生成的 Responses API 请求体,支持stream: true和stream: false。
本地启动代理:
npm run proxy部署到 Cloudflare Worker:
npm run proxy:deployWorker 常用配置:
| 变量 | 说明 |
|---|---|
ALLOW_ORIGIN |
前端 Origin,例如 https://zijian-z.github.io。 |
ALLOW_CREDENTIALS |
使用 Cloudflare Access Cookie 鉴权时设为 true。 |
ALLOWED_HOSTS |
RSS 主机白名单,留空表示允许所有 http/https 主机。 |
MAX_BYTES |
RSS 响应体大小上限,默认 8388608。 |
AI_BASE_URL |
OpenAI 兼容接口地址,默认 https://api.openai.com/v1。 |
AI_MODEL |
Responses API 模型,默认 gpt-5.2;前端请求体不指定模型时使用它。 |
AI_MAX_OUTPUT_TOKENS |
AI 输出上限,默认 12000,较长全文翻译可适当调高。 |
AI 密钥使用 Worker secret:
npx wrangler secret put AI_API_KEY前端设置里的默认代理模板:
https://api.plunox.site/rss?url={url}
前端设置里的 AI Worker URL:
https://api.plunox.site/ai/responses
AI 的文章类型由前端按标题判断:标题含中文字符时使用“中文摘要提示词”,标题不含中文字符时使用“非中文全文翻译提示词”。标题只在浏览器本地用于选择提示词;发送给 Worker 和模型的 input 只包含正文文本,不包含标题、作者、发布时间或原文链接。这两段提示词、是否启用流式输出、AI Worker URL 和鉴权方式都在设置里保存。Worker 不负责判断文章语言、不裁剪模型输出,只把请求转发给上游并把 JSON 或 SSE 流返回给前端。
如果你用自己的模型 key,建议只保护 AI 路由,不保护 RSS 代理:
api.plunox.site/ai/*
在 Cloudflare Zero Trust 里给这段路径创建 Access 应用,并把 /rss 留在 Access 之外。前端设置中把“AI 鉴权”切换为 Cloudflare Access 后,AI 请求会携带 Access 登录 Cookie。
Access CORS 保留这些关键项即可:
- Origin:你的前端 Origin,例如
https://zijian-z.github.io。 - Methods:至少
POST和OPTIONS。 - Headers:至少
content-type。 - Credentials:开启。
首次使用前可以打开:
https://api.plunox.site/ai/health
登录成功后再回到阅读器点击 AI 按钮。
当前仓库的 GitHub Actions 会在 main 分支构建 Web 版本,并把 dist/ 推送到:
zijian-z/rss-reader-page
需要在当前仓库配置 secret:
RSS_READER_PAGE_TOKEN
然后在 zijian-z/rss-reader-page 中启用 GitHub Pages,发布来源选择 main 分支根目录。
设置里的导出功能只导出:
- 阅读设置
- 文件夹
- 订阅源 URL
- 代理和 AI Worker 配置
- AI 提示词
不会导出文章内容、AI 生成内容、已读状态、星标状态或本地缓存。你可以把导出的 JSON 放到一个可访问 URL 上,再在另一台设备里使用“从 URL 导入”完成配置同步。
默认订阅源:
https://www.solidot.org/index.rsshttps://rss.slashdot.org/Slashdot/slashdot
它们默认放在“科技”文件夹里。
MIT License. 源代码:https://github.com/zijian-z/rss-reader