# vireoFlow **Repository Path**: grepsu/vireo-flow ## Basic Information - **Project Name**: vireoFlow - **Description**: 通过RSS Feed获取内容,并调用AI进行翻译 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-09 - **Last Updated**: 2026-07-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # vireoFlow RSS → 全文抓取 → LLM 翻译 → 本地 Markdown —— 一个自托管的 Web 管理工具。 ## 工作流程 ``` RSS 解析 → 去重入库 → 全文抓取 → LLM 翻译 → Markdown 写出 → output/<源名称>/.md ``` ## 技术栈 | 层 | 技术 | |---|---| | 后端框架 | FastAPI + SQLAlchemy + APScheduler | | 前端框架 | Vue 3 + Radix Vue + Tailwind CSS v4 + vue-i18n | | 数据库 | SQLite(可切换 PostgreSQL) | | RSS 解析 | feedparser | | 正文提取 | trafilatura | | LLM 翻译 | DeepSeek(默认),支持 OpenAI 兼容接口 | | 部署 | Docker 多阶段构建 + docker-compose | ## 快速开始 ### 环境要求 - Python >= 3.12 - Node.js >= 22 - pip / npm ### 安装运行 ```bash # 后端 cd backend pip install -e .. python -c "from backend.app import create_app; import uvicorn; uvicorn.run(create_app(), host='0.0.0.0', port=5000)" # 前端 cd frontend npm install npm run dev ``` 或使用管理脚本: ```bash ./manage.sh start # 启动前后端 ./manage.sh stop # 停止所有服务 ./manage.sh status # 查看运行状态 ./manage.sh test # 运行后端测试 ``` ### Docker ```bash docker-compose up -d ``` 访问 `http://localhost:5000`。 ## 功能特性 - **订阅源管理** — 增删改查 RSS/Atom 订阅源,可配置轮询间隔 - **自动翻译** — 按源开启/关闭自动翻译,调度器定时执行完整管线 - **全文抓取** — 使用 trafilatura 从网页提取干净正文 - **LLM 翻译** — 翻译为中文 Markdown,导出前可编辑修正 - **Markdown 导出** — YAML frontmatter + Markdown,按源和日期组织目录 - **批量操作** — 支持一次最多 100 篇文章的批量翻译/导出 - **在线编辑** — 内置 Markdown 编辑器,实时预览(marked.js),保存回数据库 - **多提供商** — 支持 DeepSeek、OpenAI 及任何 OpenAI 兼容 API ## 项目结构 ``` vireoFlow/ ├── backend/ │ ├── app.py # FastAPI 工厂函数 │ ├── config.py # 环境变量配置 │ ├── models.py # 数据模型:Feed, Article, LLMProvider, Setting │ ├── database.py # SQLAlchemy 引擎 + 会话 │ ├── scheduler.py # APScheduler 后台定时任务 │ ├── routes/ │ │ ├── feeds.py # /api/feeds 订阅源 CRUD │ │ ├── articles.py # /api/articles 文章操作 + 批处理 │ │ └── settings.py # /api/providers, /api/settings, /api/health │ ├── services/ │ │ ├── feed_parser.py # RSS 解析 + 去重 │ │ ├── content_fetcher.py # 网页正文提取 │ │ ├── translator.py # LLM 翻译编排 │ │ ├── markdown_writer.py # YAML frontmatter + 文件写出 │ │ └── markdown_processor.py # LLM 输出清理(清除代码围栏) │ ├── llm/ # LLM 提供商抽象层 │ └── tests/ # pytest 测试套件(52 个测试) ├── frontend/ │ ├── src/ │ │ ├── views/ # FeedsView, ArticlesView, SettingsView │ │ ├── components/ │ │ │ ├── ui/ # 可复用组件(Dialog, Button, Select …) │ │ │ ├── ArticleDetail.vue # Markdown 编辑器(编辑/预览/展示) │ │ │ └── … # FeedForm, SettingsPanel, SkeletonTab … │ │ └── i18n/locales/ # 中文 / 英文 │ └── vite.config.js ├── Dockerfile # 多阶段:Node 22 → Python 3.12-slim ├── docker-compose.yml ├── manage.sh # start/stop/restart/status/test └── SPEC.md # 完整技术规格说明 ``` ## API 接口 | 方法 | 端点 | 说明 | |--------|----------|-------------| | GET/POST | `/api/feeds` | 列表 / 创建订阅源 | | GET/PUT/DELETE | `/api/feeds/{id}` | 查看 / 更新 / 删除订阅源 | | POST | `/api/feeds/{id}/fetch` | 手动拉取订阅源 | | GET | `/api/articles` | 文章列表(筛选、搜索、分页) | | GET | `/api/articles/{id}` | 文章详情 | | POST | `/api/articles/{id}/fetch` | 抓取全文 | | POST | `/api/articles/{id}/translate` | 触发翻译 | | PUT | `/api/articles/{id}` | 编辑译文 | | POST | `/api/articles/{id}/export` | 导出为 Markdown 文件 | | POST | `/api/articles/batch` | 批量翻译/导出 | | GET/POST | `/api/providers` | 列表 / 创建 LLM 提供商 | | GET/PUT/DELETE | `/api/providers/{id}` | 查看 / 更新 / 删除提供商 | | GET/PUT | `/api/settings` | 全局设置 | | GET | `/api/health` | 健康检查 | | GET | `/api/stats` | 文章统计 | ## 环境变量 | 变量 | 默认值 | 说明 | |----------|---------|-------------| | `VIREOFLOW_DATABASE_URL` | `sqlite:///data/vireoflow.db` | 数据库连接 | | `VIREOFLOW_OUTPUT_DIR` | `output` | Markdown 导出目录 | | `VIREOFLOW_SECRET_KEY` | — | 应用密钥 | ## 许可证 MIT