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

Protoface Seedance 2.0 · Edit Video

Prompt-driven video editing that actually holds the subject

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

    The gap this fills

    Local workflows can restyle a frame. Restyling motion - keeping a performance intact while changing the world around it - is where the open stack still feels like research and the closed APIs feel like products. Seedance 2.0 Edit is the full-tier version of that operation: give it a clip and an instruction, get a rewritten clip back at up to 4K.

    It's the node I'd point a colourist or an editor at before I'd point them at a ControlNet graph. It's also the node where a client-footage conversation has to happen first, because your source file is going to Protoface's servers.

    Under the hood

    Same shared client as every node in this pack: request built from the provider's public schema, media uploaded, job submitted and polled, result downloaded and returned as a native ComfyUI VIDEO. Billing is per second of output and per second of input video, with the input side capped at 15 seconds. Nothing runs on your GPU except the encode.

    The fields

    video takes a native ComfyUI Video input - a loader, or the video output of an earlier Protoface node, ideally routed through the asset-reuse path so it isn't uploaded twice.

    prompt is an instruction. "Replace the background with a rooftop at dusk, keep her lighting and hair motion." The tooltip is explicit that this describes the edit, not a scene.

    duration is 4–15 and defaults to 4, but the tooltip's real content is that the length is auto-detected from the input video when you leave it be. That default trips people: they expect their 12-second source back in full and get it, then wonder why a shorter explicit value truncated things. Set it deliberately or not at all.

    resolution: 480p, 720p, 1080p, 4K. This is the only place the tiers collapse - the standard node can go all the way up.

    generate_audio defaults true, and the tooltip matters: set to false and the input video's original audio track is preserved on the output. Defaulting to true means the model invents a new soundtrack over footage that already had dialogue, which is a genuinely surprising first result.

    aspect_ratio is optional and adapts to the input. reference_images and reference_audios are optional dynamic lists for steering the edit with a look or a voice - think of them as extra evidence, not replacements for the source clip.

    generation_id keeps the paid job reusable: identical inputs plus a fixed ID resumes rather than re-buys. Increment it to ask for a fresh generation. request_scope is auto-assigned per node; headless clients must supply a stable unique one.

    Outputs: video (list), files (every original download), run id (what Resume Run wants after a timeout).

    Install

    ComfyUI 0.41.0+ and Python 3.10+.

    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
    

    Manager works too: search Protoface, install protoface-nodes, restart, reload the browser. Use ComfyUI's interpreter for pip. Then click Protoface bottom-right and enter your key - PROTOFACE_API_KEY for headless. Four dependencies, no models, no torch surgery.

    Where it goes wrong

    Long footage. Input seconds are metered on top of output, capped at 15 seconds. Cut your source to the section you actually want edited before you wire this up; feeding a two-minute file is expensive at best.

    Assuming Mini and standard are interchangeable. They share the schema but not the ceiling. Drafting at 720p on Mini and then delivering on this node means a second paid pass - plan the chain so the final pass is the only one at 1080p or 4K.

    Edited audio by accident. Anything with speech needs generate_audio false, or you'll get a re-voiced clip with a new accent.

    Blaming the node for a provider-side moderation refusal. The filter lives with the model, not in the node. There's nothing local to patch, and resellers don't remove ByteDance's own moderation. If a prompt is refused, it's refused.

    Re-queuing after a crash with a new generation_id. That's a fresh charge for a render you may already own. Requeue unchanged, or recover with run id.

    Should you reach for it?

    For editing, absolutely - it's the operation with no good local analogue, and the tier structure means you can afford to try three ideas before picking one. Just budget the input seconds, kill the audio generation on talking footage, and don't try to edit anything longer than the model's input cap in a single pass.

    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—