优化
This commit is contained in:
@@ -37,14 +37,14 @@ description: 素材生产路由。根据用户意图分发到对应子技能:i
|
||||
| "生图"、"批量图片" | 生图 | `image-generator` |
|
||||
| "图片成片"、"图片轮播" | 已有图片 → 组装 | `capcut` |
|
||||
| "图文成片"、"生图+成片" | 生图 → TTS+字幕+组装 | `image-generator` → `capcut` |
|
||||
| "图生视频"、"图片转视频" | 生图 → AI视频 → 组装 | `image-generator` → Grok/VEO → `capcut` |
|
||||
| "首尾帧"、"帧动画"、"关键帧" | 生图(成对) → VEO视频 → 组装 | `image-generator`(帧对) → VEO → `capcut` |
|
||||
| "图生视频"、"图片转视频" | 生图 → AI视频 → 组装 | `image-generator` → Grok/VEO/Kling → `capcut` |
|
||||
| "首尾帧"、"帧动画"、"关键帧" | 生图(成对) → 视频过渡 → 组装 | `image-generator`(帧对) → VEO/Kling → `capcut` |
|
||||
| "文案转视频"、"配音视频" | 生图 → TTS+字幕+组装 | `image-generator` → `capcut` |
|
||||
| 只说"做视频" | **询问**:图文成片 / 图生视频(单图/首尾帧)? | — |
|
||||
|
||||
**"图生视频"的后续追问**:用户说"图生视频"时,追问视频模式:
|
||||
- **单图模式**:一张图 → 一段视频(Grok 或 VEO)
|
||||
- **首尾帧模式**:起始帧+结束帧 → 一段过渡视频(仅 VEO)
|
||||
- **单图模式**:一张图 → 一段视频(Grok / VEO / Kling)
|
||||
- **首尾帧模式**:起始帧+结束帧 → 一段过渡视频(VEO / Kling)
|
||||
|
||||
---
|
||||
|
||||
@@ -73,8 +73,8 @@ Step -1: 意图确认(进入任何步骤前必须完成,逐项确认,缺
|
||||
- 有参考图/风格参考?
|
||||
|
||||
3. 视频模式(涉及视频时必问):
|
||||
- 单图模式:1 张图 → 1 段视频(Grok 或 VEO)
|
||||
- 首尾帧模式:2 张图 → 过渡视频(仅 VEO)
|
||||
- 单图模式:1 张图 → 1 段视频(Grok / VEO / Kling)
|
||||
- 首尾帧模式:2 张图 → 过渡视频(VEO / Kling)
|
||||
|
||||
4. 账号确认:
|
||||
- 扫描 accounts/*/account.json 获取最新账号列表
|
||||
@@ -84,7 +84,7 @@ Step -1: 意图确认(进入任何步骤前必须完成,逐项确认,缺
|
||||
- 确认后记住 account ID
|
||||
|
||||
5. 参数确认:
|
||||
- 画幅(9:16 / 16:9)、生图模型(Gemini / MJ)、视频模型(VEO / Grok)
|
||||
- 画幅(9:16 / 16:9)、生图模型(Gemini / MJ)、视频模型(VEO / Grok / Kling)
|
||||
- 有账号时从 account.json 继承默认值,只问是否覆盖
|
||||
|
||||
→ 以上 5 项全部确认后,agent 写出完整执行计划,让用户最终确认:
|
||||
@@ -121,7 +121,7 @@ Step 2: Prompt 生成 + Manifest 初始化(分镜 + 风格 → 英文 prompts
|
||||
- 输入:分镜表 + style.md + account.json
|
||||
- 子 Agent 将每个 shot 的中文画面描述结合风格文件,生成:
|
||||
· imagePrompt(英文画面描述,给 Gemini/MJ)
|
||||
· videoPrompt(英文运动描述,给 Grok/VEO)
|
||||
· videoPrompt(英文运动描述,给 Grok/VEO/Kling)
|
||||
· keyword, keywordColor
|
||||
- **禁止 AI 手写 manifest.json**,必须通过脚本初始化:
|
||||
```bash
|
||||
@@ -196,18 +196,21 @@ digraph single_image {
|
||||
prompt [label="videoPrompt"]
|
||||
grok [label="Grok\n6s 视频", fillcolor="#fff3e0"]
|
||||
veo [label="VEO\n6-8s 视频", fillcolor="#e8f5e9"]
|
||||
kling [label="Kling\n6s 视频", fillcolor="#e1f5fe"]
|
||||
result [label="视频输出", shape=oval, fillcolor="#e3f2fd"]
|
||||
|
||||
img -> prompt
|
||||
prompt -> grok
|
||||
prompt -> veo
|
||||
prompt -> kling
|
||||
grok -> result
|
||||
veo -> result
|
||||
kling -> result
|
||||
}
|
||||
```
|
||||
|
||||
- 每条文案生成 1 张图 + 1 个 videoPrompt
|
||||
- Grok 和 VEO 都支持
|
||||
- Grok、VEO 和 Kling 都支持
|
||||
- 提示词描述运动:"slow zoom in on subject"
|
||||
|
||||
### 首尾帧模式
|
||||
@@ -221,17 +224,22 @@ digraph frame_pair {
|
||||
last [label="结束帧"]
|
||||
prompt [label="videoPrompt"]
|
||||
veo [label="VEO\n6-8s 过渡视频", fillcolor="#e8f5e9"]
|
||||
kling [label="Kling\n6s 过渡视频", fillcolor="#e1f5fe"]
|
||||
result [label="视频输出", shape=oval, fillcolor="#e3f2fd"]
|
||||
|
||||
first -> veo
|
||||
last -> veo
|
||||
prompt -> veo
|
||||
first -> kling
|
||||
last -> kling
|
||||
prompt -> kling
|
||||
veo -> result
|
||||
kling -> result
|
||||
}
|
||||
```
|
||||
|
||||
- 每条文案生成 **2 张图**(firstFrame + lastFrame)+ 1 个 videoPrompt
|
||||
- **仅 VEO 支持**(images 数组传两张图)
|
||||
- **VEO 和 Kling 支持**(images 数组传两张图)
|
||||
- 起始帧和结束帧必须是**同一场景的不同状态**
|
||||
- 提示词描述过渡:"transition from idle machines to active production"
|
||||
|
||||
@@ -240,7 +248,7 @@ digraph frame_pair {
|
||||
| 图片数量 | N 张 | 2N 张 |
|
||||
| 生图耗时 | 标准 | ~2 倍(可并行) |
|
||||
| 视频连贯性 | 仅运动 | 场景变化(更强) |
|
||||
| 可用模型 | Grok + VEO | 仅 VEO |
|
||||
| 可用模型 | Grok + VEO + Kling | VEO + Kling |
|
||||
| 适用场景 | 风景、人物展示 | 状态变化、叙事过渡 |
|
||||
|
||||
---
|
||||
@@ -288,7 +296,7 @@ digraph single_image_video {
|
||||
|
||||
agent1 [label="Agent 1\nimage-generator\n生图 + videoPrompt"]
|
||||
gate1 [label="人工卡点\n用户挑选图片", shape=diamond, fillcolor="#fff9c4"]
|
||||
agent2 [label="Agent 2\nGrok / VEO\n单图输入,并行生成视频"]
|
||||
agent2 [label="Agent 2\nGrok / VEO / Kling\n单图输入,并行生成视频"]
|
||||
agent3 [label="Agent 3\ncapcut\n视频片段 + 字幕 → 成片"]
|
||||
|
||||
agent1 -> gate1 -> agent2 -> agent3
|
||||
@@ -303,7 +311,7 @@ digraph frame_pair_video {
|
||||
|
||||
agent1 [label="Agent 1\nimage-generator\n成对生图\n(firstFrame + lastFrame)\n可并行"]
|
||||
gate1 [label="人工卡点\n检查首尾帧连贯性\n同一场景/相似视角", shape=diamond, fillcolor="#fff9c4"]
|
||||
agent2 [label="Agent 2\nVEO\n双图输入\nimages:[first, last]"]
|
||||
agent2 [label="Agent 2\nVEO / Kling\n双图输入\nimages:[first, last]"]
|
||||
agent3 [label="Agent 3\ncapcut\n视频片段 + 字幕 → 成片"]
|
||||
|
||||
agent1 -> gate1 -> agent2 -> agent3
|
||||
@@ -317,6 +325,7 @@ digraph frame_pair_video {
|
||||
| Grok | 6s | 任意 | ✅ | ❌ | 快、稳定 | yunwu.ai |
|
||||
| Veo3-fast | ~8s | 16:9, 9:16 | ✅ | ✅ | 超分、中文增强 | jimmyai.cn |
|
||||
| Veo3-fast-frames | ~8s | 16:9, 9:16 | ✅ | ✅ | 多帧、质量最高 | jimmyai.cn |
|
||||
| Kling | 6s | 任意 | ✅ | ✅ | 快、首尾帧支持 | yunwu.ai |
|
||||
|
||||
图生视频注意事项:
|
||||
- **并行执行**:先同时提交所有任务(并发 3),再并行轮询结果
|
||||
@@ -328,22 +337,24 @@ digraph frame_pair_video {
|
||||
|
||||
### 视频大小一致性
|
||||
|
||||
- **同批次同模型**,不混合 Grok(720P/6s)和 VEO(超分/8s)
|
||||
- **同批次同模型**,不混合 Grok(720P/6s)、VEO(超分/8s)和 Kling(6s)
|
||||
- 画幅统一跟随 manifest 顶层 `format`(默认 `9:16`)
|
||||
- 个别 item 降级到备用模型时,在 manifest 中标记 `"videoModel"` 以便追踪
|
||||
|
||||
### 视频生成失败降级
|
||||
|
||||
**降级链**: `Grok ↔ VEO → 可灵(Kling)`
|
||||
**降级链**: `Grok ↔ VEO ↔ Kling`
|
||||
|
||||
**触发**: 同一 item 重试 5 次仍失败 → 用备用模型单独补生成
|
||||
|
||||
```bash
|
||||
# Grok 失败 → VEO 补
|
||||
# Grok 失败 → VEO/Kling 补
|
||||
node veo-video-generator.js --image <url> --prompt <prompt> -o ./videos
|
||||
node kling-video-generator.js --image <url> --prompt <prompt> -o ./videos
|
||||
|
||||
# VEO 失败 → Grok 补
|
||||
# VEO 失败 → Grok/Kling 补
|
||||
node grok-video-generator.js --image <url> --prompt <prompt> -o ./videos
|
||||
node kling-video-generator.js --image <url> --prompt <prompt> -o ./videos
|
||||
```
|
||||
|
||||
**规则**: 逐 item 降级,不卡整批次。补完后上传 OSS,回写 `videoUrl`,继续 `tts → assemble`。
|
||||
@@ -375,7 +386,7 @@ output/{account}_{YYYYMMDD}_{NNN}/
|
||||
|
||||
**核心规则**:
|
||||
- 脚本检测 `lastFrameUrl` → 首尾帧模式(传 images:[url, lastFrameUrl]);否则 → 单图模式(传 images:[url])
|
||||
- 顶层 `format` 自动传给 VEO/Grok 作为画幅比例
|
||||
- 顶层 `format` 自动传给 VEO/Grok/Kling 作为画幅比例
|
||||
- `account` 字段驱动 capcut_assemble 读取对应 account.json 的字幕风格配置
|
||||
|
||||
---
|
||||
@@ -448,7 +459,7 @@ shot 3-N(交替): close-up(压)→ wide(松)→ close-up(压)→
|
||||
|
||||
每条文案生成:
|
||||
- `imagePrompt`:画面描述(英文,给 Gemini/MJ)
|
||||
- `videoPrompt`:运动描述(英文,给 Grok/VEO)
|
||||
- `videoPrompt`:运动描述(英文,给 Grok/VEO/Kling)
|
||||
|
||||
videoPrompt 规则:
|
||||
- 描述**运动**而非内容("zoom in" 而非 "a cat")
|
||||
@@ -457,14 +468,14 @@ videoPrompt 规则:
|
||||
- **收敛原则**:基于图片已有内容,仅描述镜头运动和微动效果
|
||||
- **禁止**:大幅度环境切换、场景变化、人物位置跳变
|
||||
- **推荐写法**:镜头运动(slow zoom/pan/dolly)+ 星座/光效微动 + 保持静止氛围
|
||||
- **画幅继承**:manifest.json 顶层 `format` 字段(如 `"9:16"`)会自动传给 VEO,无需命令行 `-a`
|
||||
- **画幅继承**:manifest.json 顶层 `format` 字段(如 `"9:16"`)会自动传给 VEO/Kling,无需命令行 `-a`
|
||||
|
||||
### 首尾帧模式提示词
|
||||
|
||||
每条文案生成:
|
||||
- `imagePrompt`:起始帧画面(英文,与 single 模式复用同一字段)
|
||||
- `lastFramePrompt`:结束帧画面(英文)
|
||||
- `videoPrompt`:过渡描述(英文,给 VEO)
|
||||
- `videoPrompt`:过渡描述(英文,给 VEO/Kling)
|
||||
|
||||
**首尾帧提示词设计原则**:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user