πΈ Library
A prompt gallery living inside your workflow β click a tile, get a prompt
- model
- clip
- model
- clip
- positive
- negative
- name
- id
Frog Library is the heart of the pack, and it's not a node you'll understand by reading its inputs - it's a gallery that lives inside your workflow. Open it and you get a tile view of saved prompts: each tile a thumbnail, a star rating, tags. Click a tile and that entry's positive and negative text flow out of the node into your conditioning. Click two tiles and they're joined by a separator you set. It's a personal prompt gallery you browse the way you browse your own generated art, instead of scrolling through a text file.
Under the hood it's a real data layer, not a hack. Entries live in FrogNodePack/data/prompts.json with thumbnails in data/images/, and the node ships a web UI on top of it: search by name, filter by tag, tag chips with category:value grouping (like style:cyberpunk), drag-and-drop reordering, bulk select/delete/export, and CSV/ZIP import/export. Every edit is versioned and revertable, and there's a built-in health checker that finds orphaned thumbnails or broken entries. The data files are created on first run and are not touched when the pack updates - that's a deliberate design choice, and it means your library survives a git pull cleanly. If you're coming from Junkie's Ribbity suite or ComfyUI-PromptLibrary, you can export a zip there and import it here directly.
The inputs that matter
- prompt_id - comma-separated entry IDs, driven by the gallery widget. You don't type this; clicking tiles fills it.
- separator - the string between entries when you select several. Default
,. - positive_passthrough / negative_passthrough - extra text combined with the entry's. This is how character prompts stack on top of a library quality prompt: wire the character name in, click a quality entry, get both.
- model / clip - wire your loader through these and the entry's LoRA stack (if it has one) is applied automatically.
- strength_scale - a multiplier applied to every LoRA strength. Set it to 0 and all LoRAs are disabled without touching the entries.
- prompt_id_input - an external STRING override for
prompt_id, so another node (like πΈ Checkpoint Library Selector) can drive which entry is selected automatically.
What comes out
Six outputs: model and clip (with library LoRAs applied, if you wired them), positive and negative (the joined text), plus name and id of the selected entry. That name output is what you feed πΈ Duo Dupe Check to skip pairs you've already made.
Installing it
Standard pack install - ComfyUI Manager β "Frog Node Pack", or clone into custom_nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/RabbitThatIsPink/FrogNodePack
Restart, hard-refresh. No extra dependencies. The web UI ships in the pack's web/ directory.
Where people trip
The gallery is the trap for newcomers, because a node with a full web UI on the canvas can look broken if the frontend doesn't load - hard-refresh with Ctrl+Shift+R after updating the pack, and if tiles won't render, that's your first fix. Second, remember the LoRA machinery only kicks in when model and clip are both wired; without them, entries are pure text. And because this is a small, fairly new pack without a big community footprint, your library is your own - the README documents everything, but there's no army of tutorial videos for it yet.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt_id | STRING | Comma-separated entry IDs driven by the gallery widget. | |
| separator | STRING | , | Separator between joined entries. |
| modelopt | MODEL | Wire to enable LoRA application from selected entries. | |
| clipopt | CLIP | Required alongside MODEL for LoRA application. | |
| positive_passthroughopt | STRING | Extra positive text combined with the library entry text. | |
| negative_passthroughopt | STRING | Extra negative text combined with the library entry negative. | |
| strength_scaleopt | FLOAT | 1.000β2 | Multiplier applied to every LoRA strength. 0 = disable all LoRAs. |
| prompt_id_inputopt | STRING | External STRING override for prompt_id. |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| model | MODEL | β |
| clip | CLIP | β |
| positive | STRING | β |
| negative | STRING | β |
| name | STRING | β |
| id | STRING | β |