MiniMax H3 Shot Selector
Pick one shot out of a multishot manifest, without the guesswork
- shot_prompt
- timeline_body
- shot_description
- shot_id
- shot_count
- autonomous
When the enhancer runs in chained_multishot mode, it doesn't return one prompt - it returns a package full of them, one per shot, each marked as autonomous or not. If your workflow renders one shot at a time, you need a way to reach into that package and pull out a single prompt. That's the entire job of the MiniMax H3 Shot Selector: give it the enhancement manifest (or its embedded shotsPackage) and an index, and it hands you that shot's complete prompt plus its metadata.
How it works
The input enhancement_manifest_or_package is a JSON string - either the full enhancement_manifest from an enhancer node's output, or just the shotsPackage object pasted on its own. The node parses it, finds the shots array (it accepts both schema-v1 and schema-v2 packages), and returns the shot at shot_index (1-based, so 1 is the first shot). The one-indexing trips people up once - shot_index 1 means shot 1, not "zero."
Here's the part worth understanding before you rely on it: shot_prompt is only emitted when the selected shot is marked autonomous. The tooltip spells out the contract. A shot flagged autonomous carries a complete, self-contained H3 prompt in its autonomousPrompt field - that's the one you can render on its own. A shot that isn't autonomous doesn't have a usable standalone prompt, so shot_prompt comes back empty and the node tells you why via the status text in the UI (the autonomy reason). If you're seeing an empty shot_prompt, that's not a bug - the shot simply isn't marked complete, and the fix is upstream in how the multishot was planned.
The outputs
shot_prompt- the autonomous prompt for the selected shot, or empty if the shot isn't autonomous. This is the string that feeds your H3 sampler.timeline_body- the shot's timeline text, kept available for inspection even whenshot_promptis empty. Useful for checking what the shot is supposed to do while you debug.shot_descriptionandshot_id- the human-readable description and stable ID, handy for labeling outputs per shot.shot_count- how many shots were in the package, so you can drive a loop or check bounds.autonomous- the boolean flag, so downstream logic can branch on whether it's renderable.
Install
Nothing special here - it's the same pack as every other node in this family:
cd ComfyUI/custom_nodes
git clone https://github.com/hyukudan/ComfyUI-MiniMax-H3-Prompt-Enhancer.git
Restart ComfyUI. No model files, no API keys, no dependencies.
Where it fits
This node is the plumbing for "generate all the shots' prompts in one pass, then render them one by one." In the pack's own chained-multishot example workflow, the enhancer produces the package and the Shot Selector picks a shot to feed a render loop. Combine it with MiniMaxH3ChainedMultishotOutput - that node validates and formats the whole array as a --- script for samplers that take the full sequence, while the Shot Selector is for samplers that render one pass at a time. If you're doing anything fancy like iterating shots with per-shot output filenames, shot_id and shot_description are there so you never have to guess which render is which.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| enhancement_manifest_or_package | STRING | Connect enhancement_manifest or paste its shotsPackage object. | |
| shot_index | INT | 11–64 | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| shot_prompt | STRING | — |
| timeline_body | STRING | — |
| shot_description | STRING | — |
| shot_id | STRING | — |
| shot_count | INT | — |
| autonomous | BOOLEAN | — |