Extensions/PromptMasterLD
ComfyUI Extension

PromptMasterLD

ComfyUI custom node: prompt authoring for LTX video - Studio panel, brief builder, wardrobe and reference rails

By Lora-Daddy·Created 6 days ago·Updated 2 days ago· 5
Lora-Daddy/PromptMasterLD
Nodes75
On cloudLocal install
CategoryLD/PromptMaster, sampling/custom_sampling/schedulers
Stars5
Updated2 days ago

Nodes (75)

⏱ Audio Duration - LD

How Long Is That Track, Really? Measure It Instead of Typing a Number

LD/PromptMaster
Beta57 Scheduler

One Scheduler, One Node

sampling/custom_sampling/schedulers
🎛 Group Switch - LD

Let the Canvas Do the Switching

LD/PromptMaster/Video rail
H3 Any Switch (lazy A/B)

Flip a boolean and ComfyUI never even executes the other branch

H3/episode
H3 Audio Trim Start

The 41-millisecond node that keeps lip sync honest

audio
H3 Auto Refs (folders, by prompt)

Character folders in, matched reference photos out, no manual wiring

video/minimax
H3 Cartridge Loader (.riftcast)

A character's whole look and voice in one .riftcast file

loaders/minimax
🔗 H3 Chain - LD

Motion, Voice and Continuity Carry Across Every Cut

LD/PromptMaster
H3 CLIP Loader (safetensors + GGUF)

The text encoder loader that won't silently lose your reference images

loaders/minimax
H3 Concat A/V

Stitch two stages into one take, and hide the focus snap between them

video/minimax
H3 Condition Strength

How hard should the model obey your keyframes and refs?

conditioning/video_models
H3 Episode Split (stage A + B)

Carve one script into the stage A prompt and the stage B chain

video/minimax
H3 Extend Take (seconds -> windows)

Type how long you want, get the window math done for you

H3/episode
H3 Free Text Encoder (VRAM)

The one-node fix for the 16GB text encoder squatting on your card

conditioning/video_models
H3 Infinite Take (one trajectory, any length)

One continuous trajectory, any length, VRAM that doesn't grow

sampling/minimax
H3 Int Scale (divide + snap)

One integer in, a resolution-safe integer out

H3/episode
H3 Join — up to 5 rails

H3 Join Fixes the Joins You Never Noticed

PromptMasterLD/H3
H3 Keyframe Inject (experimental: refs + start frame)

Add a physical start frame to conditioning that only has references

model/conditioning/minimax
H3 Keyframes (any position)

Anchor a clip at any frame, not just first and last

conditioning/video_models
H3 Last Frame

The tiny node that hands a take to the next stage

image/batch
📂 H3 Library Load - LD

H3 Library Load

LD/PromptMaster/Long form
📚 H3 Library Save - LD

Save a Take So the Next One Can Extend It Seamlessly

LD/PromptMaster/Long form
🧩 H3 Loader - LD

One Themed Loader for UNET, CLIP and Both VAEs

LD/PromptMaster
🔇 H3 Lock Audio - LD

Refine the Picture Without Re-Rolling the Sound

LD/PromptMaster/Music
H3 LoRA Stack (up to 4)

Four LoRAs, one node, one model output

loaders/minimax
LTX Take Controls (Joy-LTX 2.5)

The master panel that sizes an LTX-2.5 take to your card

H3/episode
🎬 H3 Master - LD

H3 Master Renders the Whole Chain

LD/PromptMaster/Long form
H3 Model Loader (safetensors + GGUF)

One dropdown that handles safetensors and GGUF, with a VRAM brain

loaders/minimax
H3 Multishot Sampler + Memory (long form)

Long-form chains with a bank that holds the story

sampling/minimax
H3 Multishot (pack) - LD

Render the Whole Studio Pack Without Rebuilding the Graph

LD/PromptMaster
H3 Multishot Sampler (one node)

One node, a whole seamless take instead of a cut sequence

sampling/minimax
🎬 H3 Multishot - LD

The H3 Multishot Sampler, Tamed

LD/PromptMaster/Long form
🎬 Music Video - LD

H3 Music Video Writes Each Segment to the Song

LD/PromptMaster
H3 Optional Image (I2V on/off)

The right way to turn I2V on and off in an H3 chain

utils/minimax
🎬 H3 Output - LD

