JZL - 🤖 MiniMax-H3短剧导演台Max
Run 48 MiniMax H3 clips from one node, and keep the VRAM bill flat
- model
- clip
- vae
- audio_vae
- 已处理剧本
The class name says "asset manager," but the name undersells it. Displayed as JZL - 🤖 MiniMax-H3短剧导演台Max ("short-drama director console Max"), this is the one-node-to-run-the-whole-thing end of the JZL MiniMax-H3 pack: you feed it a story, it has an LLM cut that into a shot list, then it runs every shot through the full local H3 chain - ref2va encode, sample, decode, audio mux - writing each clip to disk before it starts the next one. Its reason for existing is the trick in the middle: the VRAM and RAM bill stays roughly flat whether you ask for one clip or forty-eight.
You need the context to see why that matters. MiniMax H3 is the lab's 33B omni-modal video model (open weights from August 2026), generating 4–15 second clips with native stereo audio - and it is not small, with weights in the tens of gigabytes. The moment you try episodic work in a stock ComfyUI graph - the "AI short-drama" (AI短剧) format that's a whole cottage industry in China, where characters and locations have to persist across dozens of shots - you hit a chain of encode/sample/decode nodes that quietly accumulate decoded tensors until shot four OOMs. The author frames Max as a self-contained replica of the popular Chinese 8888 one-click short-drama workflow, but rewritten segment-by-segment so memory never stacks.
How it works: encode, sample, dump, move on
Put a story in internal_prompt, pick a run_mode, and Max decomposes it into [SHOT_START]…[SHOT_END] blocks. Then, per segment: it resolves references from the asset pool (things you @mention, plus scene/video/audio dispatch slots), encodes them via ref2va when references exist or plain text-to-video when they don't, samples, optionally latent-upscales and takes a second sampling pass (upscale_scale), decodes video and audio, and immediately writes the mp4 with ffmpeg to output/jzl/{story_name}/. Tensors are dropped, the cache is cleaned, next segment. Once every segment is on disk it can read them back and concat them into one merged video. The pack also pokes PYTORCH_CUDA_ALLOC_CONF=expandable_segments in early for CUDA builds, because the other silent killer in long runs is allocator fragmentation.
The inputs that actually matter
Most of the schema is set-and-forget. The few you'll touch:
run_mode-故事拆解模式(decompose a story into N segments),故事扩展模式(expand then decompose),穿透生成模式(skip the LLM entirely - prompt goes straight to generation, one clip unless your text already has[SHOT_START]blocks), or仅提示词输出(LLM only, no video). Handy for testing.story_name- genuinely required. It names the disk folder and everything downstream keys off it. Leave it empty and the node stops with a clear "必须填写故事名称" block.video_count(1–48) - how many segments to make.internal_prompt- where your story or prompt goes; it saves with the workflow.aspect_ratio+megapixels+duration- the canvas math (resolution is derived from the aspect ratio and total megapixels, aligned to a multiple of 32; duration is per-segment seconds).- The optional
model/clip/vae/audio_vaeinputs: withoutmodel/clip/vaeno video happens at all (segments get skipped, logs say why). Wireaudio_vaeany time a segment references video or audio - H3 decodes audio jointly and won't without it.
Output
One STRING out: 已处理剧本, the full LLM-processed script, for display or saving downstream. That's it - there's deliberately no video port. Everything you generated lives in output/jzl/{story_name}/, which is exactly what the pack's JZL_MiniMaxVideoViewer reads straight off disk.
Install
Clone into custom_nodes (ComfyUI Manager: search ComfyUI-JZL-MiniMax-H3), then restart:
cd ComfyUI/custom_nodes
git clone https://github.com/wjluoxiao/ComfyUI-JZL-MiniMax-H3
Dependencies are refreshingly light - requirements.txt is just imageio-ffmpeg (the ffmpeg fallback). You need torch/torchaudio, which a modern ComfyUI already has, plus a version new enough for the V3 io.Schema authoring API - the same requirement the official MiniMax H3 nodes carry. No model files ship in the pack; H3 itself you load separately.
Traps
- Script decomposition wants an LLM, and defaults to an online OpenAI-compatible API (the panel's default points at a DeepSeek-style endpoint - you set the key and base URL in the script-decompose panel). Prefer local? Switch the backend to 本地模型, then run
python install_runtime.pyonce in the node folder (it fetches a pinned llama.cppllama-server, zero pip) and pick a GGUF. If the LLM errors, the run stops - deliberately, rather than continuing with garbage prompts. To skip the LLM entirely, use 穿透生成 mode. - Chinese-only UI. Every label, panel and story style (热血战斗, 霸总甜宠…) is in Chinese. You don't need to read much if you copy a template, but expect to learn a handful of characters.
- Check the logs when "no video." A skipped segment prints
第i段跳过with exactly which input (model/CLIP/VAE/audio_vae) was missing. - Remember the license isn't a node problem. H3's community license excludes the US, EU, UK and South Korea - run the weights there and the geofence is on you, not this pack.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| run_mode | COMBO | 🛠️ 故事拆解模式 | 故事拆解模式=按情节把故事拆解为N段(不创意扩展);故事扩写模式=只按风格+字数把故事扩写为丰满正文(不拆解,纯文本经「已处理剧本」输出);穿透生成模式=跳过LLM拆解与增强,直接用提示词生成(含[SHOT_START]块则逐段,否则单段);仅提示词输出=拆解+增强的完整分段剧本文本经「已处理剧本」输出,不生成视频 |
| display_info | STRING | 分辨率:832x480丨每段帧数:192丨共计段数:6丨总帧数:1152丨总时长:48秒 | 只读显示:当前画幅/MP/时长/段数计算出的分辨率、每段帧数、段数、总帧数、总时长(对齐倍数固定 32) |
| aspect_ratio | COMBO | 16:9 (Widescreen) | 画幅比例(分辨率按 MP×1024² 公式自动计算,对齐倍数固定 32) |
| megapixels | FLOAT | 0.40.1–16 | 总像素数(MP),画幅×MP 决定分辨率 |
| duration | STRING | 5-5 | 每段视频时长(秒),等同「剧本与镜头处理器」的每段视频时长(秒) |
| scale_factor | FLOAT | 1.01–5 | 参考图放大系数 |
| upscale_scale | FLOAT | 1.001–4 | 二采(Ref2va)放大倍数 |
| video_count | INT | 11–48 | 生成视频数量(分段数,支持 1~48 任意值;逐段即时落盘,段数再多也不叠加内存) |
| story_style | COMBO | 热血战斗 | 故事风格(剧本处理器按此风格拆解与润色) |
| story_name | STRING | 机智罗 | 故事名称(用于保存命名 / 落盘目录 output/jzl/{故事名} / 生成视频管理) |
| external_prompt | STRING | 提示词接线输入(与 CLIP Text Encode 同类):此输入框左上角圆点可拖线连接上游 STRING 文本节点;连线后以上游文本为提示词(优先于「节点内提示词」大框;未接且留空则用大框内容) | |
| internal_prompt | STRING | 节点内编辑的提示词(提示词来源,随工作流保存) | |
| manager_settings | STRING | 本节点独立保存的完整配置 JSON(资产/增强/采样解码/保存),随工作流保存,节点间互不影响 | |
| modelopt | MODEL | — | |
| clipopt | CLIP | — | |
| vaeopt | VAE | — | |
| audio_vaeopt | VAE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| 已处理剧本 | STRING | 全部 LLM 处理后的剧本/提示词文本(供下游展示/保存用;「生成视频查看器」不再接收该端口,改直接读盘) |