ComfyUI Node

MiniMax H3 Aicg 集成面板

A MiniMax H3 panel that hides fifteen inputs and hands you one wire

By JGRFW·Created about a month ago·Updated 2 days ago· 328
MiniMax H3 Aicg 集成面板
    • >
    ◄main_modetext_keyframes►
    ◄clip_name▾►
    ◄video_vae_name▾►
    ◄audio_vae_name▾►
    ◄aspectadaptive►
    ◄megapixels0.5►
    ◄duration_seconds5►
    ◄prompt►
    ◄task_typeauto►
    ◄audio_modelock_source►
    ◄audio_denoise_strength0.00►
    ◄drive_audio_ordinal1►
    ◄strict_prompt_tagstrue►
    ◄ref_image_sizematch►
    ◄first_frame►
    ◄last_frame►
    ◄hybrid_audio►
    ◄ref_image_1►
    ◄ref_image_2►
    ◄ref_image_3►
    ◄ref_image_4►
    ◄ref_image_5►
    ◄ref_image_6►
    ◄ref_image_7►
    ◄ref_image_8►
    ◄ref_image_9►
    ◄ref_video_1►
    ◄ref_video_2►
    ◄ref_video_3►
    ◄ref_audio_1►
    ◄ref_audio_2►
    ◄ref_audio_3►
    ◄gh_state_json►
    ◄prompt_override—►

    The thing that confuses everyone first: this node has no model input. Not a UNET loader slot, not a checkpoint, nothing. The author says it plainly in the node's own description - "the diffusion model remains external." So the panel does the boring half of an H3 setup (text encoder, both VAEs, canvas math, prompt, up to fifteen media references) and then hands you a single output socket labelled > that only one other node in the pack can accept.

    That socket is deliberate. MiniMax H3 generates picture and sound in one pass - a joint AV latent, not a video pass plus an audio pass - so its conditioning has to carry the audio decision too: which drive track, how much to denoise it, whether the model is inventing sound or being handed it. Bundling that into one object saves dragging twelve wires across the graph. It's the context-bus pattern rgthree popularised, wearing a private MiniMax type.

    What it actually does

    The visible widgets are clip_name (the text encoder, from models/text_encoders), video_vae_name and audio_vae_name (both from models/vae), plus aspect, megapixels and duration_seconds. Defaults point at the H3 family names: qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors for the encoder, minimax_h3_video_vae_fp16.safetensors and minimax_h3_audio_vae_fp32.safetensors for the two VAEs. If your dropdowns are empty, the files are in the wrong folder - that's the whole diagnosis.

    Everything else - main_mode, the big prompt editor, first_frame, last_frame, hybrid_audio, nine ref_image_* slots, three ref_video_*, three ref_audio_*, plus audio_mode, audio_denoise_strength, drive_audio_ordinal, strict_prompt_tags, ref_image_size and gh_state_json - is a hidden widget owned by the pack's front-end panel. You don't type into them; you click media in the panel and it writes filenames into the widgets. If the panel is missing, the pack's JS didn't load (see troubleshooting).

    The arithmetic bites people. aspect: adaptive copies the aspect of your first visual reference and falls back to 16:9; megapixels sets the area, rounded to multiples of 32. And duration_seconds doesn't give you that many seconds: frames snap to the model's 17-frame grid (frames ≡ 5 mod 17 at 24fps), so five seconds becomes 124 frames, an effective 5.17s. Audio is trimmed to that same timeline so the drive track and the reference block share a clock.

    Task type isn't a setting you pick - it's inferred from which slots hold files: prompt only is T2VA, a first frame is I2VA, first+last is FL2VA, last alone L2VA, and reference images or videos in all_reference mode make it Ref2VA. prompt_override is the one wire worth remembering: labelled Prompt, optional, and when connected it beats the panel's editor entirely.

    Wiring it up

    [UNETLoader: H3 diffusion model]  ─────────────► model ─┐
    [AICG3D_H3IntegrationGH] ── > ──► [AICG3D_H3IntegrationAdapterGH] ──┐
                                                                      av_latent ─► [AICG3D_H3DualClockT8GH] ─► [SamplerCustom]
    [SamplerCustom output] ── av_latent ─► [AICG3D_H3AVDecodeT8GH] ─► SaveVideo
    

    The Adapter (集成分离) unpacks > into positive, av_latent and the two VAEs; the dual-clock sampler builds sigmas; the AV decode node gives you frames and audio. That's the point of this set - the manual version of what the pack's bundled AICG3D_H3 render node does in one box.

    Install

    ComfyUI Manager, search AICG3D or 短剧工作台 (the pack is on the Comfy Registry as aicg3d-h3-suite). Or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/JGRFW/comfyui-AICG3D
    # restart ComfyUI, look under right-click → AICG3D → H3 集成
    

    Requirements are light - imageio-ffmpeg, psutil, requests, aiohttp; torch comes from ComfyUI. FFmpeg only matters for the pack's long-video combine node, not for this graph. You do need a recent ComfyUI with MiniMax H3 support, since the pack imports comfy.ldm.minimax at module load.

    One non-technical check first: H3's weights ship under MiniMax's community licence, which excludes the US, EU, UK and South Korea from its granted territory - outputs included.

    Where people get burned

    You install the pack and get no panel. The node is nearly empty without the JS extension. Update to the current pack version and hard-refresh - v1.1.9 bumped the front-end filename precisely because browsers kept serving stale modules.

    You install a second, older H3 integration pack alongside it. Don't. The whole reason every node here carries the AICG3D_H3_ prefix is namespace collisions with sibling H3 forks; the README also warns you off installing the standalone ComfyUI-AICG3D-PromptSplit at the same time, because duplicate node IDs overwrite each other's front-end logic. Mixing in an upstream MiniMaxH3Easy or Goohai/... node will work right up until it doesn't.

    You drag > and nothing connects. Correct behaviour. The MiniMax socket accepts exactly one thing: the Adapter. That's how the pack guarantees nothing else mis-consumes the bundle.

    Your 5-second clip is 5.17 seconds. Not a bug, that's the 17-frame grid. Don't hand-trim the audio to 5.0s afterward or you'll desync the drive track from the latent.

    CategoryAICG3D/H3 集成

    Inputs (34)

    NameTypeDefaultDescription
    main_modeCOMBOtext_keyframes2 options: text_keyframes, all_reference
    clip_nameCOMBO0 options:
    video_vae_nameCOMBO0 options:
    audio_vae_nameCOMBO0 options:
    aspectCOMBOadaptive9 options: adaptive, 16:9, 9:16, 3:2, 2:3, 4:3, +3
    megapixelsFLOAT0.50.2–2—
    duration_secondsINT52–30—
    promptSTRING—
    task_typeCOMBOauto7 options: auto, t2va, i2va, l2va, fl2va, ref2va, +1
    audio_modeCOMBOlock_source4 options: native, lock_source, reference_only, remix_source
    audio_denoise_strengthFLOAT0.000–1—
    drive_audio_ordinalINT10–6—
    strict_prompt_tagsBOOLEANtrue—
    ref_image_sizeCOMBOmatch2 options: match, max
    first_frameoptSTRINGOptional first frame
    last_frameoptSTRINGOptional last frame
    hybrid_audiooptSTRINGOptional audio for keyframe Hybrid
    ref_image_1optSTRING—
    ref_image_2optSTRING—
    ref_image_3optSTRING—
    ref_image_4optSTRING—
    ref_image_5optSTRING—
    ref_image_6optSTRING—
    ref_image_7optSTRING—
    ref_image_8optSTRING—
    ref_image_9optSTRING—
    ref_video_1optSTRING—
    ref_video_2optSTRING—
    ref_video_3optSTRING—
    ref_audio_1optSTRING—
    ref_audio_2optSTRING—
    ref_audio_3optSTRING—
    gh_state_jsonoptSTRING—
    prompt_overrideoptSTRINGOptional upstream prompt; overrides the local prompt editor when connected

    Outputs (1)

    NameTypeDescription
    >MiniMax—