Nodes/Frog Node Pack/🐸 Library
ComfyUI Node

🐸 Library

A prompt gallery living inside your workflow β€” click a tile, get a prompt

By RabbitThatIsPinkΒ·Created 3 months agoΒ·Updated 24 days agoΒ· 1
🐸 Library
  • model
  • clip
  • model
  • clip
  • positive
  • negative
  • name
  • id
β—„prompt_idβ–Ί
β—„separator, β–Ί
β—„positive_passthroughβ€”β–Ί
β—„negative_passthroughβ€”β–Ί
β—„strength_scale1.00β–Ί
β—„prompt_id_inputβ€”β–Ί

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.

Category🐸 Node Pack

Inputs (8)

NameTypeDefaultDescription
prompt_idSTRINGComma-separated entry IDs driven by the gallery widget.
separatorSTRING, Separator between joined entries.
modeloptMODELWire to enable LoRA application from selected entries.
clipoptCLIPRequired alongside MODEL for LoRA application.
positive_passthroughoptSTRINGExtra positive text combined with the library entry text.
negative_passthroughoptSTRINGExtra negative text combined with the library entry negative.
strength_scaleoptFLOAT1.000–2Multiplier applied to every LoRA strength. 0 = disable all LoRAs.
prompt_id_inputoptSTRINGExternal STRING override for prompt_id.

Outputs (6)

NameTypeDescription
modelMODELβ€”
clipCLIPβ€”
positiveSTRINGβ€”
negativeSTRINGβ€”
nameSTRINGβ€”
idSTRINGβ€”