An open API service indexing awesome lists of open source software.

https://github.com/GongLingRui/rss-aigc

Vibe-Coding|RSS-AIGC是一个非常简易的现代化的 RSS 订阅与 AI 内容聚合平台,专为内容创作者、研究人员和知识工作者设计。系统集成了 AI 报告生成、飞书机器人推送、多源内容聚合等高级功能,帮助用户高效地获取、管理和分析来自 Hacker News、GitHub、ArXiv 等专业平台的内容
https://github.com/GongLingRui/rss-aigc

Last synced: 8 days ago
JSON representation

Vibe-Coding|RSS-AIGC是一个非常简易的现代化的 RSS 订阅与 AI 内容聚合平台,专为内容创作者、研究人员和知识工作者设计。系统集成了 AI 报告生成、飞书机器人推送、多源内容聚合等高级功能,帮助用户高效地获取、管理和分析来自 Hacker News、GitHub、ArXiv 等专业平台的内容

Awesome Lists containing this project

README

          

# RSS-AIGC 系统

一个现代化的 RSS 订阅与 AI 内容聚合平台,集成了 AI 报告生成、飞书机器人推送、多源内容聚合等高级功能。

## 📋 目录

- [系统概述](#系统概述)
- [核心功能](#核心功能)
- [技术架构](#技术架构)
- [系统组件](#系统组件)
- [快速开始](#快速开始)
- [配置说明](#配置说明)
- [部署指南](#部署指南)
- [开发指南](#开发指南)
- [API 文档](#api-文档)
- [常见问题](#常见问题)

## 🎯 系统概述

RSS-AIGC 是一个功能强大的 RSS 订阅与内容聚合平台,具备以下核心能力:

- **智能内容聚合**:支持 Hacker News、GitHub、ArXiv 等专业内容源的自动聚合
- **AI 内容加工**:集成 AI 模型进行内容分类、总结、翻译等智能处理
- **飞书集成**:支持飞书机器人定时推送、文档导出等功能
- **全文阅读**:自动抓取文章全文,提供更好的阅读体验
- **多角色架构**:采用 API、Worker、Scheduler 多角色分离架构,支持高并发和分布式部署

## ✨ 核心功能

### RSS 订阅管理
- ✅ 订阅源管理(添加、删除、分组、重命名)
- ✅ 文章列表与详情查看
- ✅ 收藏和已读状态管理
- ✅ OPML 导入/导出
- ✅ RSSHub 集成,支持将网站行为转换为 RSS 订阅
- ✅ 订阅源自动发现与去重
- ✅ 全文内容抓取与缓存

### 内容聚合
- **Hacker News**:自动聚合 HN 热门文章,支持 AI 分类与洞察提取
- **GitHub**:GitHub 仓库动态订阅,支持自动发现 AI 相关仓库
- **ArXiv**:学术论文订阅与引用分析
- **AI 娱乐**:AI 影视与娱乐资讯搜索与报告生成
- **AIGC**:AIGC 行业资讯聚合与报告生成

### AI 功能
- **内容分类**:使用 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(可选)

## 🔧 系统组件

### 1. rssant/ - Django 项目核心
- URL 路由配置
- 中间件
- 认证系统
- 模板与静态文件

### 2. rssant_api/ - 业务应用
主要业务逻辑模块:
- **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 客户端

### 3. rssant_scheduler/ - 调度服务
- 订阅源定期同步调度
- 任务重试机制
- 数据清理任务

### 4. rssant_worker/ - 工作服务
- RSS 抓取与解析
- 全文内容提取
- 图片处理

### 5. rssant_harbor/ - 数据持久化服务
- Feed/Story 数据保存
- 任务派发与管理

### 6. rssant_asyncapi/ - 异步 API 服务
- 图片代理服务
- 异步任务接口

### 7. rssant_common/ - 公共库
- 网络请求封装
- RSS 解析与处理
- 工具函数
- 日志配置

### 8. rssant_feedlib/ - Feed 处理库
- Feed 解析器
- 全文提取
- Feed 校验

### 9. frontend/ - 前端应用
React + TypeScript 单页应用,提供现代化的用户界面。

### 10. feishu/ - 飞书集成
- 飞书机器人推送脚本
- 飞书卡片格式化
- 报告生成与推送

## 🚀 快速开始

### 环境要求

- Python 3.8+
- Node.js 16+
- PostgreSQL 11+
- Docker & Docker Compose(可选,用于容器化部署)

### 本地开发环境搭建

#### 1. 克隆项目

```bash
git clone
cd rrs-aigc
```

#### 2. 后端环境配置

```bash
# 创建虚拟环境(推荐使用 conda)
conda create -n rssant python=3.8
conda activate rssant

# 安装依赖
pip install -r requirements.txt

# 配置环境变量
cp .env.example .env
# 编辑 .env 文件,配置数据库、AI API Key 等
```

#### 3. 数据库初始化

```bash
# 创建数据库
createdb rssant

# 运行迁移
python manage.py migrate

# 创建超级用户
python manage.py createsuperuser
```

#### 4. 前端环境配置

```bash
cd frontend
npm install

# 配置环境变量
cp .env.example .env
# 编辑 .env,设置 API 地址
```

#### 5. 启动服务

**启动后端 API 服务:**
```bash
# 在项目根目录
python manage.py runserver 0.0.0.0:6789
```

**启动 Worker 服务:**
```bash
# 设置角色为 worker
export RSSANT_ROLE=worker
python manage.py runserver 0.0.0.0:6793
```

**启动 Scheduler 服务:**
```bash
cd rssant_scheduler
python main.py
```

**启动前端开发服务器:**
```bash
cd frontend
npm run dev
```

### Docker 部署

项目提供了完整的 Docker 部署方案:

```bash
# 构建镜像
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`:系统根 URL
- `RSSANT_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`:数据库密码

#### AI 服务配置
- `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

#### GitHub 配置
- `RSSANT_GITHUB_TOKEN`:GitHub API Token(提高 API 速率限制)
- `RSSANT_GITHUB_CLIENT_ID`:GitHub OAuth Client ID
- `RSSANT_GITHUB_SECRET`:GitHub OAuth Secret

#### 飞书配置
- `RSSANT_FEISHU_APP_ID`:飞书应用 App ID
- `RSSANT_FEISHU_APP_SECRET`:飞书应用 App Secret
- `RSSANT_FEISHU_FOLDER_TOKEN`:飞书文件夹 Token(可选)
- `RSSANT_FEISHU_ENABLE`:是否启用飞书功能(默认:False)

#### RSSHub 配置
- `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`。

## 📦 部署指南

### 生产环境部署

#### 1. 使用 Docker 部署(推荐)

```bash
# 构建生产镜像
cd box
./build-all.sh

# 配置环境变量
cp rssant.env.example rssant.env
# 编辑 rssant.env

# 启动服务
./run.sh
```

#### 2. 手动部署

**后端部署:**
```bash
# 使用 Gunicorn 运行
gunicorn rssant.wsgi:application --bind 0.0.0.0:6789 --workers 4

# 使用 Supervisor 管理进程
supervisord -c /path/to/supervisord.conf
```

**前端部署:**
```bash
cd frontend
npm run build
# 将 dist 目录部署到 Nginx 或静态文件服务器
```

**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/ # 测试文件
```

### 开发流程

1. **创建功能分支**
```bash
git checkout -b feature/your-feature
```

2. **运行测试**
```bash
pytest
```

3. **代码规范**
- Python:遵循 PEP 8
- TypeScript:使用 ESLint 检查

4. **提交代码**
```bash
git add .
git commit -m "feat: 添加新功能"
git push origin feature/your-feature
```

### 添加新的 API 端点

1. 在 `rssant_api/views/` 创建视图类
2. 在 `rssant_api/urls.py` 注册路由
3. 编写相应的服务层代码(如需要)
4. 更新 API 文档

### 添加新的数据模型

1. 在 `rssant_api/models/` 定义模型
2. 创建迁移文件:`python manage.py makemigrations`
3. 应用迁移:`python manage.py migrate`

## 📚 API 文档

系统提供完整的 API 文档:

- **Swagger UI**:`http://your-domain/docs/v1/swagger/`
- **ReDoc**:`http://your-domain/docs/v1/`
- **Schema**:`http://your-domain/docs/v1/schema/`

### 主要 API 端点

#### 订阅源管理
- `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` - 设置已读状态

#### Hacker News
- `POST /api/v1/hacker_news.query` - 查询 HN 文章
- `POST /api/v1/hacker_news.get` - 获取 HN 文章详情
- `POST /api/v1/hacker_news.report` - 生成 HN 报告

#### GitHub
- `POST /api/v1/github.query` - 查询 GitHub 仓库
- `POST /api/v1/github.subscribe` - 订阅仓库

#### ArXiv
- `POST /api/v1/arxiv.query` - 查询论文
- `POST /api/v1/arxiv.report` - 生成论文报告

#### AI 娱乐
- `POST /api/v1/ai_entertainment.search` - 搜索 AI 影视资讯
- `POST /api/v1/ai_entertainment.report` - 生成 AI 娱乐报告

#### AIGC
- `POST /api/v1/aigc.report` - 生成 AIGC 报告

#### 飞书机器人
- `POST /api/v1/feishu_bot.query` - 查询机器人配置
- `POST /api/v1/feishu_bot.create` - 创建机器人配置
- `POST /api/v1/feishu_bot.push` - 手动触发推送

#### RSSHub
- `GET /api/v1/rsshub.routes` - 获取可用路由
- `POST /api/v1/rsshub.generate` - 生成 RSSHub 订阅

详细 API 文档请访问 Swagger UI。

## ❓ 常见问题

### 1. 如何配置 AI 服务?

系统支持两种 AI 服务:
- **智谱 AI**(默认):设置 `RSSANT_AI_API_KEY` 为智谱 AI 的 API Key
- **OpenRouter**:设置 `RSSANT_AI_API_BASE_URL=https://openrouter.ai/api/v1` 并配置相应的 API Key

### 2. 如何启用飞书功能?

1. 在飞书开放平台创建应用,获取 App ID 和 App Secret
2. 配置环境变量:
- `RSSANT_FEISHU_APP_ID`
- `RSSANT_FEISHU_APP_SECRET`
- `RSSANT_FEISHU_ENABLE=True`
3. 在数据库中配置飞书机器人(通过 API 或管理后台)

### 3. 订阅源同步失败怎么办?

- 检查网络连接和代理配置
- 查看 Worker 服务日志
- 检查订阅源 URL 是否可访问
- 查看 `WorkerTask` 表中的任务状态

### 4. 如何添加自定义订阅源?

- 通过前端界面添加
- 通过 API `feed.create` 添加
- 通过 OPML 导入

### 5. 如何配置 RSSHub?

- 使用公共实例:保持默认配置 `RSSANT_RSSHUB_BASE_URL=https://rsshub.app`
- 使用自部署实例:设置 `RSSANT_RSSHUB_BASE_URL` 为你的实例地址

### 6. 数据库迁移失败?

```bash
# 检查迁移状态
python manage.py showmigrations

# 手动应用迁移
python manage.py migrate --fake-initial

# 重置迁移(谨慎使用)
python manage.py migrate --fake zero
python manage.py migrate
```

## 📄 许可证

本项目遵循开源许可证。

## 🤝 贡献

欢迎提交 Issue 和 Pull Request!

## 📞 联系方式

如有问题或建议,请通过以下方式联系:
- 提交 GitHub Issue
- 发送邮件

---

**注意**:本项目在 conda 虚拟环境下开发和测试,使用 terminal 命令时请确保已激活相应的 conda 环境。