ByteDance Seedance 2.0 Mini FLF to Video (Channel Edition)
Seedance 2.0 Mini first/last-frame video in ComfyUI
- first_frame_url
- last_frame_url
- api_config
- video
- request_id
- urls
First-last-frame (FLF) generation is the closest thing text-to-video has to a still-image anchor: you hand the model a starting frame and an optional ending frame, and it invents the motion in between. This node is ByteDance's Seedance 2.0 Mini doing exactly that, served through the BizyAirPlus cloud - which means no local model, no VRAM meltdown, just an API call that returns a finished clip.
The FLF2V workflow is everywhere in the community because it's the practical way to get intentional videos. T2V is a lottery - you describe a scene and hope. With first/last frames you've already decided the shot, and the model just has to animate the middle. If you generate an image you love, this node is how you turn it into a clip without losing the composition.
How it works
Like every BizyTRD node, this one is an output node in the BizyAirPlus cloud layer. Flip the BizyAirPlus ON button in the action bar, and the node assembles your first frame, optional last frame, prompt and duration into a request to Seedance's cloud service. The model - closed and API-only, so there's nothing to download - renders the interpolated video, and ComfyUI receives the result. The Mini tier is the cheaper, faster Seedance option; good enough for drafts and most short clips.
The inputs that matter
- first_frame_url - the starting image. It's required; without it there's nothing to anchor the video.
- prompt - the text describing what should happen between the two frames. This is where the motion happens.
- duration - 4 to 15 seconds (default 8).
- last_frame_url - optional. If provided, the video ends exactly on this frame; if not, Seedance improvises the ending.
- resolution - defaults to
480p; keep the expectation in check on the Mini tier. - aspect_ratio, seed, generate_audio, watermark, return_last_frame, web_search - the same options you'll find across the Seedance family.
generate_audiodefaults on;seed = -1means random.
The inputs are typed IMAGE, so you wire them from an image-generation node or a Load Image node directly - no upload step, BizyAirPlus handles the file transfer automatically. Both frames flow through the same workflow, which is the clean part: your whole pipeline stays on the canvas.
The outputs
video is the generated clip - wire it into a preview or save node. urls gives you the direct result link, and request_id is your trace ID if you ever need to complain to support. That trio repeats across every BizyTRD node, so once you've seen one you've seen them all.
Installing it
This is part of BizyAirPlus, not a standalone node. Install the pack via ComfyUI Manager (search "BizyAirPlus") or:
cd ComfyUI/custom_nodes
git clone https://github.com/siliconflow/BizyAirPlus.git
cd BizyAirPlus
python -m pip install -r requirements.txt
Restart ComfyUI, then turn the BizyAirPlus button ON. First run asks for your key from bizyair.ai; it's saved to ~/.BizyAirPlus/apikey.ini, or you can set BIZYAIR_API_KEY. The dependencies (bizyair-cloudberry, bizytrd) are lightweight pip packages - there are no model downloads with these nodes, which is the point.
Gotchas
The classic first-run failure is forgetting the API key - the node errors, you panic, and the fix is two clicks. Cloud failures show up in the ComfyUI console, so read that before blaming the node. One thing to know: the pack's cloud layer has a reputation problem it doesn't deserve, because older ComfyUI Manager versions would auto-suggest BizyAir when a workflow was missing its nodes and people assumed malware. It's a legitimate SiliconFlow service. Also, if your two bookend frames disagree on subject or lighting, the model has to reconcile them - pick frames that look like they belong to the same shot.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| first_frame_url | IMAGE | First frame image URL. Required for first-last-frame mode. | |
| prompt | STRING | Text prompt describing the video to create | |
| resolution | COMBO | 480p | Output video resolution |
| duration | INT | 84–15 | Output video length in seconds (4-15) |
| last_frame_urlopt | IMAGE | Last frame image URL. Optional. If provided, the video will end at this frame. | |
| aspect_ratioopt | COMBO | auto | Output video aspect ratio |
| seedopt | INT | 0-1–2147483647 | Random seed, -1 means random |
| generate_audioopt | BOOLEAN | true | Whether to generate audio for the video |
| watermarkopt | BOOLEAN | false | Whether to add a watermark to the output video |
| return_last_frameopt | BOOLEAN | false | Whether to return the last frame URL of the generated video |
| web_searchopt | BOOLEAN | false | Enable web search to enhance prompt with up-to-date context |
| api_configopt | BIZYAIR_OPENAPI_CONFIG | 单次请求覆盖base_url和api_key | |
| skip_erroropt | BOOLEAN | false | 开启后遇到错误不中断工作流,输出对应类型的错误占位符 |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| request_id | STRING | — |
| urls | STRING | — |