Nodes/ComfyUI-MiniMaxRefPack/MiniMax References Manager
ComfyUI Node

MiniMax References Manager

The MiniMax H3 Reference Manager That Writes Its Own Prompt

By Hearmeman24·Created 11 days ago·Updated 8 days ago· 28
MiniMax References Manager
    • image_1
    • image_2
    • image_3
    • image_4
    • image_5
    • image_6
    • image_7
    • image_8
    • image_9
    • video_1
    • video_2
    • video_3
    • video_audio_1
    • video_audio_2
    • video_audio_3
    • audio_1
    • audio_2
    • audio_3
    • prompt
    • debug
    direction
    references_json
    system_prompt
    prompt_provideropenrouter
    openrouter_api_key
    openrouter_modelgoogle/gemini-3-flash-preview
    reasoning_effortmedium
    api_base
    local_model_slug
    job_typeauto
    width1280
    height720
    length_seconds8.00
    max_reference_edge2048

    MiniMax H3 is the 33B omni-modal video model from the Hailuo folks - text, image, video and audio in one context, with native stereo sound - and it got day-zero ComfyUI support. The catch: the core MiniMax H3 Reference to Video node expects up to nine images, three videos, three soundtracks and three audio clips, each on its own socket, plus a prompt in a six-section format. Wire that by hand and you've built a plate of spaghetti you re-cook every time you swap a reference. This node removes that pain.

    What it actually is

    MiniMaxH3ReferencePack (display name "MiniMax References Manager") is a companion node, not a generator. It owns your whole reference set - you drop images, videos and audio into its UI instead of wiring loaders - and fans them out to the core node's 18 reference sockets. Wire it once and changing a reference never touches the graph. Empty slots emit None, which the core node skips, so the unused sockets just dangle.

    It does two jobs beyond the plumbing. First, it labels every asset the way MiniMax will actually see it - <Picture 2>, <Video 1>, <Audio 1> - right on the tile. Second, and this is the party trick, it writes the prompt for you: a vision-language model reads your direction, looks at the references, and produces the six-section MiniMax prompt H3 expects. Two registers - standard writes a scene, replacement swaps something in a reference video for something in a reference image - and auto lets a cheap classifier pick.

    It's emphatically not a wrapper - the source is explicit that it never touches H3's VAE or tokenizer. Generation still happens in MiniMax H3 Reference to Video - which is also why it downloads no model files; the whole dependency is requests.

    The inputs that matter

    The only required input is direction - your steer on subject, mood and action. Everything else has sane defaults. Three matter:

    • prompt_provider - openrouter, local, or none; the whole architecture in one dropdown. openrouter calls a hosted multimodal model (needs a key). local points the writer at any OpenAI-compatible server on your machine - Ollama, LM Studio, llama.cpp, vLLM - no account, nothing leaves your box. none skips the API and passes your direction text straight through to prompt.
    • reasoning_effort - none/low/medium/high, default medium. Only sent to OpenRouter, dropped for models that don't reason.
    • max_reference_edge - downscales a reference image whose long edge exceeds it (default 2048, 0 off). Not cosmetic: MiniMax sizes references off their short edge, so a huge reference silently makes every sampling step pay for it.

    There's a nice touch in local mode: the Local LLM button sweeps the usual local ports (LM Studio 1234, Ollama 11434, llama.cpp 8080, vLLM 8000), lists every server that answered, and fills in api_base and local_model_slug in one click. The scan is loopback-only.

    The outputs

    You get 20 sockets: image_1image_9, video_1video_3, video_audio_1video_audio_3 (each video's soundtrack, extracted unless you toggle it off), audio_1audio_3, plus prompt and debug. Wire the 18 reference sockets and prompt into MiniMax H3 Reference to Video and you're done. The debug socket dumps the whole request - where it posted, the model, every setting, each content part - worth a preview node.

    Installing it

    ComfyUI Manager, search "ComfyUI-MiniMaxRefPack". Or the manual way:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Hearmeman24/ComfyUI-MiniMaxRefPack
    pip install -r ComfyUI-MiniMaxRefPack/requirements.txt
    

    Then restart ComfyUI. A complete Reference-to-Video workflow ships with the pack (Workflow → Browse Templates → ComfyUI-MiniMaxRefPack), so you can see it all wired up first.

    Where people get burned

    • Local scan finds nothing. Start your server first (ollama serve, or LM Studio's Developer tab), then Rescan. And localhost means the machine ComfyUI runs on - if ComfyUI is in Docker or on a pod, its localhost isn't your laptop.
    • Local prompts come out weaker. A local server takes text and images, not video or audio, so a clip goes as six still frames with no sound. The node says so on the canvas and in debug - honest, not broken.
    • A key typed into the node lives inside the workflow JSON. Sharing that workflow ships your key - use OPENROUTER_API_KEY or LLM_KEY instead, which take precedence and stay out of the file. On local mode the environment is never read, so a stray key can't follow a pasted URL to someone else's server.
    • Odd retention_analysis lines in the prompt. Known quirk: the packaged system prompt asks for one line per label, while MiniMax's guide says invented content gets none - the model sometimes resolves that by dropping or inventing a line. The debug socket shows exactly what it was told.

    One thing to keep separate: this node manages references and writes prompts - running H3 still needs the core node and weights, which the MiniMax H3 Community License currently bars in the US, EU, UK and Korea. The node is MIT, needs no account, and only calls the provider you choose.

    CategoryMiniMax H3

    Inputs (14)

    NameTypeDefaultDescription
    directionSTRINGSteers the VLM's prompt writing (subject, mood, action).
    references_jsonoptSTRINGReference list written by the modal. Do not hand-edit.
    system_promptoptSTRINGVLM system prompt, editable per-workflow via the settings modal. Blank falls back to the packaged default.
    prompt_provideroptCOMBOopenrouterWho writes the prompt. openrouter = the hosted API (needs a key). local = any OpenAI-compatible server, set api_base below (Ollama, LM Studio, llama.cpp, vLLM); video is sent as still frames and audio is not sent at all. none = no call, your direction text passes through verbatim.
    openrouter_api_keyoptSTRINGOpenRouter key. Blank falls back to OPENROUTER_API_KEY / LLM_KEY.
    openrouter_modeloptCOMBOgoogle/gemini-3-flash-previewUsed only when prompt_provider is 'openrouter'. Lists models that accept text, images, audio and video.
    reasoning_effortoptCOMBOmediumUsed only when prompt_provider is 'openrouter'. How hard the model thinks before writing. OpenRouter drops it for models that don't reason; other endpoints never see it.
    api_baseoptSTRINGOnly used when prompt_provider is 'local'. The base URL of an OpenAI-compatible server, ending in /v1. Ollama: http://localhost:11434/v1 · LM Studio: http://localhost:1234/v1
    local_model_slugoptSTRINGUsed only when prompt_provider is 'local'. The model id your own server reports, e.g. google/gemma-4-e2b or qwen2.5vl:7b. The Local LLM button fills this in for you.
    job_typeoptCOMBOautoWhich register to write in. standard = a scene (six-section Ref2VA). replacement = swap one thing in a reference video for the thing in a reference image. auto = a cheap classifier decides, and only runs when there is at least 1 video and 1 image.
    widthoptINT12800–8192Target frame width, told to the VLM. 0 = unspecified.
    heightoptINT7200–8192Target frame height, told to the VLM. 0 = unspecified.
    length_secondsoptFLOAT8.000–60Target clip duration in seconds, told to the VLM. 0 = unspecified.
    max_reference_edgeoptINT20480–8192Downscale a reference IMAGE whose long edge exceeds this (0 = off). Never upscales. MiniMax sizes references off their SHORT edge, so at ref_image_size=max a wide sheet arrives huge and every sampling step pays for it. Reference videos are already capped by the core node.

    Outputs (20)

    NameTypeDescription
    image_1IMAGE
    image_2IMAGE
    image_3IMAGE
    image_4IMAGE
    image_5IMAGE
    image_6IMAGE
    image_7IMAGE
    image_8IMAGE
    image_9IMAGE
    video_1IMAGE
    video_2IMAGE
    video_3IMAGE
    video_audio_1AUDIO
    video_audio_2AUDIO
    video_audio_3AUDIO
    audio_1AUDIO
    audio_2AUDIO
    audio_3AUDIO
    promptSTRING
    debugSTRING