Seedance 2.0 video generation via 火山引擎方舟 (ARK). 文生视频 / 图生视频 / 视频转视频 V2V, 多模态参考(images + videos + audio,最多 12 个文件),V2V 风格迁移,视频续写. CLI: ark-video / seedance2....
--- name: ark-video description: > Seedance 2.0 video generation via 火山引擎方舟 (ARK). 文生视频 / 图生视频 / 视频转视频 V2V, 多模态参考(images + videos + audio,最多 12 个文件),V2V 风格迁移,视频续写. CLI: ark-video / seedance2. USE THIS when user wants 生成视频 / 文生视频 / 图生视频 / 火山方舟视频 / doubao 视频 / generate AI video / text-to-video / image-to-video (first frame, first+last frame) / V2V style transfer / video editing / video extension / web-search-enhanced generation. 包含实战 prompt patterns(区别于通用 prompt 入门 skill): V2V Lock-Down Pattern(v2v 无显式 negative prompt 时用正面措辞反复重复锁死维度的工作流) + Pose-as-Prompt Movement Sheet(16 格灰度动作表解决 img2video 时序控制) + 画布节点 vs R2V 整片范式区别 + Apple cinematic 沉静低语风格. Triggers: ark-video, seedance, seedance2, sd2, 视频生成, 火山方舟, doubao 视频, V2V, 视频风格迁移, generate video, AI video, text to video, image to video. --- # ARK Video Generation (Seedance 2.0) ## Setup - API key: `$SEEDANCE_2_API_KEY` (fallback: `$ARK_API_KEY`) - CLI: `ark-video` (at `scripts/ark-video.py`, symlinked to `~/.local/bin/ark-video`) - Back-compat alias: `seedance2` 命令仍可用,指向同一个脚本 - No external Python dependencies — uses only stdlib (`urllib`, `json`, `base64`, `argparse`) ## CLI Usage ```bash # Text-to-video ark-video t2v "一只猫在弹钢琴" --duration 8 --ratio 16:9 # Image → video (first frame) ark-video i2v photo.jpg "camera slowly zooms out" # Image → video (first + last frame) ark-video i2v first.jpg last.jpg "smooth transition" # Multi-modal reference (images + videos + audio) ark-video ref "广告视频" -i product.jpg -i logo.png -v reference.mp4 -a bgm.mp3 # Edit existing video ark-video edit "把视频里的猫换成狗" -v source.mp4 -i dog.jpg # Extend / concatenate videos ark-video ext "镜头继续向前推进" -v clip1.mp4 -v clip2.mp4 # Query task status ark-video status cgt-20260316-xxxxx # Wait for completion + download ark-video wait cgt-20260316-xxxxx -o output.mp4 ``` ## Common Options | Flag | Default | Description | |------|---------|-------------| | `--model fast` | `2.0` | Use 2.0 fast (faster, cheaper) | | `--ratio` | `adaptive` | `16:9` `4:3` `1:1` `3:4` `9:16` `21:9` | | `--duration N` | `5` | 4-15 seconds, or `-1` for auto | | `--resolution` | `720p` | `480p` or `720p` | | `--no-audio` | audio on | Disable audio generation | | `--web-search` | off | Enable web search (t2v only) | | `--no-watermark` | watermark on | Remove watermark | | `-o FILE` | — | Download output to file | | `--wait` | — | Auto-wait for completion | | `--poll N` | `15` | Poll interval in seconds | ## Input Formats All media arguments accept three formats: 1. **Local file** — auto base64-encoded (e.g. `./photo.jpg`) 2. **Public URL** — passed through (e.g. `https://example.com/img.jpg`) 3. **Asset URI** — virtual avatar from 方舟 (e.g. `asset://asset-20260224-xxxxx`) ## Workflow Pattern Typical generation workflow: 1. Create task → get `task_id` 2. Poll status every 15-30s until `succeeded` 3. Download video (URL expires in 24h) The `--wait` flag or `ark-video wait` command handles steps 2-3 automatically. ## Generation Modes — Decision Guide | Need | Command | Key constraint | |------|---------|----------------| | Pure text prompt | `t2v` | Supports `--web-search` | | Control first frame precisely | `i2v` (1 image) | 1 image only | | Control first + last frame | `i2v` (2 images) | Exactly 2 images | | Style/character/scene references | `ref` | Up to 9 images + 3 videos + 3 audio | | Modify existing video | `edit` | Source video + reference images + instruction | | Stitch / continue videos | `ext` | Up to 3 videos, total ≤15s | ⚠️ `i2v` (first/last frame) and `ref` (reference) modes are **mutually exclusive** — do not mix roles. ## API Details For full API spec (parameters, constraints, pixel dimensions, rate limits), read `references/api-spec.md`. 实战 prompt 模式完整模板 → `references/prompt-patterns.md`: - **i2v 多段动作叙事**(Narrative Multi-Beat):单图驱动 8-12s 动作链 - **V2V 持续层 + 拍点层**(Continuous + Beat-Trigger):原片不动、叠特效层(HUD/UI/AR),按时间码 0.04s 精度触发事件 - **空间区域分锁**(Spatial Region Lock):单帧画面里只动一部分(局部绿幕、窗外景色、画中画),用 SCENE GEOMETRY + Region A/B/C 索引模板 --- ## Prompt Craft > **通用 prompt 方法论**(敏感度模型、7层结构、人物/场景/动作模板)→ 见 `prompt-craft` skill > 本节只覆盖 Seedance 2.0 特有的 prompt 技巧。 ### Seedance 特有 Prompt 技巧 **多模态参考 > 文字描述**:有参考图/视频时,文字 prompt 只负责描述“这次要做什么变化”,不要重复参考素材已经表达的内容。 **运动描述词**:Seedance 对物理运动词汇敏感。用动词+方向+速度,不用形容词。 - ✅ "camera pushes forward through the corridor, accelerating" - ❌ "dynamic cinematic movement" **音频引导**:用 `-a` 传入参考音频时,prompt 里不需要再描述音乐风格——模型会从音频推断节奏和情绪。 **否定约束**:Seedance 对否定词的响应比图片模型更弱。最多1-2条,或者干脆不写。 --- ### 运动品牌广告理论(案例研究) > 来源:2026-03-29 实拍分析。不要背 prompt,要理解结构。 ### 核心叙事结构:**能量积累 → 品牌具象化 → 产品揭示** 这是运动广告的经典三段式: 1. **能量蓄积**:用环境/运动员/场景碎片建立情绪张力 2. **品牌具象化**:品牌符号(logo/swoosh)作为物理实体进入画面,承载前段积累的能量 3. **产品落版**:能量收束,产品完整亮相,品牌 + 产品同框收尾 ### 运镜理论:POV 追随镜头(贴身推进) - **摄影机=品牌意志**:不是旁观者,而是和品牌符号同速运动 - 贴近主体高速前推(而非拉远俯瞰),制造「穿越空间」的侵入感 - 一镜到底感比实际连续更重要——**感知上的连贯** > 物理上的无剪辑 - 沿途元素(跑道、灯光、运动员特写)是「被切开的空间」,而不是背景板 ### 品牌符号的物化方式 品牌 logo 出现在视频里有两种层次: - **低层次**:片尾贴一个静态 logo(广告惯例) - **高层次**:logo 成为有物理质感的能量实体,「吸附」环境纹理,像刀切开空间 Prompt 中要明确赋予 logo **质感**(金属/空气刃/光轨)和**行为**(飞出/切开/吸附),而不只是"出现"。 ### 声音设计原则:**纯音效,零 BGM** 反直觉但有效:去掉背景音乐,只保留现场音效(呼吸、鞋底摩擦、面料抖动、空气断裂),反而更有冲击力。 原因: - BGM 把情绪「外包」给音乐,削弱画面本身的力量 - 纯音效让观众感觉「在场」,提升真实感和沉浸度 - Seedance 的原生音频在这类场景表现好,值得利用 **Prompt 写法**:明确排除"背景音乐/BGM",列举保留的具体音效类型。 ### 材质感 = 可信度 产品广告的说服力来自**材质感**的堆叠: - 鞋底橡胶纹路、面料纤维、气垫结构 - 光打在材质上的反射/折射 - 运动员皮肤/汗水/表情特写 Prompt 中不要只说「展示一双鞋」,要说出**你要看到什么材质反应**。 ### Prompt 构建模板 ``` [质感定位] + [运镜方式] + [品牌符号行为] + [场景碎片列举] + [产品落版] + [声音指令] ``` 示例填法: - 质感定位:「电影级/超写实/高速感」 - 运镜方式:「第一人称追随镜头/贴着主体前冲/一镜到底感」 - 品牌符号行为:「像XXX切开空间/吸附画面碎片/最终具象成产品」 - 场景碎片:越具体越好(球场灯光/跑道线/运动员面部/鞋底特写) - 声音指令:「不要BGM,只保留[具体音效]」
don't have the plugin yet? install it then click "run inline in claude" again.