Seedance – Text to Video
Seedance Video From a Bare Prompt — No Image Required
- reference_video
- reference_audio
- video
- last_frame
- frames
- video_url
- video_path
- last_frame_url
Sometimes you don't have a still to start from - you just have an idea. That's this node: pure text-to-video on ByteDance's closed Seedance 2.0 model, no image input required. Type "A girl holding a fox, the camera slowly pulls out." (the default prompt, which is a decent demo of both the capability and the vibe) and the model invents the whole shot from scratch.
Before the how, the what-it-isn't: this is an API wrapper, not a local generator. There are no Seedance weights to download - ByteDance keeps the entire Seedance line on the BytePlus ARK API and sells it by the call. The node handles the networking: it POSTs your prompt, polls the task endpoint until the video is done, downloads the mp4, and drops it into your graph as a native VIDEO object. All that happens on their servers, and your prompt travels with it. If that bothers you, this pack isn't going to change your mind - but if you want the model at all, the API is the only door.
The unexpected extra: reference video and audio
Here's the part that makes this node more interesting than a plain T2V. Unlike most text-to-video nodes, it also accepts an optional reference_video (a native ComfyUI VIDEO - Load Video, or another Seedance output) and reference_audio (an AUDIO socket). Reference them in the prompt as [Video 1] and [Audio 1], and the model can borrow motion or sound character from an existing clip while still generating from text. URL-based fallbacks (reference_video_url, reference_audio_url) exist if you don't have a local file. So "T2V" undersells it slightly - it's text-first generation with optional media conditioning.
What you actually set
prompt- the whole show. Be explicit about camera, subject, and motion.model- two choices here: the defaultdreamina-seedance-2-0-260128(Seedance 2.0, up to 15s) orseedance-1-5-pro-251215(capped at 12s - and the node clampsdurationdown automatically if you overshoot, so it won't silently fail).ratio- 16:9, 9:16, 1:1, 4:3, 3:4, oradaptive.duration- 4–15 seconds.resolution-default(API decides), 480p, 720p, or 1080p.generate_audio- ambient sound on/off. On costs more and renders slower.watermark- BytePlus watermark if you want it (you don't).
The outputs are the pack's standard six: video (native VIDEO → Save Video), last_frame (IMAGE, chain it into the next clip), frames (every frame as an IMAGE batch), video_url (48-hour CDN link), video_path, and last_frame_url.
Install
ComfyUI Manager, search comfyui-seedance-nodes. Or the manual route:
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
Just requests, Pillow, numpy, opencv-python - no model files. Configure your key via export ARK_API_KEY="..." or the node's api_key field, restart, and you'll find it under Seedance / Video Generation.
Where people get burned
- Missing key. Empty
api_keyand noARK_API_KEYenv var means an immediate error before anything hits the network. - Timeouts. The API queues tasks; a 1080p, 10-second job can exceed the default 600s
max_wait. Raise it (up to 3600) for big renders. - The bill. Pure T2V is the fastest way to rack up spend - every run is metered. Draft at 480p and short durations; your prompts and any reference media leave your machine either way.
- Audio surprise.
generate_audiodoubles as a cost knob. It's off by default - keep it that way until you specifically need ambience.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | BytePlus ARK API key. Leave empty to use ARK_API_KEY env variable. | |
| prompt | STRING | A girl holding a fox, the camera slowly pulls out. | Use [Video 1] / [Audio 1] to reference media in the prompt. |
| 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 | Output resolution. 'default' lets the API decide. |
| 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 | Seconds between status-check requests. |
| max_wait | INT | 60060–3600 | Maximum seconds to wait for the task. |
| 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 | — |