JimengImage2Video
Seedance-grade image-to-video in ComfyUI, no GPU required
- client
- image
- url
- task_id
The name is a lie, and it's the good kind. JimengImage2Video does not run anything on your GPU - it's a wrapper around ByteDance's closed Seedance image-to-video model, served through the Volcengine Ark API. You hand it an image, it uploads the job to a cloud model you could never run locally, and ComfyUI just sits there until a finished video comes back. That's the entire trick, and it's why this pack can spit out 1080p clips from a laptop with integrated graphics.
Seedance is the closed line the local community quietly measures open video models against - the same ByteDance whose open components (SDXL-Lightning, Hyper-SD, PuLID, LatentSync) are load-bearing infrastructure, but whose flagship generators never get weights released. So if you want that frontier quality and you don't own a video-card-shaped spaceship, an API wrapper is the only honest path. This is one of the few packs that puts it inside a normal ComfyUI graph.
How it works
Under the hood it's dead simple. The node base64-encodes your image into a data URL, appends your prompt, then smacks a few command-line-style flags onto the end of it:
{your prompt} --resolution 720p --dur 5 --camerafixed true
It creates a content-generation task with the Volcengine Ark SDK, then polls the task every five seconds for up to five minutes until the status reads succeeded. When it does, you get back a URL to the finished video plus the task ID.
The inputs that matter
- client - you'll always wire this from the pack's
JimengAPIClientnode, where you paste your Volcengine API key. Every generation node in this pack needs it. - image - any IMAGE tensor, straight out of LoadImage or anything upstream.
- model -
doubao-seedance-1-0-lite-i2v-250428by default, or the-pro-250528variant. Pro is the "Jimeng 3.0" model; it's the one the README claims can hit 1080p in under a minute. - prompt - multiline text. Describe the motion you want.
- duration -
5or10seconds. - resolution -
480p,720p, or1080p. Default 720p; 1080p will cost more credits and take longer. - camerafixed - true keeps the camera locked, false lets it move.
The node returns two strings: url (the video) and task_id (a receipt for the job). Don't skip that distinction - it's where people get burned.
The trap: you get a URL, not a video
The output is a string pointing at a hosted file, not a video you can watch in the UI. You need a second node to grab it. The pack ships exactly the right one: PreviewVideoFromUrl. Feed its video_url input from this node's url output and it downloads the file to your output folder and shows it as an animated preview. That's the whole workflow, and it's literally the example this pack ships:
LoadImage → JimengImage2Video → PreviewVideoFromUrl
Forget that step and you'll be staring at a text string wondering where your video went.
Installing it
The README is essentially a Chinese update log with an invite link - no install section. So use the standard route. In ComfyUI Manager, search ComfyUI-Jimeng and install; Manager will pull in the one real dependency. Or do it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/xuhongming251/ComfyUI-Jimeng
cd ComfyUI-Jimeng
pip install -r requirements.txt
That requirements file is a single line: volcengine-python-sdk[ark]. No model downloads, no VRAM pressure - the heaviest thing you'll install is an SDK. You do need an API key from the Volcengine Ark console, and each generation costs credits, so this is a pay-as-you-go deal, not free. The author's README includes a registration link that supposedly throws in extra credits.
Where people get burned
The node blocks the queue while it polls - up to five minutes, no progress bar, just "running." If a job takes longer than the 300-second timeout, it returns an empty url but keeps the task_id. There's no retry node in this pack, so a timed-out task means pasting that ID into the Volcengine console yourself. Also, feed it a batch of images and it silently uses only the first frame - the encoder grabs [0]. Keep it to a single image and you'll be fine.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| client | JIMENG_API_CLIENT | — | |
| image | IMAGE | — | |
| model | COMBO | doubao-seedance-1-0-lite-i2v-250428 | 2 options: doubao-seedance-1-0-lite-i2v-250428, doubao-seedance-1-0-pro-250528 |
| prompt | STRING | — | |
| duration | COMBO | 5 | 2 options: 5, 10 |
| resolution | COMBO | 720p | 3 options: 480p, 720p, 1080p |
| camerafixed | BOOLEAN | true | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| url | STRING | — |
| task_id | STRING | — |