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

Protoface Seedance 2.0 Fast · Edit Video

Change the Shot You Already Shot

By protoface-ai·Created 22 days ago·Updated 13 days ago· 0
Protoface Seedance 2.0 Fast · Edit Video
    • video
    • files
    • run id
    ◄prompt►
    ◄video▾►
    ◄resolution720p►
    ◄duration4►
    ◄aspect_ratio▾►
    ◄generate_audiotrue►
    ◄reference_audios▾►
    ◄reference_images▾►
    ◄generation_id0►
    ◄request_scope►

    Video editing - take existing footage and change it - is the operation that made 2026 interesting. Locally, the answer was Bernini (ByteDance's own open model, ironically built on Wan 2.2 and doubling the compute because the source clip becomes part of the input sequence). Remotely, it's Seedance 2.0 Fast, which takes a clip plus a prompt plus reference images and gives you a new clip back.

    When to reach for it

    The honest use case is fixing footage you can't reshoot: change the weather, replace a product, swap a wardrobe, add a prop. It's also good for a specific kind of iteration - you got the motion you wanted out of an i2v pass and now you want a different colour grade applied to that exact motion, not a new sample.

    Keep expectations calibrated. These models are prompt-following editors, not compositors. If the change is "the sign says OPEN and it should say CLOSED", expect the lettering to wobble. If it's "make it dusk", that's squarely in range.

    Mechanism

    Protoface generates this node at startup from a bundled catalog of request schemas - bytedance/seedance-2.0-fast × video.edit - and every generated node in the pack shares one HTTP adapter. On queue: encode your input video to H.264 MP4, upload it unless that exact content is already cached, validate the payload against the schema before spending, submit, poll, download, decode to a native VIDEO.

    Journal first, always. Each request's identity - account, request_scope, node id, generation_id, model, schema fingerprint, payload hash - is written to local SQLite before submission, so an unchanged requeue resumes the recorded job and the API idempotency key is reused on ambiguous failures rather than burned on a duplicate.

    The practical wrinkle: your input video gets re-encoded to MP4/H.264 on the way up. So a ProRes master becomes an H.264 intermediate, and it hashes by content - a slightly different encode is a different upload and a different request. Pick your source and leave it alone.

    Inputs

    video - the clip being edited. Mode field: Video for a native socket, or References to point at an existing Protoface asset via Protoface Asset Reference.

    prompt - the edit, phrased as a change. "Change the sky to heavy storm clouds, keep the buildings and camera move identical" will get you a different result from "a stormy city".

    reference_images - optional, up to nine. This is how you do "put this jacket on him" or "this logo on the mug": supply the thing, name its position in the prompt. Reference images are identified by array order, so "image 1" means the first one you connected.

    reference_audios - optional, up to three. Less obvious, more useful than it sounds for voice or ambience replacement.

    duration - 4 to 15 seconds, default 4, and the tooltip says it's auto-detected from the input video when not specified. So there's usually no reason to touch it.

    resolution - 480p or 720p. aspect_ratio - optional, adapts to the input if unset.

    generate_audio - default true, with a detail worth quoting because it changes your workflow: when set to false, the input video's audio track is preserved on the output instead of being regenerated. That's the setting you want when the dialogue is the point and you're only changing the picture.

    No seed on this model.

    Outputs

    video - a list of native VIDEO results. files - the original download as a PROTOFACE_FILE for Protoface Save File. run id - a string; hold onto it, video edits are the kind of job you'll want to trace.

    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
    

    Manager: search Protoface → protoface-nodes → restart → reload. ComfyUI 0.41.0+, Python 3.10+, and httpx, jsonschema, Pillow, av - PyAV matters doubly here, since it's involved in decoding what comes back. Then paste your Protoface key in the Protoface panel bottom-right; for a persistent server, PROTOFACE_API_KEY_FILE. Nothing is downloaded locally; the model runs on Protoface's side.

    Where it goes wrong

    References ignored. They're positional. If your prompt says "the woman in the red jacket" and you supplied three images, the model may pick any of them. Say "the jacket from image 2".

    Ten reference images. Nine is the cap, and batch items count toward it.

    Expecting frame-exact preservation. Prompt-following editors re-render. If a frame must be untouched, do that part in your compositor, not in a generative node.

    Editing a re-encoded file every run. Encode once, upload once, reuse through an asset ID. Different encodes cost different uploads and can cost different jobs.

    Cancelling an expensive edit to save money. Best effort, no promised refund. Also: the pack will stop and ask rather than silently retry a different paid request under the same idempotency key - that's a feature, and the error is telling you to go find the run in your account.

    CategoryProtoface/Video/bytedance

    Inputs (10)

    NameTypeDefaultDescription
    promptSTRINGDescribe the edit you want applied to the input video.
    videoCOMBOA public URL, a data URI, or an asset id.
    resolutionCOMBO720pOutput video resolution.
    durationINT44–15Output video length in seconds (4-15). Auto-detected from the input video if not specified.
    aspect_ratioCOMBOAspect ratio of the output video. Adapts to the input if not specified.
    generate_audioBOOLEANtrueWhether to generate native audio for the edited output. Defaults to true. When set to false, the input video's audio track is preserved on the output instead.
    reference_audiosCOMBOPublic URLs, data URIs, or asset ids.
    reference_imagesCOMBOPublic URLs, data URIs, or asset ids.
    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—