一个功能完善的 RSS 订阅管理器,支持多用户、分类管理、定时抓取、自定义抓取规则以及 AI 翻译和摘要功能。
github:
https://github.com/inspoaibox/RSS-feed-manager







## 功能特性
- 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 ,几条命令启动所有服务:
```bash
# 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 定时任务(自动抓取订阅源)
- 前端界面
停止服务:
```bash
docker compose -f docker-compose.prod.yml down
```
**更新代码后重新部署:**
```bash
# 拉取最新代码后,重建并重启所有服务
docker compose -f docker-compose.prod.yml up -d --build
# 如果有数据库结构变更,执行迁移
docker exec -it rss_manager_backend alembic upgrade head
```
> 如果只重建单个服务(如 `--build backend`),需要同时重启 frontend ,否则 nginx 会因 DNS 缓存连接失败:
> ```bash
> docker compose -f docker-compose.prod.yml up -d --build backend
> docker restart rss_manager_frontend
> ```
### 方式二:开发环境( SQLite ,无需 Docker )
适合本地开发调试,不支持定时抓取功能和 AI 语义搜索(会自动回退到关键词搜索)。
**后端设置:**
```bash
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
```
**前端设置(新终端):**
```bash
cd frontend
npm install
npm run dev
```
访问: http://localhost:5173
### 方式三:开发环境 + 定时抓取(需要 Docker )
使用 Docker 运行 PostgreSQL 和 Redis ,本地运行代码。
**1. 启动数据库:**
```bash
docker compose up -d postgres redis
```
**2. 后端设置:**
```bash
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. 启动定时任务(新终端):**
```bash
cd backend
.\venv\Scripts\activate
celery -A app.tasks.celery_app worker --loglevel=info --pool=solo
```
**4. 启动调度器(新终端):**
```bash
cd backend
.\venv\Scripts\activate
celery -A app.tasks.celery_app beat --loglevel=info
```
**5. 前端设置(新终端):**
```bash
cd frontend
npm install
npm run dev
```
> Windows 上 Celery Worker 需要 `--pool=solo` 参数
## AI 智能内容分析
AI 分析功能允许你使用自然语言查询订阅的文章内容,系统会通过语义搜索找到相关文章,并生成 AI 分析总结。
### 功能特点
- **语义搜索**:基于 pgvector 向量数据库,理解查询意图而非简单关键词匹配
- **AI 分析总结**:自动生成主题分类、关键点提取、趋势识别
- **相关度排序**:按语义相似度排序,最相关的文章优先展示
- **查询历史**:保存最近 10 条查询,支持快速重新执行
- **智能回退**:当语义搜索不可用时,自动回退到关键词搜索
### 使用方法
1. 在侧边栏点击「 AI 分析」进入分析页面
2. 在搜索框输入自然语言查询,例如:
- "Python 相关的技术文章"
- "最近的 AI 发展趋势"
- "前端框架对比"
3. 点击「分析」按钮,等待 AI 处理
4. 查看 AI 生成的分析总结和相关文章列表
### 技术要求
- **数据库**:需要使用 PostgreSQL + pgvector (生产环境 Docker 配置已包含)
- **AI 服务**:需要配置 OpenAI 或兼容的 AI 服务(用于生成 embedding 和分析)
- **注意**:SQLite 开发模式不支持语义搜索,会自动回退到关键词搜索
### 配置 Embedding 模型
1. 进入「设置 → AI 设置」
2. 在「 Embedding 模型」区域选择 AI 渠道
3. 输入 embedding 模型名称(如 `text-embedding-3-small`)
4. 点击「保存 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 任务)需要重建对应容器:
```bash
# 重建所有服务(推荐)
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 定时任务
- **数据库结构变更时**,必须执行迁移:
```bash
docker exec -it rss_manager_backend alembic upgrad head
```
### 从旧版本升级(添加 AI 分析功能)
如果你是从不支持 AI 分析的旧版本升级,需要执行以下步骤:
```bash
# 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 |
## 项目结构
```
├── 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 配置
```