T2V Prompt Builder
Structured text-to-video prompts that don't read like word salad
- backend
- prompt
Text-to-video models are picky eaters. WAN, LTX, Hunyuan - they reward prompts that look like a director's shot description: medium, framing, camera movement, lighting, palette, in a predictable order. That's exactly what T2V Prompt Builder produces, and it's the node this pack is really built around.
It assembles prompts along a fixed template:
[Medium] [Shot] [Angle] [Movement] [Focus] {subject} [Lighting] [Color]
You lock the fields you care about, leave the rest on auto, and the LLM fills in the gaps - choosing values only from the provided option lists, then gluing everything into one cohesive sentence. You can leave everything on auto and let the model interpret your scene description, or lock every field and skip the API call entirely (pure assembly, no tokens spent). That last trick is worth knowing: if all seven fields are set and enhance is off, the node never calls the LLM at all.
The inputs that matter
- backend -
AI_BACKENDfrom LLM Backend (Claude/OpenAI) or N8N Backend (your webhook does the work). Both work; the N8N path posts the whole assembly job to your workflow and readspromptback. - prompt - your scene description: the subject and action, written as a sentence. "A detective lights a cigarette under a flickering streetlamp."
- The seven field dropdowns -
medium(19 options from Super 8 to CCTV to Unreal Engine 5),shot(close-up → extreme wide),angle,movement(static → handheld),focus,lighting,color. Each has anautofirst. - enhance - when on, the model rewrites the assembled prompt as a fluent, film-ready shot description instead of a bracket-y template. This is where the output stops looking mechanical.
Output: a single prompt (STRING) ready for a text-to-video sampler.
Installing
ComfyUI Manager → search "StudioDeep", or:
cd ComfyUI/custom_nodes
git clone https://github.com/studiodeep-ai/comfyui-studiodeep StudioDeep
pip install -r StudioDeep/requirements.txt
Restart. The LLM route needs an Anthropic/OpenAI key in LLM Backend; the N8N route needs a working webhook. No models download either way.
Troubleshooting
- "anthropic package not installed" - the pack's
requirements.txtcovers it, but if you installed the pack before a dependency landed, runpip install anthropicand restart. - Auto fields produce something off-theme - the model picks one value per field from the lists, so your locked values are safe, but the auto choices are the model's taste. Lock the ones you're opinionated about; that's the point of the dropdowns.
- Claude extended thinking errors - if your backend has
reasoningon, the node raisesmax_tokensto cover the thinking budget. If you still see amax_tokens must exceed budget_tokenserror, your key or account tier is limiting output length. Turn reasoning off for routine work.
One opinion: the auto-everything path with enhance on is where this node shines - it turns "a rainy alley" into something you'd actually feed a video model. Locking all seven fields and skipping the API is the frugal mode, and it's refreshingly honest that the pack lets you do that.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| backend | AI_BACKEND | — | |
| prompt | STRING | — | |
| medium | COMBO | 19 options: auto, 8mm / Super 8 Film, 16mm Film, 35mm Film, 70mm / IMAX Film, Polaroid / Instant Film, +13 | |
| shot | COMBO | 9 options: auto, Extreme Close-Up, Close-Up, Medium Close-Up, Medium Shot, Medium Full Shot, +3 | |
| angle | COMBO | 8 options: auto, Eye-Level, Low Angle, High Angle, Overhead Shot, Dutch Angle, +2 | |
| movement | COMBO | 11 options: auto, Static, Pan, Tilt, Jib Up/Down (Crane), Push-In (Dolly In), +5 | |
| focus | COMBO | 5 options: auto, Rack Focus, Deep Focus, Shallow Focus, Split-Field Diopter | |
| lighting | COMBO | 13 options: auto, Chiaroscuro, Three-Point Lighting, Motivated Lighting, Neon Noir (Cyberpunk), High-Key Lighting, +7 | |
| color | COMBO | 5 options: auto, Orange & Teal, Monochromatic, Analogous, Complementary | |
| enhance | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |