Seedance 视频工作流
把用户可见流程压缩为选择题,把导演规划、提示词编译、任务恢复、审计和合成放到后台执行。
交互规则
- 每次只问一个问题。
- 优先使用界面中的选择题工具;不可用时,给出
1/2/3编号选项并等待用户选择。 - 除以下三类不可枚举数据外,不问开放式问题:
- API Key:只允许用户在本地隐藏输入,绝不要求在聊天中粘贴。
- 内容载荷:允许一行结构化简述、一个本地文件路径或一个 URL。
- 用户明确选择“自定义”后必需的名称、路径或约束。
- 不一次展示整份问卷,不把导演、审计或提示词细节丢给用户决定。
- 不在用户完成前一步前跳到下一步。
- 所有付费生成前都显示预计调用次数,并用选择题取得明确确认。
详细选项和推荐默认值见 questions.md。严格按顺序提问。
第一步:配置 Seedance API
先运行:
node scripts/configure-api-key.mjs status seedance
以当前 Skill 目录为工作目录执行命令。
- 如果已存在可用凭据,询问“使用现有凭据 / 重新配置 / 取消”。
- 如果不存在,询问“保存到 macOS 钥匙串 / 使用现有环境变量 / 取消”。
- 用户选择本地配置时,让用户本人在本地终端运行:
node scripts/configure-api-key.mjs set seedance
暂停流程,等用户选择“已配置 / 改用环境变量 / 取消”。不要代替用户输入、显示、记录或转述密钥。
非 macOS 环境使用 SEEDANCE_API_KEY 或 ARK_API_KEY 环境变量。
第二步:采集内容
先询问内容来源:
- 一行结构化简述
- 本地
.txt或.md文件 - URL
选择一行简述时,只要求填写:
主体|发生什么或要讲什么|希望观众最终记住什么
这是唯一的内容开放输入。选择文件或 URL 时,只采集路径或链接,然后读取实际内容;无法读取时给出“重试 / 改用一行简述 / 取消”。
第三步:逐项选择
依次采集:
- 内容类型
- 传播目标
- 目标受众
- 时长
- 画幅
- 调性家族及具体预设
- 声音方案
- 生成质量
- 审阅模式
使用 questions.md 的选项、说明和映射值。用户未明确选择前不要猜测。
如果声音方案选择 doubao-tts,在声音选择完成后运行:
node scripts/configure-api-key.mjs status tts
- 凭据不存在时,让用户选择“保存到 macOS 钥匙串 / 使用环境变量 / 改用 Seedance 原生声音”。
- 本地保存时,让用户本人在终端运行
node scripts/configure-api-key.mjs set tts。 - 暂停并等待“已配置 / 改用环境变量 / 改用 Seedance 原生声音”。
- 不得把 Seedance 凭据自动当成豆包 TTS 凭据;两套服务分别检查。
- 非 macOS 环境使用
DOUBAO_TTS_API_KEY或VOLCENGINE_TTS_API_KEY。也兼容 AppID 与 Access Token 环境变量组合。
第四步:后台导演规划
读取:
- project-spec.md
- director-policy.md
在当前工作区创建:
.seedance-workflow/<project-slug>/
├── project.json
├── director-plan.json
├── generation-state.json
├── audio-state.json
├── audit-report.json
├── assets/
│ ├── references/
│ ├── source/
│ └── final/
├── work/
└── exports/
不要把 API Key 写入任何项目文件。
根据用户选择自动完成:
- 内容提炼和事实风险标记
- 叙事结构、旁白稿和节奏
- 风格圣经和连续性约束
- 4–15 秒逐镜头规划
- Seedance 结构化提示词
- 豆包 TTS 旁白文本、段落起始时间、音色和语速
- 每个镜头的硬性通过条件和淘汰条件
运行:
node scripts/workflow.mjs validate <project.json>
node scripts/workflow.mjs estimate <project.json>
node scripts/workflow.mjs dry-run <project.json>
修复所有验证错误后再继续。
第五步:生成
向用户显示:
- 总时长、镜头数和画幅
- 分辨率、每镜头候选数、最大重试数
- 最少生成调用数和理论最大生成调用数
- 豆包 TTS 段数、旁白字符数和音色(若启用)
- 是否缺少参考图或音乐
- 事实、肖像、商标或版权风险
只提供三个选择:
- 开始付费生成
- 只保存方案
- 取消
仅在选择“开始付费生成”后运行:
node scripts/workflow.mjs render <project.json> --confirm-submit
如果选择了 doubao-tts,Seedance 视频任务完成后运行:
node scripts/workflow.mjs tts <project.json> --confirm-submit
这一步必须由豆包 TTS 远程生成旁白。禁止用 macOS 系统语音、say、本地 TTS 模型或占位音频冒充豆包 TTS。ffmpeg 只可用于延时、混音、响度处理和封装。
不得自行增加并发、候选数或重试预算。任务中断后运行同一命令续跑,不重复提交已有任务。
第六步:后台审计
读取 audit-policy.md。
先运行技术审计:
node scripts/workflow.mjs audit <project.json>
再使用可用视觉能力检查每个候选的首、中、末帧。把结论写入 audit-report.json,区分:
hard_reject:违反必需条件、结构明显变形、错误人物或物体、乱码、水印、损坏文件。retry:提示词可修复且未超过max_retries。review:审美或事实无法自动确认。pass:技术和语义检查均通过。
重试只允许修改失败相关字段,不要整体重写已经通过的镜头。
第七步:合成和交付
锁定每个镜头的最佳候选后运行:
node scripts/workflow.mjs assemble <project.json>
node scripts/workflow.mjs audit <project.json> --final
doubao-tts 模式必须先存在状态为 ready 的 audio-state.json,合成器才可继续。音乐或 SRT 若有则加入对应轨道;缺失时明确标记,不得伪称已经完成。
最后只向用户报告:
- 成片路径
- 通过、重试和人工复核的镜头数
- 实际 Seedance 调用数
- 未解决风险
安全与范围
- 不在聊天、日志、JSON、命令参数或错误信息中显示任何 API Key 或 Access Token。
- 不把“导出 4K”描述成 Seedance 原生 4K;当前工作流以 API 实际返回规格为准。
- 涉及真人时要求可验证授权;没有授权时改用非真人方案。
- 不让视频模型生成正式标题、字幕或 Logo;后期叠加这些元素。
- 不自动发布到任何平台。
- 不保留临时服务器、浏览器、监听器或其他后台进程。