Prompt Companion: Load Checkpoint with Subprompt
A checkpoint loader that already knows your prompts
- model
- clip
- vae
- subprompt
This is a drop-in replacement for the standard CheckpointLoaderSimple that also remembers your prompts. Load Checkpoint with Subprompt gives you the same model, clip, and vae outputs, then adds a fourth wire: a subprompt assembled from every saved subprompt whose trigger word shows up in the checkpoint's name or path.
Why does that matter? Because the quality tags and negatives that work on an SD 1.5 checkpoint are often wrong for SDXL, Pony, or whatever else you've got. The pack's README walks through the exact pain: manually switching between embeddings like lazyneg when you swap base models, and remembering which quality keywords went with which checkpoint. This node turns that into "set it up once, then just switch checkpoints."
How it works
Pick a checkpoint from the ckpt_name dropdown (the same list the standard loader uses) and the node loads it through ComfyUI's normal load_checkpoint_guess_config path - no config guessing on your part. Then it walks every subprompt in your library. Any subprompt that has a trigger word contained (case-insensitively) in the checkpoint filename or path gets pulled in, and all matches are merged into one subprompt: positives joined with ", ", negatives joined the same way, trigger words deduped.
The author's example makes it concrete: a checkpoint sitting in an sd15/ subfolder, and any subprompt tagged with the trigger word sd15 is automatically merged into the output. Switch to an XL checkpoint and you'd tag that set with xl instead - the loader swaps your whole prompt layer along with the model.
Two important honesty notes. First, trigger words are explicit - you set them in the Edit Subprompts dialog (right-click any Prompt Companion node). Nothing is auto-extracted from the checkpoint, and subprompts without trigger words never match. Second, there's also an optional checkpoint_mappings.json in the pack folder the loader will read if you drop one in, letting you map checkpoint names to trigger words explicitly. You don't need it; trigger words on the subprompts are the main path.
Inputs and outputs
Only one input: ckpt_name. Outputs are model, clip, vae (identical to the standard loader, so you can drop this node into an existing workflow without rewiring), plus the subprompt output that makes it interesting. Wire that into the pack's Add Subprompt node to layer more text on top, or into Subprompt to Strings to get plain text for a CLIP Text Encode.
Installing it
Same pack as the rest of Prompt Companion. ComfyUI Manager, search "ComfyUI Prompt Companion", or:
cd ComfyUI/custom_nodes
git clone https://github.com/jfcantu/ComfyUI-Prompt-Companion.git
Restart, and it's under prompt-companion/loaders. Only dependency is aiohttp; no extra models beyond the checkpoint you already load.
Common issues
- Empty subprompt output. You get an empty subprompt (not an error) when no saved subprompt has a trigger word present in the checkpoint name. Check the filename against your trigger word literally:
sdxl_anything.safetensorsmatches "sdxl" but not "xl", and vice versa. The match is substring-based against the full lowercase path, so folders count too. - Subprompt folder placement doesn't matter. Folders in the Edit Subprompts dialog are purely cosmetic; matching only cares about trigger words.
- Because it returns normal model/clip/vae even on a no-match, your workflow keeps running - the empty subprompt just means "no prompt layer this time." That's by design.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| ckpt_name | COMBO | The name of the checkpoint (model) to load. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| model | MODEL | The model used for denoising latents. |
| clip | CLIP | The CLIP model used for encoding text prompts. |
| vae | VAE | The VAE model used for encoding and decoding images to and from latent space. |
| subprompt | * | Combined subprompt from explicitly matching trigger words for this checkpoint. |