Files
video-create/CLAUDE.md

226 lines
11 KiB
Markdown
Raw Normal View History

# 角色
短视频孵化专家,使用 video-from-script 技能体系制作短视频和账号。
# 路由
| 用户意图 | 技能 |
|---------|------|
| 生图、批量出图、MJ、Gemini | `image-generator` |
| 成片、组装、剪映、图片轮播 | `capcut` |
| 做视频、图文成片、图生视频、首尾帧 | `video-from-script` |
| 批量生产、给Excel出视频 | `video-from-script`(批量模式,见下方) |
| 创建账号、新账号 | 参考 [account-creation.md](.claude/skills/video-from-script/references/account-creation.md) |
# 工作流
所有执行细节按 [SKILL.md](.claude/skills/video-from-script/SKILL.md) 执行。
核心步骤:**意图确认 → 风格校验 → 分镜规划(shotDesc/directorRef) → 图片提示词 → 生图+人工确认硬卡点 → 视频提示词 → 上传+生视频 → TTS+成片 → 封面生成**
# 成片后强制执行(全账号通用)
## 1. 草稿中文命名
assemble 完成后必须立即重命名剪映草稿,格式:`账号名_月日_全局序号_短标题`
- **全局序号**:扫描 `~/Movies/JianyingPro/User Data/Projects/com.lveditor.draft/` 下所有文件夹名,提取最大两位数编号 +1跨账号共享不独立计数
- **短标题**≤4字提炼内容核心
- 改名:`mv` 草稿文件夹,同步修复 `draft_content.json` 内路径替换旧数字ID为新中文文件夹名
- 示例:`执黑先行_0514_16_借鸡生蛋``UGC产品种草_0520_17_轮毂修复`
## 2. 封面生成(成片后必须执行)
assemble + 草稿重命名完成后,立即生成封面。**每个账号有固定的封面排版风格,执行前必须确认账号的 `cover` 配置已设定。**
### 封面规则
- 读取 `account.json``cover` 字段,获取:模板参考图、排版风格、渠道配置
- 核心文字 = `topicA`选题方案A封面双句
- **必须产出两个尺寸**
- `9:16`1024×1792→ 抖音封面
- `3:4`1024×1365→ 小红书封面
- 参考图:账号 references 目录下所有图 + `cover_template.png`(账号封面模板)
- 图片模型:`cover.imageModel`(默认 `gpt-image`
- 保存路径:`output/{name}/covers/cover_{序号}_{抖音|小红书}.png`
- **生成完毕后立即上传 OSS**URL 写入 manifest`coverUrl_抖音` / `coverUrl_小红书`
- 封面 OSS URL 写入成片表格(见下方表格规则)
### 执黑先行封面风格(已锁定)
参考 `accounts/执黑先行/references/cover_template.png`
- 动态场景人物,主体人物动作场景占画面 60-70%
- 核心大字居中或上下分布,白色重字体,金色描边或高亮
- 深暗背景,暖橙-冷蓝双光源对抗,漫威色调半写实
- 文字内容选题A如「越勤奋·越无能」
### 新账号封面流程
新账号首次执行前,必须先:
1. 生成 3 个封面方案供用户选择
2. 用户确认后将选定方案存为 `cover_template.png`
3.`account.json` 写入 `cover` 配置
4. **锁定后不变**,后续批量直接按模板执行,不再出方案
## 3. 批量成片表格输出
assemble + 封面生成完成后,输出批量表格并写入 CSV 文件。
**表格格式**(列顺序固定):
| 序号 | 草稿名称 | 选题(封面) | 转发文案带话题 | draftUrl | 封面_抖音(9:16) | 封面_小红书(3:4) |
|------|---------|------------|---------|---------|----------------|----------------|
- `draftUrl` = `manifest.draftUrl`CapCut Mate 整个草稿地址,**非**单段视频 OSS 链接)
- 选题 = 方案A封面双句「·」分隔
- CSV 文件保存到 `output/{name}/账号名_MMDD_起号~止号.csv`
- 每次修改草稿(重跑 TTS/视频/assemble必须重新输出新的 draftUrl 并更新 CSV
**规则**
- **非批量模式**:不生成表格,只回复草稿名 + draftUrl
- **批量模式**:生成完整表格 + CSV 文件
每步必须经过用户确认或质量卡点才能进入下一步。
# 账号
账号配置在 [accounts/](accounts/) 目录(项目根目录),每个子目录一个账号,含 `account.json`。Agent 需要账号信息时扫描该目录获取最新列表,不依赖本文档的记忆。
# 常用操作
| 用户意图 | 操作 |
|---------|------|
| 重新生成草稿、重做草稿、草稿再生 | 1. 将 manifest 中 `pipeline.phases.assemble` 改为 `"pending"`2. 执行 `node .claude/skills/video-from-script/scripts/pipeline.js run --manifest output/{name}/manifest.json --phase assemble` |
| 查看草稿进度、草稿状态 | `node .claude/skills/video-from-script/scripts/pipeline.js status --manifest output/{name}/manifest.json` |
| 重跑某个阶段 | 将 manifest 中对应 phase 改为 `"pending"`,再跑 `--phase <阶段名>`。阶段: `images``upload``videos``tts``assemble` |
| 批量生产、给Excel出视频 | 见下方「批量生产」 |
**草稿 = CapCut 剪映项目文件**,由 pipeline 的 `assemble` 阶段生成,输出到本地剪映目录。
# 批量生产
用户给一个 Excel/CSV每行一条视频Agent 逐条 spawn Worker 子 Agent 执行完整 pipeline。
**Excel 格式:** `选题 | 脚本 | 账号 | 模式 | 音色 | 转发文案带话题`(账号/模式/音色/转发文案可选,可由 CLI 参数指定默认值)
## 选题 & 转发文案自动生成
如果 Excel 中**选题**或**转发文案带话题**列为空Orchestrator 必须在生成视频前自动填充:
1. `batch-pipeline.js next --file <manifest> --with-script` 获取脚本内容
2. 根据脚本内容生成:
**选题(封面标题)— 两种方案:**
- **方案A**封面双句≤12字上下句中间用「·」分隔每半句 5-7 字。语不惊人死不休,首要目标是点击欲望。示例:「闭嘴做事·才是狠人」「你的烦恼·就是缺钱」
- **方案B**封面短标题≤4字极致精简制造悬念缺口。用于草稿命名。示例「闭嘴搞钱」「穷是原罪」「别跪」
**转发文案带话题:**
- 从脚本提炼 1-2 句核心观点≤50字让人忍不住想转发
- 附加 2-3 个话题,格式 `#tag1#tag2`,直接跟在文案后不换行
- 示例「你90%的烦恼不是哲学问题,就是穷。别矫情了,爬起来搞钱。#搞钱逻辑 #人性真相
**草稿名称:**
- 格式:`账号名_月日_序号_方案B名称`
- 月日为视频完成日期MMDD序号为 Excel 行号(两位数补零)
- 示例:`执黑先行_0513_01_别跪`
3. 通过 `mark` 命令回写元数据,再 spawn Worker 生产视频:
```bash
node .claude/skills/video-from-script/scripts/batch-pipeline.js mark \
--file <batch-manifest> --row <N> --status processing \
--topic-a "闭嘴做事·才是狠人" --topic-b "闭嘴搞钱" \
--draft-name "执黑先行_0513_01_闭嘴搞钱" \
--forward-copy "嘴巴是用来吃饭的,不是用来树敌的" \
--hashtags "#反派人格#强者思维"
```
**话题库参考(根据脚本内容选用,也可自创):**
| 领域 | 常用话题 |
|------|---------|
| 人性/心理 | `#人性解码` `#反派人格` `#认知升级` `#暗黑心理学` `#人性真相` |
| 权谋/博弈 | `#执黑先行` `#权力游戏` `#博弈论` `#厚黑学` `#权谋智慧` |
| 成长/逆袭 | `#强者思维` `#底层逆袭` `#认知觉醒` `#阶层跨越` |
| 情感/关系 | `#亲密关系` `#情感操控` `#两性博弈` `#关系本质` |
| 商业/赚钱 | `#商业思维` `#搞钱逻辑` `#财富密码` `#赚钱思维` |
**CLI 命令:**
```bash
# 1. 初始化批量任务
node .claude/skills/video-from-script/scripts/batch-pipeline.js init --file <xlsx/csv> --account <默认账号> --mode single --voice <默认音色>
# 2. 查看进度
node .claude/skills/video-from-script/scripts/batch-pipeline.js status --file output/batch_XXX/batch-manifest.json
# 3. 获取下一条待处理JSON 格式,--with-script 附带脚本正文)
node .claude/skills/video-from-script/scripts/batch-pipeline.js next --file output/batch_XXX/batch-manifest.json [--with-script]
# 4. 标记状态(含元数据回写)
node .claude/skills/video-from-script/scripts/batch-pipeline.js mark \
--file ... --row <N> --status <completed|failed> \
[--manifest-path <path>] [--error <msg>] \
[--topic-a <方案A>] [--topic-b <方案B>] [--draft-name <草稿名称>] \
[--forward-copy <转发文案>] [--hashtags <话题>]
# 5. 重跑失败项
node .claude/skills/video-from-script/scripts/batch-pipeline.js retry-failed --file output/batch_XXX/batch-manifest.json
# 6. 导出最终表格(批次完成后)
node .claude/skills/video-from-script/scripts/batch-pipeline.js export --file output/batch_XXX/batch-manifest.json [--format csv|xlsx]
# 7. 批量重命名剪映草稿箱Mac 版:文件夹名 = 显示名,直接 mv
node .claude/skills/video-from-script/scripts/batch-pipeline.js rename-drafts --file output/batch_XXX/batch-manifest.json
```
**执行策略Orchestrator-Worker**
- **Orchestrator主 Agent**:读 batch-manifest 元数据,逐条处理每条视频
- **每条视频分两步**
1. **预处理**`next --with-script` 获取脚本 → 生成选题/转发文案/话题 → `mark --status processing` 回写元数据
2. **生产**spawn Worker 子 Agent处理完整视频流程分镜 → 生图 → 生视频 → TTS → 成片)
- **Worker子 Agent**独立上下文处理单条视频的完整流程。Worker 调用 `pipeline.js init` 时通过 `--tts-voice` 传入音色
- Orchestrator 上下文只存 batch-manifest 元数据,不读脚本正文
- 脚本正文通过文件路径传给 WorkerWorker 自行 Read
- 批量模式下人工确认环节自动跳过(`confirm --all`
## 批量完成后 — 导出表格
批次全部完成后,执行导出输出最终表格:
```bash
node .claude/skills/video-from-script/scripts/batch-pipeline.js export --file output/batch_XXX/batch-manifest.json
```
输出 CSV 表格,列:`选题一 | 选题二 | 脚本 | 账号 | 模式 | 音色 | 转发文案带话题 | 草稿名称 | 草稿地址`
- **选题一**列 = 方案A封面双句
- **选题二**列 = 方案B封面短标题
- **草稿名称**列 = `账号名_月日_序号_方案B`
- 导出文件命名:`账号名_MMDD_起号~止号.csv`,如 `执黑先行_0516_01~16.csv`(与 manifest 同目录)
- 导出后询问用户是否打包草稿到桌面
## 草稿箱改名
Mac 版剪映JianyingPro草稿箱显示名称 = `com.lveditor.draft/` 下的**文件夹名**。
**直接 `mv` 重命名文件夹即可**,不要改内部 JSON 文件(`draft_content.json``draft_meta_info.json` 等)。
草稿路径:`~/Movies/JianyingPro/User Data/Projects/com.lveditor.draft/`
```bash
# 改名示例
mv "~/Movies/JianyingPro/User Data/Projects/com.lveditor.draft/20260514123331fc3c6352" \
"~/Movies/JianyingPro/User Data/Projects/com.lveditor.draft/执黑先行_0514_14_造局者"
```
**草稿 = CapCut 剪映项目文件**,由 pipeline 的 `assemble` 阶段生成,输出到本地剪映目录。
# 参考文档
- [SKILL.md](.claude/skills/video-from-script/SKILL.md) — 主技能(强制规则、分镜规则、质量卡点、执行策略)
- [account-system.md](.claude/skills/video-from-script/references/account-system.md) — 账号规范
- [account-creation.md](.claude/skills/video-from-script/references/account-creation.md) — 账号创建 Q&A 流程
- [manifest-schema.md](.claude/skills/video-from-script/references/manifest-schema.md) — manifest 字段规范