15 KiB
| name | description |
|---|---|
| videogen | 用豆包 Seedance 2.0 Fast 生视频(`seedance` tool)。**任何生视频任务调 tool 前必须 load 本 skill**。触发词:视频 / 动画 / 动起来 / 做个 video / 做段视频 / 出段视频 / 生成视频 / mov / mp4 / 短片 / 镜头 / 运动镜头 / 演示视频 / 动效。核心:视频比图贵 10 倍(¥1.86-¥4+ / 段),且要等 Fast 30-90s / Pro 2-3min,问清楚再画 + 强制确认。 |
Videogen
把"我想要个视频"变成一段能用的视频。流程:
诊断模糊度(6 维) → 一次性给推断 + 待确认项 → 用户拍板维度 → 装配最终 prompt + 参数 → ⛔ 把 prompt+参数完整贴给用户看 + 问改不改 → 用户明确确认后 → 调 seedance
每次 seedance 调用 ¥1.86 起(480p 4s)→ ¥4.00 起(720p 5s)→ ¥12+(720p 15s),且要等 30-90 秒才出片。贵 + 慢 = 试错代价高,必须问清楚再调。
⛔ 调 tool 前的强制门(铁律,比 imagegen 更严格)
任何情况下,在 seedance tool call 发出去之前,都必须先把最终装配好的 prompt(包括 resolution / ratio / duration / watermark 参数)用对话消息明文展示给用户,然后问"这样画?要改什么?"并 ⛔ BLOCKING 等用户明确回复。
- 用户回复 "可以" / "OK" / "就这样" / "对" / "嗯" / "画吧" / "出片吧" / 简单确认 → 可以调 tool
- 用户回复 "把 X 改成 Y" / "时长改 8s" / "镜头换成 Y" → 改完后再次贴最终 prompt + 再次等确认
- 用户沉默 / 长时间不回 / 追问别的事 → 不算确认,继续等,不要自作主张
- 用户回 "看起来不错" / "差不多" / 模棱两可 → 主动追问一句"这就开烧 ¥X?",拿到明确"是"再调
为什么比 imagegen 还严:视频单价 ¥4 起,比图贵 10 倍以上;一次失败相当于 18 张错图;且要等 Fast 30-90s / Pro 2-3min,用户改方向的等待代价也很高。装配 prompt 不等于授权调用 —— 装配是模型脑内运算,授权要落到用户的"嗯,画吧"上。
何时用本 skill
- 用户明确说"做个视频" / "出段视频" / "动画" / "动起来" / "镜头扫过" / "演示视频"
- 用户原本要 ppt / 海报 / 申报书,主动问能不能配段视频(此时介绍价格 + 时长引导决策)
- 用户拿到 seedream 生的静态图后说"想动起来" / "加点运动" — 注意 phase 1 只支持 t2v 文生视频,不支持从已有图生视频(i2v),要告诉用户这点
何时不走本 skill
- 用户没主动要视频(别为"丰富回复"装饰性生视频 —— 比图更严重的浪费红线)
- 用户要的是流程/结构动效(节点-箭头-步骤逐次出现)→ 这是 ppt 动画 / mermaid + ppt 转场的事,不是视频
- 用户要的是实拍素材 / 已有视频剪辑 → seedance 是 AI 生成,不是素材库;告诉用户走 unsplash / pexels 等
- 用户有具体参考视频说"按这个改" → phase 1 不支持 i2v / v2v,告诉用户先用文字描述
关键岔路:seedream vs seedance vs mermaid
默认倾向 seedream / mermaid(静态够用就别上动态):
- 用户要的是单张图(封面 / 配图 / 示意图)→ seedream
- 用户要的是结构/流程(节点关系 / 时序 / 架构)→ mermaid
反向选 seedance(满足任一):
- 用户明确说视频/动画/动起来/做个 video(而非"画一张" / "做个图")
- 内容本身离不开运动:水流 / 火焰 / 旋转 / 镜头扫过场景 / 角色动作
- ppt 引子页要视觉冲击 + 时间维度(2-3s 短动画开场)
- 用户先做了静态图,明确说"想动起来" / "加运动感"
模糊时主动问一句:
你这是想要 一张静态图(seedream,¥0.22,3-5 秒出图),还是 一段短视频(seedance,¥4 起,等 Fast 30-90s / Pro 2-3min)?静态图够的话省钱省时间。
诊断模糊度 — 六维清单(运动是新增的必填维)
| 维度 | 缺失信号 |
|---|---|
| 主体 What | "做个混凝土视频" → 视频里有什么?试块 / 楼板 / 工程现场 / 微观裂纹? |
| 运动 Motion ⭐ | 视频特有,必问 — 主体在做什么?(浇筑 / 凝固 / 裂开 / 旋转 / 镜头扫过)。没运动 = 应该走 seedream。 |
| 场景 Where | 工地 / 实验室 / 抽象空间 / 极简白底? |
| 镜头 Camera | 镜头怎么动?(固定 / 跟随 / 推近 / 拉远 / 环绕 / 俯视下降)。AI 视频对镜头描述很敏感,不写默认随机晃动 |
| 风格 Style | 写实摄影 / 工业 CG / 扁平 2D 动画 / 水墨 / 赛博朋克 / 学术示意? |
| 时长 + 分辨率 + 比例 | 时长:4-15s,默认 5s(短=便宜)。分辨率:fast 仅 480p/720p,默认 720p。比例:ppt 16:9 / 短视频 9:16 / 头像 1:1。 |
评估规则:
- 6 维填齐 / 缺 ≤1 → 可以直接装配 prompt 调用
- 运动维不能省 —— 没运动就劝退到 seedream(¥0.22 vs ¥4,差 18 倍)
- 缺 2 维及以上 → 先问再画
- 时长、分辨率、比例三选一缺即追问;没说时长就默认 5s 是错的,要问"4s 短演示 / 5s 默认 / 8s 中等 / 12s+ 长镜头?",时长直接决定钱:
cost ≈ ¥4 × duration/5 × resolution_factor
一次性给推断 + 待确认项(不要一个个问)
模糊时一次摆出推断,让用户改或确认:
你说"做个混凝土浇筑的视频",我打算这样画:
- 主体:工地上正在浇筑混凝土的楼板
- 运动:混凝土从泵车软管流出注入模板,工人手持振动棒来回插入
- 场景:工地中景,远处有塔吊
- 镜头:固定俯视 + 缓慢推近模板中心
- 风格:写实工程纪录片
- 时长 / 分辨率 / 比例:5s / 720p / 16:9(ppt 用) — ¥4.00,等 Fast 30-90s / Pro 2-3min
这样画可以吗?或者告诉我:想突出什么?(浇筑工艺细节 / 振动棒动作 / 大场面气势 / 慢动作)
装配 prompt — 用户拍板维度后
把前 5 维拼成自然中文 prompt 文本(运动 / 镜头是新增重点),时长 / 分辨率 / 比例走参数:
工地上正在浇筑混凝土的楼板,混凝土从泵车软管流出注入模板,
工人手持振动棒来回插入,固定俯视镜头缓慢推近模板中心,
写实工程纪录片风格,正午阳光
要点:
- 运动描述具体 —— "流动 / 旋转 / 推近 / 倾倒",不要"动起来"这种无信息词
- 镜头单独成句 —— "固定俯视 / 缓慢推近 / 环绕一周 / 跟随主体平移";不写默认镜头随机晃动
- 不要堆形容词 —— 模型理解动作 > 形容词
- 不要写否定 —— "no shaking, not blurry" 反向起效;Seedance 不支持 negative prompt
- 主体放最前,镜头 / 风格放后
⛔ 调 tool 前再过一道:把最终 prompt + 参数贴给用户
装配完后立即用对话消息把最终结果贴出来 + 等用户明确确认。装配 ≠ 授权调用。
格式建议(代码块包起来,清晰可读):
我准备调 seedance,参数如下:
prompt: 工地上正在浇筑混凝土的楼板,混凝土从泵车软管流出注入模板, 工人手持振动棒来回插入,固定俯视镜头缓慢推近模板中心, 写实工程纪录片风格,正午阳光 resolution: 720p ratio: 16:9(ppt 横版) duration: 5 秒 watermark: false generate_audio: false(静音视频,后期 ppt 加 BGM) 预计花费: ¥4.00 预计等待: 30-90 秒这样开烧?要改什么?(改 prompt 文字 / 改时长 / 换比例 / 降到 480p 省钱 / 开 audio 加 AI 配音)
然后 ⛔ BLOCKING:等用户明确回复。
为什么强调 —— ¥4 一段视频,用户没机会在调用前看清楚 prompt 的话,生成后只能事后看视频反推哪句话错了,改一次又是 ¥4 + 1.5 分钟。一次对话往返(免费)避免一次错片(¥4 + 90s 等待),是最划算的强制门。
参数取舍
resolution(分辨率)
| 选项 | 像素 (16:9) | 适用场景 | 与 720p 价格比 |
|---|---|---|---|
480p |
854×480 | 短演示 / 邮件附件 / 低带宽预览 / 省钱档 | ~0.47x(便宜一半) |
720p(默认) |
1280×720 | ppt 嵌入 / 公众号 / 一般演示 | 1.0x(¥4 / 5s) |
1080p |
1920×1080 | fast 不支持,会报 [Error];仅 pro 可用 | — |
默认 720p 是合理的"够用挡";预算紧 / 试效果用 480p;fast 上限就是 720p,用户要 1080p+ 要切到 pro variant(yaml 里没配 pro 时直接告诉用户)。
duration(时长)
| 时长 | 适用 | 720p 16:9 估价 |
|---|---|---|
| 4s | 最短,纯展示 / 转场 / loop | ~¥3.20 |
| 5s(默认) | 标准短视频 / ppt 引子 | ~¥4.00 |
| 8s | 中等叙事 / 完整动作 | ~¥6.40 |
| 12s | 长镜头 / 复杂场景 | ~¥9.60 |
| 15s | 上限 / 完整 plot | ~¥12.00 |
线性扩展(每秒 ~¥0.8 @ 720p);短=便宜=快,无明确叙事需求默认 5s。4s 是最低,< 4 报错。
ratio(比例)
| 比例 | 适用 |
|---|---|
16:9(默认) |
ppt / 横版演示 / 一般用途 |
9:16 |
短视频 / 抖音 / 小红书 / 手机海报 |
1:1 |
社交头像 / Instagram |
4:3 |
老电视 / 复古 |
3:4 |
杂志竖版 |
21:9 |
电影超宽 / Banner |
adaptive |
模型自己选 |
默认 16:9 适合 90% ppt / 申报 / 公众号场景。比例错了后期裁切很难还原构图 —— 不问用途默认 16:9 也比默认 1:1 强(seedream 那边有 1:1 误区,这里别犯)。
watermark
| 默认 | 何时改 |
|---|---|
false |
默认无水印(申报 / ppt / 客户交付都不该带);仅当用户明确说"加水印"才传 true |
generate_audio(Seedance 2.0 旗舰特性)
| 默认 | 何时开 |
|---|---|
false |
默认关 —— 控成本 + 大多数 ppt / 申报场景用静音视频(后期配音 / 当背景视频)。模型还要算音轨,开启 cost 会高于纯视频估算(具体增幅未实测,首次开时盯一下返回的 tokens)。 |
true |
用户明确要带声音的视频:广告 / 短剧 / 角色对白 / 配乐场景。调用前必须告诉用户"开启 audio,cost 会高于估算 ¥X"并等确认。 |
prompt 写法变化:开 generate_audio=true 时,prompt 里要描述声音是什么(背景音 / 音效 / 对白台词具体说啥 / 音色),否则模型随机配,效果难控:
... 背景音「鲜切现摇」,女生音色,轻快鼓点卡点
参考火山方舟官方 r2v 例子(r2v_tea_*):每个镜头段都明示"背景音 XX / 卡点 XX / 音效 XX"。不写 = 不可预期。
调用范式
前置条件:用户已经看过最终 prompt + 所有参数,明确回复"可以" / "OK" / "出片吧" 之类。没看到这个确认就不要调。
seedance 是 tool 不是 skill 函数,直接调,不要 run_python 包一层:
seedance(
prompt="工地上正在浇筑混凝土的楼板,混凝土从泵车软管流出注入模板,工人手持振动棒来回插入,固定俯视镜头缓慢推近模板中心,写实工程纪录片风格,正午阳光",
resolution="720p", # 可省,走默认
ratio="16:9", # 可省
duration=5, # 可省
watermark=false, # 可省
)
调用是同步阻塞 Fast 30-90s / Pro 2-3min —— tool 内部 submit 后轮询直到 succeeded,期间 LLM 卡住。这不是 bug,告诉用户"提交了,等 30-90 秒"再耐心等返回。
返回串首行是 [seedance] model=... · resolution=... · ratio=... · duration=Xs · cost=¥... · elapsed=...s —— 原样保留给用户(SPA 会 parse 挂徽章)。第二行 saved: <相对路径> 是产物路径,告诉用户。
产物自动落 <task_dir>/videos/<时间戳>-<rand>.mp4 + 同名 .meta.json(prompt / 参数 / cost / tokens / cgt_id 全 snapshot)。
失败 / 不满意后怎么办
不要原 prompt 重发!那是 ¥4 一发的浪费。
| 现象 | 原因 | 解药 |
|---|---|---|
| 主体动作不对 | 运动描述太抽象("动起来"→ 无信息) | 用具体动词:"从软管流出 / 来回插入 / 缓慢上升" |
| 镜头不稳 / 随机晃动 | 没指定镜头 | 加"固定镜头" / "缓慢推近" / "环绕一周";尤其要明确镜头是否固定 |
| 主体被切掉 | 比例与构图不匹配 | 改 ratio 或在 prompt 里写"全景 / 中景 / 主体居中" |
| 风格不对 | 风格词位置太靠后 / 缺少 | 风格词放 prompt 前 1/3:"写实工程纪录片风格,xxx" |
| 时长不够讲完动作 | duration 太短 | 4s 适合单一动作,多步骤动作至少 8s |
[Error] seedance API 报错(传 1080p 时) |
fast 不支持 1080p+ | 降到 720p 重试;或换 pro variant(yaml 加配置) |
[Error] seedance 轮询超时 |
队列拥堵 / 服务异常 | 等几分钟再试;cgt_id 在 24h 内仍可手工 GET 拉结果 |
[Cancelled] |
用户点了停止 | 告诉用户:远端任务可能仍在跑,Volcengine 失败/成功才计费,若仍出片可能产生费用 |
| 出现奇怪文字 | Seedance 文字渲染不稳 | prompt 里不要要求画文字 / 字幕;字幕后期 ppt 加 |
先口头跟用户对齐改哪一维,再发新调用 —— 不要"再画一段试试"连续烧钱。
产物处理
生视频完成后:
- 把
saved: videos/xxx.mp4路径告诉用户(SPA 会自动 inline 播放器,点击可全屏) - 如果是做 ppt,提醒用户
python-pptx可以add_movie嵌入 mp4(但导出 pdf 时视频会丢,改截关键帧 + 链接) - 用户说"换一段" → 走上节的"对齐改哪一维"流程,不要默认重发
- 用户说"再来几段备选" → 先确认:"备选 N 段会花 ¥{4 × N} + 等 {N × 60}s,确认?"
反模式
- ❌ 没把最终 prompt+参数贴给用户看就直接 tool call —— 比 imagegen 更严格的铁律(¥4 vs ¥0.22)
- ❌ 用户回"看起来不错"就当确认调 tool —— 模棱两可必须追问到明确"是 / OK / 画吧"
- ❌ 运动维度跳过(=应该走 seedream 却走 seedance) —— 浪费 18 倍价钱
- ❌ 用户没主动要视频就装饰性生成
- ❌ 用户说"做个动画" 直接拿这 4 个字当 prompt 调用 —— 六维清单至少先问 2 轮
- ❌ 一个个问"主体?""镜头?" —— 一次性摆推断 + 让用户改
- ❌ 不问时长直接默认 5s —— 5s 是合理默认但要让用户知道有 4-15s 区间;长视频(>8s)开调用前必须强调成本
- ❌ 不问分辨率上 720p —— 试效果阶段先 480p(便宜一半)
- ❌ 同一目的不满意连续重发 —— 1 次错 = ¥4 + 60s,2 次连发 = ¥8 + 2min,先校准 prompt 再调
- ❌ prompt 写"动起来 / 有动感" —— Seedance 不靠形容词,要具体动词
- ❌ prompt 里写否定 "no shaking, not blurry" —— Seedance 不支持 negative,反向起效
- ❌ 让用户在 seedream / seedance 之间默默替他决定 —— 模糊就一句话问明白
- ❌ phase 1 拿用户已生成的图试图 i2v —— 当前不支持,明确告诉用户
- ❌ 用户没说要声音就把
generate_audio设 true —— 多花钱且大概率配出不合用户预期的随机音效;开它前必须问"要 AI 配音吗?cost 会高于估算" - ❌ 用
run_python调requests裸打豆包 API —— 走seedancetool(已封装异步轮询 + 计费 + 落盘 + meta + cancel)
输出
调完告诉用户:
- 文件相对路径(
videos/xxx.mp4) - 本次成本(¥X.XX,从 banner 抽)
- 用的 prompt 摘要(主体 / 运动 / 镜头 3 件套)
- 一句"要换方向 / 调镜头 / 加长时长再来一段吗?"