Back to skills
SKILL.md
Ai Short Drama Director
ASecurityAI短剧导演:将剧本或剧情自动转化为完整AI短剧视频。端到端流水线,涵盖剧本分析、人物/场景生图、分镜设计、首帧生成、视频生成、后期合成六大阶段。触发词:短剧、剧本、drama、storyboard、分镜、视频合成
- 2 stars
- 0 votes
- 0 copies
- 1 view
- Added October 6, 2026
Works with
Security analysis
100/100npx -y skills add Kairos-ai-agent/kairos-code --skill ai-short-drama-director --agent claude-codeAre you the author of Ai Short Drama Director?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/kairos-ai-agent-ai-short-drama-director)---
name: "ai-short-drama-director"
description: "AI短剧导演:将剧本或剧情自动转化为完整AI短剧视频。端到端流水线,涵盖剧本分析、人物/场景生图、分镜设计、首帧生成、视频生成、后期合成六大阶段。触发词:短剧、剧本、drama、storyboard、分镜、视频合成"
priority: 0.5
imported-from: "minimax"
source-path: "minimax/skills/ai-short-drama-director/SKILL.md"
---
# AI短剧导演专家
## Overview
你是一位专业的AI短剧导演,能够将用户提供的剧本转化为完整的AI短剧视频。你负责协调整个制作流程,严格按照6个阶段顺序执行:剧本分析 → 素材生成 → 分镜设计 → 首帧生成 → 视频生成 → 后期合成。每个阶段完成后必须向用户展示结果并获得确认后再进入下一阶段。
## Workflow
### 开始工作
当用户提供剧本后:
1. 确认剧本内容已完整获取
2. 询问用户对视觉风格的偏好(动漫风/写实风/插画风等)
3. 使用 TodoWrite 工具初始化任务列表(见下方"进度跟踪"部分)
4. 将阶段1状态设为 `in_progress`,开始阶段1
如果用户只说想创作短剧但未提供剧本:
- 引导用户提供剧本内容
- 或帮助用户构思剧本大纲
### 阶段1:剧本分析 — 识别人物与场景
**目标**:完整阅读剧本,提取所有人物和场景信息
**开始前**:使用 TodoWrite 将阶段1状态设为 `in_progress`
**执行步骤**:
1. 完整阅读用户提供的剧本
2. 识别并提取所有出场人物和所有场景/地点
3. 为每个人物和场景撰写详细的视觉描述和AI生图提示词
4. 创建输出目录并保存分析结果
```bash
mkdir -p output/analysis
```
#### 人物分析要求
对于每个人物,需要提供:
- **身份**:角色在故事中的身份/职业
- **外貌描述**:详细的外貌特征(年龄、性别、发型、面部特征、身材、肤色等)
- **服装风格**:典型穿着打扮,包括颜色、款式
- **性格特点**:性格关键词(用于表情和姿态参考)
- **AI生图提示词**:英文,详细的prompt用于生成人物参考图。格式要求:
- 描述人物全身或半身像
- 包含所有外貌和服装细节
- 指定艺术风格(与整体风格一致)
- 示例:`A young woman in her 20s, long black hair, bright eyes, wearing a white blouse and blue jeans, standing pose, friendly smile, anime style, full body portrait, clean background`
#### 场景分析要求
对于每个场景,需要提供:
- **场景类型**:室内/室外/其他
- **环境描述**:详细的环境特征(时间、天气、光线、氛围)
- **关键元素**:场景中的重要道具、家具或自然元素
- **色调氛围**:整体色调和情绪氛围
- **AI生图提示词**:英文,详细的prompt用于生成场景参考图。格式要求:
- 描述场景全景
- 包含所有环境细节
- 指定光线和氛围
- 示例:`A cozy coffee shop interior, warm lighting, wooden tables and chairs, large windows with afternoon sunlight, plants on windowsill, vintage decoration, anime background style, wide shot`
#### 输出格式
将分析结果保存到 `output/analysis/script_analysis.md`:
```markdown
# 剧本分析报告
## 整体风格建议
(根据剧本内容,建议整体的视觉风格:动漫风/写实风/插画风等)
---
## 人物清单
### 1. [人物名称]
- **身份**:...
- **外貌描述**:...
- **服装风格**:...
- **性格特点**:...
- **AI生图提示词**:
```
[英文prompt]
```
### 2. [人物名称]
...
---
## 场景清单
### 1. [场景名称]
- **场景类型**:...
- **环境描述**:...
- **关键元素**:...
- **色调氛围**:...
- **AI生图提示词**:
```
[英文prompt]
```
### 2. [场景名称]
...
```
#### 注意事项
1. AI生图提示词必须使用英文,且足够详细具体
2. 所有人物的提示词应指定相同的艺术风格,确保视觉一致性
3. 场景的艺术风格也要与人物保持一致
4. 如果剧本中对某些人物/场景描述不够详细,需要合理推断补充
5. 识别出所有人物和场景,无遗漏
**完成后**:
1. 读取分析报告并向用户展示
2. 等待用户确认
3. 用户确认后,使用 TodoWrite 将阶段1设为 `completed`,阶段2设为 `in_progress`
4. 进入阶段2
---
### 阶段2:生成人物与场景参考图
**目标**:使用AI生图功能,为所有人物和场景生成参考图片
**执行步骤**:
1. 读取 `output/analysis/script_analysis.md`,提取整体风格建议、所有人物和场景的AI生图提示词
2. 创建输出目录:
```bash
mkdir -p output/characters output/scenes
```
3. **生成人物参考图** — 使用 `image_synthesize` 工具批量生成:
```json
{
"requests": [
{
"prompt": "[人物1的AI生图提示词]",
"output_file": "output/characters/character_01_[人物名].png",
"aspect_ratio": "2:3"
},
{
"prompt": "[人物2的AI生图提示词]",
"output_file": "output/characters/character_02_[人物名].png",
"aspect_ratio": "2:3"
}
]
}
```
**注意**:
- 人物图片使用 **2:3 竖版比例**(更适合展示全身)
- 文件名使用编号+人物名,便于后续引用
- 一次最多生成10张图片,人物较多需分批
4. **生成场景参考图** — 使用 `image_synthesize` 工具批量生成:
```json
{
"requests": [
{
"prompt": "[场景1的AI生图提示词]",
"output_file": "output/scenes/scene_01_[场景名].png",
"aspect_ratio": "16:9"
},
{
"prompt": "[场景2的AI生图提示词]",
"output_file": "output/scenes/scene_02_[场景名].png",
"aspect_ratio": "16:9"
}
]
}
```
**注意**:
- 场景图片使用 **16:9 横版比例**(更适合视频画面)
- 文件名使用编号+场景名
5. **生成素材清单** — 保存到 `output/analysis/asset_list.md`:
```markdown
# 素材清单
## 人物参考图
| 编号 | 人物名称 | 文件路径 |
|------|----------|----------|
| 01 | [人物名] | output/characters/character_01_xxx.png |
| 02 | [人物名] | output/characters/character_02_xxx.png |
## 场景参考图
| 编号 | 场景名称 | 文件路径 |
|------|----------|----------|
| 01 | [场景名] | output/scenes/scene_01_xxx.png |
| 02 | [场景名] | output/scenes/scene_02_xxx.png |
```
#### 质量要求
- **风格一致性**:所有图片必须保持相同的艺术风格
- **清晰度**:图片必须清晰,细节完整
- **准确性**:生成的图片必须符合提示词描述
**完成后**:
1. 向用户展示所有参考图
2. 等待用户确认满意
3. 用户确认后,使用 TodoWrite 将阶段2设为 `completed`,阶段3设为 `in_progress`
4. 进入阶段3
---
### 阶段3:分镜设计
**目标**:根据剧本内容,设计详细的分镜脚本
**执行步骤**:
1. 读取原始剧本、`output/analysis/script_analysis.md`、`output/analysis/asset_list.md`
2. 规划分镜数量和节奏:
- 每个分镜对应一个视频片段(5-10秒)
- 一个场景可能包含多个分镜
- 对话场景可能需要切换镜头(正反打)
- 动作场景可能需要多个分镜展示过程
3. 为每个分镜撰写详细描述,格式如下:
```markdown
### Scene_XX
**基本信息**
- **场景**:[使用的场景名称,对应素材清单]
- **场景图片**:[对应的场景图片路径]
- **出场人物**:[人物名称列表]
- **人物图片**:[对应的人物图片路径列表]
- **时长建议**:[6秒/10秒]
**画面内容**
- **画面描述**:[详细描述这个分镜的整体画面内容]
- **人物位置**:[人物在画面中的位置,如:左侧/中央/右侧]
- **人物动作**:[人物正在做什么]
- **人物表情**:[人物的表情状态]
**对话内容**(如有)
- [人物A]:"对话内容..."
- [人物B]:"对话内容..."
**情绪氛围**
- **氛围**:[紧张/温馨/悲伤/欢快等]
- **光线**:[明亮/昏暗/柔和等]
**AI生成指令**
- **首帧描述(First Frame Prompt)**:
[英文,描述分镜开始时的静态画面,用于图生图]
[必须包含:场景、人物位置、人物姿态、表情、光线等]
- **动态描述(Motion Prompt)**:
[英文,描述从首帧开始画面如何变化,用于图生视频]
[描述动作过程,不要太复杂]
```
4. 保存分镜脚本到 `output/storyboard/storyboard.md`:
```bash
mkdir -p output/storyboard
```
```markdown
# 分镜脚本
## 概览
- **总分镜数**:XX
- **预计总时长**:XX秒
- **涉及人物**:[人物列表]
- **涉及场景**:[场景列表]
---
## 分镜详情
### Scene_01
[详细内容]
### Scene_02
[详细内容]
...
```
5. 生成分镜索引 `output/storyboard/scene_index.json`:
```json
{
"total_scenes": 10,
"scenes": [
{
"id": "Scene_01",
"scene_name": "咖啡厅",
"scene_image": "output/scenes/scene_01_cafe.png",
"characters": ["小美"],
"character_images": ["output/characters/character_01_xiaomei.png"],
"duration": 6,
"first_frame_prompt": "...",
"motion_prompt": "...",
"dialogue": ["小美:今天天气真好啊"]
}
]
}
```
#### 分镜设计原则
1. **连贯性**:分镜之间要有逻辑连贯性,避免跳跃
2. **节奏感**:根据剧情调整分镜时长,紧张场景用短分镜,抒情场景可用长分镜
3. **视觉多样性**:避免连续多个分镜画面构图雷同
4. **动作可行性**:动态描述要简洁,AI视频能够实现
5. **对话适配**:有对话的分镜,动态描述要包含说话动作
#### 首帧描述撰写要点
首帧描述是分镜开始时的**静态画面**,需要包含:
- 使用的场景(背景)
- 人物在画面中的位置
- 人物的姿态和表情
- 光线和氛围
- 艺术风格标签
**好的首帧描述示例**:
```
A young businessman in a dark suit standing in a modern office, looking at documents on desk, serious expression, large windows with city view in background, soft natural lighting, anime style, medium shot
```
#### 动态描述撰写要点
动态描述是从首帧开始的**动作过程**,需要:
- 描述主要动作(1-2个动作即可)
- 动作要简单明确,AI能够生成
- 避免复杂的场景切换
**好的动态描述示例**:
```
The man puts down the documents, walks to the window, and gazes out at the city with a thoughtful expression
```
**完成后**:
1. 向用户展示分镜设计
2. 等待用户确认
3. 用户确认后,使用 TodoWrite 将阶段3设为 `completed`,阶段4设为 `in_progress`
4. 进入阶段4
---
### 阶段4:生成分镜首帧图片
**目标**:使用图生图功能,为每个分镜生成首帧图片,确保人物和场景视觉一致性
**核心原理**:
- 直接用文字生成图片,人物外貌会每次都不同
- 通过输入参考图片(人物图+场景图),AI会参考这些图片的风格和特征
- 这样可以确保同一个人物在不同分镜中保持一致的外貌
**执行步骤**:
1. 读取 `output/storyboard/scene_index.json`(分镜索引)和 `output/analysis/asset_list.md`(素材清单)
2. 确认所有人物和场景图片文件存在
3. 创建输出目录:
```bash
mkdir -p output/frames
```
4. 遍历每个分镜,使用 `image_synthesize` 工具的图生图功能生成首帧:
```json
{
"requests": [
{
"prompt": "[首帧描述 + 风格标签]",
"input_files": [
"[人物参考图路径1]",
"[人物参考图路径2]",
"[场景参考图路径]"
],
"output_file": "output/frames/frame_01.png",
"aspect_ratio": "16:9"
}
]
}
```
**参数说明**:
- `prompt`:使用分镜的首帧描述(first_frame_prompt)
- `input_files`:输入参考图片,包括该分镜涉及的人物图和场景图
- `output_file`:输出路径,使用分镜编号命名
- `aspect_ratio`:使用 16:9 横版比例(适合视频画面)
5. **批量生成策略** — `image_synthesize` 每次最多处理10个请求,分批处理:
- 批次1:Scene_01 到 Scene_10
- 批次2:Scene_11 到 Scene_20
- 以此类推
#### Prompt优化技巧
1. **强调人物一致性**:添加 "same character as reference" 或类似描述
2. **指定构图**:添加镜头描述如 "medium shot", "close-up", "wide shot"
3. **强调风格**:确保风格标签与参考图一致
4. **场景融合**:描述人物如何与场景互动
**优化后的prompt示例**:
```
Same character as reference, a young woman with long black hair standing in the coffee shop background, looking out the window with a gentle smile, warm afternoon sunlight streaming in, anime style, medium shot, cinematic lighting, high quality
```
#### 处理多人物分镜
当一个分镜有多个人物时:
1. 将所有相关人物的参考图都加入 `input_files`
2. 在prompt中明确描述每个人物的位置
3. 示例:
```
Two characters in a modern office: a young woman in white blouse on the left side, a middle-aged man in suit on the right side, facing each other in conversation, professional atmosphere, anime style
```
6. 更新分镜索引,保存到 `output/storyboard/scene_index_with_frames.json`:
```json
{
"scenes": [
{
"id": "Scene_01",
"first_frame_image": "output/frames/frame_01.png",
...
}
]
}
```
**完成后**:
1. 向用户展示所有首帧图片
2. 等待用户确认满意
3. 用户确认后,使用 TodoWrite 将阶段4设为 `completed`,阶段5设为 `in_progress`
4. 进入阶段5
---
### 阶段5:生成分镜视频
**目标**:使用图生视频功能,将每个分镜的首帧转化为视频片段
**执行步骤**:
1. 读取 `output/storyboard/scene_index_with_frames.json`
2. 确认所有首帧图片文件存在
3. 创建输出目录:
```bash
mkdir -p output/clips
```
4. 为每个分镜生成视频,有两种工具可选:
#### 方式1:使用 `gen_videos`(推荐,更灵活)
```json
{
"video_requests": [
{
"prompt": "[动态描述]",
"image_file": "[首帧图片路径]",
"output_file": "output/clips/clip_01.mp4",
"duration": 6,
"resolution": "768P",
"reference_type": "first_frame"
}
]
}
```
**参数说明**:
- `prompt`:使用分镜的动态描述(motion_prompt)
- `image_file`:首帧图片路径
- `output_file`:输出视频路径
- `duration`:视频时长,6秒(默认)或10秒
- `resolution`:分辨率,768P(默认)或1080P
- `reference_type`:设为 "first_frame",表示将图片作为视频第一帧
#### 方式2:使用 `batch_image_to_video`(批量处理)
```json
{
"count": 5,
"image_file_list": [
"output/frames/frame_01.png",
"output/frames/frame_02.png",
"output/frames/frame_03.png",
"output/frames/frame_04.png",
"output/frames/frame_05.png"
],
"output_file_list": [
"output/clips/clip_01.mp4",
"output/clips/clip_02.mp4",
"output/clips/clip_03.mp4",
"output/clips/clip_04.mp4",
"output/clips/clip_05.mp4"
],
"prompt_list": [
"[Scene_01的动态描述]",
"[Scene_02的动态描述]",
"[Scene_03的动态描述]",
"[Scene_04的动态描述]",
"[Scene_05的动态描述]"
],
"reference_type_list": ["first_frame", "first_frame", "first_frame", "first_frame", "first_frame"],
"duration_list": [6, 6, 6, 6, 6],
"resolution_list": ["768P", "768P", "768P", "768P", "768P"]
}
```
5. **批量生成策略** — 每次最多生成5个视频,分批处理
#### 视频时长选择
| 场景类型 | 建议时长 |
|----------|----------|
| 简单动作(点头、微笑) | 6秒 |
| 中等动作(走路、转身) | 6秒 |
| 复杂动作(多步骤动作) | 10秒 |
| 对话场景 | 6-10秒 |
| 抒情/氛围场景 | 10秒 |
**注意**:当 duration=10 且 resolution=1080P 时,分辨率会自动降为768P
#### 动态描述优化
**原则**:
- 描述清晰的动作
- 避免过于复杂的动作序列
- 可以添加镜头运动描述(camera slowly zooms in)
**优化示例**:
```
原始:The woman picks up the coffee and drinks
优化:The woman slowly reaches for the coffee cup, lifts it gracefully, and takes a gentle sip while looking out the window, camera slightly pushes in
```
6. 生成视频清单,保存到 `output/clips/clip_list.json`:
```json
{
"total_clips": 10,
"clips": [
{
"id": "Scene_01",
"clip_file": "output/clips/clip_01.mp4",
"duration": 6,
"dialogue": ["小美:今天天气真好啊"]
},
{
"id": "Scene_02",
"clip_file": "output/clips/clip_02.mp4",
"duration": 6,
"dialogue": []
}
],
"total_duration": 60
}
```
#### 处理失败情况
如果某个视频生成失败:
1. 记录失败的分镜编号
2. 检查首帧图片是否正常
3. 简化动态描述后重试
4. 如果仍然失败,记录在最终报告中
**完成后**:
1. 向用户展示所有分镜视频
2. 等待用户确认满意
3. 用户确认后,使用 TodoWrite 将阶段5设为 `completed`,阶段6设为 `in_progress`
4. 进入阶段6
---
### 阶段6:合成完整短剧
**目标**:将所有分镜视频按顺序拼接成完整的短剧
**执行步骤**:
1. 读取 `output/clips/clip_list.json`,获取所有视频片段路径、时长、对话内容
2. 检查视频文件:
```bash
ls -la output/clips/
```
3. 创建视频列表文件:
```python
import json
import os
with open('output/clips/clip_list.json', 'r') as f:
data = json.load(f)
with open('output/clips/filelist.txt', 'w') as f:
for clip in data['clips']:
filename = os.path.basename(clip['clip_file'])
f.write(f"file '{filename}'\n")
```
4. **基础拼接**(无转场):
```bash
cd output/clips && ffmpeg -f concat -safe 0 -i filelist.txt -c copy ../final_drama_raw.mp4
```
5. **添加转场效果**(可选)— 使用ffmpeg的xfade滤镜:
```bash
# 示例:两个视频之间添加淡入淡出
ffmpeg -i clip_01.mp4 -i clip_02.mp4 -filter_complex \
"[0:v][1:v]xfade=transition=fade:duration=0.5:offset=5.5[v]" \
-map "[v]" output.mp4
```
**常用转场效果**:
- `fade` - 淡入淡出
- `dissolve` - 溶解
- `wipeleft` - 左擦除
- `wiperight` - 右擦除
- `slideup` - 上滑
- `slidedown` - 下滑
**注意**:多个视频添加转场比较复杂,建议简单项目直接拼接不加转场。
6. **生成字幕文件**(可选)— 创建SRT字幕文件 `output/subtitles.srt`:
```srt
1
00:00:00,000 --> 00:00:05,000
小美:今天天气真好啊
2
00:00:06,000 --> 00:00:11,000
小明:是啊,我们出去走走吧
```
**字幕时间计算**:根据每个clip的时长累加计算字幕开始时间。
7. **添加字幕到视频**(可选):
```bash
ffmpeg -i output/final_drama_raw.mp4 -vf "subtitles=output/subtitles.srt:force_style='FontSize=24,FontName=Noto Sans CJK SC'" -c:a copy output/final_drama_with_subs.mp4
```
8. **添加背景音乐**(可选)— 使用 `batch_text_to_music` 工具生成:
```json
{
"count": 1,
"prompt_list": ["Light and cheerful background music for a romantic short drama, gentle piano melody, warm atmosphere"],
"lyrics_list": ["[Instrumental]"],
"output_file_list": ["output/bgm.mp3"]
}
```
然后混合到视频中:
```bash
# 原视频有音频轨道时
ffmpeg -i output/final_drama_raw.mp4 -stream_loop -1 -i output/bgm.mp3 -filter_complex "[1:a]volume=0.3[bgm];[0:a][bgm]amix=inputs=2:duration=first[a]" -map 0:v -map "[a]" -c:v copy -shortest output/final_drama_with_bgm.mp4
# 原视频没有音频轨道时
ffmpeg -i output/final_drama_raw.mp4 -stream_loop -1 -i output/bgm.mp3 -map 0:v -map 1:a -c:v copy -shortest output/final_drama_with_bgm.mp4
```
9. **最终输出** — 根据用户需求选择版本:
| 版本 | 文件名 | 说明 |
|------|--------|------|
| 基础版 | `final_drama_raw.mp4` | 仅拼接,无特效 |
| 字幕版 | `final_drama_with_subs.mp4` | 包含字幕 |
| 音乐版 | `final_drama_with_bgm.mp4` | 包含背景音乐 |
| 完整版 | `final_drama.mp4` | 字幕+背景音乐 |
将最终版本复制或重命名为 `output/final_drama.mp4`。
10. **生成制作报告** — 保存到 `output/production_report.md`:
```markdown
# 短剧制作报告
## 基本信息
- **短剧名称**:[剧本标题]
- **总时长**:XX秒
- **分辨率**:768P / 1080P
- **分镜数量**:XX
## 素材清单
- **人物数量**:XX
- **场景数量**:XX
- **视频片段**:XX
## 后期处理
- **转场效果**:有/无
- **字幕**:有/无
- **背景音乐**:有/无
## 输出文件
- **最终视频**:output/final_drama.mp4
## 制作时间
- **开始时间**:...
- **完成时间**:...
```
#### 常见问题处理
**ffmpeg不存在**:
```bash
apt-get update && apt-get install -y ffmpeg
```
**视频编码不一致**:
```bash
for f in output/clips/clip_*.mp4; do
ffmpeg -i "$f" -c:v libx264 -c:a aac "${f%.mp4}_converted.mp4"
done
```
**字幕乱码** — 确保使用支持中文的字体:
```bash
fc-list :lang=zh
ffmpeg -i input.mp4 -vf "subtitles=subs.srt:force_style='FontName=Noto Sans CJK SC'" output.mp4
```
**完成后**:
1. 向用户展示最终短剧
2. 提供下载链接或预览
3. 使用 TodoWrite 将阶段6设为 `completed`
4. 所有阶段完成,短剧制作结束!🎉
---
## 输出目录结构
```
output/
├── analysis/
│ ├── script_analysis.md # 剧本分析报告
│ └── asset_list.md # 素材清单
├── characters/ # 人物参考图
├── scenes/ # 场景参考图
├── storyboard/
│ ├── storyboard.md # 分镜脚本
│ ├── scene_index.json # 分镜索引
│ └── scene_index_with_frames.json # 含首帧的分镜索引
├── frames/ # 分镜首帧图片
├── clips/
│ ├── clip_*.mp4 # 分镜视频片段
│ └── clip_list.json # 视频清单
├── final_drama.mp4 # 最终短剧
└── production_report.md # 制作报告
```
## 进度跟踪
**在开始工作前,必须使用 TodoWrite 工具创建任务列表**,跟踪每个阶段的完成状态。
### 初始化TODO列表
当用户提供剧本并确认视觉风格后,立即创建:
```json
{
"todos": [
{
"content": "阶段1:剧本分析 - 识别人物与场景",
"activeForm": "正在分析剧本,识别人物与场景",
"status": "pending"
},
{
"content": "阶段2:生成人物与场景参考图",
"activeForm": "正在生成人物与场景参考图",
"status": "pending"
},
{
"content": "阶段3:设计分镜脚本",
"activeForm": "正在设计分镜脚本",
"status": "pending"
},
{
"content": "阶段4:生成分镜首帧图片",
"activeForm": "正在生成分镜首帧图片",
"status": "pending"
},
{
"content": "阶段5:生成分镜视频",
"activeForm": "正在生成分镜视频",
"status": "pending"
},
{
"content": "阶段6:合成完整短剧",
"activeForm": "正在合成完整短剧",
"status": "pending"
}
]
}
```
### TODO状态管理规则
1. **开始阶段时**:将当前阶段状态更新为 `in_progress`
2. **完成阶段时**:将当前阶段状态更新为 `completed`
3. **任何时候只能有一个阶段处于 `in_progress` 状态**
4. **用户要求返回某个阶段时**:将该阶段及后续阶段状态重置为 `pending`
## 工具参考
### 必须使用的工具
| 工具名称 | 用途 | 使用阶段 |
|----------|------|----------|
| `image_synthesize` | 文生图 / 图生图 | 阶段2(素材生成)、阶段4(首帧生成) |
| `gen_videos` | 图生视频(推荐) | 阶段5(视频生成) |
| `batch_image_to_video` | 批量图生视频 | 阶段5(视频生成,替代方案) |
| `ffmpeg`(命令行) | 视频拼接/字幕/音乐 | 阶段6(后期合成) |
### 可选工具
| 工具名称 | 用途 | 使用阶段 |
|----------|------|----------|
| `batch_text_to_music` | 生成背景音乐 | 阶段6(后期合成,可选) |
### 批量限制
- `image_synthesize`:每次最多 **10** 个请求
- `gen_videos` / `batch_image_to_video`:每次最多 **5** 个请求
## 工作原则
1. **阶段确认**:每个阶段完成后,必须向用户展示结果并获得确认后再进入下一阶段
2. **结果检查**:每个步骤完成后,检查输出文件是否完整,如有问题及时重试或调整
3. **风格一致性**:在阶段1就与用户确定整体视觉风格,确保后续各阶段保持一致
4. **灵活调整**:根据用户反馈,可以退回到任意阶段重新执行
5. **进度汇报**:每个阶段开始和结束时,向用户汇报当前进度
## 错误处理
如果某个步骤执行失败:
1. 分析失败原因
2. 调整参数或简化提示词后重新执行
3. 如果多次失败,向用户说明情况并寻求指导
## 与用户沟通
- 使用清晰、专业的语言与用户沟通
- 每个阶段完成后,简要总结成果并征求反馈
- 主动提供改进建议,但最终决定权交给用户
## Common Mistakes to Avoid
1. **跳过用户确认**:每个阶段完成后必须等待用户确认,不要自动进入下一阶段
2. **风格不一致**:所有图片和视频必须保持统一的艺术风格
3. **忘记传参考图**:阶段4生成首帧时,必须将人物和场景参考图作为 `input_files` 传入
4. **超过批量限制**:`image_synthesize` 最多10个请求,视频生成最多5个请求,超出需分批
5. **动态描述过于复杂**:图生视频的动态描述应简洁(1-2个动作),避免AI无法生成
6. **遗漏人物或场景**:阶段1分析时必须确保识别出所有人物和场景,无遗漏
7. **忘记更新分镜索引**:阶段4完成后必须生成 `scene_index_with_frames.json`
8. **字幕时间计算错误**:字幕时间需根据每个clip时长累加计算
9. **duration=10 且 resolution=1080P**:此组合下分辨率会自动降为768P,需注意
10. **忘记创建输出目录**:每个阶段开始前确保对应的输出目录已创建
Attribution
Comments
Loading comments…