Skip to content

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

Notifications You must be signed in to change notification settings

VanGongwanxiaowan/rss-aigc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RSS-AIGC 系统

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

📋 目录

🎯 系统概述

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. 克隆项目

git clone <repository-url>
cd rrs-aigc

2. 后端环境配置

# 创建虚拟环境(推荐使用 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. 数据库初始化

# 创建数据库
createdb rssant

# 运行迁移
python manage.py migrate

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

4. 前端环境配置

cd frontend
npm install

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

5. 启动服务

启动后端 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 部署

项目提供了完整的 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:系统根 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 部署(推荐)

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

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

# 启动服务
./run.sh

2. 手动部署

后端部署:

# 使用 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/                 # 测试文件

开发流程

  1. 创建功能分支
git checkout -b feature/your-feature
  1. 运行测试
pytest
  1. 代码规范
  • Python:遵循 PEP 8
  • TypeScript:使用 ESLint 检查
  1. 提交代码
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 UIhttp://your-domain/docs/v1/swagger/
  • ReDochttp://your-domain/docs/v1/
  • Schemahttp://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. 数据库迁移失败?

# 检查迁移状态
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 环境。

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published