Prompt Source (txt briefs + json scripts)
Txt briefs, JSON scripts, and unattended folder renders
- story_idea
- character
- count
Rift Prompt Source is the node that feeds the H3 chain from files instead of a text box: a dropdown over LPFF-style .txt briefs and passthrough .json scripts, emitting the story_idea, character, and count that drive the rest of the graph. If you render the same ideas repeatedly - or want to queue a whole folder of finished scripts while you sleep - this is the input side of that pipeline.
The name "Rift" is the pack's older internal codename; the node lives in the H3/script category now, but the class name stayed because renaming it would have turned every saved graph into a red missing-node box. It reads from input/rift_prompts/ and still falls back to the older input/joyecho_prompts/ so existing folders keep working.
How it works
Point source_file at a file and it parses it into items: .txt files are split into LPFF-style blocks (one brief each), .json files pass through as script objects. Then the controls decide what's emitted:
load_cap/start_index- TXT files only: start at block N, emit the next N blocks (0 = all).character_override- force one character for every emitted item; handy for.jsonscripts that carry no name field.manual_path- point at any file by full path, ignoring the dropdown. This is the escape hatch: it removes the dependency on the inspire-pack prompts tree andinput/rift_prompts/entirely.folder- filtersource_fileto one folder; the pack's frontend filters the dropdown live.walk_folder- the unattended-render switch. OFF:start_indexpicks a block inside the file. ON:start_indexpicks which file, walking the folder in sorted order and emitting the whole file. Wirestart_indexto a PrimitiveInt set toincrement, queue N times, and you render a folder of finished scripts one after another.
That last one exists because of a real mismatch: LPFF prompt batches concatenate many prompts into one file, but an H3 script uses --- for shot boundaries within one scene, so you can't just concatenate scenes into a single file without fusing them into one enormous take. Walking files is the safe equivalent.
Outputs are story_idea and character (both lists) and count.
Installing it
Part of the ComfyUI-H3-Multishot pack:
cd ComfyUI/custom_nodes
git clone https://github.com/jlucasmcrell/ComfyUI-H3-Multishot
Or search H3 Multishot in ComfyUI Manager. Requires ComfyUI v0.30.0+.
Gotchas
The classic failure this node was built to explain: an empty prompt dropdown that blamed the wrong thing. The dropdown finds files through the inspire_prompts folder path, which is registered by comfyui-inspire-pack - without that pack the path doesn't exist and the dropdown comes back empty however many prompt files you have. The node now tells you which of three fixes applies: install the pack, register the path in extra_model_paths.yaml, or set manual_path and ignore the dropdown. And if you're on the older JoyEcho_PromptSource name, that's the same node - it resolves as a deprecated alias so pre-2.1 graphs open unchanged.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| source_file | COMBO | 1 options: (no prompt files found) | |
| load_capopt | INT | 0 | TXT files only: 0 = all blocks, N = first N from start_index. |
| start_indexopt | INT | 0 | TXT files only: first block index to load. |
| character_overrideopt | STRING | Force this character for EVERY emitted item (useful for .json scripts, which carry no name field). | |
| manual_pathopt | STRING | Point at ANY .txt (LPFF blocks) or .json (passthrough script) file by full path, ignoring the dropdown. Removes any dependency on the inspire-pack prompts tree or input/rift_prompts/. Leave empty to use source_file. | |
| folderopt | COMBO | (all) | Filter source_file to one folder (the pack's frontend script filters the dropdown live). Appended last so saved widget order is preserved. |
| walk_folderopt | BOOLEAN | false | OFF (default): start_index selects a block INSIDE source_file, as always. ON: start_index selects WHICH FILE, walking the folder chosen above in sorted order, and the whole file is emitted. Wire start_index to a PrimitiveInt set to 'increment' and queue N times to render a folder of finished scripts unattended. Needed because an H3 script uses --- for SHOT boundaries, so scenes cannot be concatenated into one file the way LPFF batches can. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| story_idea | STRING | — |
| character | STRING | — |
| count | INT | — |