爆款结构迁移引擎 — AI 创作平台
从样例拆解 → 素材补全 → 视频重组,一键生成爆款短视频
1. 项目概述
爆款结构迁移引擎是一个完整的全栈 AI 视频创作平台。用户上传一个爆款样例视频,系统通过大语言模型(LLM)自动完成以下全链路闭环:
- 样例视频解析:提取视频的 fps、时长、分辨率、关键帧、镜头切分点等基础信息
- 爆款结构分析:借助 Doubao-Seed-2.0-lite 对视频进行三重结构拆解(脚本结构 + 节奏结构 + 包装结构),输出标准化的爆款结构模板
- 素材缺口识别:针对新的目标主题,基于爆款结构模板和用户已有素材清单,智能识别素材缺口
- SVT-JSON 时间线生成:生成标准视频时间线(SVT-JSON),支持四版本差异化输出(高点击 / 高转化 / 高节奏 / 高质感)
- 人工可调优化 & 导出:节奏滑块、字幕密度、自然语言指令;导出 SVT-JSON 文件;可视化时间线预览
2. 核心特性
P0 — 基础核心能力
- 样例视频输入与基础解析(关键帧提取、镜头检测、信息统计)
- 爆款三重结构拆解(脚本结构 + 节奏结构 + 包装结构)
- 基于 LLM 的爆款结构迁移生成
- 火山方舟 + Doubao-Seed-2.0-lite LLM 服务对接
- YAML 持久化配置(
config.yaml),无需每次设置环境变量 - 全链路兜底机制:LLM 调用失败或 JSON 解析异常时自动降级至预设模板,保证核心流程永不中断
P0 — 素材缺口处理
- 智能识别结构槽位缺口
- 多策略缺口补全(文案生成、卖点卡片、动画模板)
- LLM 返回的缺口数据自动归一化为
identified_gaps标准结构
P0 — 结果可验证
- 迁移过程可视化看板
- 样例结构 → 新结构对比展示
- LLM 原始 JSON 以 Markdown 代码块形式展示,可审计
- SVT-JSON 标准视频时间线格式输出
P1 — 进阶能力
- 画面包装建议系统
- 四版本生成:高点击版 / 高转化版 / 高节奏版 / 高质感版
- 人工可调能力(节奏滑块、字幕密度、自然语言指令)
- SVT-JSON 下载导出 & 时间线可视化预览
JSON 修复引擎
- 四策略累积式修复管道:尾随逗号修复 → 未引用键名修复 → 嵌套截断修复 → 截断修复
- 能处理 LLM 同时出现的多种 JSON 格式问题
3. 项目目录结构
AIquanzhan/ ├── main.py # 服务启动入口 ├── requirements.txt # Python 依赖清单 ├── config.yaml # YAML 持久化配置文件 ├── backend/ # 后端核心代码 │ ├── config.py # 全局配置管理(YAML + 环境变量混合加载) │ ├── llm_client.py # LLM 服务对接(Doubao)+ JSON 修复引擎 + 归一化引擎 │ ├── video_processor.py # 视频解析引擎(OpenCV) │ ├── gap_completion.py # 缺口识别补全引擎 │ └── main.py # FastAPI 主服务,定义全部 REST API ├── frontend/ │ └── index.html # 完整 Web 前端界面(HTML + TailwindCSS + Marked.js) ├── uploads/ # 用户上传文件目录(自动创建) ├── outputs/ # 输出结果目录(自动创建) └── temp/ # 临时文件目录(自动创建)
4. 技术栈
| 层次 | 技术选型 | 说明 |
|---|---|---|
| 后端框架 | FastAPI 0.109 + Uvicorn 0.27 | 高性能异步 Web 框架 |
| AI 引擎 | (VolcEngine Ark) + Doubao-Seed-2.0-lite | OpenAI 兼容 API,通过 EP 值接入 |
| 视频处理 | OpenCV 4.8 + NumPy 1.26 | 关键帧提取、镜头检测 |
| 前端 | 原生 HTML5 + TailwindCSS + FontAwesome 4.7 | 响应式单页应用 |
| Markdown 渲染 | Marked.js | LLM 原始输出 JSON 的代码块渲染 |
| 配置管理 | PyYAML 6.0 | YAML 持久化配置 + 环境变量覆盖 |
| HTTP 客户端 | httpx 0.26 | 异步 API 调用 |
| 数据验证 | Pydantic 2.5 | 请求 / 响应模型校验 |
| 测试 | pytest | 单元 / 集成 / 系统测试 |
5. 快速开始
5.1 环境要求
- Python 3.10+
- pip
5.2 克隆 & 进入项目
cd AIquanzhan
5.3 配置 LLM 服务
编辑项目根目录下的 config.yaml:
说明:
model_ep字段取上「模型推理」->「Endpoint ID (EP)」的值。本项目使用volcengine作为 provider,model 直接传 EP 值。此配置只需设置一次,后续启动永久生效。
也可通过环境变量覆盖(优先级高于 YAML):
set VOLCENGINE_API_KEY=your-key set DOUBAO_SEED_2_LITE_MODEL_EP=your-ep
5.4 安装依赖
pip install -r requirements.txt
5.5 启动后端服务
python main.py
后端服务运行在 http://localhost:8000。
也可直接使用 uvicorn:
python -m uvicorn backend.main:app --host 0.0.0.0 --port 8000
5.6 打开前端界面
在浏览器中直接打开 frontend/index.html。
前端通过
fetch调用http://localhost:8000/api/*接口,确保后端已启动。
6. API 接口一览
| 方法 | 路径 | 说明 | 编码方式 |
|---|---|---|---|
| GET | / | 服务健康检查 | — |
| GET | /api/config-status | 查看 LLM 配置状态 | — |
| POST | /api/upload-sample | 上传样例视频 | multipart/form-data |
| POST | /api/analyze-structure | 爆款结构分析 | application/x-www-form-urlencoded |
| POST | /api/identify-gaps | 素材缺口识别 | application/x-www-form-urlencoded |
| POST | /api/complete-gaps | 素材缺口补全 | application/x-www-form-urlencoded |
| POST | /api/generate-svt | 生成 SVT-JSON 时间线 | application/x-www-form-urlencoded |
| POST | /api/generate-multiple-versions | 多版本生成 | application/x-www-form-urlencoded |
| POST | /api/adjust-manually | 人工调整并重新生成 | application/x-www-form-urlencoded |
7. 前端操作流程
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ ① 上传样例 │ → │ ② 结构分析 │ → │ ③ 缺口识别 │ → │ ④ 生成成片 │ │ 拖拽/选择 │ │ 三重结构 │ │ LLM 智能 │ │ SVT-JSON │ │ MP4/MOV 文件│ │ 拆解 + 模板 │ │ 素材缺口 │ │ 导出 + 预览 │ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
Step 1:上传样例视频
拖拽或点击上传一个爆款样例视频,系统自动提取基础信息(fps、时长、分辨率、关键帧、镜头切分点)。
Step 2:爆款结构分析
点击「提取爆款结构模板」按钮,LLM 对视频进行三重结构拆解:
- Hook(开头吸引):时长、内容特征
- Body(中段卖点):分段内容与时长
- CTA(结尾引导):引导文案与时长
同时展示 LLM 返回的原始 JSON(Markdown 代码块渲染)。
Step 3:素材缺口识别
- 输入目标主题(如「全新智能手表 99 元限时特惠」)
- 输入已有素材清单(自由文本描述,如「我有产品白底图3张、卖点文案、一段开箱视频」)
- 点击「识别素材缺口」,LLM 分析并返回结构化的缺口清单(缺口分类、优先级、补全策略)
同时展示 LLM 原始缺口分析数据。
Step 4:多版本生成 & 导出
- 选择版本类型(高点击 / 高转化 / 高节奏 / 高质感)生成 SVT-JSON 时间线
- 导出 SVT-JSON:下载为标准 JSON 文件
- 预览成片:弹窗展示视频 / 字幕 / 包装三轨时间线可视化
- 人工调整:拖动节奏滑块 / 字幕密度,输入自然语言指令微调
8. 数据格式:SVT-JSON (Standard Video Timeline JSON)
本项目定义的视频时间线标准格式,用于描述视频的时间编排:
{ "meta": { "duration": 15.0, "fps": 30, "version_type": "high_click" }, "tracks": { "video": [ {"at": 0.0, "duration": 3.0, "material": "产品大图", "effect": "缩放进入"} ], "subtitle": [ {"at": 0.0, "text": "划时代新品首发", "style": "viral_red_bounce"} ], "packaging": [ {"at": 3.0, "type": "sales_card", "name": "核心卖点"} ] } }
| 字段 | 类型 | 说明 |
|---|---|---|
meta.duration | float | 视频总时长(秒) |
meta.fps | int | 帧率 |
meta.version_type | string | 版本类型:standard / high_click / high_conversion / high_rhythm / high_quality |
tracks.video[].at | float | 视频片段起始时间(秒) |
tracks.video[].duration | float | 视频片段持续时长(秒) |
tracks.video[].material | string | 素材描述 |
tracks.video[].effect | string | 转场 / 动效 |
tracks.subtitle[].at | float | 字幕出现时间(秒) |
tracks.subtitle[].text | string | 字幕文字内容 |
tracks.subtitle[].style | string | 字幕样式标识 |
tracks.packaging[].at | float | 包装元素出现时间(秒) |
tracks.packaging[].type | string | 效果类型(如 sales_card) |
tracks.packaging[].name | string | 效果名称 |
9. 配置系统说明
YAML 配置文件(config.yaml)
项目采用 YAML 持久化配置 + 环境变量覆盖 的混合配置方案:
优先级:环境变量 > config.yaml > 默认值
| 配置项 | YAML 路径 | 环境变量 | 默认值 | 说明 |
|---|---|---|---|---|
| API Key | volcengine.api_key | VOLCENGINE_API_KEY | 空 | API Key |
| Base URL | volcengine.base_url | VOLCENGINE_BASE_URL | API 基础地址 | |
| Model EP | doubao_seed_2_lite.model_ep | DOUBAO_SEED_2_LITE_MODEL_EP | 空 | Doubao-Seed-2.0-lite 的 Endpoint ID |
| LLM 超时 | llm_timeout | LLM_TIMEOUT | 120 | LLM API 调用超时(秒) |
| Debug 模式 | debug | DEBUG | true | 调试开关 |
| Secret Key | secret_key | SECRET_KEY | — | 应用密钥 |
10. 详细功能文档
每个功能模块的详细说明文档请参见 docs/ 目录

317

被折叠的 条评论
为什么被折叠?



