Nodes/Protoface/Protoface Seedance 2.0 Fast · Extend Video
ComfyUI Node

Protoface Seedance 2.0 Fast · Extend Video

Four More Seconds, Cheaply

By protoface-ai·Created 22 days ago·Updated 13 days ago· 0
Protoface Seedance 2.0 Fast · Extend Video
    • video
    • files
    • run id
    ◄prompt►
    ◄video▾►
    ◄resolution720p►
    ◄duration5►
    ◄generate_audiotrue►
    ◄last_image▾►
    ◄generation_id0►
    ◄request_scope►

    Extend takes a clip and appends a new segment to it. You describe the continuation - action, camera, lighting, mood, as the tooltip puts it - and pick how many seconds to add, 4 to 15. It's the least glamorous node in this pack and the one you'll end up using on every project, because nothing is ever long enough.

    Why "just generate a longer one" doesn't work

    Every single generation is finite; that's not a bug in a model, it's the shape of the thing. Locally, the whole craft of long-form video is chunk stitching - five-second windows on Wan 2.2, joins in VACE, SVI recycling - with identity drift across the boundaries as the standing failure mode. Extend is the API version of that same move, except the model sees your existing clip as input, so continuity is its job rather than your compositing problem.

    The 4–15 second range says what it's for: not one long take, but a series of passes. Four seconds at a time is a normal way to build a fifteen-second shot.

    How this node runs

    Protoface doesn't host the model in the pack - it bundles a catalog of model/task request schemas and generates native ComfyUI V3 nodes from them, one per model/task pairing. This one is bytedance/seedance-2.0-fast × video.extend, running through the same shared adapter as everything else: encode the input video to MP4/H.264, upload if that content hash isn't cached, validate against the schema, submit, poll with a progress bar, download, decode into a native VIDEO.

    The journal is what keeps a chain affordable. Each request's identity - account, request_scope, node id, generation_id, model, schema fingerprint, payload hash - is recorded in local SQLite before submission. Requeue an unchanged graph and the recorded run is resumed instead of a second paid job being created. Change the prompt, the clip or duration and it's a new request, because it genuinely is one.

    Inputs

    video - the clip to continue. Mode field: Video for a native ComfyUI socket, or References to pass an existing asset ID or public URL through Protoface Asset Reference. Chain the previous extend's video output straight in and no reupload happens.

    prompt - describes the new segment. "She turns toward the window as the light drops, camera holds steady" is right. Re-describing the whole shot invites the model to restart it.

    duration - 4 to 15 seconds: the length of the segment being appended, not the total. Three 8-second passes turn a 5-second clip into 29 seconds of timeline.

    resolution - 480p or 720p. Keep it consistent across passes; mixing tiers inside a chain gives you a visible quality step.

    last_image - optional. An end frame for the new segment, which is the only real control you get over where the continuation lands. Skip it and the model picks.

    generate_audio - default true; native audio for the appended footage. Continuous music across a chain will have seams by construction, so mute and lay a track afterwards if that matters.

    No seed. Reproducibility is generation_id plus an identical graph, which is worth remembering when a pass produces a good continuation.

    Outputs

    video - a list of native VIDEO objects, ready to chain into the next extend or out to a combine node. files - the original download as a PROTOFACE_FILE for Protoface Save File. run id - a string per pass; on a five-pass chain you'll be glad you logged them.

    Install

    cd ComfyUI/custom_nodes
    git clone --branch v0.1.0 --depth 1 https://github.com/protoface-ai/protoface-comfyui.git protoface
    python -m pip install -r protoface/requirements.txt
    

    Or Manager → search Protoface → install protoface-nodes → restart → reload the browser. Needs ComfyUI 0.41.0+ and Python 3.10+; installs httpx, jsonschema, Pillow and av. Windows portable users must use python_embeded\python.exe -m pip or the dependencies land in the wrong environment and the pack won't import. Then paste your Protoface key in the lower-right Protoface panel, or set PROTOFACE_API_KEY_FILE for a persistent install.

    Notes from building chains

    Plan the total first. Five passes is five paid jobs. Decide whether you want 20 seconds or 60 seconds before you start, then work backwards.

    Drift is cumulative. Two passes in, subject identity starts sliding. Cut on natural transitions - a camera move, a look-away, a light change - where a small shift reads as intentional.

    Don't queue a dozen extends at once. Default concurrency is 2 (PROTOFACE_CONCURRENCY); the rest wait behind the semaphore under a 7200-second per-job timeout.

    Save as you go. Results are downloaded into the pack's state directory and never silently regenerated on a package update, but a chain is a lot of work to leave in a cache folder. Protoface Save File puts originals in ComfyUI's output directory.

    Interruption isn't a refund. Cancellation is best effort. Check your Protoface account for run status before assuming anything was refunded.

    CategoryProtoface/Video/bytedance

    Inputs (8)

    NameTypeDefaultDescription
    promptSTRINGDescribe the cinematic continuation - action, camera movement, lighting, mood.
    videoCOMBOA public URL, a data URI, or an asset id.
    resolutionCOMBO720pOutput resolution of the new segment.
    durationINT54–15Length in seconds of the new segment to append (4-15).
    generate_audioBOOLEANtrueWhether to generate native audio synchronized with the output video. Defaults to true.
    last_imageCOMBOA public URL, a data URI, or an asset id.
    generation_idINT00–9007199254740991Keep fixed to reuse/resume this paid job. Increment for a fresh paid generation; independent of the model seed.
    request_scopeSTRINGAutomatically assigned per node. Headless clients must supply a stable unique workflow/node ID. This is not a secret.

    Outputs (3)

    NameTypeDescription
    videoVIDEO—
    filesPROTOFACE_FILE—
    run idSTRING—