H3 Output Is the Sane End of the Rail

LD/PromptMaster
H3 Pack Bridge - LD

H3 Pack Bridge Feeds Your Own H3 Graph

LD/PromptMaster/Video rail
H3 Q-Graft (attention envelope, experimental)

The experimental node that grafts another model's attention onto H3

H3/experimental
H3 Ref Batch (RefPicker -> ref slots)

The adapter that makes a RefPicker's output actually reach H3

video/minimax
H3 Reference Audio (stereo guard)

Why your H3 render crashed on a mono audio file

conditioning/video_models
H3 Reference Video (trim for ref2va)

Scene conditioning, not motion control

video/minimax
H3 Ref Folder (up to 9 separate refs)

Nine reference images from a folder, no LoadImage spaghetti

loaders/minimax
🔍 H3 Refine Pass - LD

The Refine Pass Sampler

LD/PromptMaster/Finishing
H3 Remote Text Encoder (CLIP over LAN)

Run H3's 18 GB text encoder on a second PC

loaders/minimax
H3 Retake (redo part of a clip)

Fix one bad stretch of a finished clip without rerendering the whole thing

conditioning/minimax
🎬 H3 Route AV - LD

Route Picture and Sound as One Decision, So They Can Never Desync

LD/PromptMaster/Video rail
🔀 H3 Route - LD

A Switch That Reads the Answer Instead of Being Told It

LD/PromptMaster/Video rail
🔎 H3 Route Probe - LD

What Rail Is Live Right Now? This Node Reads It Without Running Anything

LD/PromptMaster/Video rail
H3 Sampler by Name (STRING -> SAMPLER)

One master sampler dropdown that actually drives every node

video/minimax
H3 Shot List

Turning one shot list into the four prompts a 3-shot chain needs

conditioning/minimax
H3 Sigmas by Name (STRING -> SIGMAS)

A linked scheduler string that actually becomes a sigma schedule

video/minimax
H3 Speed Boosters (optional packs)

The speed knobs that are safe to leave off

video/minimax
H3 Studio Controls (one source, both stages)

One panel that drives both stages of the H3 chain

video/minimax
🎬 H3 Studio - LD

Tell It What You Want in One Line, Get a Shootable Script Back

LD/PromptMaster
H3 Studio Switches (feature toggles)

The feature-toggle panel, and why its dead switches ship dead

H3/episode
H3 TAE Decode (draft preview)

2-second draft previews instead of a minute per shot

video/minimax
UPSCALE SIZE - LD

Stop typing the upscale size into three nodes — let this one decide

LD/PromptMaster/Video rail
[deprecated] Prompt Source (txt briefs + json scripts)

The deprecated name for the H3 prompt source — and why it still loads

H3/script
[deprecated] Script Picker (JSON dropdown)

The deprecated JSON script dropdown, and what it feeds

H3/script
🧱 Lora Loader - LD

LTX LoRAs are half picture, half sound — this loader gives you a fader for each

LD/PromptMaster
LTX-2.5 Multishot Sampler (Joy-LTX 2.5)

The LTX-2.5 sampler that makes a take as long as you like

video/ltx
H3 Motion Context

The node that makes H3 clips actually continue each other

conditioning/minimax
H3 Motion Context Chain

Chain past MiniMax H3's 15-second limit without touching the Run button

conditioning/minimax
H3 Motion Context Load Latent

Loading the previous H3 clip's latent, without the quality tax

conditioning/minimax
H3 Motion Context Save Latent

The invisible hand that carries your H3 clip's tail into the next run

conditioning/minimax
H3 Motion Context Seam Probe

Measure the H3 join in-graph

conditioning/minimax
H3 Motion Context Trim

The trim node that keeps your chained H3 soundtrack on the beat

conditioning/minimax
🎵 Music Studio - LD

The node that writes the song so you don't mangle it

LD/PromptMaster
Pack In - LD

The node that stuffs your whole render rail into one cable

LD/PromptMaster
🎞 H3 Refs - LD

Turn the panel's reference list into sockets you can actually wire

LD/PromptMaster/Refs & look
Script for Two Engines (H3 + LTX-2.5)

Write one script, render it with H3 or LTX-2.5

H3/script
Prompt Source (txt briefs + json scripts)

Txt briefs, JSON scripts, and unattended folder renders

