Protoface Seedance 2.5 · Image to Video
Thirty seconds, one shot, no aspect ratio override
- video
- files
- run id
What changed in 2.5
The headline is duration: 4 to 30 seconds in a single generation, double what 2.0 gives you. That's not a small thing. Thirty seconds is long enough to hold a whole beat - a turn, a walk, a reaction - without stitching segments and then hiding the seams.
The other change is quieter and it bites people coming from 2.0: this node has no aspect_ratio field at all. The 2.0 animate node offered one with "adapts to the input image if left empty"; 2.5 just adapts. If your workflow relied on forcing 16:9 onto a portrait anchor frame, that option isn't here. Frame your source image at the ratio you want to deliver.
How the node works
Protoface is a third-party aggregator, not a model host: the pack's nodes are HTTP clients over one shared implementation, with per-model controls generated from the provider's public request schema. This node uploads your start frame, submits a job, polls, downloads the result, and returns a native ComfyUI VIDEO. ByteDance keeps Seedance closed, so there's no local fallback - the file leaves your machine and comes back rendered.
Inputs
image is the anchor frame. Native ComfyUI Image connects straight in, or use a URL, data URI or Protoface asset id. This is the node's reason to exist over the text version.
prompt describes motion, camera and mood. The frame carries the content.
last_image sets the ending frame, so the clip interpolates between your two stills. With a 30-second ceiling this becomes a genuinely useful planning tool - two local renders plus a movement prompt is a shot with a beginning and an end, not a lucky loop.
resolution: 480p, 720p, 1080p or 4K. duration: 4–30. generate_audio defaults true and this tier's native audio is the family's better half.
generation_id is the paid-job handle: fixed ID with identical inputs resumes the recorded run; increment it for a fresh, newly billed generation. request_scope is auto-assigned per node and only concerns headless clients.
Outputs: video (list), files (all originals), run id (what Resume Run takes).
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 route: search Protoface, install protoface-nodes, restart, reload the browser. Use ComfyUI's interpreter for pip. Then paste your key via the Protoface button in the lower-right, or set PROTOFACE_API_KEY for headless. Requirements: httpx, jsonschema, Pillow, PyAV.
The invoice is the plot
2.5 is priced well above 2.0 and the per-second numbers make it real: roughly 10 credits per second at 480p, 23 at 720p, 59 at 1080p and 180 at 4K, with a four-second minimum. A five-second 720p clip is ~115 credits; push that to thirty seconds at 1080p and you're into the thousands for one shot. Which is fair, and also why the community's first question about 2.5 was whether it would be affordable enough to use rather than just to admire - the version of the model you can iterate with matters more than the benchmark.
Practical translation: treat the long durations as an option, not a default. Most drafting should happen at 480p and short; the 30-second capabilities are for the shot you've already decided on.
Where it goes wrong
You can't force aspect ratio. Expect to re-generate your anchor image if it's the wrong shape for delivery.
Re-rolling 30-second clips. Iterating on a long clip at full resolution is the single most expensive habit available in this pack. Short and cheap first, then extend the winner, or pay once at length.
Bumping generation_id after a timeout. That's a second charge for a render that's probably still running. Requeue unchanged, or use the run id with Resume Run. The pack journals the request before submitting precisely so this works.
Deleting the cache. ~/.cache/protoface-comfyui holds the job journal. Wiping it to "fix" an unresolved submission destroys your recovery path.
Shared servers. The interactive key lives in server memory and out of workflow exports - fine - but anyone who can queue a workflow can spend it. Not a pack bug; a fact of metered graphs.
Verdict
The best-quality image-to-video the pack offers, and the first seedance node where a 30-second single take is genuinely usable. Just don't discover its pricing by accident at 1080p.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the scene, action, camera movement, and mood for the video. | |
| image | COMBO | A public URL, a data URI, or an asset id. | |
| resolution | COMBO | 720p | The output video resolution. |
| duration | INT | 54–30 | The duration of the generated video in seconds (4-30s). |
| generate_audio | BOOLEAN | true | Whether to generate native audio synchronized with the output video. Defaults to true. |
| last_image | COMBO | A public URL, a data URI, or an asset id. | |
| 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 | — |