Gallery Info (Model Librarian)
File your outputs into folders instead of one 4,000-image junk drawer
- images
- images
- filename_prefix
Every ComfyUI user hits the same wall around week three: output/ is a flat pile of ComfyUI_00247_.png and you have no idea which came from the character project and which were throwaway sampler tests. Gallery Info (Model Librarian) costs you two wires. It sits right before your save node, passes the images straight through, and does two things on the way past - writes a tag entry into the file's metadata, and hands your save node a folder path built from real values instead of a static string.
One caveat before you install anything: the tag entry is read by Model Librarian Gallery, a separate app by the same author. Don't have it? You still get the folder pattern, which is useful on its own - but be honest with yourself about installing a whole model manager for it.
What actually happens when you queue a prompt
Gallery Info has no network code and no API calls. Its whole job is to write one key into ComfyUI's shared run metadata - the same extra_pnginfo dict the save node reads a moment later in the same run - and return two outputs.
Because that dict gets written into every file any save node produces, the entry lands in your PNG's text chunks next to the familiar prompt and workflow, and in the container tags of Save Video / Save WEBM / Video Combine output. No special save node required. That's the trick that makes it portable: you're not replacing your saver, you're piggybacking on it.
It also records what ran - the checkpoint and each LoRA with its strengths - pulling SHA256s from Model Librarian's existing hash cache. The source is explicit that it never hashes during a run, so this doesn't add seconds to your prompt.
The inputs worth setting
Only images is required: wire your decoded image into it and the save node after it, unchanged.
The text fields take comma-separated values and dedupe them case-insensitively: albums, tags, and characters (characters are what the Gallery treats as confirmed, which matters if it also guesses them from prompts). Then project, rating (0–5, where 0 means none), favourite, and note. These are all optional strings - and because they're normal STRING inputs, you can drive them from a wildcard or primitive node so the tags match what the prompt actually generated.
folder_pattern is the one you'll actually play with. It builds the output from {project}, {character}, {characters}, {album}, {tag}, {model}, {rating}, {date}, {year}, {month} and {day}, so {project}/{character}/{date}/ gives you myproject/mira/2026-10-26/. {character}, {album} and {tag} each take the first value; {characters} joins them with &. {model} is the checkpoint name minus its extension. filename is the base name after the folders, default ComfyUI, and the save node appends its own counter.
The two outputs are images and filename_prefix - a STRING you wire into the save node's filename_prefix widget (convert it to an input). Leave folder_pattern empty and you just get ComfyUI back, so a bare node is harmless.
There's a workflow_name field in the schema, but you'll never see it: the frontend hides it and fills it with the open workflow's filename at queue time, blanking it for unsaved workflows.
Install
ComfyUI Manager → Custom Nodes Manager → search Model Librarian → Install → restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/EY4O/ComfyUI-Model-Librarian.git
Then restart ComfyUI. The pack has zero Python dependencies - its pyproject.toml declares an empty list - so nothing gets pip-installed. No CivitAI key or HuggingFace token is needed for this node; those are for the missing-model finder elsewhere. It shows up under Model Librarian in the node menu.
Where people get burned
- You launched with
--disable-metadata. ComfyUI writes no text chunks at all and your entry is gone along with the workflow. The folder pattern still works, since that's just a string. - A typo'd placeholder doesn't fail loudly. Unknown
{placeholder}tokens are left in place, so{projct}/{date}/quietly creates a folder literally called{projct}. An unset valid placeholder drops its folder instead - the behaviour you want, but easy to mistake for a bug. - Windows-illegal characters are stripped from each folder segment,
..is removed, and segments are capped at 80 characters, so the pattern can't escape your output folder. A name made entirely of bad characters silently vanishes from the path, though. - Two Gallery Info nodes in one workflow fight over the same key. Last one to execute wins. Use one.
- It only tags what it sees. Bypass or mute the node and the images still save normally, just untagged.
And the reality check: this pack has essentially no community footprint - an exact-phrase search for "Model Librarian" across two years of r/comfyui and r/StableDiffusion returns nothing at all. It's a small, well-documented one-author project with a test suite, not something with a thousand threads behind it. Read the source and the README rather than trusting vibes.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | Passed through unchanged: connect the save node after this one. | |
| albumsopt | STRING | Albums to file it under, separated by commas. | |
| tagsopt | STRING | Tags, separated by commas. | |
| charactersopt | STRING | Characters in it, separated by commas: the Gallery counts them as confirmed. | |
| projectopt | STRING | A project name. | |
| ratingopt | INT | 00–5 | 1 to 5 stars (0: none). Your own rating in the Gallery wins. |
| favouriteopt | BOOLEAN | false | Mark it as a favourite (your own choice in the Gallery wins). |
| noteopt | STRING | A note. | |
| folder_patternopt | STRING | Folders for filename_prefix, e.g. {project}/{character}/{date}/ (also {album} {tag} {model} {rating} {year} {month} {day}). Empty: no folders. | |
| filenameopt | STRING | ComfyUI | The file name after the folders (the save node adds the number). |
| workflow_nameopt | STRING | Filled in with the open workflow's name when you queue. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| filename_prefix | STRING | — |