Nodes/Protoface/Protoface Seedance 2.0 Mini · Text to Video
ComfyUI Node

Protoface Seedance 2.0 Mini · Text to Video

The cheapest way into a closed video model

By protoface-ai·Created 22 days ago·Updated 13 days ago· 0
Protoface Seedance 2.0 Mini · Text to Video
    • video
    • files
    • run id
    ◄prompt►
    ◄resolution720p►
    ◄duration5►
    ◄aspect_ratio16:9►
    ◄generate_audiotrue►
    ◄reference_audios▾►
    ◄reference_images▾►
    ◄reference_videos▾►
    ◄generation_id0►
    ◄request_scope►

    Why you'd pay for text to video at all

    If what you want is motion, run Wan or LTX locally and keep your wallet closed. If what you want is this specific look - the Seedance house style, its camera language, its willingness to do a coherent action beat in one shot - there is no local substitute, because ByteDance has never released a Seedance checkpoint. Its open releases are components: PuLID, Depth Anything, Bernini. The product stays on the API.

    This node is the cheap door into that product. Mini, text-to-video, 480p or 720p, 4–15 seconds. It's the version you use when you're testing whether the model can even do your idea.

    Mechanism

    A shared implementation inside the Protoface pack: build a request from your prompt and settings, upload any attached references, submit, poll, download, return a native ComfyUI VIDEO. Controls are generated from the provider's public schema, so what you see is what their API accepts. Expect to wait - these are asynchronous jobs, and the pack's default poll interval is two seconds with a two-hour job timeout, so a slow queue looks like a spinning node rather than an error.

    What you set

    prompt is the whole input on a t2v job, and the tooltip's list - scene, action, camera movement, mood - is a decent four-part checklist. One sentence per element and you're most of the way there.

    resolution: 480p or 720p. aspect_ratio: 16:9, 9:16, 4:3, 3:4, 1:1 or 21:9. duration: 4–15 whole seconds.

    generate_audio defaults to true, and this tier does native synchronised audio. Mute-minded workflows should turn it off rather than pay for a track they'll discard.

    The three reference_* inputs are what turn this from a toy prompt box into a targeted tool. reference_images, reference_videos and reference_audios are dynamic lists: connect native Image/Video/Audio nodes, or asset ids and public URLs, and watch the input list grow. Two use cases pay for themselves immediately - a character sheet photo to hold a face across shots, and a reference clip to borrow a colour grade.

    generation_id and request_scope aren't model parameters. The first is the paid job handle: keep it fixed and a requeue resumes the same run instead of buying another; increment it to deliberately generate again. There's no seed field on these video nodes, so that integer is the only reproducibility lever you get. request_scope is auto-assigned per node and only concerns headless clients.

    Outputs: video (list), files (every original asset, including non-media), run id (for Resume Run).

    Install

    Needs ComfyUI 0.41.0+ and Python 3.10+. Manager: Extensions → Protoface → install protoface-nodes → restart, reload browser. Manual:

    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
    

    Use ComfyUI's interpreter - python_embeded/python.exe on the portable Windows build. Then click Protoface bottom-right and paste your API key; headless deployments use PROTOFACE_API_KEY or PROTOFACE_API_KEY_FILE. The pack pulls httpx, jsonschema, Pillow and PyAV and nothing else heavy.

    The honest cost conversation

    This is the cheapest video node in the pack, and it's still a metered call. Around 8 credits per second at 720p, so a five-second clip is roughly 40 credits, and the catalog's own USD grid puts a credit near a cent. The community pushback on Seedance arriving in ComfyUI was never about quality - the top-voted replies were cost and subscription lock, and a five-second draft-then-final loop quietly doubles.

    Two specifics that catch people:

    Reference video is billed twice over. Attach one and its input seconds are metered on top of your output seconds, capped at 15 seconds total. Reference-driven generation is the feature most worth having and the one that inflates the invoice.

    Mini has no 1080p. Every keeper has to be re-run on Fast or the standard Seedance 2.0 node, which is a new node and a new charge. Iterate at 480p, promote the winner.

    Timed-out jobs aren't dead jobs. If the node gives up polling, don't bump generation_id and push again - that's a second paid job for the same render. Requeue unchanged, or recover with the run id in Resume Run.

    My read

    Reach for it to answer "can this model do my shot?" in under a credit's worth of regret. Don't reach for it to deliver. And if your instance is shared, remember the interactive key sits in server memory and anyone who can queue a workflow can spend it.

    CategoryProtoface/Video/bytedance

    Inputs (10)

    NameTypeDefaultDescription
    promptSTRINGDescribe the scene, action, camera movement, and mood for the video.
    resolutionCOMBO720pThe output video resolution.
    durationINT54–15The duration of the generated video in seconds (4-15s).
    aspect_ratioCOMBO16:9The aspect ratio of the generated video.
    generate_audioBOOLEANtrueWhether to generate native audio synchronized with the output video. Defaults to true.
    reference_audiosCOMBOPublic URLs, data URIs, or asset ids.
    reference_imagesCOMBOPublic URLs, data URIs, or asset ids.
    reference_videosCOMBOPublic 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—