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

Protoface Seedance 2.0 Mini · Extend Video

Bolt another five seconds onto a clip without a seam

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

    Nobody releases an "extend" model locally

    Extending a clip is the least glamorous operation in video generation and the one you'll need most once a shot works. Local models regenerate; they don't continue. Seedance's extend operation is a real continuation - you hand it the tail of a clip and it writes the next segment in the same style, with the same character, keeping the audio coherent if you left audio on.

    Mini is the cheap tier underneath it, 480p/720p. That makes extend the operation where the tier metaphor breaks: you're not drafting a new shot, you're adding to footage you already accepted, and mismatched resolution between segment one and segment two is visible in a way a rough draft isn't. Know that going in.

    What the node does under the hood

    Protoface is a third-party API aggregator: the node uploads your video, submits a job with the prompt as the continuation instruction, polls, downloads the returned segment, and hands back a native VIDEO. One shared implementation covers all the pack's models; this node's controls are generated from Seedance's public request schema. Your footage leaves your machine, and every queued run is a billed request.

    The inputs

    video is the clip to continue. It takes a native ComfyUI Video input, a URL, a data URI, or a Protoface asset id - and chaining a previous Protoface job through the asset-reuse path avoids re-uploading the media you just downloaded.

    prompt is the continuation brief. The tooltip spells out the shape it wants: "action, camera movement, lighting, mood." Write it as the next beat of the scene, not a fresh description - the model already knows what the world looks like. "She keeps walking, camera drifts left, rain gets heavier" beats a paragraph of character description.

    duration is 4–15 seconds of new footage to append. resolution is 480p or 720p - output of the new segment, so it can differ from your input clip's resolution, which is exactly the seam you don't want. generate_audio defaults to true and generates audio synchronised with the output.

    last_image is the odd one out and the most useful. Attach a frame you want the new segment to arrive at, and the continuation has a destination instead of just running until the clock stops. For a shot that needs to end on a specific beat - a door closing, a face turning to camera - this is how you get there in one generation instead of three.

    generation_id keeps a paid job reusable: same ID, same inputs, requeue resumes; increment for a new run. request_scope is auto-assigned per node.

    Outputs: video, files (originals), run id (feed it to Protoface Resume Run after a timeout).

    Install

    ComfyUI 0.41.0+, Python 3.10+. Manager → search Protoface → install protoface-nodes → restart and reload. Or the manual path:

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

    ComfyUI's interpreter, not your system Python. Then paste a key via the Protoface button, or export PROTOFACE_API_KEY=... on a headless box. Requirements are httpx, jsonschema, Pillow, PyAV - no weights to fetch.

    Where people get burned

    Input seconds are billed on this operation. Extend meters the source clip alongside the output, with the added input cost capped at 15 seconds. Extending the same clip five times to iterate on a 6-second continuation costs roughly five continuations plus five source-clip reads. Build your chain deliberately.

    The seam. Extending at Mini's 720p ceiling and then assembling next to a 1080p opener is the most common disappointment. Either keep the whole chain on one tier or extend on the big node.

    Assuming the node stitches for you. You get a segment back, not a merged file. You are the editor. Join segments with a local video node and expect to trim a few frames at the join, because continuation starts where the model thinks your clip ended.

    Long chains drift. Each generation sees only the clip you hand it. Ten extensions deep, faces and wardrobe wander, and no amount of prompting fixes a drift that's already in the input. Prefer fewer, longer segments - Mini caps at 15 seconds per hop, which is generous enough.

    Should you use it?

    Yes, when a good clip needs to be longer and re-generating would lose the take. Mini makes the experimentation affordance cheap, which is the whole case for a mini tier. Just do the final chain on a tier you're happy delivering in.

    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—