π LTX2 Prompt Architect (Ollama)
Let Ollama write your LTX-2.3 prompts β no API key, no cloud
- PROMPT
- NEG_PROMPT
- PREVIEW
LTX-2.3 is a brilliant video model that eats detailed prompts for breakfast and spits out mush if you feed it three words. The community rule of thumb is basically "long prompts or nothing." Writing those by hand is a genuine chore, and this node fixes exactly that: you type one sentence of intent, and it hands back a full, LTX-2.3-tuned positive prompt, a negative prompt, and a preview.
The "Ollama" in the name isn't marketing. Where the original LTX2PromptArchitectQwen node (from the LTX2 Easy Prompt ecosystem) leans on a Qwen model you may not be able to run, this is the drop-in replacement that calls your own local Ollama instance - no cloud, no API key, nothing leaves your machine. Same three outputs, same shape, so you can swap it into an existing workflow without rewiring anything.
How it works
Under the hood it's refreshingly simple. The node builds a long system prompt tuned for LTX-Video 2.3 - motion-first description, subject + action + environment + camera + lighting + style ordering, temporal words like "gradually", and a hard cap around 80β150 words because that's LTX's sweet spot. It posts your user_input (plus optional scene_context) to Ollama's /api/chat endpoint with format: "json" and think: false, then parses the response into the three outputs. The whole thing is Python stdlib - json, urllib, random. There is not a single pip dependency in requirements.txt.
The JSON handling is worth a nod because it's where this kind of node usually dies. It strips Qwen-style <think> tags, digs JSON out of markdown code fences, and validates all three keys came back - so you get a clear error instead of garbage silently flowing into your sampler.
Inputs and outputs that matter
You'll set a handful, not all of them:
user_input- your creative intent. The only thing you must actually type.model_name- which Ollama model to call. Default iswriter-fast-qwen3.5-9b-q8_0, a specific quantized tag you almost certainly don't have pulled. Checkollama listand point this at something real.quality_preset- six levels from "Draft / Quick Preview" to "Maximum Fidelity"; it just changes the detail keywords baked into the prompt.scene_context(optional) - a description from a vision model like Qwen-VL. Wire a VLM in front and you've got a lazy image-to-video prompt loop.style/mood/camera/lighting/audio_style(optional) - preset drop-downs. Leave them at "None - LLM decides" until you know what you want; they're overrides, not requirements.
max_tokens, temperature, and seed control the LLM itself, and ollama_base_url lets you point at a remote Ollama if you run it on another box.
The three outputs - PROMPT, NEG_PROMPT, PREVIEW - go straight to CLIPTextEncode (positive and negative) with PREVIEW into a ShowText node for debugging. Since it's the same interface as the Qwen node, you can unplug that one and plug this in without touching anything else.
Installing it
ComfyUI Manager: search "ComfyUI-LTX2PromptArchitectOllama" and install. Or the manual way:
cd ComfyUI/custom_nodes
git clone https://github.com/cody-li/ComfyUI-LTX2PromptArchitectOllama.git
Restart ComfyUI and it appears under LTX-Video/Prompt as π LTX2 Prompt Architect (Ollama). That's the whole install - no Python dependencies, no model files to download into ComfyUI; the model lives in Ollama. One wrinkle: the README's clone URL still points at an older ForMyQQ/... repo path. The pack is now at cody-li/ComfyUI-LTX2PromptArchitectOllama - use that one.
The gotchas that will actually hit you
- "Cannot connect to Ollama." Ollama isn't running.
ollama servein a terminal (or keep it as a background service), then re-run. - "model not found." You're using the default model name that isn't installed. Run
ollama list, pick a model you actually have - the README suggestsqwen3.5-9borqwen3-14b- and paste it intomodel_name. This is the number one thing people trip on. - Empty output or "not valid JSON." That's a thinking model burning its token budget on reasoning.
think: falseneeds Ollama 0.9+, and the node defaultsmax_tokensto 2048 for exactly this reason - don't dial it down and wonder why Qwen3.5 returns nothing. Lower temperature or switch models if it keeps happening. - Keep the geometry legal. The defaults (97 frames, 832Γ480) are chosen to satisfy LTX-2.3's hard constraints - frame count divisible by 8 plus 1, width/height divisible by 32. Change them and the sampler will reject the run, not round it.
- Slow generations are normal if Ollama is on CPU. That's an Ollama/GPU problem, not a node problem; a GGUF quant will get you there.
Is it a miracle worker? No - the prompt is only half the battle, and LTX-2.3's adherence still means you'll seed-hunt no matter what it writes. But it kills the blank-page problem, keeps everything local, and for zero dependencies that's a genuinely useful deal.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| user_input | STRING | Your creative intent β describe the video you want to generate | |
| model_name | STRING | writer-fast-qwen3.5-9b-q8_0 | Ollama model name (check with: ollama list) |
| quality_preset | COMBO | 0.8 - Balanced Professional | Quality level β affects detail keywords in prompt |
| max_tokens | INT | 204864β8192 | Max tokens for LLM output (2048+ recommended for thinking models like Qwen3.5) |
| temperature | FLOAT | 0.700β2 | LLM creativity β 0=deterministic, 0.7=balanced, 1.5=creative |
| seed | INT | -1-1β18446744073709550000 | Random seed (-1 = random) |
| scene_contextopt | STRING | Scene description from reference image (e.g. from Qwen-VL output) | |
| frame_countopt | INT | 971β257 | Target frame count β affects pacing |
| widthopt | INT | 832 | Video width in pixels |
| heightopt | INT | 480 | Video height in pixels |
| styleopt | COMBO | None β LLM decides | Visual style override |
| moodopt | COMBO | None β LLM decides | Emotional atmosphere |
| cameraopt | COMBO | None β LLM decides | Camera movement preference |
| lightingopt | COMBO | None β LLM decides | Lighting style |
| audio_styleopt | COMBO | None β detect from prompt | Audio generation hint |
| ollama_base_urlopt | STRING | http://localhost:11434 | Ollama API base URL |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| PROMPT | STRING | Positive prompt for LTX-Video 2.3 |
| NEG_PROMPT | STRING | Negative prompt for LTX-Video 2.3 |
| PREVIEW | STRING | Human-readable preview / debug info |