Seedance 多模态视频 (Multimodal Video)
The Seedance node with nine image slots, three video slots, and a secret prompt grammar
- image1
- image2
- image3
- image4
- image5
- image6
- image7
- image8
- image9
- video1
- video2
- video3
- audio1
- audio2
- audio3
- api_config
- video
- video_url
- task_id
- response
Seedance 多模态视频 (Multimodal Video) is where Seedance 2.0 stops being a text-to-video box and starts acting like a storyboard editor. It accepts up to 9 images, 3 videos, and 3 audio clips as references - and the clever part is how you talk about them. In the prompt you don't say "use the image," you literally type @Image 1, @Video 2, @Audio 1, and the model knows which reference you mean. That single feature turns the node from "I hope the model figures out my intent" into "here is exactly which character, which clip, and which sound goes where."
The material slots are the input list, so here's the short version:
image1…image9- reference images, addressed as@Image N.video1…video3- reference MP4s, ≤50 MB each, addressed as@Video N.audio1…audio3- reference audio, ≤50 MB, addressed as@Audio N.
Then the usual generation controls: model (six Seedance 2.0 variants), prompt (up to 20,480 chars - this is where @Image 1 lives), seconds, resolution, ratio, generate_audio, seed, api_config, skip_error. Outputs are the standard video / video_url / task_id / response.
How the numbering works (read this, it's the gotcha)
Reference numbering is by connected slot order, compacted. If you connect image1 and image3 but leave image2 empty, the pack doesn't keep the gap - it renumbers them as @Image 1 and @Image 2 and logs a note. So if your prompt references @Image 3 and you only wired two slots, the model has no idea what you're talking about. Keep your references densely packed and match the numbers to what you connected. The videos and audios follow the same rule for @Video N / @Audio N.
Mechanically nothing is exotic: each connected image/video/audio is uploaded to the api.seedance.nz gateway, folded into the request, and the task runs through the same submit → poll → download pipeline as every other node in this pack, with a progress bar and the client-side retry/download-fallback logic doing its thing. You need at least one reference material - this node's whole identity is "reference stuff."
Installing it
It's the same T8mars/ComfyUI_Seedance pack as everything else: ComfyUI Manager → search ComfyUI Seedance, or:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/ComfyUI_Seedance.git
python -m pip install -r ComfyUI_Seedance/requirements.txt
Restart, look under Seedance. The dependency is a single requests line; the heavy lifting happens server-side, so you need an API key (from api.seedance.nz via the Seedance API Config node or SEEDANCE_API_KEY), not a GPU.
Where people get burned
- Referencing a slot you didn't connect, or connecting slots with gaps - both silently do the wrong thing. Count your slots.
- Upload bandwidth. Nine images plus video plus audio is a lot of upload before generation even starts, and the gateway throttles per-token upload rates; the client waits and retries, so expect a slow start on big multi-reference jobs. Trim media before you wire it in.
- Expiring result links. Save the
videooutput, not just the URL.
And the standing fine print: everything you feed this node - including your reference videos and audio - leaves the machine for a third-party reseller endpoint, and per-render cost is real. Multimodal is powerful, but it's the most expensive mode in the pack for a reason.
Inputs (24)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | seedance-2.0-standard-multi | standard/fast/mini = quality tiers; 'global-' models run on overseas infrastructure. | standard/fast/mini 为档位,带 global- 的为海外版通道。 |
| prompt | STRING | Text prompt, up to 20480 chars. In multimodal mode you can reference materials as @Image 1 / @Video 1 / @Audio 1. | 文本提示词,多模态可用 @Image 1、@Video 1 指代第几个素材。 | |
| seconds | COMBO | 5 | Video duration in seconds; -1 lets the model decide. | 视频时长(秒),-1 表示模型智能选择。 |
| resolution | COMBO | 720p | 1080p/2k/4k are upscaled output tiers; native1080p/native4k are Standard-tier only. | 1080p/2k/4k 为超分输出档,native 档仅 Standard 模型支持。 |
| ratio | COMBO | adaptive | Aspect ratio; adaptive follows the input material. | 画面比例,adaptive 为自适应。 |
| image1opt | IMAGE | Reference image, addressed as @Image 1 in the prompt. | 提示词中用 @Image 1 指代。 | |
| image2opt | IMAGE | Reference image, addressed as @Image 2 in the prompt. | 提示词中用 @Image 2 指代。 | |
| image3opt | IMAGE | Reference image, addressed as @Image 3 in the prompt. | 提示词中用 @Image 3 指代。 | |
| image4opt | IMAGE | Reference image, addressed as @Image 4 in the prompt. | 提示词中用 @Image 4 指代。 | |
| image5opt | IMAGE | Reference image, addressed as @Image 5 in the prompt. | 提示词中用 @Image 5 指代。 | |
| image6opt | IMAGE | Reference image, addressed as @Image 6 in the prompt. | 提示词中用 @Image 6 指代。 | |
| image7opt | IMAGE | Reference image, addressed as @Image 7 in the prompt. | 提示词中用 @Image 7 指代。 | |
| image8opt | IMAGE | Reference image, addressed as @Image 8 in the prompt. | 提示词中用 @Image 8 指代。 | |
| image9opt | IMAGE | Reference image, addressed as @Image 9 in the prompt. | 提示词中用 @Image 9 指代。 | |
| video1opt | VIDEO | Reference video (MP4 <=50MB), addressed as @Video 1. | 参考视频,提示词中用 @Video 1 指代。 | |
| video2opt | VIDEO | Reference video (MP4 <=50MB), addressed as @Video 2. | 参考视频,提示词中用 @Video 2 指代。 | |
| video3opt | VIDEO | Reference video (MP4 <=50MB), addressed as @Video 3. | 参考视频,提示词中用 @Video 3 指代。 | |
| audio1opt | AUDIO | Reference audio (<=50MB), addressed as @Audio 1. | 参考音频,提示词中用 @Audio 1 指代。 | |
| audio2opt | AUDIO | Reference audio (<=50MB), addressed as @Audio 2. | 参考音频,提示词中用 @Audio 2 指代。 | |
| audio3opt | AUDIO | Reference audio (<=50MB), addressed as @Audio 3. | 参考音频,提示词中用 @Audio 3 指代。 | |
| generate_audioopt | BOOLEAN | true | Generate voice-over / sound effects. | 是否生成配音与音效。 |
| seedopt | INT | -1-1–2147483647 | -1 = random seed. | -1 表示随机种子。 Fixed reuses the cached result while all inputs stay unchanged; randomize/increment/decrement starts a new execution. | Fixed 在输入不变时复用缓存;随机、递增或递减会触发新任务。 |
| api_configopt | SEEDANCE_CONFIG | Connect a 'Seedance API Config' node; falls back to SEEDANCE_API_KEY env var. | |
| skip_erroropt | BOOLEAN | false | On failure return a placeholder error video instead of stopping the workflow. | 失败时输出占位错误视频而不中断工作流。 |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_url | STRING | — |
| task_id | STRING | — |
| response | STRING | — |