Checkpoint Batch Info Setter v074
Tag fifty checkpoints with one run
- status
Tagging checkpoints one at a time with the single info setter is fine until you have a folder of fifty. Checkpoint Batch Info Setter v074 is the "do it for all of them" version: give it a directory, a file pattern, and the same info fields, and it stamps every matching checkpoint with that metadata in one run. It's the on-ramp for getting a whole model library catalogued before the tester and viewer nodes become useful.
It's part of the AAA Metadata System pack's checkpoint tester family, and it's exactly as simple as it sounds. Under the hood it literally runs the single setter's logic against each file matched by the glob. No new concepts to learn - it's the batch version of CheckpointInfoSetter_v074, which makes it a great first step when you've just installed the pack and want a populated database fast.
How it works
You give it dir_path, and it globs for files matching file_pattern (default *.safetensors), walking subdirectories if recursive is on. For each file it hashes it, creates or updates its record in the pack's JSON checkpoint database, and writes the architecture, CLIP/VAE info, category, notes, preferences, and generation params you set. It returns a status line telling you how many files it attempted and how many succeeded.
The important mental model: it applies the same info to every file in the match. That's the feature and the trap. Batch-setting is right when a folder is genuinely uniform - say, a directory of Illustrious-based anime checkpoints where the architecture, category, and sampler preferences are all the same. It's wrong when you point it at a mixed folder and stamp everything "SDXL" including the Flux files.
Inputs and outputs that matter
dir_path- where the checkpoints live (required, string).recursive- scan subfolders (default true).file_pattern- the glob, default*.safetensors. If your folder mixes.safetensorsand.ckpt, widen it - though you'd be better served ditching the pickles entirely.- The rest are the single setter's fields applied uniformly:
architecture,has_embedded_vae,has_embedded_clip,clip_type,category, the preferred VAE/CLIPs,clip_device,t5_bit_depth,notes, and the optional generation params (sampler,scheduler,steps,cfg,clip_skip,width,height).
Output: a single status string with the tally.
Installing it
Part of AAA Metadata System by Eric Hiss (GitHub: EricRollei). Via ComfyUI Manager (search "AAA Metadata System") or:
cd ComfyUI/custom_nodes
git clone https://github.com/EricRollei/AAA_Metadata_System.git
cd AAA_Metadata_System
pip install -r requirements.txt
Restart ComfyUI. No downloads beyond the pack.
Common issues
The dominant failure mode is stamping wrong info on a whole folder, and it's a you-problem, not a node-problem: batch-set is only as good as your folder's uniformity. If you point it at a mixed library, you'll corrupt the catalog for the non-matching files, and there's no undo button - the fix is re-setting each one. Also watch the pattern: *.safetensors won't touch .gguf or .ckpt files in the same folder, which may be what you want or a silent miss. If a run reports fewer successes than files, it's usually a file that's locked or unreadable; the status line will tell you the counts. And as with the single setter, back up checkpoint_tester_db.json if the library is precious - the whole pack's model knowledge lives in that one file.
Inputs (23)
| Name | Type | Default | Description |
|---|---|---|---|
| dir_path | STRING | Directory containing checkpoints | |
| recursive | BOOLEAN | true | Scan subdirectories recursively |
| file_pattern | STRING | *.safetensors | Pattern to match filenames |
| architecture | COMBO | Unknown | Model architecture |
| has_embedded_vae | BOOLEAN | true | Whether the checkpoint has an embedded VAE |
| has_embedded_clip | BOOLEAN | true | Whether the checkpoint has an embedded CLIP |
| clip_type | COMBO | auto | CLIP structure type or specific combiner |
| category | COMBO | unknown | Model category |
| preferred_vae | COMBO | None | Preferred VAE |
| preferred_clip1 | COMBO | None | Preferred primary CLIP |
| preferred_clip2 | COMBO | None | Preferred secondary CLIP |
| preferred_clip3 | COMBO | None | Preferred tertiary CLIP |
| preferred_clip4 | COMBO | None | Preferred quaternary CLIP |
| clip_device | COMBO | default | Preferred device for CLIPs |
| t5_bit_depth | COMBO | auto | Preferred T5 bit depth |
| notes | STRING | Additional notes | |
| sampleropt | COMBO | euler_ancestral | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 |
| scheduleropt | COMBO | normal | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 |
| stepsopt | INT | 301–1000 | — |
| cfgopt | FLOAT | 7.00–100 | — |
| clip_skipopt | INT | 11–12 | — |
| widthopt | INT | 102464–8192 | — |
| heightopt | INT | 102464–8192 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| status | STRING | — |