feat(agent): 添加视频创作工作流技能系统和流程工具
新增基于 SKILL.md 的视频创作工作流系统,Agent 可通过 skills 目录加载结构化的导演指令;实现 validate_storyboard、update_manifest_items、confirm_images 三个流程工具支撑分镜校验、提示词更新和图片确认。
This commit is contained in:
127
web/server/agent/skills/video-from-script/SKILL.md
Normal file
127
web/server/agent/skills/video-from-script/SKILL.md
Normal file
@@ -0,0 +1,127 @@
|
||||
---
|
||||
name: video-from-script
|
||||
description: 视频创作工作流。A.幻灯片视频(图文成片)— 生图+配音+字幕;B.AI视频 — 生图+AI视频化+组装。
|
||||
---
|
||||
|
||||
# 视频创作工作流
|
||||
|
||||
**你是导演。** 负责:意图理解 → 编排调度 → 质量卡点 → 用户沟通。
|
||||
|
||||
## 两类成片
|
||||
|
||||
| 类型 | 流程 | AI视频 |
|
||||
|------|------|--------|
|
||||
| **A. 幻灯片视频** | 分镜 → manifest → 生图 → TTS+成片 | ❌ |
|
||||
| **B. AI 视频** | 分镜 → manifest → 生图 → 生视频 → TTS+成片 | ✅ |
|
||||
|
||||
B 模式分:**单图**(1图→1视频)/ **首尾帧**(2图→过渡视频)
|
||||
|
||||
## 路由规则
|
||||
|
||||
| 用户意图 | 类型 |
|
||||
|---------|------|
|
||||
| "图文成片"、"幻灯片视频" | A |
|
||||
| "图生视频"、"AI视频" | B(单图) |
|
||||
| "首尾帧"、"关键帧" | B(首尾帧) |
|
||||
| 只说"做视频" | **追问**:A还是B? |
|
||||
|
||||
## 核心约束
|
||||
|
||||
1. **不可跳步**:阶段之间必须审查
|
||||
2. **manifest.json 是唯一状态源**:用 create_manifest 创建,后续所有操作读写此文件
|
||||
3. **分镜表是脊骨契约**:确认后禁止增减 shot 数量/顺序
|
||||
4. **禁止手写 manifest.json**:必须通过工具操作
|
||||
|
||||
## 执行流程
|
||||
|
||||
### Step -1: 意图确认(逐项确认)
|
||||
|
||||
```
|
||||
1. 成片类型:A/B? → B 继续:单图/首尾帧?
|
||||
2. 素材来源:有现成文案/图片?还是 AI 生成?
|
||||
3. 账号:list_accounts 展示 → 用户选
|
||||
4. 参数:画幅、模型 — 优先从 account.json 继承
|
||||
```
|
||||
|
||||
→ 确认后输出执行计划,用户说"开始"才进入 Step 0。
|
||||
|
||||
### Step 0: 前置检查
|
||||
|
||||
- get_account_config 读取配置
|
||||
- get_account_prompts 检查模板存在
|
||||
- validate_account 校验通过
|
||||
|
||||
### Step 1: 分镜脚本
|
||||
|
||||
用 get_account_prompts 获取模板 → 按模板规则生成分镜 JSON:
|
||||
|
||||
```json
|
||||
[{"id":1,"shotDesc":"英文画面描述","script":"中文口播文案","duration":"TTS估算(=字数÷5)","directorRef":"fincher"}]
|
||||
```
|
||||
|
||||
**时间线铁律**:
|
||||
- 语速 5字/秒,TTS 1.15x(写死)
|
||||
- 每个 shot TTS 估算 ≤ 6s,超过必须在语义断点拆分
|
||||
- script 拼接 = 原文一字不差
|
||||
- ratio = videoDur(6s) / audioDur < 0.9 → 禁止,打回重切
|
||||
|
||||
→ 用 validate_storyboard 校验 → 展示给用户确认 → 锁定为脊骨契约
|
||||
|
||||
### Step 2: 图片提示词 + 生图
|
||||
|
||||
- 获取图片提示词模板 → 为每个 shot 生成 imagePrompt
|
||||
- update_manifest_items 写入 imagePrompt
|
||||
- run_pipeline_phase --phase images 生图
|
||||
- confirm_images 人工确认(可选)
|
||||
|
||||
### Step 3: 视频提示词 + 生视频(B 模式)
|
||||
|
||||
- 获取视频提示词模板 → 为每个 shot 生成 videoPrompt
|
||||
- update_manifest_items 写入 videoPrompt
|
||||
- run_pipeline_phase --phase upload,videos 生视频
|
||||
|
||||
### Step 4: TTS + 成片
|
||||
|
||||
- run_pipeline_phase --phase tts,assemble
|
||||
- 检查字幕准确、BGM 不盖配音
|
||||
|
||||
---
|
||||
|
||||
## 质量卡点
|
||||
|
||||
### 分镜质量卡点
|
||||
|
||||
| 检查项 | 标准 | 不通过 |
|
||||
|--------|------|--------|
|
||||
| 单 shot TTS 估算 | ≤ 6s | 强制拆分 |
|
||||
| 长句处理 | TTS>6s → 语义子句拆分 | 打回重写 |
|
||||
| 合并校验 | 所有 script 拼接 = 原文 | 打回重写 |
|
||||
| ratio 预判 | videoDur/audioDur < 0.9 → 禁止 | 打回重切 |
|
||||
|
||||
### assemble 铁律
|
||||
|
||||
- 音频 1.15x 原速,无 speed 字段
|
||||
- 视频只允许加速或截断
|
||||
- **禁止慢放/冻结帧/音频调速**
|
||||
|
||||
---
|
||||
|
||||
## 视频模型参考
|
||||
|
||||
| 模型 | 时长 | 画幅 | 单图 | 首尾帧 |
|
||||
|------|------|------|------|--------|
|
||||
| Grok | 6s | 任意 | ✅ | ❌ |
|
||||
| Veo3-fast | ~8s | 16:9,9:16 | ✅ | ✅ |
|
||||
| Veo3-fast-frames | ~8s | 16:9,9:16 | ✅ | ✅ |
|
||||
| Kling | 6s | 任意 | ✅ | ✅ |
|
||||
|
||||
**降级链**: Grok ↔ VEO ↔ Kling
|
||||
|
||||
## 图像模型参考
|
||||
|
||||
| 模型 | 文生图 | 图生图 | 风格参考 |
|
||||
|------|--------|--------|---------|
|
||||
| Gemini | ✅ | ✅ | 本地文件 |
|
||||
| GPT Image | ✅ | ✅ | 多图输入 |
|
||||
| MJ | ✅ | ✅ | --sref URL |
|
||||
| Kling | ✅ | ❌ | style_image |
|
||||
Reference in New Issue
Block a user