LingBot Prompt Geometry + Duration
Prompt geometry without dragging the sampler around
- width
- height
- duration_seconds
LingBotPromptSettings is the small, focused cousin of LingBotGenerationSettings. Where Generation Settings hands out every sampling knob, this one deals only with the geometry that affects the prompt: width, height, and duration_seconds. Three inputs in, three outputs out, no CFG, no steps, no seed.
The reason it exists is that those three values are what determine how Qwen expands your plaintext prompt into LingBot's structured JSON. The duration_seconds tooltip is the key sentence: "Only these prompt-dependent values invalidate the Qwen rewrite cache." In other words, change the resolution or the clip length and the prompt rewrite cache stops matching, so the text encoder has to redo its work. Change a sampler-only knob like CFG and it doesn't - the cached rewrite stays valid.
Why you'd use it instead of Generation Settings
If your graph has one place where resolution and duration are decided, and you're feeding a prompt-encode node plus a sampler, this node keeps the "prompt side" wiring separate from the "denoise side" wiring. Concretely:
- Wire this node's
width,height,duration_secondsinto the LingBotPromptEncode (or TI2V/FLF variant) node. - Feed its
widthandheightinto the sampler as well, since the sampler must run at the same resolution the prompt was conditioned on.
The pack checks that conditioning and sampler resolutions match - you'll get a "TI2V resolution changed after prompt encoding" error if they drift. Having one shared geometry source is the cleanest way to never hit that.
It also runs the same input validation as the bigger settings node: duration must be greater than zero, and the resolution has to pass the model's check_inputs sanity check before you queue.
What's here
Inputs:
- width (default 640, 16–4096, step 16)
- height (default 352, 16–4096, step 16)
- duration_seconds (default 3.0, 0.1–120, step 0.1)
Outputs:
width,height,duration_seconds- pass-through scalars ready to fan out to the prompt node and sampler.
That's the whole node. If you're the kind of person who builds a LingBot graph from scratch rather than editing the published workflows, this is the tidy way to do it. If you're pasting in the example workflows, honestly, you can leave this node alone - the shipped graphs already wire it - and only touch it when you change aspect ratio or clip length.
Install and gotchas
It ships inside the pack, so:
cd ComfyUI/custom_nodes
git clone https://github.com/ALX-CODE/lingbot-video-1.3b-fp8
pip install -r requirements.txt
or install via ComfyUI Manager (search "LingBot") and restart. No extra model files are needed for this node itself - the model, text encoder, and FP8 checkpoint belong to the loader.
One trap worth naming: this node outputs duration_seconds, and the prompt nodes expect exactly that (their tooltip tells you to connect it so Qwen's action timestamps line up with the clip). Don't get clever and feed it a computed frame count instead. Frame-count math - the 4n+1 snap - lives in LingBotGenerationSettings; keep duration and frames on separate wires and you'll be fine. And when you change width, height, or duration here, expect the prompt rewrite to re-run once - that's the cache invalidation working as intended, not a bug.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| width | INT | 64016–4096 | — |
| height | INT | 35216–4096 | — |
| duration_seconds | FLOAT | 3.00.1–120 | Only these prompt-dependent values invalidate the Qwen rewrite cache. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| width | INT | — |
| height | INT | — |
| duration_seconds | FLOAT | — |