- V1 Pro Text to Video
The multi-shot prompt node
- video
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
Text-to-video looks like the simplest node in the world and it's where most people's clips come back as a slow pan across nothing in particular. V1 Pro is the version I'd point at if you want to direct something: it takes a longer prompt than the Lite tier, gives you aspect ratio, resolution and duration as explicit choices, and - this is the part that matters - the V1-era prompts handle several shots inside one generation.
Look at the shipped default prompt. A boy on a bike at sunset. [Cut to] he slows and looks at a field of tall grass. [Wide shot] his silhouette halts in the orange haze. That's three beats with two shot changes in a five-to-ten second clip, and it's the cheap way to get something that reads as a sequence rather than a screensaver. The Lite text-to-video node documents up to 10,000 characters too, but on the Pro tier the shot changes actually hold.
Inputs and outputs
prompt is required, multiline, docs capped at 10,000 characters. Write it as beats with bracketed direction - [Cut to], [Wide shot], [Close-up] - and keep each beat to one action. That's prompt engineering with a specific job here: you're not describing a picture, you're handing a very short editor a shot list.
The dials: aspect_ratio (default 16:9, plus 21:9, 4:3, 1:1, 3:4, 9:16), resolution (480p, 720p, 1080p), and duration as a discrete 5 or 10. camera_fixed locks the camera off for a stable shot. seed is a FLOAT defaulting to -1, meaning random - set a real value once you have a clip worth keeping. enable_safety_checker defaults true, and per KIE's docs it's always on in their playground and only switchable through the API. nsfw_checker defaults false on this node. timeout_seconds and callback_url round it out, and you leave the callback empty unless you run a server that receives webhooks.
Outputs: video, url, all_urls_json, task_id, raw_json, credits_consumed, credits_left - plus the credits-spent and remaining-balance line the node displays after each run.
Directing it for free with a sibling node
The pack's KIE • Camera Director exists precisely because text-to-video prompts are where camera language usually goes to die. It builds a consistent camera sentence - shot size, angle, movement, focal length, motion speed, stabilization - from dropdowns, and outputs both the sentence and a JSON plan. Build your look once, reuse the wording across every shot in a sequence, and your clips stop looking like they came from different films.
The pack's KIE • Shot Sequence takes that further: shared camera setup plus per-shot prompts, durations and movements for up to six shots, emitting one director prompt and a JSON plan. Both are local and free - they're text builders, not generators - so spending time there costs nothing, while spending it here costs credits.
Iteration economics
There's no reference frame to anchor a text-to-video roll, so a big chunk of the cost is casting: whether the model's idea of your subject matches yours. 480p for five seconds is the cheap way to find out. When something works, bank the seed - and make sure your seed widget is set so the value is used before generation rather than getting re-rolled after it, or your "reproduction" will be a new clip and you'll wrongly conclude the model is nondeterministic. Then re-run at the resolution and duration you're actually delivering.
Install
Manager → search KIE.ai Nodes Next (publisher id felipeosilva) → install. If Manager shows nothing - the README still describes registry publication as prepared rather than done - clone it:
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
pip install -r ComfyUI-KIE-Nodes-Next/requirements.txt
Restart ComfyUI. The dependency list is requests, Pillow, numpy, PyYAML; there are no model downloads and no local video toolchain, because inference is remote. Windows users get a .vbs one-click installer in dist/ and a full uninstaller beside it. Set the API key once under Settings → KIE.ai Nodes Next → Connection; it's validated against KIE before replacing a saved key, the frontend sees only a masked fingerprint, and KIE_API_KEY takes priority for headless installs.
Gotchas
Generation is synchronous - ComfyUI waits on the task, so a 10-second 1080p clip blocks the queue and timeout_seconds (default 1200, max 7200) is your only dial. Times out, still charged.
ByteDance's video models have no open weights. V1 is the older, cheaper tier of a family that has never shipped locally, so there's no fallback plan beyond the open video models you can actually download. Worth knowing before you build a client workflow around this.
Every call is metered and your prompt goes to KIE. That's the standing trade for the whole pack: a capability you can't host, at per-call prices, with the inputs leaving your machine - and a content filter you can't patch, because there are no weights on your disk to edit.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | A boy with curly hair and a backpack rides a bike down a golden-lit rural road at sunset. [Cut to] He slows down and looks toward a field of tall grass. [Wide shot] His silhouette halts in the orange haze. | The text prompt used to generate the video (Max length: 10000 characters) |
| aspect_ratioopt | COMBO | 16:9 | The aspect ratio of the generated video |
| resolutionopt | COMBO | 720p | Video resolution - 480p for faster generation, 720p for balance, 1080p for higher quality |
| durationopt | COMBO | 5 | Duration of the video in seconds |
| camera_fixedopt | BOOLEAN | false | Whether to fix the camera position (Boolean value (true/false)) |
| seedopt | FLOAT | -1.00-1–2147483647 | Random seed to control video generation. Use -1 for random. (Min: -1, Max: 2147483647, Step: 1) (step: 1) |
| enable_safety_checkeropt | BOOLEAN | true | The safety checker is always enabled in Playground. It can only be disabled by setting false through the API. (Boolean value (true/false)) |
| nsfw_checkeropt | BOOLEAN | false | Defaults to false. You can set it to false based on your needs. If set to false, our content filtering will be disabled, and all results will be returned directly by the model itself. Note: There is no guarantee that everything can be filtered out; if you are not satisfied with the results, you will need to make your own arrangements. |
| timeout_secondsopt | INT | 120030–7200 | — |
| callback_urlopt | STRING | Optional KIE callback URL. Leave empty for normal ComfyUI use. |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| url | STRING | — |
| all_urls_json | STRING | — |
| task_id | STRING | — |
| raw_json | STRING | — |
| credits_consumed | FLOAT | — |
| credits_left | FLOAT | — |