H3/script
Script Picker (JSON dropdown)

Hand your H3 chain a saved script from a dropdown

H3/script
🧠 Swap Brain - LD

Rgthree-style group switching, but every rule is a dropdown

LD/PromptMaster
Unpack - LD

Where a shot script becomes wires you can actually touch

LD/PromptMaster
🎞 Save Video (grade) - LD

The end-of-render node that stops AI video looking like AI video

LD/PromptMaster/Finishing
Readme

Prompt Master LD

A shot writer and pipeline pack for ComfyUI, built around H3 video. It runs a local model through LM Studio, turns a one-line intent into a finished shot script, and hands the graph the text plus real timing — then ships the sampler, routing, reference and audio nodes that render it.

The centre of the pack is the H3 Studio node and its panel. Everything else exists to get a script out of it and into a render.

What it does

You type what you want. The panel builds a brief from the dials you actually set, sends it to your local model, and returns a script the graph can use — with the frame count, the beats and the pack-out already correct.

Eight modes, chosen on the node:

| Mode | What it writes for | |---|---| | ref | reference-driven shots — the default; files you attach are cited by name | | i2v | image to video, opening on the frame you supply | | t2v | text to video, building the frame from nothing | | mv | music videos — per-shot start stills, a tagged cast rail, wardrobe lock | | multishot | multi-shot sequences staged onto the multishot sampler | | ext | extending an existing take | | music | music and lyric work | | image | stills (see README_IMAGE.md for the FLUX.2 writer) |

The brief

One craft instruct is always present. It is organised the way a shot is physically built, because that is the order the failures appear in:

WEIGHT    mass, gravity, contact, poses arrived at, joints in directions
TEXTURE   the physical particular over the impression; what shifts as it runs
LIGHT     direction, quality, one effect, one optical property
SOUND     everything audible comes from inside the shot
FRAME     camera placed once, distance, eye contact, cast, the closing image

Then a short law for each dial that is actually set, and nothing for the ones that are not. A bare shot reads as a clean brief rather than a stripped one.

The request always outranks a dial. Anything named in the intent wins over anything a dropdown seeded.

VOICE — register, grain, pace, and the scene setting the delivery — ships with any talking shot and always before the accent law.

Where the laws live

brain.py         the craft instruct, first person, speech, assembly, budgets
accents.py       49 accent notes and the accent law
wardrobe.py      appearance — viewer look, cast look, wardrobe, undress
closet.py        the garment catalogue and its pictures
dials.py         style, camera, transition, music, format
celebrities.py   face keys, rebuilt from h3_known_faces.json
worldscapes.py   settings and worlds
scenarios.py     scenario banks
artists.py       artist and vocal profiles
refs.py          the reference rail — what is attached, and what it is for
vision.py        one vision policy: sizes, per-mode caps, frame budgets

Plumbing: backend.py (LM Studio transport, streaming, abort), routes.py (panel endpoints), h3_studio.py (the node), imaging.py, negative.py, vram.py.

Dials

video_mode 8 modes · pov off / male / female · accent 49 + strength (natural / strong / thick) + a separate partner accent + who leads + spoken language (english / own) · dialogue 0–100% · wardrobe 591 garments in 16 categories + seed + undress · style 570 in 20 groups · style_look 176 · camera 40 · transition 11 · music 51 · scenario 107 · worldscape 57 · celebrity 503 · ref_recipe 7 · fps, seconds → beats and frame count · words_per_second short / medium / long · fmt 5 formats · lexicon names and terms.

Accents

49 accents, and the law splits them by what can actually be written down:

  • An accent whose note names a writeable shift (th toward d, dropped h, rolled r) gets SPELL IT — the accent goes in the letters of the words.
  • An accent whose note names only rhythm, stress or vowel colour gets grammar, word order, tags and address terms instead, and respelling is forbidden. Told to respell anyway, a model invents fake phonetics or borrows a louder accent's — which is how an Indian-tagged line came back French.

The accent is named inside the dialogue bracket, where it reaches the voice (<d>[English with heavy Ugandan accent] She is de queen.</d>), and nowhere in the prose attribution. Two speakers each get the full law, never a paraphrase.

Nodes

53 register in total — this pack's own plus the vendored packs below. They appear under LD / PromptMaster and as H3 … entries. The spine is:

🎬 H3 Studio → Unpack / Pack In → your H3 or LTX graph

