🏗️ 整体架构
前端层 (Frontend)
React + TypeScript
Tailwind CSS
状态管理
⬇️ HTTP/WebSocket
API 层 (Backend)
FastAPI
任务队列
认证授权
⬇️
处理层 (Workers)
脚本生成
音频合成
视频编码
⬇️
存储层 (Storage)
PostgreSQL
文件系统
Redis 缓存
⬇️
外部服务 (External)
Ollama LLM
TTS 服务
YouTube/TikTok API
📁 目录结构
目录结构
moneyprinter/
├── backend/ # 后端服务
│ ├── main.py # FastAPI 入口
│ ├── api/ # API 路由
│ │ ├── tasks.py # 任务管理 API
│ │ ├── videos.py # 视频管理 API
│ │ └── upload.py # 上传 API
│ ├── models/ # 数据模型
│ │ ├── task.py # 任务模型
│ │ └── video.py # 视频模型
│ ├── services/ # 业务逻辑
│ │ ├── generator.py # 视频生成服务
│ │ ├── script.py # 脚本生成服务
│ │ ├── audio.py # 音频处理服务
│ │ └── upload.py # 上传服务
│ ├── workers/ # 后台任务
│ │ └── video_worker.py
│ └── utils/ # 工具函数
│ ├── llm.py # LLM 调用封装
│ └── video.py # 视频处理工具
├── frontend/ # 前端界面
│ ├── src/
│ │ ├── components/ # React 组件
│ │ ├── pages/ # 页面
│ │ ├── hooks/ # 自定义 Hooks
│ │ └── utils/ # 前端工具
│ └── package.json
├── tests/ # 测试文件
├── docs/ # 文档
├── .env.example # 环境变量模板
├── docker-compose.yml # Docker 配置
└── Dockerfile # Docker 镜像
🔧 技术栈详解
后端技术
FastAPI
高性能异步 Python Web 框架,自动生成 API 文档
PostgreSQL
任务队列持久化存储,支持并发和事务
Redis
缓存和消息队列,提升性能
FFmpeg
视频编码、音频混流核心工具
前端技术
React 18
现代化 UI 组件框架
TypeScript
类型安全的 JavaScript 超集
Tailwind CSS
原子化 CSS 框架
Zustand
轻量级状态管理
🔄 数据流程
- 用户请求:前端提交视频主题和参数
- 任务创建:后端创建任务记录,存入 PostgreSQL
- 脚本生成:Worker 调用 Ollama 生成视频脚本
- 素材采集:搜索并下载相关图片/视频素材
- 音频合成:TTS 生成配音,添加背景音乐
- 视频编码:ImageMagick + FFmpeg 合成最终视频
- 任务完成:更新任务状态,用户可下载或上传
🔐 安全考虑
- API Key 保护:敏感配置存储在环境变量中
- OAuth 认证:YouTube 上传使用标准 OAuth2 流程
- Session 隔离:TikTok Session ID 不暴露给前端
- 输入验证:所有用户输入经过验证和清理
- 速率限制:防止 API 滥用