Multishot Advance Cartridge Loader (.riftcast)
Loading .riftcast cartridges
- ref_1
- ref_2
- ref_3
- ref_4
- ref_5
- ref_6
- ref_7
- ref_8
- ref_9
- voice
- subject_block
- dna_text
- speaker_tag
- accent_line
- rooms_text
- ref_count
- report
- cartridge_metadata
A .riftcast is a character in a zip file: identity prose, a speaker tag, a voice sample, and up to nine reference images, all packaged into one archive you can drop on another machine. This node unpacks it and hands the pieces to the rest of the Multishot Advance workflow. If you've never seen a .riftcast, you probably don't need this node - it's a convenience for people working with the RiftCast-style cartridge ecosystem that grew around the original ComfyUI-H3-Multishot pack, not a required step in the pipeline.
What it saves you is setup time on multi-character work. Instead of dragging nine images into a batch loader, wiring one audio file, and hand-typing the subject block and speaker tag every session, you load one file and let the cartridge supply the raw material.
How it works
A .riftcast is a zip archive with a manifest.json inside that must contain at least these keys: riftcast, name, speaker_tag, voice, refs, and dna. The loader validates the archive (it rejects unsafe paths, which is nice for a format you're expected to download), then emits the contents on typed outputs.
The important design detail: the cartridge supplies label-free identity prose. It never hard-codes <Picture N>, <Audio N>, or (S1) tags. The actual labels get assigned at render time by the sampler's central reference registry, based on which sockets you actually wired. That's deliberate - it means a cartridge isn't wedded to one slot position, so the same character can be <Picture 1> in one workflow and <Picture 3> in another without editing the file.
The inputs and outputs that matter
Three inputs. The cartridge dropdown lists every .riftcast sitting in ComfyUI/input/riftcast/ (until you add files, it just says "(no cartridges in input/riftcast/)"). max_refs controls how many of the nine image slots the loader fills - leave it at 9 unless you want to limit how many reference rows the sampler has to pay for. manual_path lets you bypass the dropdown and point at any .riftcast anywhere on disk.
The outputs split into three groups:
ref_1throughref_9(IMAGE) - the character's reference images. Wire the ones you use into the sampler'sreference_imagessocket.voice(AUDIO) - the voice sample, wired to the sampler'svoice_refsocket if you want the voice pinned across the chain.- The text/metadata group -
subject_block,dna_text,speaker_tag,accent_line,rooms_text,ref_count, andreport. The one you actually wire iscartridge_metadata(typeMULTISHOT_ADVANCE_CARTRIDGE_METADATA), which plugs straight into the Prompt Builder'scartridge_metadatainput.
Don't treat the string outputs as ready-made prompts. They're fragments - identity prose and speaker hints - meant to be folded into the builder's editable fields, not pasted into a script.
Installing it
It ships in the ComfyUI-H3-Multishot-Advance pack, so the install is the pack install: ComfyUI Manager → search "H3 Multishot Advance", or clone it manually:
cd ComfyUI/custom_nodes
git clone https://github.com/KursatAs/ComfyUI-H3-Multishot-Advance
Restart ComfyUI. Then make the input folder and drop your cartridges in:
mkdir -p ComfyUI/input/riftcast
No model files, no extra Python dependencies - the pack deliberately keeps dependencies = [] because ComfyUI already supplies everything it needs.
Common issues
The most common "problem" is just not having any .riftcast files, which is why the dropdown shows the empty-folder message. If you don't have cartridges, skip this node entirely - the H3 workflows run fine with plain image/audio loaders and the Prompt Builder's own fields. And if you hand-write a cartridge, make sure manifest.json has every required key or the loader throws a clear invalid cartridge: manifest.json missing-style error telling you exactly which key is absent.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| cartridge | COMBO | 1 options: (no cartridges in input/riftcast/) | |
| max_refs | INT | 91–9 | — |
| manual_pathopt | STRING | Full path to any .riftcast, bypassing the dropdown. |
Outputs (18)
| Name | Type | Description |
|---|---|---|
| ref_1 | IMAGE | — |
| ref_2 | IMAGE | — |
| ref_3 | IMAGE | — |
| ref_4 | IMAGE | — |
| ref_5 | IMAGE | — |
| ref_6 | IMAGE | — |
| ref_7 | IMAGE | — |
| ref_8 | IMAGE | — |
| ref_9 | IMAGE | — |
| voice | AUDIO | — |
| subject_block | STRING | — |
| dna_text | STRING | — |
| speaker_tag | STRING | — |
| accent_line | STRING | — |
| rooms_text | STRING | — |
| ref_count | INT | — |
| report | STRING | — |
| cartridge_metadata | MULTISHOT_ADVANCE_CARTRIDGE_METADATA | — |