JZL - 🤖 MiniMax-H3短剧导演台Mini
JZL's director's console, Mini
- model
- clip
- vae
- audio_vae
- 主模型
- 视觉VAE
- 音频VAE
- Latent放大参数
- 正向条件
- Latent
- 已拆解剧本
Want to make a short drama - six shots, an ongoing character, reference images and music clips - out of MiniMax H3? The slow way is a pile of nodes: a script LLM, a reference scheduler, a ref2va encoder, a sampler, a decoder, wired by hand. The fast way is this thing. "短剧导演台" means short-drama director's console, and the Mini flavor does exactly what the name implies: story in, already-encoded shot list out. It's the front half of a one-node pipeline that a pack called ComfyUI-JZL-MiniMax-H3 ships in both Pro and Mini trims. Mini skips sampling and decoding entirely - it hands you ready-to-sample conditioning and latents and lets you own the sampler. If you prefer your pipelines transparent, that's not a bug, it's the feature.
What it actually does
Under the hood it runs a four-step chain: it loads your reference assets (images, videos, audio) into a pool, calls a local LLM to decompose your story into N shot segments, schedules the right references to each segment via @mentions and scene/video/audio slots, then runs the official ref2va reference encoding on every segment. What comes out is a list of positive conditionings and a list of latents - one pair per shot - plus a passthrough of your model and VAEs. Downstream, you hook each pair into a sampler and decode. The LLM part is the fun bit: the pack abandoned llama-cpp-python and now shells out to a llama-server subprocess (prebuilt llama.cpp b10436), so it runs, finishes, and releases VRAM instead of squatting on your GPU. It also means there's a one-time setup step before the LLM modes work, which is the thing everyone trips over.
The inputs that matter
Run mode is where you steer the whole thing. 故事拆解模式 (story decompose) splits your story into N segments with no creative expansion. 故事扩展模式 (story expand) writes the story out further first, then splits. 穿透生成模式 (passthrough) skips the LLM entirely - feed it a ready prompt, and if it contains [SHOT_START] blocks it goes segment by segment, otherwise single segment. 仅提示词输出 (prompt-only) runs the LLM and outputs text only, no encoding - handy for iterating on a script cheaply.
Three more you'll actually touch:
- 故事名称 (story name) - mandatory. Leave it blank and the node hard-stops with "必须填写「故事名称」" and blocks downstream. It's used for save paths and logs.
- 生成视频数量 (video count) - the segment count, 1–48, and it controls how many shots the LLM decomposes into.
- megapixels / aspect_ratio / duration - resolution is computed with the official
MP × 1024²formula (rounded to 32), and each segment is 4–15 seconds at 24fps, frame count aligned to H3's17k+5.
Optional model inputs are model, clip, vae, and audio_vae - all passthrough. The encoding actually needs CLIP + VAE; if they're missing it still writes the script but refuses to encode and blocks downstream with a clear message.
The outputs and the wiring
The two list outputs are the point: 正向条件 (conditioning) and Latent, one entry per segment, matched by index. For a six-shot story you get six conditioning/latent pairs to feed six samplers (or however you want to handle lists in your ComfyUI version). The other outputs are the passthrough 主模型 / 视觉VAE / 音频VAE, a Latent放大参数 float to feed a second-pass (二采) upscale node, and 已拆解剧本 - the full post-LLM script as text, which you'll want for debugging.
Install and gotchas
ComfyUI Manager (search "ComfyUI-JZL-MiniMax-H3"), or cd ComfyUI/custom_nodes && git clone https://github.com/wjluoxiao/ComfyUI-JZL-MiniMax-H3, then restart. Dependencies are light - torch, torchaudio, plus imageio-ffmpeg from requirements.txt as a video-frame-extraction fallback - but it needs a recent ComfyUI with comfy_api.latest (V3 io.Schema style). Before first LLM use, run the runtime installer in the pack dir: python install_runtime.py (Windows: double-click install_runtime.bat). --dry-run checks without downloading.
Where people get burned: the English README only documents the sibling reference-encode node, so this console is effectively undocumented in English - expect Chinese labels and to learn by doing. The MiniMax H3 weights themselves ship under a community license that excludes the US, EU, UK, and South Korea, so check your region before investing in a workflow. And if a segment has video/audio references but you didn't connect audio_vae, that segment silently skips encoding - the most confusing failure in the box.
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 | 参考图放大系数 |
| video_count | INT | 11–48 | 生成视频数量(分段数,支持 1~48 任意值;统一控制:提示词拆解段数) |
| upscale_scale | FLOAT | 1.001–4 | 二采(Ref2va)放大倍数,从「Latent放大参数」输出给下游二采放大节点 |
| story_style | COMBO | 热血战斗 | 故事风格(剧本处理器按此风格拆解与润色) |
| story_name | STRING | 机智罗 | 故事名称(用于保存命名 / 日志) |
| external_prompt | STRING | 提示词接线输入(与 CLIP Text Encode 同类):此输入框左上角圆点可拖线连接上游 STRING 文本节点;连线后以上游文本为提示词(优先于「节点内提示词」大框;未接且留空则用大框内容) | |
| internal_prompt | STRING | 节点内编辑的提示词(提示词来源,随工作流保存) | |
| manager_settings | STRING | 本节点独立保存的完整配置 JSON(资产/增强),随工作流保存,节点间互不影响 | |
| modelopt | MODEL | — | |
| clipopt | CLIP | — | |
| vaeopt | VAE | — | |
| audio_vaeopt | VAE | — |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| 主模型 | MODEL | — |
| 视觉VAE | VAE | — |
| 音频VAE | VAE | — |
| Latent放大参数 | FLOAT | — |
| 正向条件 | CONDITIONING | 全部段的 ref2va 编码正向条件(每段一个),列表输出方便多段视频生成 |
| Latent | LATENT | 全部段的 AV latent(每段一个),列表输出;配合同序号的「正向条件」逐段采样 |
| 已拆解剧本 | STRING | 全部LLM处理后的剧本/提示词文本(与 Pro 的「已处理剧本」一致):拆解+增强后的分段文本 |