Nodes/ComfyUI_JR_MiniMaxH3Node/JR MiniMax H3 Director Desk
ComfyUI Node

JR MiniMax H3 Director Desk

A timeline editor inside a ComfyUI node — no LLM required

By Goldlionren·Created 21 days ago·Updated about 9 hours ago· 28
JR MiniMax H3 Director Desk
    • director_prompt
    • pip
    director_state_json{"schema":"jr_h3_director_state","schema_version":1,"timeline":{"duration_seconds":10.0,"fps":24.0},"global_direction":"","shots":[{"id":"shot-1","start":0.0,"end":10.0,"direction":"","notes":""}],"visual_items":[],"audio_items":[],"ui":{"selected_item_id":null,"inspector_tab":"item","zoom":1.0,"lane_order":{"visual":[],"audio":[]}}}

    The JR H3 Director Desk is the closest thing this pack has to a centerpiece: a multimodal timeline editor that lives inside a ComfyUI node, with lanes for shots, images, video, audio, per-item directions and notes. You drag things around in the node's own UI, and it deterministically compiles everything into a raw director_prompt plus an immutable JR_H3_DIRECTOR_PIPE that flows downstream into the prompt optimizer and, eventually, the H3 conditioning node. The line to remember is in the brief: this node does not call an LLM. Everything is compiled locally and in a fixed order - which is exactly why it's deterministic and why it can't hallucinate your scene structure for you.

    H3 is MiniMax's 33B omni-modal video model - one context covering text, image, video and audio, with native stereo audio generated jointly rather than bolted on. A workflow for it wants to describe a whole scene, not just a prompt string. That's what the Director Desk is for: instead of writing one wall of text, you lay out a timeline and let the node structure the description for you.

    What comes out and where it goes

    director_prompt (STRING) is the compiled raw prompt - a monitoring/debug string. The thing you actually wire forward is the pip output of type JR_H3_DIRECTOR_PIPE. That pipe is the authoritative data bus for the whole director chain: it carries the compiled prompt, duration, media registry and assets, and every downstream node (Prompt Optimizer, Prompt Review & Continue, Directed Video Conditioning) consumes or extends it without mutating the upstream one. The final prompt priority is fixed: reviewed > optimized > director.

    The input that looks scary

    The only required input is director_state_json, a big multiline STRING whose default value is a JSON timeline (duration, fps, shots, visual/audio items, UI state). You almost never hand-edit it - the node's own front-end edits that state and feeds it back. It's the serialization format the node uses to persist your timeline inside the workflow file, which is a nice trick: the workflow JSON stays small because it stores a lightweight timeline plus asset descriptors rather than tensors or base64 media. First Frame is a single point anchor at 0.0s; Visual and Reference Audio can overlap, but Driving Audio clips cannot.

    Install

    Part of the ComfyUI_JR_MiniMaxH3Node pack, so install once for all 16 nodes. From ComfyUI Manager search ComfyUI_JR_MiniMaxH3Node, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Goldlionren/ComfyUI_JR_MiniMaxH3Node
    <your-comfyui-python> -m pip install -r ComfyUI_JR_MiniMaxH3Node/requirements.txt
    

    Use the same Python as ComfyUI, restart, and do a hard browser refresh - the desk is one of the nodes with real front-end JavaScript, and stale caches cause "where's my timeline?" confusion.

    Troubleshooting

    • The timeline UI doesn't show up after updating. Hard-refresh the browser (Ctrl+Shift+R). The README calls this out explicitly for the preview and review UIs.
    • The node shrinks back to a tiny box. It shouldn't - the front-end only applies its ~1000×650 default on first creation and won't shrink what you've resized. If it did, that's a stale-UI symptom again; refresh.
    • Conflicts when you connect legacy inputs downstream. If you wire old first_frame/last_frame/ref_image_1..9 inputs into the optimizer alongside the pipe, the optimizer will raise an explicit conflict rather than silently merging. When a pipe is connected, the pipe's timeline is authoritative.
    CategoryJR MiniMax H3/Director

    Inputs (1)

    NameTypeDefaultDescription
    director_state_jsonSTRING{"schema":"jr_h3_director_state","schema_version":1,"timeline":{"duration_seconds":10.0,"fps":24.0},"global_direction":"","shots":[{"id":"shot-1","start":0.0,"end":10.0,"direction":"","notes":""}],"visual_items":[],"audio_items":[],"ui":{"selected_item_id":null,"inspector_tab":"item","zoom":1.0,"lane_order":{"visual":[],"audio":[]}}}

    Outputs (2)

    NameTypeDescription
    director_promptSTRING
    pipJR_H3_DIRECTOR_PIPE