LC Vision Director π¬
Plan a one-minute MiniMax H3 video as 16 segments, not 16 prompts
- vision_model
- reference_image_1
- reference_image_2
- reference_image_3
- reference_image_4
- plan
- plan_text
Video models you can run locally stop at five to fifteen seconds - H3's window is 4β15s, Wan's native context is 81 frames, which the KB calls the field's genuine unsolved constraint. So you get length the only way anyone gets length: generate segments, stitch them. The tax is drift, and joins that jump, because nothing keeps segment 7 aware of segment 6.
LC Vision Director π¬ is the planner for that. It renders nothing. Give it a story and it hands back a shot-by-shot plan where every segment is tagged CUT or CONTINUE; the LC H3 Segment nodes (companion LC AV pack) render one segment per Run from it.
What one LLM call buys you
A chat model writing sixteen independent prompts will quietly re-describe your character's jacket in segment 9 and invent a new room in segment 12. The Director attacks that structurally, in one call rather than sixteen:
- One
###STYLE###block - who's in it, where, the light, the camera - written once and pasted word for word into every segment. - CUT vs CONTINUE per segment. A CUT is a fresh shot, allowed only as often as your story actually writes one ("cut to", "later that night"). Everything else continues: the camera keeps rolling from the previous segment's last frames. The parser enforces that afterwards and retries once at lower temperature if the plan loses a line or overruns a segment.
- The overlap is shared, not duplicated. A CONTINUE starts from the previous segment's last
overlap_seconds, so its new action is planned on a shorter local clock. At the defaults - 5s segments, 1.6s overlap - the first segment is 124 frames and every CONTINUE adds about 3.5s. Twelve segments is roughly 44 seconds; about sixteen makes a minute. - Dialogue is protected. Quoted lines are pulled from your story and each must appear exactly once, verbatim, in the segment the story puts it in. Lines never split, and "about to speak" phrasing gets stripped from segments with no line - H3 will animate a mouth doing nothing.
Inputs that matter
vision_model is the handle from LC Vision Loader - per its tooltip it isn't loaded at all when a saved plan is reused, so re-running an unchanged plan is free. project is a folder name under output/LC_H3/<project>/. story is the whole thing: who's in it, where, what happens. segments (1β60), segment_seconds (5 is a good default; shorter = less VRAM) and overlap_seconds (1.6s = 39 frames) are the timing knobs; duration snaps to H3's 17k+5 frame grid at 24fps, so 5.0 becomes 124 frames.
preset is the H3 prompt flavour: T2V, R2VA and FL2VA, each with an NSFW variant, plus Custom (which reads custom_system_prompt). R2VA/FL2VA expect reference images - wire reference_image_1 through _4, labeled <Reference N> and written back as <Picture N>; connect none and it warns you and carries on. style_tag commits every segment to one look, and max_tokens (8192) caps the whole plan.
Outputs are plan (LC_H3_PLAN, for LC Vision Redirect and your H3 Segment nodes) and plan_text. Wire plan_text to a preview and read the plan before rendering fifteen segments of it.
Install
Manager β search LC Vision, or:
cd ComfyUI/custom_nodes
git clone https://github.com/lonecatone23/ComfyUI_LC_Vision_nodes.git
install.py runs for you (Manager does it on install/update). It checks for a vision-capable llama_cpp and does nothing if you have one; otherwise it resolves the matching wheel from the JamePeng/llama-cpp-python fork - the only place Qwen3VLChatHandler exists, shipped as GitHub Release assets per Python Γ platform Γ CUDA combo, never on PyPI. Restart, then grab a model: the Loader lists ready-to-download Qwen3-VL 4B and 8B entries (abliterated, Q8_0 or f16) that pull into models/LLM/GGUF.
β οΈ Those wheels are CUDA-only (plus Metal). AMD, Intel and CPU-only users must build the fork; install.py refuses rather than installing something that can't import:
CMAKE_ARGS=-DGGML_VULKAN=on python -m pip install "llama-cpp-python @ git+https://github.com/JamePeng/llama-cpp-python.git"
Fair warning: new pack, independent author, no reddit footprint. And it plans for MiniMax H3, whose licence excludes the US, EU, UK and South Korea from running the weights.
Where people get burned
"Director received no model." You didn't wire the Loader. The exception: a valid plan.json for this project plus replan off returns it without touching the model.
It keeps reusing a plan you wanted rewritten. Reuse keys on the exact story string, preset, segment count, frame counts and style tag. Fix a typo and it re-plans; change nothing and it reloads in about two seconds. Force it with replan on, or delete output/LC_H3/<project>/plan.json.
[LC Vision] Decode failed on a reused model instance...; rebuilding and retrying once. Expected. That's the pack working around an upstream KV-cache bug, not a crash. Worry only if the retry fails too.
The plan doesn't fit the context. The Loader reserves n_ctx VRAM up front: 8192 covers captioning and enhancement, 16384β32768 is where references and long plans land. A truncated or repetitive plan is usually context, not a stupid model.
Inputs (19)
| Name | Type | Default | Description |
|---|---|---|---|
| vision_model | LC_VISION_MODEL | Handle from LC Vision Loader. Not loaded at all when a saved plan is reused. | |
| project | STRING | parka_test | Project name. The plan and every segment are saved in output/LC_H3/<project>/. |
| story | STRING | The whole story, start to finish. Say who is in it, where, and what happens. | |
| preset | COMBO | Minimax H3 T2V | Which MiniMax H3 mode the segments are written for. Add more in lc_vision_moviemaker_presets.json (shared with Moviemaker). |
| segments | INT | 31β60 | How many segments. With 5 s segments the first one is 5 s and each CONTINUE adds about 3.5 s (the overlap is shared): 12 segments is about 44 s, about 16 make a minute. |
| segment_seconds | FLOAT | 5.02β20 | Length of each generated segment. Snapped to H3's frame grid (5.0 = 124 frames). Shorter = less VRAM. |
| overlap_seconds | FLOAT | 1.60.2β6 | How much of the previous segment a CONTINUE segment starts from. 1.6 s (39 frames) is a good default. |
| replan | BOOLEAN | false | On: always write a new plan. Off: reuse this project's saved plan as long as the story and timing are unchanged. |
| custom_system_promptopt | STRING | Used only when preset is 'Custom'. | |
| style_tagopt | COMBO | None | Commits every segment to one visual style. |
| reference_image_1opt | IMAGE | For R2VA / FL2VA presets. Labeled <Reference 1>, written back as <Picture 1>. | |
| reference_image_2opt | IMAGE | Labeled <Reference 2> / <Picture 2>. | |
| reference_image_3opt | IMAGE | Labeled <Reference 3> / <Picture 3>. | |
| reference_image_4opt | IMAGE | Labeled <Reference 4> / <Picture 4>. | |
| max_tokensopt | INT | 8192256β32768 | Token limit for the whole plan. Raise it for many segments. |
| temperatureopt | FLOAT | 0.700β2 | β |
| top_popt | FLOAT | 0.900β1 | β |
| repetition_penaltyopt | FLOAT | 1.100.5β2 | β |
| seedopt | INT | 00β4294967295 | β |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| plan | LC_H3_PLAN | β |
| plan_text | STRING | β |