Seedance 2.0 Mini · Text to Video
Draft video at a draft price
- video
- last frame
- task id
Prompt in, moving picture with sound out, 480p or 720p, at the bottom end of the Seedance price ladder. That's the deal. If you write video prompts and want to burn through variations without watching the meter, this is the node to open first.
The thing it doesn't give you is the thing text-to-video already struggles with: an anchor. There's no image telling the model what the subject actually looks like, so it invents one per run, and Mini invents at 720p. That's fine for finding out if a camera move reads. It's not fine for a client deliverable.
How it works
The node assembles a request from your widget values - anything left at a default the model understands is simply omitted, so the model chooses - then quotes the job, submits it under an idempotency key, polls while printing the estimate and elapsed time on the node, and finally downloads the rendered MP4 and returns it as a ComfyUI VIDEO. Your machine does no inference; the render happens on PopNow and the file comes back over the wire.
The inputs that matter
prompt - subject, action, camera, light, sound, constraints. Two habits pay off here. Write the camera explicitly ("static wide, then a slow push"), because otherwise you get whatever the model's default house move is. And write sound, because generate_audio is on by default and a described ambience beats the generic hum it improvises.
duration_seconds - 4 to 15 seconds, or -1 for smart duration where the model picks the length. This is the billed quantity; the shortest setting that answers your question is the right setting.
resolution - 480p or 720p. Use 480p while you're iterating, honestly. The difference between 480p and 720p does not tell you whether your idea works.
aspect_ratio - adaptive by default. With no source image that effectively hands the framing decision to the model, so set 16:9 or 9:16 yourself if the frame matters.
enable_web_search - lets the model search for context before rendering, and the tooltip notes those requests are billed at the web-search rate. Occasionally genuinely useful for specific subject matter; a trap as a default.
generate_audio - request synchronised audio. return_last_frame - returns the clip's last frame as an IMAGE; with it off, that output blocks downstream nodes rather than emitting a blank. bitrate_mode - standard or high, encoding only. watermark - off.
seed - starts on fixed. Re-queue and you get the cached result instead of a fresh bill. Switch control_after_generate to randomize when you want a new take, and accept that each one is charged.
Outputs
video → Save Video. last frame → an IMAGE for chaining into an image-to-video node, which is how you get a consistent subject across shots when the video model refuses to keep one. task id → the job reference for the API console, and what support asks for.
Installing it
Manager → search PopNow → Install → restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/popnow-ai/popnow-comfyui
Key from popnow.ai/api/console/keys into Settings > PopNow, or start ComfyUI with POPNOW_API_KEY=sk-popnow-.... Restart once more so the node list comes from your account's catalog. No weights, no dependencies - the pack uses only what ComfyUI already ships.
Where people get burned
Consistency. Text-to-video with no reference means shot two has a different person in it. If continuity matters, generate a still first - with a local model or an image node - and animate it through Seedance 2.0 Mini · Image to Video. That's cheaper per useful result, not just per second.
Text rendering. Any on-screen text, logo or sign will come out as plausible-looking nonsense. Don't prompt for typography at this tier; composite it afterwards.
And the wallet mechanics: quotes stop above your Max credits per run ceiling, 40201 means you're out of credits rather than broken, 40310 means verify your email, and cancelling a run stops your wait while the render keeps going server-side.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the intended subject, action, camera, light, sound, and constraints. | |
| aspect_ratio | COMBO | adaptive | Output frame ratio. |
| resolution | COMBO | 720p | Output resolution. |
| duration_seconds | COMBO | 5 | Requested output duration in seconds. Pass -1 for smart duration: the model picks the length itself instead of a fixed number. |
| generate_audio | BOOLEAN | true | Request synchronised output audio. |
| enable_web_search | BOOLEAN | false | Let the model search the web for information related to the prompt before rendering. |
| seed | INT | 00–2147483647 | Same seed and settings, same result. Set 'control after generate' to randomize to get a new result on every run; every run is billed. |
| return_last_frame | BOOLEAN | false | Also return the clip’s final frame as a separate image. |
| bitrate_mode | COMBO | standard | Encoding bitrate of the delivered file: standard, or high for crisper detail and a larger file. |
| watermark | BOOLEAN | false | Add the model’s visible "AI generated" watermark to the video. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| last frame | IMAGE | Needs return_last_frame turned on. |
| task id | STRING | The PopNow task id, for the API console logs or support. |