Nodes/Seedance 2.0 BytePlus/๐ŸŒฑ Seedance 2.0 First/Last Frame-to-Video
ComfyUI Node

๐ŸŒฑ Seedance 2.0 First/Last Frame-to-Video

Pin the ending and let Seedance fill the middle

By nnnnkatsuยทCreated 3 months agoยทUpdated about a month agoยท 1
๐ŸŒฑ Seedance 2.0 First/Last Frame-to-Video
  • first_frame_image
  • last_frame_image
  • video_url
  • first_frame
  • request_id
  • batch_json
โ—„promptGenerate a smooth cinematic video starting from the first frame.โ–บ
โ—„aspect_ratiosmartโ–บ
โ—„resolution480pโ–บ
โ—„duration5โ–บ
โ—„seed-1โ–บ
โ—„batch_count1โ–บ
โ—„api_keyโ–บ
โ—„endpointโ–บ
โ—„generate_audiotrueโ–บ

Here's the pitch in one sentence: give Seedance 2.0 First/Last Frame-to-Video a starting frame and optionally an ending frame, and it renders a video that starts where you say and lands exactly where you say. It's the difference between "Seedance, do something" and "Seedance, go from this to that" - and for shots where the ending genuinely matters, that control is the whole point.

This is one of the more specialized nodes in the pack, and the README is upfront that BytePlus treats first/last-frame generation as a separate mode from normal reference-based generation. That's why it's its own node instead of a checkbox on Image-to-Video. The practical consequence: you cannot mix it with normal reference images, reference videos, reference audio, or draft tasks in the same request. If you need references plus a fixed ending, that's a job for Omni Reference or Image-to-Video instead.

The inputs that matter

  • first_frame_image - required IMAGE. The video starts here.
  • last_frame_image - optional IMAGE. The video is steered to end here. Leave it empty and you get a first-frame-anchored generation (basically a fancier image-to-video).
  • prompt - describes the motion between the frames.
  • aspect_ratio - defaults to smart here, with a tooltip worth reading: "Use smart to let BytePlus choose an appropriate ratio from the input/prompt." When you're giving it actual frames, letting the model match them is usually the right call.
  • resolution (480pโ€“4k, endpoint-dependent), duration (4โ€“15s), seed, batch_count (cost + wait scale with it).
  • generate_audio - default true.

How it works

The node uploads your first frame (and last frame, if given) to BytePlus as content references, tags them as first_frame / last_frame in the request payload, and runs the standard submit-then-poll cycle. When it finishes you get the same four outputs as every generator in this pack: video_url (short-lived, ~24h), first_frame (IMAGE), request_id, and batch_json.

Where this shines is loop-adjacent work: a scene that must begin and end on a specific composition - a character entering and leaving a room, a camera push-in that has to land on a close-up. Pin the endpoints, write a prompt that describes the transition, and iterate on the prompt rather than re-rolling the frames.

Gotchas

The big one is the frame you feed it. A real-person first/last frame is exactly the input that trips BytePlus's privacy filter (InputImageSensitiveContentDetected.PrivacyInformation) - the API is aggressive about identifiable faces in reference material. Synthesized or anonymous content passes cleanly. And as always in this pack: the returned URL expires in about a day, so if the clip is a keeper, send video_url to Seedance 2.0 Save Video before the link dies.

Install: ComfyUI Manager โ†’ Install via Git URL โ†’ https://github.com/nnnnkatsu/seedance2-comfyui-byteplus, restart. No models to download, no GPU required - the rendering happens on BytePlus's servers and you're paying per call.

Category๐ŸŒฑ Seedance 2.0

Inputs (11)

NameTypeDefaultDescription
first_frame_imageIMAGEโ€”
promptSTRINGGenerate a smooth cinematic video starting from the first frame.โ€”
aspect_ratioCOMBOsmartUse smart to let BytePlus choose an appropriate ratio from the input/prompt.
resolutionCOMBO480pBytePlus output resolution. 1080p/4k availability depends on the selected endpoint.
durationINT54โ€“15โ€”
seedINT-1-1โ€“4294967295โ€”
batch_countINT11โ€“10Create multiple tasks with different seeds. Cost and wait time scale with this count.
api_keyoptSTRINGโ€”
endpointoptSTRINGBytePlus ModelArk endpoint ID, for example ep-...
generate_audiooptBOOLEANtrueโ€”
last_frame_imageoptIMAGEโ€”

Outputs (4)

NameTypeDescription
video_urlSTRINGโ€”
first_frameIMAGEโ€”
request_idSTRINGโ€”
batch_jsonSTRINGโ€”