ComfyUI Node

MiniMax H3 Aicg 上下文分段

Past 30 seconds, H3 stops being a video model and starts being a timeline — this is the node that plans it

By JGRFW·Created about a month ago·Updated about 13 hours ago· 261
MiniMax H3 Aicg 上下文分段
  • h3_bundle
  • media
  • media_1
  • media_2
  • media_3
  • media_4
  • media_5
  • media_6
  • media_7
  • media_8
  • media_9
  • media_10
  • media_11
  • media_12
  • media_13
  • media_14
  • media_15
  • media_16
  • media_17
  • media_18
  • media_19
  • media_20
  • media_21
  • media_22
  • media_23
  • media_24
  • media_25
  • media_26
  • media_27
  • media_28
  • media_29
  • media_30
  • media_31
  • media_32
  • media_33
  • media_34
  • media_35
  • media_36
  • media_37
  • media_38
  • media_39
  • media_40
  • media_41
  • media_42
  • media_43
  • media_44
  • media_45
  • model
  • h3_context
◄modecontext_segments►
◄audio_modegenerated►
◄prompt►
◄resolution480P►
◄aspect_ratio16:9►
◄width1344►
◄height768►
◄seconds5.0►
◄segment_seconds►
◄context_length5►
◄continuity_modelatent_guide►
◄advancedtrue►
◄fps24►
◄keyframe_rolefirst►
◄ref_image_size1k►
◄reference_mention_modeindex►
◄prompt_optimizer_settingsfalse►
◄prompt_optimizer_scene_guidenone►
◄context_prompt_optimizer_modewhole_sequence►
◄context_prompt_optimizer_concurrency3►
◄prompt_optimizer_resources►
◄prompt_optimizer_marker►
◄prompt_optimizer_prompt_connectedfalse►
◄media_type_1►
◄media_type_2►
◄media_type_3►
◄media_type_4►
◄media_type_5►
◄media_type_6►
◄media_type_7►
◄media_type_8►
◄media_type_9►
◄media_type_10►
◄media_type_11►
◄media_type_12►
◄media_type_13►
◄media_type_14►
◄media_type_15►
◄media_type_16►
◄media_type_17►
◄media_type_18►
◄media_type_19►
◄media_type_20►
◄media_type_21►
◄media_type_22►
◄media_type_23►
◄media_type_24►
◄media_type_25►
◄media_type_26►
◄media_type_27►
◄media_type_28►
◄media_type_29►
◄media_type_30►
◄media_type_31►
◄media_type_32►
◄media_type_33►
◄media_type_34►
◄media_type_35►
◄media_type_36►
◄media_type_37►
◄media_type_38►
◄media_type_39►
◄media_type_40►
◄media_type_41►
◄media_type_42►
◄media_type_43►
◄media_type_44►
◄media_type_45►

The headline number for MiniMax H3 is 4–15 second clips. The 短剧工作台 pack exists because people don't want clips, they want episodes. MiniMax H3 Aicg 上下文分段 (Context Segments) is the planning node for that: it splits a long prompt into a sequence of shots, carries a rolling context between them, and hands the whole plan off as one h3_context.

Note the name of the category it lives in - 提示词与 Skill, prompt and skill. It does not generate anything. It plans.

The split between this and the plain H3 node

MiniMax H3 Aicg caps seconds at 30. This node's seconds goes to 900, and adds the two dials that make long video tractable: segment_seconds and context_length. That's the whole distinction. One node renders a clip; this one renders a sequence of clips that are supposed to look like they were shot together.

How the shared context actually works

H3 is natively a 17k+5 frame model - its latent temporal axis lands on 17-frame strides, with a 5-frame head. context_length respects that: 5 to 141, in steps of 17. It's how many frames of the previous segment get carried into the next one as context. The pack's own comments describe the trick: a clip ending on 17k+5 frames has a latent whose tail can be reused as the next segment's context head, and because the alignment is done on cumulative cuts rather than by rounding each segment, seams stay on the grid.

continuity_mode decides how much of that context is binding:

  • latent_guide (default) - carry the previous latent as a guide. The lightest touch, and the one the docs treat as the normal path. It's also the mode that demands grid-aligned cuts: feed it off-grid boundaries and it refuses.
  • guide - the looser variant, used when you aren't on the 17-frame grid.
  • soft_av / hard_av - seed and mask the overlapping audio+video prefix, so boundary frames are held rather than re-invented. hard_av holds the whole prefix; soft_av keeps the picture boundary exact and releases the final eight audio ticks with a half-cosine handoff, which is the difference between a clean cut and an audible click or a slurred word across the join.

Audio boundaries are the part nobody warns you about. Video people will forgive a slightly different shadow; nobody forgives a syllable that gets clipped in half.

What you set

  • prompt - the whole script/sequence description. Shots are planned from it.
  • segment_seconds - a string, not a number: a comma list of segment lengths. Leave it blank and the planner chooses. This is the field people miss because it doesn't look like a widget, it looks like a text box. It is.
  • audio_mode - generated (H3 makes the audio, as usual) or digital_human (one audio track from your media becomes a locked external driver; with no audio supplied it falls back to normal processing).
  • resolution / aspect_ratio / width / height - as on the single-shot node.
  • advanced - on by default here, exposing fps (locked to 24 - H3 territory), keyframe_role, ref_image_size, reference_mention_mode.
  • prompt_optimizer_settings / prompt_optimizer_scene_guide - the 19-preset rewriting pass, plus context_prompt_optimizer_mode (whole_sequence vs per_segment) and context_prompt_optimizer_concurrency (1–20, default 3) to control how many segment rewrites run at once. Same-model concurrency is how you make that fast without thrashing VRAM.
  • media, plus media_1…media_45 behind the scenes - the resource library feeding per-segment references.

