feat(video-from-script): 重构工作流为子Agent分步执行并新增提示词模板系统
将视频制作工作流拆分为独立子步骤:分镜 → 图片提示词 → 生图 → 视频提示词 → 生视频 → 成片,每步由子Agent独立执行。引入prompts/目录统一管理提示词模板(分镜.md、图片提示词.md、视频提示词.md),通过account.json的storyboardPrompt/imageStylePrompt/videoStylePrompt字段引用。 变更内容: - 新增confirmed机制和pipeline.js confirm命令,生图后必须人工确认才能继续 - manifest schema改用shotDesc/narration/duration/directorRef替代旧字段 - 文件命名规则从keyword改为slug(从shotDesc/narration派生) - 删除旧的storyboard-rules.md和prompt-rules.md - pipeline.js脚本拆分为lib/目录下的独立模块(cmd-init/cmd-confirm/cmd-validate/phase-*) - 新增cmd-create-account支持一键创建带prompts目录的账号 - capcut_assemble支持narration字段替代text作为字幕源 - 新增.gitclaude/settings.json权限配置
This commit is contained in:
@@ -11,12 +11,18 @@
|
||||
accounts/ # 项目根目录下
|
||||
├── _template/ # 新账号模板(复制此目录创建新账号)
|
||||
│ ├── account.json
|
||||
│ ├── prompts/ # 提示词模板目录(子 Agent 系统提示词)
|
||||
│ │ └── .gitkeep
|
||||
│ ├── references/ # 参考图目录
|
||||
│ │ └── .gitkeep
|
||||
│ └── styles/ # 风格文件目录(可多个)
|
||||
│ └── .gitkeep
|
||||
└── {account}/ # 用户创建的账号(目录名 = account.json 的 id,输出目录用 name 命名)
|
||||
├── account.json
|
||||
├── prompts/ # 提示词模板(账号专属)
|
||||
│ ├── 分镜.md # 口播文案 → 分镜表
|
||||
│ ├── 图片提示词.md # shotDesc → imagePrompt
|
||||
│ └── 视频提示词.md # shotDesc → videoPrompt
|
||||
├── references/ # 参考图(所有风格共用)
|
||||
│ ├── ref_001.png
|
||||
│ └── ref_002.png
|
||||
@@ -38,6 +44,9 @@ accounts/ # 项目根目录下
|
||||
"imageModel": "gemini",
|
||||
"videoModel": "kling",
|
||||
"batchSize": 30,
|
||||
"storyboardPrompt": "prompts/分镜.md",
|
||||
"imageStylePrompt": "prompts/图片提示词.md",
|
||||
"videoStylePrompt": "prompts/视频提示词.md",
|
||||
"capcut": {
|
||||
"effects": ["录制边框 III"],
|
||||
"filter": "电影感:40",
|
||||
@@ -61,6 +70,9 @@ accounts/ # 项目根目录下
|
||||
| `imageModel` | string | 默认图片模型 |
|
||||
| `videoModel` | string | 默认视频模型 |
|
||||
| `batchSize` | number | 默认批量生成数量 |
|
||||
| `storyboardPrompt` | string | 分镜提示词模板路径(相对于账号目录) |
|
||||
| `imageStylePrompt` | string | 图片提示词模板路径(相对于账号目录) |
|
||||
| `videoStylePrompt` | string | 视频提示词模板路径(相对于账号目录) |
|
||||
| `capcut.effects` | string[] | CapCut 特效名称列表 |
|
||||
| `capcut.filter` | string | CapCut 滤镜,格式 "名称:强度" |
|
||||
| `capcut.subtitleStyle` | object | 字幕样式(字号、颜色、高亮色、加粗) |
|
||||
@@ -68,66 +80,50 @@ accounts/ # 项目根目录下
|
||||
|
||||
---
|
||||
|
||||
## 提示词模板(prompts/)
|
||||
|
||||
每个账号在 `prompts/` 目录下维护三个子 Agent 提示词模板:
|
||||
|
||||
| 文件 | 用途 | Step |
|
||||
|------|------|------|
|
||||
| `分镜.md` | 口播文案 → 分镜表(shotDesc/narration/duration/directorRef) | Step 1 |
|
||||
| `图片提示词.md` | shotDesc + directorRef → imagePrompt | Step 2-A |
|
||||
| `视频提示词.md` | shotDesc + directorRef → videoPrompt | Step 3-A |
|
||||
|
||||
这些文件定义了子 Agent 的角色、入参、出参、词库和示例。路径在 account.json 中以相对路径引用,Agent 读取 account.json 后自动定位。
|
||||
|
||||
### 与 style 文件的关系
|
||||
|
||||
- **prompts/** — 子 Agent 的系统提示词(定义 HOW 生成提示词)
|
||||
- **styles/** — 视觉规则参考(定义 WHAT 风格应该长什么样:颜色、构图、禁止项)
|
||||
- prompts 模板内部会引用 styles 中定义的色彩体系、构图规则等
|
||||
|
||||
---
|
||||
|
||||
## 风格文件(styles/)
|
||||
|
||||
每种视觉风格一个文件,文件名即风格名。文件内同时包含图片和视频的提示词策略。
|
||||
每种视觉风格一个文件,文件名即风格名。文件内包含视觉规则参考。
|
||||
|
||||
### 风格文件结构
|
||||
|
||||
```markdown
|
||||
# 风格名称(英文短横线命名)
|
||||
# 风格名称
|
||||
|
||||
一句话描述风格。
|
||||
|
||||
---
|
||||
|
||||
## 图片提示词
|
||||
|
||||
### 核心视觉要素
|
||||
<!-- 必选的视觉元素 -->
|
||||
|
||||
### 场景/背景规则
|
||||
<!-- 背景要求 -->
|
||||
## 核心视觉要素
|
||||
|
||||
### 色调方案
|
||||
<!-- 可选的色彩组合 -->
|
||||
|
||||
### 构图模式
|
||||
<!-- 支持的构图类型 -->
|
||||
|
||||
### 图片 Prompt 模板
|
||||
<!-- 生成 prompt 时的固定结构 -->
|
||||
|
||||
### 示例
|
||||
<!-- 2-3 个完整示例 -->
|
||||
|
||||
### MJ/Gemini 参数
|
||||
<!-- 模型专用后缀参数 -->
|
||||
### 模型参数(MJ/Gemini/Kling)
|
||||
|
||||
### 图片禁止项
|
||||
<!-- 不得出现的元素 -->
|
||||
|
||||
---
|
||||
|
||||
## 视频提示词
|
||||
|
||||
### 运镜规则
|
||||
<!-- 运镜方式、节奏 -->
|
||||
|
||||
### 动态元素要求
|
||||
<!-- 光影、角色动作、环境氛围 -->
|
||||
|
||||
### 视频 Prompt 模板
|
||||
<!-- VEO/Grok prompt 结构 -->
|
||||
|
||||
### 示例
|
||||
<!-- 2-3 个完整示例 -->
|
||||
|
||||
### VEO/Grok 后缀
|
||||
<!-- 模型专用后缀 -->
|
||||
|
||||
### 视频禁止项
|
||||
<!-- 不得出现的元素 -->
|
||||
### 禁止项
|
||||
```
|
||||
|
||||
### 风格文件命名
|
||||
@@ -158,12 +154,13 @@ node scripts/pipeline.js create-account \
|
||||
### 手动创建
|
||||
|
||||
1. 复制 `_template/` 目录,重命名为账号 ID
|
||||
2. 编辑 `account.json` 填写账号信息
|
||||
3. 在 `references/` 中放入参考图(所有风格共用)
|
||||
4. 上传参考图到 OSS,URL 写入 account.json:
|
||||
2. 编辑 `account.json` 填写账号信息(含 prompts 路径)
|
||||
3. 在 `prompts/` 中放入提示词模板(从 `工作流程/` 草稿区复制)
|
||||
4. 在 `references/` 中放入参考图(所有风格共用)
|
||||
5. 上传参考图到 OSS,URL 写入 account.json:
|
||||
- `node scripts/oss-upload.js ../../accounts/{id}/references/{图片文件}`
|
||||
- 将返回的 URL 写入 `styles.{styleName}.references[].url`
|
||||
5. 在 `styles/` 中创建风格文件(至少一个)
|
||||
6. 在 `styles/` 中创建风格文件(至少一个)
|
||||
|
||||
### 校验账号
|
||||
|
||||
@@ -171,7 +168,7 @@ node scripts/pipeline.js create-account \
|
||||
node scripts/pipeline.js validate-account --account military
|
||||
```
|
||||
|
||||
检查:id 匹配、必填字段、参考图完整性、风格文件存在、OSS URL 有效。
|
||||
检查:id 匹配、必填字段、prompts 模板存在、参考图完整性、风格文件存在、OSS URL 有效。
|
||||
|
||||
## 添加新风格
|
||||
|
||||
|
||||
Reference in New Issue
Block a user