一个现代化的 RSS 订阅与 AI 内容聚合平台,集成了 AI 报告生成、飞书机器人推送、多源内容聚合等高级功能。
RSS-AIGC 是一个功能强大的 RSS 订阅与内容聚合平台,具备以下核心能力:
- 智能内容聚合:支持 Hacker News、GitHub、ArXiv 等专业内容源的自动聚合
- AI 内容加工:集成 AI 模型进行内容分类、总结、翻译等智能处理
- 飞书集成:支持飞书机器人定时推送、文档导出等功能
- 全文阅读:自动抓取文章全文,提供更好的阅读体验
- 多角色架构:采用 API、Worker、Scheduler 多角色分离架构,支持高并发和分布式部署
- ✅ 订阅源管理(添加、删除、分组、重命名)
- ✅ 文章列表与详情查看
- ✅ 收藏和已读状态管理
- ✅ OPML 导入/导出
- ✅ RSSHub 集成,支持将网站行为转换为 RSS 订阅
- ✅ 订阅源自动发现与去重
- ✅ 全文内容抓取与缓存
- Hacker News:自动聚合 HN 热门文章,支持 AI 分类与洞察提取
- GitHub:GitHub 仓库动态订阅,支持自动发现 AI 相关仓库
- ArXiv:学术论文订阅与引用分析
- AI 娱乐:AI 影视与娱乐资讯搜索与报告生成
- AIGC:AIGC 行业资讯聚合与报告生成
- 内容分类:使用 AI 对文章进行智能分类
- 内容总结:自动生成文章摘要与总结
- 内容翻译:支持多语言翻译
- 报告生成:自动生成行业报告(AI 娱乐、AIGC 等)
- 洞察提取:从 Hacker News 等平台提取关键洞察
- 机器人推送:支持定时推送新闻总结到飞书群
- 文档导出:将报告导出到飞书文档
- 卡片消息:美观的飞书卡片消息格式
- 图片代理与缓存
- 多用户支持与权限管理
- GitHub OAuth 登录
- 数据统计与分析
- 暗色模式支持(前端)
┌─────────────┐
│ Frontend │ React + TypeScript + Vite + Tailwind
│ (React) │
└──────┬──────┘
│ HTTP/REST API
┌──────▼──────────────────────────────────────────┐
│ Backend Services │
├──────────────────────────────────────────────────┤
│ API Server (Django + DRF) │
│ - 用户认证与授权 │
│ - 订阅源与文章管理 │
│ - AI 服务接口 │
│ - 飞书集成接口 │
└──────┬───────────────────────────────────────────┘
│
┌──────▼───────────────────────────────────────────┐
│ Worker Service (异步任务处理) │
│ - RSS 抓取与解析 │
│ - 全文内容提取 │
│ - 图片下载与处理 │
└──────┬───────────────────────────────────────────┘
│
┌──────▼───────────────────────────────────────────┐
│ Scheduler Service (任务调度) │
│ - 订阅源定期同步 │
│ - 任务重试与失败处理 │
│ - 数据清理与维护 │
└──────┬───────────────────────────────────────────┘
│
┌──────▼───────────────────────────────────────────┐
│ AsyncAPI Service (异步 API) │
│ - 图片代理服务 │
│ - 异步任务接口 │
└──────┬───────────────────────────────────────────┘
│
┌──────▼───────────────────────────────────────────┐
│ Harbor Service (数据持久化) │
│ - Feed/Story 数据保存 │
│ - 任务派发 │
└──────┬───────────────────────────────────────────┘
│
┌──────▼───────────────────────────────────────────┐
│ PostgreSQL Database │
└───────────────────────────────────────────────────┘
- 框架:Django 2.2 + Django REST Framework
- 数据库:PostgreSQL 11+
- 异步框架:aiohttp(用于 Worker、Scheduler、AsyncAPI)
- 任务调度:自研调度器(rssant_scheduler)
- 认证:Django AllAuth(支持 GitHub OAuth)
- 静态文件:Whitenoise
- 进程管理:Supervisor
- 框架:React 18 + TypeScript
- 构建工具:Vite
- 样式:Tailwind CSS
- UI 组件:Radix UI / shadcn/ui
- 状态管理:Zustand
- 路由:React Router
- HTTP 客户端:Axios
- 容器化:Docker + Docker Compose
- Web 服务器:Nginx
- 代理:支持 HTTP/HTTPS/SOCKS5 代理
- RSS 代理:Cloudflare Worker(可选)
- URL 路由配置
- 中间件
- 认证系统
- 模板与静态文件
主要业务逻辑模块:
- models/:数据模型(Feed、Story、UserFeed、WorkerTask 等)
- views/:API 视图(Feed、Story、HackerNews、GitHub、ArXiv、AI 娱乐、AIGC、飞书机器人等)
- services/:业务服务层
ai_service.py:AI 服务封装hacker_news_*:Hacker News 相关服务github_*:GitHub 相关服务arxiv_*:ArXiv 相关服务ai_entertainment_*:AI 娱乐相关服务aigc_report_generator.py:AIGC 报告生成rsshub_client.py:RSSHub 客户端
- 订阅源定期同步调度
- 任务重试机制
- 数据清理任务
- RSS 抓取与解析
- 全文内容提取
- 图片处理
- Feed/Story 数据保存
- 任务派发与管理
- 图片代理服务
- 异步任务接口
- 网络请求封装
- RSS 解析与处理
- 工具函数
- 日志配置
- Feed 解析器
- 全文提取
- Feed 校验
React + TypeScript 单页应用,提供现代化的用户界面。
- 飞书机器人推送脚本
- 飞书卡片格式化
- 报告生成与推送
- Python 3.8+
- Node.js 16+
- PostgreSQL 11+
- Docker & Docker Compose(可选,用于容器化部署)
git clone <repository-url>
cd rrs-aigc# 创建虚拟环境(推荐使用 conda)
conda create -n rssant python=3.8
conda activate rssant
# 安装依赖
pip install -r requirements.txt
# 配置环境变量
cp .env.example .env
# 编辑 .env 文件,配置数据库、AI API Key 等# 创建数据库
createdb rssant
# 运行迁移
python manage.py migrate
# 创建超级用户
python manage.py createsuperusercd frontend
npm install
# 配置环境变量
cp .env.example .env
# 编辑 .env,设置 API 地址启动后端 API 服务:
# 在项目根目录
python manage.py runserver 0.0.0.0:6789启动 Worker 服务:
# 设置角色为 worker
export RSSANT_ROLE=worker
python manage.py runserver 0.0.0.0:6793启动 Scheduler 服务:
cd rssant_scheduler
python main.py启动前端开发服务器:
cd frontend
npm run dev项目提供了完整的 Docker 部署方案:
# 构建镜像
cd box
./build.sh
# 启动服务
./run.sh
# 或使用 docker-compose
docker-compose up -d详细部署说明请参考 box/ 目录下的脚本和配置文件。
主要配置项(通过 .env 文件或环境变量设置,前缀 RSSANT_):
RSSANT_DEBUG:调试模式(默认:False)RSSANT_LOG_LEVEL:日志级别(DEBUG/INFO/WARNING/ERROR,默认:INFO)RSSANT_ROOT_URL:系统根 URLRSSANT_ROLE:服务角色(api/worker/scheduler/asyncapi,默认:api)
RSSANT_PG_HOST:PostgreSQL 主机(默认:localhost)RSSANT_PG_PORT:PostgreSQL 端口(默认:5432)RSSANT_PG_DB:数据库名(默认:rssant)RSSANT_PG_USER:数据库用户(默认:rssant)RSSANT_PG_PASSWORD:数据库密码
RSSANT_AI_API_KEY:AI API 密钥(智谱 AI 或 OpenRouter)RSSANT_AI_API_BASE_URL:AI API 基础 URL(默认:智谱 AI)RSSANT_AI_MODEL_CONFIG:AI 模型配置(格式:model_id,model_name)RSSANT_AI_TRANSLATE_MODEL_CONFIG:翻译模型配置RSSANT_ZHIPU_API_KEY:智谱 AI API Key(用于总结,可选)
RSSANT_TAVILY_API_KEY:Tavily API Key(用于 AI 影视和 AIGC 搜索)RSSANT_BAIDU_API_KEY:百度搜索 API Key
RSSANT_GITHUB_TOKEN:GitHub API Token(提高 API 速率限制)RSSANT_GITHUB_CLIENT_ID:GitHub OAuth Client IDRSSANT_GITHUB_SECRET:GitHub OAuth Secret
RSSANT_FEISHU_APP_ID:飞书应用 App IDRSSANT_FEISHU_APP_SECRET:飞书应用 App SecretRSSANT_FEISHU_FOLDER_TOKEN:飞书文件夹 Token(可选)RSSANT_FEISHU_ENABLE:是否启用飞书功能(默认:False)
RSSANT_RSSHUB_BASE_URL:RSSHub 实例地址(默认:https://rsshub.app)RSSANT_RSSHUB_ENABLE:是否启用 RSSHub(默认:True)
RSSANT_PROXY_ENABLE:是否启用代理(默认:False)RSSANT_PROXY_URL:代理地址(支持 http/https/socks5)RSSANT_RSS_PROXY_ENABLE:是否启用 RSS 代理(默认:False)RSSANT_RSS_PROXY_URL:RSS 代理地址
RSSANT_CHECK_FEED_MINUTES:订阅源检查间隔(分钟,默认:30)RSSANT_FEED_STORY_RETENTION:每个订阅源保留的文章数(默认:5000)RSSANT_IMAGE_PROXY_ENABLE:是否启用图片代理(默认:True)
完整配置项请参考 rssant_config/env.py。
# 构建生产镜像
cd box
./build-all.sh
# 配置环境变量
cp rssant.env.example rssant.env
# 编辑 rssant.env
# 启动服务
./run.sh后端部署:
# 使用 Gunicorn 运行
gunicorn rssant.wsgi:application --bind 0.0.0.0:6789 --workers 4
# 使用 Supervisor 管理进程
supervisord -c /path/to/supervisord.conf前端部署:
cd frontend
npm run build
# 将 dist 目录部署到 Nginx 或静态文件服务器Nginx 配置示例:
server {
listen 80;
server_name your-domain.com;
# 前端静态文件
location / {
root /var/www/rssant-html;
try_files $uri $uri/ /index.html;
}
# 后端 API
location /api/ {
proxy_pass http://127.0.0.1:6789;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}系统支持将不同角色部署到不同服务器:
- API 服务:处理用户请求,运行
role=api - Worker 服务:处理异步任务,运行
role=worker - Scheduler 服务:任务调度,运行
role=scheduler - AsyncAPI 服务:异步 API,运行
role=asyncapi
通过 RSSANT_ROLE 环境变量指定角色。
rrs-aigc/
├── rssant/ # Django 项目核心
│ ├── settings/ # 配置文件
│ ├── urls.py # URL 路由
│ └── middleware/ # 中间件
├── rssant_api/ # 业务应用
│ ├── models/ # 数据模型
│ ├── views/ # API 视图
│ ├── services/ # 业务服务
│ └── migrations/ # 数据库迁移
├── rssant_scheduler/ # 调度服务
├── rssant_worker/ # 工作服务
├── rssant_harbor/ # 数据持久化服务
├── rssant_asyncapi/ # 异步 API 服务
├── rssant_common/ # 公共库
├── rssant_feedlib/ # Feed 处理库
├── rssant_config/ # 配置管理
├── frontend/ # 前端应用
├── feishu/ # 飞书集成
├── box/ # Docker 部署配置
├── deploy/ # 部署脚本
├── scripts/ # 工具脚本
└── tests/ # 测试文件
- 创建功能分支
git checkout -b feature/your-feature- 运行测试
pytest- 代码规范
- Python:遵循 PEP 8
- TypeScript:使用 ESLint 检查
- 提交代码
git add .
git commit -m "feat: 添加新功能"
git push origin feature/your-feature- 在
rssant_api/views/创建视图类 - 在
rssant_api/urls.py注册路由 - 编写相应的服务层代码(如需要)
- 更新 API 文档
- 在
rssant_api/models/定义模型 - 创建迁移文件:
python manage.py makemigrations - 应用迁移:
python manage.py migrate
系统提供完整的 API 文档:
- Swagger UI:
http://your-domain/docs/v1/swagger/ - ReDoc:
http://your-domain/docs/v1/ - Schema:
http://your-domain/docs/v1/schema/
POST /api/v1/feed.query- 查询订阅列表POST /api/v1/feed.get- 获取订阅详情POST /api/v1/feed.create- 创建订阅POST /api/v1/feed.import- 导入订阅(OPML)POST /api/v1/feed.delete- 删除订阅
POST /api/v1/story.query- 查询文章列表POST /api/v1/story.get- 获取文章详情POST /api/v1/story.set_favorited- 设置收藏状态POST /api/v1/story.set_watched- 设置已读状态
POST /api/v1/hacker_news.query- 查询 HN 文章POST /api/v1/hacker_news.get- 获取 HN 文章详情POST /api/v1/hacker_news.report- 生成 HN 报告
POST /api/v1/github.query- 查询 GitHub 仓库POST /api/v1/github.subscribe- 订阅仓库
POST /api/v1/arxiv.query- 查询论文POST /api/v1/arxiv.report- 生成论文报告
POST /api/v1/ai_entertainment.search- 搜索 AI 影视资讯POST /api/v1/ai_entertainment.report- 生成 AI 娱乐报告
POST /api/v1/aigc.report- 生成 AIGC 报告
POST /api/v1/feishu_bot.query- 查询机器人配置POST /api/v1/feishu_bot.create- 创建机器人配置POST /api/v1/feishu_bot.push- 手动触发推送
GET /api/v1/rsshub.routes- 获取可用路由POST /api/v1/rsshub.generate- 生成 RSSHub 订阅
详细 API 文档请访问 Swagger UI。
系统支持两种 AI 服务:
- 智谱 AI(默认):设置
RSSANT_AI_API_KEY为智谱 AI 的 API Key - OpenRouter:设置
RSSANT_AI_API_BASE_URL=https://openrouter.ai/api/v1并配置相应的 API Key
- 在飞书开放平台创建应用,获取 App ID 和 App Secret
- 配置环境变量:
RSSANT_FEISHU_APP_IDRSSANT_FEISHU_APP_SECRETRSSANT_FEISHU_ENABLE=True
- 在数据库中配置飞书机器人(通过 API 或管理后台)
- 检查网络连接和代理配置
- 查看 Worker 服务日志
- 检查订阅源 URL 是否可访问
- 查看
WorkerTask表中的任务状态
- 通过前端界面添加
- 通过 API
feed.create添加 - 通过 OPML 导入
- 使用公共实例:保持默认配置
RSSANT_RSSHUB_BASE_URL=https://rsshub.app - 使用自部署实例:设置
RSSANT_RSSHUB_BASE_URL为你的实例地址
# 检查迁移状态
python manage.py showmigrations
# 手动应用迁移
python manage.py migrate --fake-initial
# 重置迁移(谨慎使用)
python manage.py migrate --fake <app_name> zero
python manage.py migrate <app_name>本项目遵循开源许可证。
欢迎提交 Issue 和 Pull Request!
如有问题或建议,请通过以下方式联系:
- 提交 GitHub Issue
- 发送邮件
注意:本项目在 conda 虚拟环境下开发和测试,使用 terminal 命令时请确保已激活相应的 conda 环境。