粘贴视频链接 → 自动提取字幕/文案 → AI 一键改写生成全新文案
FastAPI React PostgreSQL License
| 功能 | 说明 |
|---|---|
| 🔗 全平台视频采集 | 支持抖音、B站、YouTube、TikTok、小红书、快手等主流平台 |
| 🗣️ 智能文案提取 | 3 层降级策略:字幕文件 → 在线字幕 → 视频描述 |
| ✍️ 手动输入 | 可跳过提取步骤,直接粘贴/输入任意文案进入改写 |
| 🤖 AI 深度改写 | 仿写改写 / 风格转换 / 多平台适配,3 种生成模式 |
| ⚡ 流式实时输出 | 基于 SSE 的大模型流式响应,打字机效果实时展示 |
| 🖥️ 全屏沉浸体验 | 一键全屏 + Flex 自适应布局,编辑器占满视口 |
| 📋 历史记录管理 | 任务 & 生成记录的查看、搜索和删除 |
┌──────────────────────────────────────────────────────┐
│ 用户浏览器 │
│ Vite + React 19 + Ant Design 5 │
└──────────────┬───────────────────────────────────────┘
│ HTTP / SSE (Vite Proxy → :8000)
┌──────────────▼───────────────────────────────────────┐
│ FastAPI 后端 │
│ JWT 认证 │ REST API │ SSE 流式 │ 全局异常拦截 │
├──────────────┬───────────────┬───────────────────────┤
│ PostgreSQL │ Redis │ Celery Worker │
│ 数据持久化 │ 任务队列/缓存 │ 视频下载 + ASR 转写 │
└──────────────┴───────────────┴───────────────────────┘
│
┌─────────────┼─────────────┐
▼ ▼ ▼
yt-dlp FFmpeg 豆包大模型
视频下载 音频提取 AI 文案改写
AiContent/
├── frontend/ # 前端 (Vite + React + TS)
│ └── src/
│ ├── layout/ # MainLayout 侧边栏 + 全屏切换
│ ├── pages/ # Dashboard / Editor / History / Settings
│ ├── services/ # API 调用层 (extract + AI 流式改写)
│ └── App.tsx # 路由 + Ant Design 主题配置
│
├── backend/ # 后端 (FastAPI + Python)
│ └── app/
│ ├── core/ # 配置 / JWT 安全 / 数据库 / 统一响应
│ ├── models/ # SQLAlchemy ORM (User / VideoTask / AIGeneration)
│ ├── schemas/ # Pydantic 请求/响应校验
│ ├── routers/ # Auth / Tasks / AI 路由
│ ├── services/ # ai_writer / video / asr 业务逻辑
│ ├── workers/ # Celery 异步任务 (规划中)
│ └── main.py # FastAPI 入口
│
├── docs/ # 架构设计文档
├── docker-compose.yml # 容器编排
├── .gitignore
└── README.md
- Python ≥ 3.10 + Node.js ≥ 18
- yt-dlp + FFmpeg(视频提取依赖)
- 可选:PostgreSQL + Redis(完整功能)
# ---- 后端 ---- cd backend python -m venv venv && source venv/bin/activate pip install -r requirements.txt cp .env.example .env # 编辑填入 API Key uvicorn app.main:app --reload # 访问 http://localhost:8000/docs # ---- 前端 ---- cd frontend npm install npm run dev # 访问 http://localhost:5173
cp backend/.env.example backend/.env # 编辑填入 API Key docker-compose up -d # 一键启动全部服务
所有接口统一前缀 /api/v1,返回 { code, message, data } 标准格式。
| 模块 | Method | Path | 说明 | 认证 |
|---|---|---|---|---|
| 认证 | POST | /auth/register |
注册 | ❌ |
| POST | /auth/login |
登录,返回 JWT Token | ❌ | |
| GET | /auth/me |
获取当前用户信息 | ✅ | |
| 任务 | POST | /tasks |
提交视频链接,创建提取任务 | ✅ |
| GET | /tasks/{id} |
查询任务进度与结果 | ✅ | |
| GET | /tasks |
历史任务列表(分页) | ✅ | |
| AI | POST | /ai/generate |
触发文案改写(SSE 流式) | ✅ |
| GET | /ai/history |
生成历史(分页) | ✅ | |
| 快速测试 | POST | /ai/extract |
视频文案提取(免认证) | ❌ |
| POST | /ai/quick-test |
AI 改写快速测试(免认证,SSE) | ❌ | |
| 🩺 | GET | /health |
健康检查 | ❌ |
完整 API 文档启动后访问
http://localhost:8000/docs(Swagger UI)
| 变量 | 必填 | 说明 |
|---|---|---|
DATABASE_URL |
❌* | PostgreSQL 连接串(快速测试接口不需要) |
REDIS_URL |
❌* | Redis 连接串(快速测试接口不需要) |
JWT_SECRET_KEY |
❌* | JWT 签名密钥 |
ARK_API_KEY |
✅ | 豆包 / 火山方舟 API Key |
ARK_MODEL_ID |
✅ | 推理接入点 ID(格式:ep-xxxxxxxxxxxx) |
VOLC_ACCESS_KEY |
❌ | 火山引擎 ASR Access Key |
VOLC_SECRET_KEY |
❌ | 火山引擎 ASR Secret Key |
CORS_ORIGINS |
❌ | 允许的前端域名列表 |
* 标注项在使用
/ai/extract和/ai/quick-test快速测试时不需要
cd backend alembic init alembic alembic revision --autogenerate -m "init tables" alembic upgrade head
cd backend
celery -A app.workers.celery_app worker --loglevel=info
celery -A app.workers.celery_app beat --loglevel=infocd backend && pytest tests/ -v cd frontend && npm run lint