Seedance – Image to Video (Reference)
Seedance Reference Video
- reference_image_1
- reference_image_2
- reference_image_3
- reference_image_4
- reference_video
- reference_audio
- video
- last_frame
- frames
- video_url
- video_path
- last_frame_url
The reference node is the one that does what style cards and character sheets only pretend to do. Instead of locking your image into a specific frame position, it lets you hand Seedance up to four images that guide the look and subject of a video - a character here, an environment there, a whole art style on top - and the model composes a fresh shot from the mix. No frame-position locking, which is the whole point: the reference isn't the first frame, it's the influence.
Like the rest of this pack, it's a wrapper around ByteDance's closed Seedance 2.0 model on the BytePlus ARK API. Your reference images get base64-encoded, tagged with a reference_image role, and the prompt tells the model how to combine them. There are no local weights involved, and every call is metered.
The part that makes it tick: [Image N] tokens
Each reference image has a number, and you address them inside the prompt. The default prompt is the best tutorial the pack will ever give you:
"A boy wearing glasses and a blue T-shirt from [Image 1] and a corgi dog from [Image 2], sitting on the lawn, in 3D cartoon style"
That's it - that's the whole interaction model. reference_image_1 is required and maps to [Image 1]; reference_image_2, _3, and _4 are optional. (The README says "one to three," but the shipped code supports four sockets and the prompt tooltip says [Image 1-4] - the code wins, you have four.)
The classic moves:
- Character from one, setting from another. Reference image 1 is your person, image 2 is the location, prompt says "the woman from [Image 1] walking through [Image 2]."
- Style transfer. One reference image carrying a specific art direction, and the prompt asks for everything "in the style of [Image 1]."
- Mix and match. This is the node that lets you fuse a face from one photo with a costume from another without either being locked to frame one.
There are URL overrides (ref_url_1 through ref_url_4) if an image is already hosted, plus optional reference_video / reference_audio sockets referenced as [Video 1] / [Audio 1] - so a reference video can carry the motion feel while the images carry the look.
Everything else is the pack standard: prompt, ratio (16:9 default), duration (4–15s), resolution, generate_audio, watermark, return_last_frame, poll_interval, max_wait. Outputs are the usual six: video, last_frame, frames, video_url, video_path, last_frame_url.
Install
ComfyUI Manager, search comfyui-seedance-nodes. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/theclueless-ai/comfyui-seedance-nodes
pip install -r ComfyUI/custom_nodes/comfyui-seedance-nodes/requirements.txt
Four lightweight Python deps (requests, Pillow, numpy, opencv-python), no models to fetch. Set ARK_API_KEY (or paste into the api_key field), restart ComfyUI, and find the node under Seedance / Video Generation.
Where people get burned
- Forgetting the tokens. A reference image that's never named in the prompt is vague influence at best. The API can't read your mind - say "from [Image 1]" explicitly.
- Disjointed references. Ask for a photoreal person from a photo, an anime background from an illustration, and 3D cartoon styling, and the model has to reconcile three worlds at once. Keep references stylistically closer and the result gets more coherent.
- The usual API gotchas. Missing key errors out immediately; long 1080p jobs can outlast the 600s
max_wait(raise it up to 3600); and remember this is a paid, metered call with your images leaving the machine - ByteDance's hosted products moderate what comes back, and no local node can bypass that.
Inputs (23)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | — | |
| reference_image_1 | IMAGE | Primary reference image ([Image 1] in prompt). | |
| prompt | STRING | A boy wearing glasses and a blue T-shirt from [Image 1] and a corgi dog from [Image 2], sitting on the lawn, in 3D cartoon style | Use [Image 1-4] for reference images, [Video 1] for reference video, [Audio 1] for reference audio. |
| model | COMBO | dreamina-seedance-2-0-260128 | 1 options: dreamina-seedance-2-0-260128 |
| ratio | COMBO | 16:9 | 6 options: 16:9, 9:16, 1:1, 4:3, 3:4, adaptive |
| duration | INT | 54–15 | Video duration in seconds. Seedance 2.0 supports 4–15 s. seedance-1-5-pro-251215 is capped at 12 s. |
| resolution | COMBO | default | 4 options: default, 480p, 720p, 1080p |
| generate_audio | BOOLEAN | false | — |
| watermark | BOOLEAN | false | — |
| return_last_frame | BOOLEAN | true | Ask the API for a watermark-free PNG of the last frame. |
| poll_interval | INT | 105–60 | — |
| max_wait | INT | 60060–3600 | — |
| reference_image_2opt | IMAGE | Second reference image ([Image 2] in prompt). | |
| reference_image_3opt | IMAGE | Third reference image ([Image 3] in prompt). | |
| reference_image_4opt | IMAGE | Fourth reference image ([Image 4] in prompt). | |
| ref_url_1opt | STRING | HTTP URL override for reference image 1. | |
| ref_url_2opt | STRING | HTTP URL override for reference image 2. | |
| ref_url_3opt | STRING | HTTP URL override for reference image 3. | |
| ref_url_4opt | STRING | HTTP URL override for reference image 4. | |
| reference_videoopt | VIDEO | Connect any ComfyUI VIDEO node (Load Video, another Seedance output, etc.). Takes priority over reference_video_url. Reference as [Video 1] in the prompt. | |
| reference_video_urlopt | STRING | HTTP URL of a reference video. Used only when reference_video is not connected. Reference as [Video 1] in the prompt. | |
| reference_audioopt | AUDIO | Connect any ComfyUI AUDIO node (Load Audio, etc.). Takes priority over reference_audio_url. Reference as [Audio 1] in the prompt. | |
| reference_audio_urlopt | STRING | HTTP URL of a reference audio track. Used only when reference_audio is not connected. Reference as [Audio 1] in the prompt. |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| last_frame | IMAGE | — |
| frames | IMAGE | — |
| video_url | STRING | — |
| video_path | STRING | — |
| last_frame_url | STRING | — |