AI 视频生成 Workflow。
根据项目目录下的 script.json 自动生成画面、配音、字幕,并合成最终视频。
每个视频对应一个独立的项目目录,方便同时管理多个视频。
本项目使用 uv 管理依赖。
# 创建虚拟环境并安装依赖
uv sync
# 进入虚拟环境
source .venv/bin/activate # Windows: .venv\Scripts\activate同时需要安装 FFmpeg 并确保在 PATH 中。
cp .env.example .env编辑 .env,填入你的火山方舟 API Key 和图片单价:
ARK_API_KEY=your_api_key_here
SEEDREAM_PRICE_PER_IMAGE=0.002TTS 使用 Edge TTS,完全免费,无需额外配置。
每个视频是一个独立的项目目录,结构如下:
projects/example-proj/
├── scripts/
│ └── script.json # 视频脚本
├── assets/
│ ├── images/ # 生成的画面
│ ├── audio/ # 生成的配音
│ ├── music/ # 背景音乐(可选)
│ └── subtitles/ # 生成的字幕
├── output/ # 最终视频
└── logs/ # 运行日志
示例项目已放在 projects/example-proj/,可直接使用或复制一份改名字:
cp -r projects/example-proj projects/my_video每个 scene 包含:
subtitle: 旁白/字幕文本image_prompt: 画面内容提示词use_reference_image: 是否参考上一张图保持连续性voice: TTS 音色配置
全局风格词写在 metadata.style_prompt 中,会自动注入到每个画面的生成提示词里。
uv run python main.py projects/example-proj运行结束后会生成成本报告:projects/example-proj/logs/cost.json。
提示:连续几句描述同一画面时,可在 scene 中设置
"hold_image": true复用上一张图,节省成本并避免画面切换过快。详见AGENTS.md。
把背景音乐放到 projects/example-proj/assets/music/bgm.mp3,会自动使用。
或手动指定:
uv run python main.py projects/example-proj --bgm projects/example-proj/assets/music/background.mp3uv run python main.py projects/example-proj --step images
uv run python main.py projects/example-proj --step audio
uv run python main.py projects/example-proj --step subtitles
uv run python main.py projects/example-proj --step videouv run inkflow projects/example-proj.
├── main.py # CLI 入口
├── src/ # 核心代码
│ ├── config.py # 项目目录与全局配置
│ ├── models.py # script.json 数据模型
│ ├── script_loader.py # 脚本加载/保存
│ ├── image_generator.py # Seedream 图片生成
│ ├── tts_generator.py # Edge TTS 语音生成
│ ├── subtitle_generator.py # SRT 字幕生成
│ ├── video_assembler.py # FFmpeg 视频合成
│ ├── pipeline.py # 流程编排
│ └── cost_tracker.py # API 成本追踪
├── projects/ # 视频项目目录
│ └── example-proj/
│ ├── scripts/script.json
│ ├── assets/
│ ├── output/
│ └── logs/
├── pyproject.toml
├── .env.example
└── plan.md # 完整 workflow 设计文档
每次运行会自动记录 API 调用成本,输出到 projects/<name>/logs/cost.json。
Seedream 图片生成按分辨率计费:
| 分辨率 | 单张价格 |
|---|---|
| ≤ 236 万像素 | 0.30 元 |
| > 236 万像素 | 0.60 元 |
例如 1080x1920(约 207 万像素)为 0.30 元/张。
Edge TTS 免费,成本记为 0。
若 Seedream API 响应中包含 usage.cost 或 usage.total_cost,会优先使用响应中的实际费用;否则按上述分辨率档位估算。
- 图片生成调用 Seedream API,需要确保
SEEDREAM_MODEL和SEEDREAM_BASE_URL与你的火山方舟账号一致。 src/image_generator.py默认按 OpenAI-compatible 格式解析响应,如 Seedream 实际返回格式不同,请调整_call_api方法。- 参考图当前按 scene 顺序串行生成;如要并行化复杂依赖,可扩展
generate中的依赖图逻辑。 - 新增视频项目时,复制
projects/example-proj/目录并重命名即可,所有中间产物相互隔离。