with routing (H3 Route, H3 Route AV, Group Switch), samplers (H3 Multishot, H3 Chain, H3 Infinite Take), references (H3 Refs, H3 Ref Folder, H3 Auto Refs), audio (Music Studio, H3 Lock Audio, Audio Duration) and output (H3 Join, H3 Concat A/V, Video Grade).

Backend

LM Studio only. Point it at an OpenAI-compatible server — the default is http://127.0.0.1:1234 — and pick your model in the cog. The modes that look at pictures (ref, i2v, mv, multishot) need a vision-capable model loaded; set it as the vision model in the same panel.

Setting up LM Studio

  1. Download and install LM Studio (Windows/Mac/Linux, free).
  2. In the search tab, pull a model. This pack is built and tested against qwen3.8-27b-uncensored-hauhaucs-aggressive-mtp — search for it by name and grab the quant that fits your VRAM.
  3. Before you load it, open the model's load settings and:
    • Turn "Thinking" off (reasoning mode). A reasoning model spends its whole reply on a <think> block before writing anything usable, which wastes your token budget on scratch work instead of the shot script and can make the panel stall waiting for text that never shows up.
    • Set Context Length to at least 32,768 (32k). LM Studio's own default (4k–8k depending on model) is too small for this pack's longer briefs — multishot, reference-heavy scenes, and accent + wardrobe stacked together can all run past it, and a context that's too short cuts the script off mid-sentence instead of failing cleanly.
  4. Open the Local Server tab (left sidebar) and start it with that model loaded. Leave the port at the default 1234 unless you have a reason to change it.
  5. In the H3 Studio panel's ⚙ settings: set server_url to http://127.0.0.1:1234, pick your model from the list, and set the panel's own ctx field to the same number you set in step 3 (32768). This ctx is a separate number the pack uses to estimate whether a prompt will fit — it does not read LM Studio's setting automatically, so the two have to be kept in sync by hand.

The managed llama-server backend was removed: it spawned llama-server.exe against a GGUF picked from disk, and it kept breaking for people who were connected to LM Studio anyway.

Connection settings live in cpld_conn.json, which is local and never committed.

Install

Copy this folder to ComfyUI/custom_nodes/PromptMasterLD/ and restart.

Assets are not in the repository. RefBank/ is excluded entirely and Wardrobe/ ships two example garments so the closet has something to resolve — the rest of both folders stays on the machine that made them. See .gitignore.

workflows/ ships an example graph — drop it into ComfyUI/user/default/workflows/ to load it from the workflow menu.

Tests

python selftest.py     # wiring, no LLM
python eval.py         # real shots through the live backend
python eval.py --dry   # build every brief, call no LLM
python eval.py ref     # only cases matching "ref"

selftest.py checks that dropdown keys map to real laws in both directions, that a set dial changes the brief and an unset one does not, that no two live laws contradict each other, that the arithmetic holds, and that every call routes.py makes into a law module binds against the real signature.

eval.py grades the generated script, which is the only layer that can see an accent bleeding into the wrong mouth, a second speaker coming back flat, two people's actions blending, or forty actions crammed into twenty seconds. Needs the backend up. The graders are blunt and mechanical on purpose — no model judging a model — and each failure hands you the offending line.

Licence

MIT — see LICENSE.

Bundled third-party packs

PromptMasterLD ships two packs inside vendor/ so the whole rail installs as one repository. Each keeps its own folder, its own __init__.py and its own LICENSE, unmodified, and is loaded by this pack's __init__.py.

| Pack | Author | Licence | Why it is here | |---|---|---|---| | ComfyUI-H3-Multishot | RiftCast / jlucasmcrell | MIT | upstream for h3ms_bridge; its instruct and sampler are what multishot is built on | | ComfyUI-H3-Motion-Context | NikoDemon80 | GPL | H3 Master's clip chaining |

Full credit to both authors. The multishot contract in dials.py is ported from jlucasmcrell's instruct and is marked as such in the source.

Licence note: ComfyUI-H3-Motion-Context is GPL-licensed. Bundling it means this distribution as a whole is subject to the GPL. If you would rather keep this pack permissive, delete vendor/ComfyUI-H3-Motion-Context/, remove it from _VENDORED in __init__.py, and install it separately — H3 Master already raises a clear message when it is absent.