MiniMax H3 Local Preset Loader
Rebuild a whole timeline from one combo box
- Preset Data
- Preset Name
- Preset Status
There's a specific kind of ComfyUI frustration this node removes: you have a workflow that works, but the setup lives in an enormous custom node's widgets, and there's no way to snapshot it, diff it, or send it to someone without sending a 2 MB JSON that references six files on your D: drive.
Preset Loader is the read side of the preset system. It scans ComfyUI/output/MiniMaxH3_Presets/ for folders containing a valid preset.json, puts their names in a dropdown, and hands the selected one to the Material Planner through its Import Preset input. That's the whole surface: one combo box, three small outputs.
How it works
The dropdown is populated at node definition time, which means it's a snapshot taken when the node was built, not a live view of the folder. So if you drop a preset folder in while ComfyUI is running, it won't appear until you refresh the node menu or restart. The README says as much - copy a preset folder across and refresh Local Preset Loader. That's the one gotcha that costs everyone five minutes.
Selection does a fair amount of validation, and the error messages are precise enough that they're worth knowing verbatim, since they tell you exactly which way the folder is broken:
"No local MiniMax H3 presets were found"- nothing valid in the directory at all, so the combo is showing the(no presets found)sentinel."Preset not found: <name>"- the folder vanished since the dropdown was built."The folder does not contain a MiniMax H3 timeline preset"-preset.jsonis there but the format tag doesn't match."Unsupported preset schema version: N"- the preset came from a newer (or much older) pack version. The schema is versioned at 1, and there's no migration, so this is a real cross-version wall rather than a warning."Preset type must be configuration or complete"and"Preset is missing timeline or canvas configuration"- a hand-edited or truncatedpreset.json.
The path handling is also deliberately tight: the name must resolve to exactly one direct child of the preset root, with no traversal out of it and no dot-prefixed folders. So junk directories and half-written staging folders (the exporter writes .name.tmp-<uuid> dirs and renames them) are invisible rather than error-prone.
Once the data reaches the Material Planner, the interesting behaviour starts: on the first run the planner writes the imported timeline back into its own UI state - media assignments, segment timings, per-segment prompts - and after that you can disconnect the loader without losing the imported setup. For complete presets, media gets materialised into the fixed ComfyUI/input/minimax_h3_timeline_director/presets/<name>/ subtree. If you'd rather load it into the UI immediately before a run, the README says the planner's Import Preset widget stays available for that.
Inputs and outputs
Required: preset_name - a combo of the discovered preset folder names.
Outputs:
- Preset Data - a
MINIMAX_H3_TIMELINE_PRESET. Wire it into the Material Planner'simport_presetinput; that's its only meaningful destination. - Preset Name (STRING) - the resolved name, useful next to a text preview when you're switching between presets.
- Preset Status (STRING) -
Loaded preset: <name>. The lint-free way to confirm which one actually loaded in a batch of runs.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Songssx/ComfyUI-MiniMaxH3-TimelineDirector.git
Restart, then search MiniMax H3. No pip dependencies - empty dependency list. The pack registers a small HTTP route for the frontend, which is why you restart instead of reloading. Requirements: a recent ComfyUI with the native MiniMax H3 nodes, the H3 Ref2VA model, CLIP, video VAE and audio VAE, and Python 3.10+.
If you're moving presets between machines: configuration presets are just the folder, so copy it anywhere. complete presets carry their media inside, and the loader will materialise it into your input directory on the first run.
Common issues
Dropdown says (no presets found) and you just added one. Refresh - the list is built when the node is created. Restart if a refresh doesn't take.
The preset name is right but the timeline is empty. The planner is where the import lands, and it needs the import_preset connection. Also check you're loading a configuration preset whose media files are still present on disk: config-only presets reference media by path, so a preset copied alone to another machine will load the timings and prompts but not be able to find the files. Use complete if you want the media to travel.
"Unsupported preset schema version." The preset is from a different pack version. Schema version is 1 as of the current release; there's no forward or backward conversion, so regenerate the preset with the version you're running.
Imported media flashes up then disappears. That reset behaviour was fixed - repeated imports with a new preset having fewer segments than the previous one used to leave the active segment stale. Update the pack; it's in the changelog.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| preset_name | COMBO | (no presets found) | 1 options: (no presets found) |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| Preset Data | MINIMAX_H3_TIMELINE_PRESET | — |
| Preset Name | STRING | — |
| Preset Status | STRING | — |