程序
RSS 订阅管理器
一个功能完善的 RSS 订阅管理器,支持多用户、分类管理、定时抓取、自定义抓取规则以及 AI 翻译和摘要功能。
功能特性
- 📰 RSS/Atom 订阅源管理
- 📁 分类管理
- 📖 文章阅读(已读/未读、收藏)
- 🔍 全文搜索和排序
- ⏰ 定时自动抓取(可设置 1 分钟 - 24 小时间隔)
- 🌐 Playwright 浏览器模式(支持 Cloudflare 保护的网站)
- 🤖 AI 自动翻译和整理(支持 OpenAI、Gemini 及兼容 API)
- 🧠 AI 智能内容分析(语义搜索 + AI 总结)
- 🕷️ 自定义抓取规则
- 📦 OPML 导入导出
- 💾 配置备份恢复
技术栈
| 后端 | 前端 |
|---|---|
| Python 3.11+ | React 18 |
| FastAPI | TypeScript |
| SQLAlchemy 2.0 | TailwindCSS |
| Celery + Redis | React Query |
| PostgreSQL + pgvector | Zustand |
快速开始
方式一:生产环境部署(Docker 一键启动,推荐)
只需安装 Docker,几条命令启动所有服务:
# 1. 启动所有服务
docker compose -f docker-compose.prod.yml up -d
# 2. 初始化数据库(首次部署必须执行)
docker exec -it rss_manager_backend alembic upgrade head
启动后访问:http://localhost:5666
包含的服务:
- PostgreSQL 数据库
- Redis 缓存
- 后端 API
- Celery 定时任务(自动抓取订阅源)
- 前端界面
停止服务:
docker compose -f docker-compose.prod.yml down
更新代码后重新部署:
# 拉取最新代码后,重建并重启所有服务
docker compose -f docker-compose.prod.yml up -d --build
# 如果有数据库结构变更,执行迁移
docker exec -it rss_manager_backend alembic upgrade head
⚠️ 如果只重建单个服务(如
--build backend),需要同时重启 frontend,否则 nginx 会因 DNS 缓存连接失败:docker compose -f docker-compose.prod.yml up -d --build backend docker restart rss_manager_frontend
方式二:开发环境(SQLite,无需 Docker)
适合本地开发调试,不支持定时抓取功能和 AI 语义搜索(会自动回退到关键词搜索)。
后端设置:
cd backend
python -m venv venv
.\venv\Scripts\activate # Linux/Mac: source venv/bin/activate
pip install -e ".[dev]"
copy .env.sqlite .env # Linux/Mac: cp .env.sqlite .env
alembic upgrade head
uvicorn app.main:app --reload
前端设置(新终端):
cd frontend
npm install
npm run dev
方式三:开发环境 + 定时抓取(需要 Docker)
使用 Docker 运行 PostgreSQL 和 Redis,本地运行代码。
1. 启动数据库:
docker compose up -d postgres redis
2. 后端设置:
cd backend
python -m venv venv
.\venv\Scripts\activate
pip install -e ".[dev]"
copy .env.postgres .env
alembic upgrade head
uvicorn app.main:app --reload
3. 启动定时任务(新终端):
cd backend
.\venv\Scripts\activate
celery -A app.tasks.celery_app worker --loglevel=info --pool=solo
4. 启动调度器(新终端):
cd backend
.\venv\Scripts\activate
celery -A app.tasks.celery_app beat --loglevel=info
5. 前端设置(新终端):
cd frontend
npm install
npm run dev
Windows 上 Celery Worker 需要
--pool=solo参数
AI 智能内容分析
AI 分析功能允许你使用自然语言查询订阅的文章内容,系统会通过语义搜索找到相关文章,并生成 AI 分析总结。
功能特点
- 🔍 语义搜索:基于 pgvector 向量数据库,理解查询意图而非简单关键词匹配
- 📊 AI 分析总结:自动生成主题分类、关键点提取、趋势识别
- 📈 相关度排序:按语义相似度排序,最相关的文章优先展示
- 📝 查询历史:保存最近 10 条查询,支持快速重新执行
- 🔄 智能回退:当语义搜索不可用时,自动回退到关键词搜索
使用方法
- 在侧边栏点击「AI 分析」进入分析页面
- 在搜索框输入自然语言查询,例如:
- "Python 相关的技术文章"
- "最近的 AI 发展趋势"
- "前端框架对比"
- 点击「分析」按钮,等待 AI 处理
- 查看 AI 生成的分析总结和相关文章列表
技术要求
- 数据库:需要使用 PostgreSQL + pgvector(生产环境 Docker 配置已包含)
- AI 服务:需要配置 OpenAI 或兼容的 AI 服务(用于生成 embedding 和分析)
- 注意:SQLite 开发模式不支持语义搜索,会自动回退到关键词搜索
配置 Embedding 模型
- 进入「设置 → AI 设置」
- 在「Embedding 模型」区域选择 AI 渠道
- 输入 embedding 模型名称(如
text-embedding-3-small) - 点击「保存 Embedding 配置」
常用 Embedding 模型:
text-embedding-3-small- OpenAI 推荐,性价比高text-embedding-3-large- 更高精度text-embedding-ada-002- 旧版模型
Embedding 生成
文章的向量嵌入(embedding)通过 Celery 后台任务异步生成:
- 需要先配置 Embedding 模型才能生成
- 批量生成任务:
generate_embeddings_batch(通过 Celery 调用) - embedding 生成失败不会影响文章保存,会自动回退到关键词搜索
定时任务说明
| 任务 | 执行频率 | 说明 |
|---|---|---|
| 订阅源刷新 | 每分钟检查 | 根据每个订阅源设置的同步间隔自动抓取 |
| 自定义规则 | 每分钟检查 | 根据规则设置的间隔执行 |
| 旧文章清理 | 每天凌晨 3 点 | 清理 90 天前的非收藏文章 |
默认配置
开发环境 (docker-compose.yml):
- PostgreSQL: 用户
rss_manager,密码rss_manager_password - Redis: 无密码
生产环境 (docker-compose.prod.yml):
- PostgreSQL: 用户
rss_manager,密码rss_manager_prod_2024 - Redis: 密码
redis_prod_2024 - JWT 密钥:
rss_manager_secret_key_2024_production
部署到公网服务器时,建议通过环境变量修改默认密码
注意事项
部署相关
- 项目可以安装在任意目录,没有路径限制
- 端口 5666 需要可用,如需修改请编辑
docker-compose.prod.yml中的端口映射 - 首次部署必须执行数据库迁移:
docker exec -it rss_manager_backend alembic upgrade head - 首个注册的用户将自动成为管理员
更新部署
- 修改后端代码(包括 Celery 任务)需要重建对应容器:
# 重建所有服务(推荐) docker compose -f docker-compose.prod.yml up -d --build # 或只重建特定服务 docker compose -f docker-compose.prod.yml up -d --build backend celery_worker celery_beat - 只重建
backend frontend不会更新 Celery 定时任务 - 数据库结构变更时,必须执行迁移:
docker exec -it rss_manager_backend alembic upgrade head
从旧版本升级(添加 AI 分析功能)
如果你是从不支持 AI 分析的旧版本升级,需要执行以下步骤:
# 1. 备份数据库(可选但推荐)
docker exec rss_manager_postgres pg_dump -U rss_manager rss_manager > backup.sql
# 2. 拉取最新代码
git pull
# 3. 重建所有服务(PostgreSQL 镜像已更换为支持 pgvector 的版本)
docker compose -f docker-compose.prod.yml up -d --build
# 4. 执行数据库迁移(添加 embedding 列和查询历史表)
docker exec -it rss_manager_backend alembic upgrade head
数据不会丢失,pgvector 镜像与原 PostgreSQL 镜像完全兼容
安全建议
- 公网部署时务必修改默认密码(通过环境变量设置)
- 建议使用反向代理(如 Nginx)并配置 HTTPS
- 可以关闭注册功能(管理员在设置页面操作)
访问地址
| 服务 | 地址 |
|---|---|
| 前端界面(生产) | http://localhost:5666 |
| 前端界面(开发) | http://localhost:5173 |
| 后端 API | http://localhost:8000 |
| API 文档 | http://localhost:8000/docs |
项目结构
├── backend/ # Python FastAPI 后端
│ ├── app/
│ │ ├── api/ # API 路由
│ │ ├── core/ # 核心配置
│ │ ├── models/ # 数据模型
│ │ ├── repositories/ # 数据访问层
│ │ ├── schemas/ # Pydantic 模式
│ │ ├── services/ # 业务逻辑
│ │ ├── tasks/ # Celery 后台任务
│ │ └── utils/ # 工具函数
│ └── alembic/ # 数据库迁移
├── frontend/ # React 前端
│ └── src/
│ ├── components/ # UI 组件
│ ├── pages/ # 页面组件
│ ├── services/ # API 服务
│ ├── stores/ # 状态管理
│ └── types/ # TypeScript 类型
├── docker-compose.yml # 开发环境 Docker 配置
└── docker-compose.prod.yml # 生产环境 Docker 配置
开源协议
MIT