Protoface Seedance 2.0 · Generate Video
Every input at once, watermark included
- video
- files
- run id
The everything node
Fifteen inputs. This is the widest node in the pack, and it's what "Protoface-optimized Seedance 2.0" means in practice: start frame, end frame, reference stills, reference video, reference audio, quality tier, duration, aspect ratio, prompt enhancement, native audio, seed, and a watermark toggle. If you have an opinion about a shot, there's a socket for it.
Seedance is ByteDance's video model and the one whose arrival in ComfyUI produced the community's bluntest reaction to API-node pricing - the "extremely expensive… a really small number of videos per year" thread, and the flat "Local and not through an api? No? Nvm then" at +203. That reaction is the right frame for this node. It's a real tool with real capability, and it is not the one you learn on. Wire it once you know exactly what shot you need and what it's worth.
Inputs, grouped
Text and shape. prompt, duration_seconds (a picker, default 6), aspect_ratio (default 16:9), quality (default 720p, with the tooltip pointing at output_quality_descriptions for which tiers are upscales).
Frames. first_frame and last_frame, one asset each - the pair that turns a free generation into a controlled transition.
References. reference, reference_video, audio - all list-shaped, all taking public URLs, data URIs or asset ids, and all counting toward the model's reference limit. This is the part that makes Seedance worth its price: character stills, a motion clip, and a voice track conditioning one shot.
Toggles. generate_audio (default true), enhance_prompt (default false, no tooltip - assume it's the prompt-rewrite behaviour its siblings describe), seed (dynamic combo, -1 for random), and watermark, default false. That last one is worth knowing exists; on some platforms you have to pay to remove it, here it's a checkbox.
Booking. generation_id and request_scope, exactly as on every Protoface node: fixed ID resumes the same paid job, incremented ID is a fresh charge, auto-assigned scope in the UI and hand-supplied when headless.
Outputs
video (VIDEO, list), files (PROTOFACE_FILE, list - the original download), run id (string). Lists all the way down, so multiple results map into Save Video without extra nodes.
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
ComfyUI 0.41.0+, Python 3.10+, deps httpx, jsonschema, Pillow, av>=14. Manager path: search Protoface, install protoface-nodes, restart, reload the browser tab. Then Protoface in the lower-right corner and your account key - billed directly by Protoface, not through Comfy credits.
Where people get bitten
Cost, first and loudest. Fifteen inputs invite fifteen experiments, and every queue is a charge. Decide the shot on a cheaper node (Hailuo, Pika, FastH3) and bring the winner here.
Reference limits. The adapter counts batch items toward the model's reference maximum, so a folder of stills connected to reference fails with "too many references, including items in input batches" - split and run in passes.
Recovery and state. A timeout is a live job: requeue with the same generation_id, or resume with run id. Incrementing the ID to retry is a second charge. Don't delete ~/.cache/protoface-comfyui while a submission is unresolved, and remember that on a shared ComfyUI server, anyone who can queue a graph spends your key - separate accounts want separate instances.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| first_frame | COMBO | A public URL, a data URI, or an asset id. | |
| audio | COMBO | Public URLs, data URIs, or asset ids; one value or a list. | |
| reference | COMBO | Public URLs, data URIs, or asset ids; one value or a list. | |
| reference_video | COMBO | Public URLs, data URIs, or asset ids; one value or a list. | |
| last_frame | COMBO | A public URL, a data URI, or an asset id. | |
| quality | COMBO | 720p | Output resolution tier. Upscaled tiers are identified in output_quality_descriptions. |
| duration_seconds | COMBO | 6 | 12 options: 4, 5, 6, 7, 8, 9, +6 |
| aspect_ratio | COMBO | 16:9 | 2 options: 16:9, 9:16 |
| enhance_prompt | BOOLEAN | false | — |
| generate_audio | BOOLEAN | true | — |
| seed | COMBO | 2 options: [object Object], [object Object] | |
| watermark | BOOLEAN | false | — |
| generation_id | INT | 00–9007199254740991 | Keep fixed to reuse/resume this paid job. Increment for a fresh paid generation; independent of the model seed. |
| request_scope | STRING | Automatically assigned per node. Headless clients must supply a stable unique workflow/node ID. This is not a secret. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| files | PROTOFACE_FILE | — |
| run id | STRING | — |