Image Info Defaults
Make sure a half-empty generation recipe still runs
- size
- image_info
- model
- refiner
- detailer
- lora_stack
- clip
- extras
- image_info
Image Info Defaults is the safety net for this pack's metadata system: it takes an image_info bundle that might be missing half its fields and fills every gap with a value you set in the node's own widgets. If image_info.positive is None, the positive field on the node wins. If a field already has a value, it stays untouched. One image_info in, one complete image_info out.
Why a "fill the blanks" node exists
The pack's whole bet is that image_info - a structured bundle of prompt, model, sampler settings, size, and extras - can be carried through workflows, saved into image metadata, and restored later. That only works if a restored or partially-constructed bundle is always runnable. An Image Reader might hand you an image whose metadata has no negative prompt, or no size, or an empty seed. A selector might provide a model but nothing else. Without a defaults pass, some downstream node gets a None where it expects a number, and the run dies. Image Info Defaults is the node that guarantees every field exists.
The inputs that matter
The required inputs are the defaults themselves, and they're a sane starting kit:
positive/negative- default prompts, applied only when missing.steps(20),sampler(euler),scheduler(simple),cfg(7.0),seed(0) - the sampler recipe defaults.size(512×512) - the resolution default.
The optional inputs are the live data: image_info plus model, refiner, detailer, lora_stack, clip, vae, and extras, which let you merge in selections from the pack's selector nodes alongside the defaults. Output is a single complete image_info.
The euler/simple/CFG 7.0 defaults are worth a glance before you trust them - CFG 7 sits right in the SD 1.5/SDXL sweet spot per the community's troubleshooting lore, but if you run distilled or Turbo-style models, the sensible CFG is far lower. Set your own defaults; the node just holds them.
The key behavior to remember
Defaults apply only where the incoming image_info is missing a value. Existing values always win. So a fully-populated image_info passes through untouched, and a bare one gets dressed in your defaults. That's exactly what you want, and it's also the trap: if a field is present but wrong (say, a seed of 0 that you actually set), the node will not fix it for you. It fills gaps, it doesn't arbitrate.
Installing it
Ships in the ComfyUI-Info-Prompt-Toolkit pack. Via ComfyUI Manager - search "Info Prompt Toolkit" - or:
cd ComfyUI/custom_nodes
git clone https://github.com/kinorax/comfyui-info-prompt-toolkit.git
cd comfyui-info-prompt-toolkit
pip install -r requirements.txt
Restart ComfyUI. No model downloads. Small single-author pack (GPL-3.0) with a modest footprint - but a workflow that never dies on a missing metadata field is quietly worth a lot.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | STRING | Default positive prompt when image_info.positive is None | |
| negative | STRING | Default negative prompt when image_info.negative is None | |
| steps | INT | 201–10000 | Default steps when image_info.steps is None |
| sampler | COMBO | euler | Default sampler when image_info.sampler is None |
| scheduler | COMBO | simple | Default scheduler when image_info.scheduler is None |
| cfg | FLOAT | 7.00–100 | Default CFG scale when image_info.cfg is None |
| seed | INT | 00–18446744073709550000 | Default seed when image_info.seed is None |
| size | IPT-Size | [object Object]16–16384 | Default size when image_info.width or image_info.height is None |
| image_infoopt | IPT-IMAGEINFO | — | |
| modelopt | IPT-Model | — | |
| refineropt | IPT-Model | — | |
| detaileropt | IPT-Model | — | |
| lora_stackopt | IPT-LoraStack | — | |
| clipopt | IPT-Clip | — | |
| vaeopt | STRING | — | |
| extrasopt | IPT-ImageInfoExtras | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image_info | IPT-IMAGEINFO | — |