Outputs and where they go

model and h3_context. The context goes into the pack's segment chain - Segment Sample → Segment Step → 分段汇总 → Segment Decode - not into the plain sampler. Plug it into the wrong node and you get an explicit refusal: "Use Segment Sample for a Context Segments H3 Context." That message is the pack being kind.

Installing

ComfyUI Manager, search AICG3D or 短剧工作台; or:

cd ComfyUI/custom_nodes
git clone https://github.com/JGRFW/comfyui-AICG3D

Restart, right-click → AICG3D. Needs the H3 weights, the Qwen3-VL text encoder and both H3 VAEs, same as everything else in the pack. imageio-ffmpeg handles final composition.

Where people get burned

Reading seconds as "length of this generation" instead of "length of the plan." On a heavy 33B model, a 900-second plan at 720p is not a coffee break, it's a night - plan segments, check the first one, then commit. Also: don't touch latent_guide into an off-grid cut scheme. Either keep snap_to_latent_grid on where cuts are computed, or switch continuity to guide. The pack rejects the combination rather than silently producing drifting seams, which is the right call, but it will feel like a bug the first time.

CategoryAICG3D/提示词与 Skill

Inputs (115)

NameTypeDefaultDescription
h3_bundleMINIMAX_H3_BUNDLE—
modeCOMBOcontext_segments1 options: context_segments
audio_modeCOMBOgenerated2 options: generated, digital_human
promptSTRING—
resolutionCOMBO480P12 options: 360P, 416P, 480P, 540P, 640P, 720P, +6
aspect_ratioCOMBO16:98 options: 1:1, 2:3, 3:2, 3:4, 4:3, 9:16, +2
widthINT134432–16384—
heightINT76832–16384—
secondsFLOAT5.00.2–900—
segment_secondsSTRING—
context_lengthINT55–141—
continuity_modeCOMBOlatent_guide4 options: latent_guide, guide, soft_av, hard_av
advancedBOOLEANtrue—
fpsFLOAT2424–24—
keyframe_roleCOMBOfirst2 options: first, last
ref_image_sizeCOMBO1k5 options: match, 1k, 1.5k, 2k, original
reference_mention_modeCOMBOindex2 options: filename, index
prompt_optimizer_settingsBOOLEANfalse—
prompt_optimizer_scene_guideCOMBOnone19 options: none, 3d_animation_short, brand_promo, coop_game_intro, handdrawn_live, minimalist_product_ad, +13
context_prompt_optimizer_modeCOMBOwhole_sequence2 options: whole_sequence, per_segment
context_prompt_optimizer_concurrencyINT31–20—
mediaopt*—
prompt_optimizer_resourcesoptSTRING—
prompt_optimizer_markeroptSTRING—
prompt_optimizer_prompt_connectedoptBOOLEANfalse—
media_1opt*—
media_type_1optSTRING—
media_2opt*—
media_type_2optSTRING—
media_3opt*—
media_type_3optSTRING—
media_4opt*—
media_type_4optSTRING—
media_5opt*—
media_type_5optSTRING—
media_6opt*—
media_type_6optSTRING—
media_7opt*—
media_type_7optSTRING—
media_8opt*—
media_type_8optSTRING—
media_9opt*—
media_type_9optSTRING—
media_10opt*—
media_type_10optSTRING—
media_11opt*—
media_type_11optSTRING—
media_12opt*—
media_type_12optSTRING—
media_13opt*—
media_type_13optSTRING—
media_14opt*—
media_type_14optSTRING—
media_15opt*—
media_type_15optSTRING—
media_16opt*—
media_type_16optSTRING—
media_17opt*—
media_type_17optSTRING—
media_18opt*—
media_type_18optSTRING—
media_19opt*—
media_type_19optSTRING—
media_20opt*—
media_type_20optSTRING—
media_21opt*—
media_type_21optSTRING—
media_22opt*—
media_type_22optSTRING—
media_23opt*—
media_type_23optSTRING—
media_24opt*—
media_type_24optSTRING—
media_25opt*—
media_type_25optSTRING—
media_26opt*—
media_type_26optSTRING—
media_27opt*—
media_type_27optSTRING—
media_28opt*—
media_type_28optSTRING—
media_29opt*—
media_type_29optSTRING—
media_30opt*—
media_type_30optSTRING—
media_31opt*—
media_type_31optSTRING—
media_32opt*—
media_type_32optSTRING—
media_33opt*—
media_type_33optSTRING—
media_34opt*—
media_type_34optSTRING—
media_35opt*—
media_type_35optSTRING—
media_36opt*—
media_type_36optSTRING—
media_37opt*—
media_type_37optSTRING—
media_38opt*—
media_type_38optSTRING—
media_39opt*—
media_type_39optSTRING—
media_40opt*—
media_type_40optSTRING—
media_41opt*—
media_type_41optSTRING—
media_42opt*—
media_type_42optSTRING—
media_43opt*—
media_type_43optSTRING—
media_44opt*—
media_type_44optSTRING—
media_45opt*—
media_type_45optSTRING—

Outputs (2)

NameTypeDescription
modelMODEL—
h3_contextMINIMAX_H3_CONTEXT—