MyteamOne · Seedance 2.0 (Image to Video)
Seedance 2.0 image-to-video in ComfyUI
- client
- image
- last_frame
- video
Where the T2V node rolls the dice on a blank canvas, this one starts from a picture you already like - one you rendered with your own checkpoint, masked, upscaled, whatever - and animates it. It's the workhorse of the pack for character shots and "this exact composition, but moving." Feed it an image from anywhere in your graph, add a prompt describing the motion, and Seedance 2.0 (ByteDance's closed video model, called through the MyteamOne API reseller) turns it into a clip.
How it works
The node takes your ComfyUI IMAGE, converts it to a base64 JPEG data URI (quality 95 - PNG would balloon the payload to several MB), and posts it to the API in the official content[] format with role: "first_frame", sitting next to your prompt as a text block. Then the usual cloud song: create task, poll every five seconds, download the MP4 into ComfyUI/output/.
The neat trick is the optional last_frame. Give it a start image and an end image and Seedance animates between them - a tween with physics, for things like "the character walks from this pose to that one." It's a two-keyframe motion controller, and it's more reliable than hoping the prompt pins down the ending.
The inputs that matter
Required: client, prompt, model (Seedance 2.0 / Fast), resolution, ratio, duration (4–15s), generate_audio (on by default - native audio is one of Seedance's genuinely good features), watermark, seed. Same set and defaults as the T2V node; Fast is the default model and it can't do 1080p.
The optional inputs are where this node lives:
image- wire any ComfyUI IMAGE here (Load Image, a sampler output, even an inpainting result). Practically required: the node errors if you give it neither an image nor animage_url.image_url- a public HTTP/HTTPS URL instead of a wired image. Pick one path; if both are set, the wired IMAGE wins.last_frame/last_frame_url- the optional ending keyframe, same two ways of supplying it.
Output is a single video - a ComfyUI VIDEO object on current builds, a video_path string on older ones - and the file lands in the output folder either way.
Install
It ships in the same pack, so it's the same one-time setup, and there are no model files because there's nothing local:
cd ComfyUI/custom_nodes
git clone https://github.com/agione-pro/ComfyUI-MyteamOne
cd ComfyUI-MyteamOne
pip install -r requirements.txt
Restart, and it's under Add Node → MyteamOne/Seedance. Or search "MyteamOne" in ComfyUI Manager.
Gotchas
- You must supply a first frame. No image, no URL, no job - that's a fast failure, not a mystery.
- Fast + 1080p fails fast, same as the T2V node. 720p with Fast, or standard Seedance for 1080p.
- Real identifiable people are blocked at the model layer (
InputVideoSensitiveContentDetected.PrivacyInformation). AI-generated characters only for anything that looks like a real person. - It's metered and slow. Every render costs money; create plus poll can stretch to several minutes. Batch your test frames into one session rather than one at a time.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| client | MYTEAMONE_CLIENT | — | |
| prompt | STRING | The subject comes alive, gentle camera push-in | — |
| model | COMBO | Seedance 2.0 Fast | 2 options: Seedance 2.0, Seedance 2.0 Fast |
| resolution | COMBO | 720p | 3 options: 480p, 720p, 1080p |
| ratio | COMBO | adaptive | 7 options: adaptive, 16:9, 9:16, 1:1, 4:3, 3:4, +1 |
| duration | INT | 54–15 | — |
| generate_audio | BOOLEAN | true | — |
| watermark | BOOLEAN | false | — |
| seed | INT | 00–2147483647 | — |
| imageopt | IMAGE | — | |
| last_frameopt | IMAGE | — | |
| image_urlopt | STRING | — | |
| last_frame_urlopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |