ITL Save Metadata (Civitai) Advanced
Save Civitai-readable metadata, with override sockets for the volatile fields
- images
- images
The basic ITL Save Metadata (Civitai) node traces your graph at save time and writes an A1111-style parameters chunk so Civitai can read your prompt back and auto-link the checkpoint and LoRAs. The Advanced version does the same thing, then adds seven override sockets - positive, negative, steps, cfg, seed, sampler_name, scheduler - that win over the trace when wired.
Why would you want to override a trace that's already doing the work? Because graph tracing is a guess, and for dynamic prompts it's a guess at the wrong thing. Consider the worst case: an ITL Prompt Batch with ten prompts, one graph, one KSampler. The basic node handles that by reading the batch's current index - but if your workflow is weirder than the tracer expects, or you have a two-sampler hires-fix graph, the trace can't resolve the text reliably. Wiring the Prompt Batch's positive and negative outputs straight into these sockets removes all ambiguity: no static-graph guessing, just the exact string that ran.
What overrides and what doesn't
A wired (non-empty) socket value replaces the traced value and clears that field from the unresolved list. The things you can't override are the model and LoRAs - they're always auto-traced on both nodes, because a variable-length LoRA chain isn't practical to socket and it's static graph data regardless of which prompt ran. The model/LoRA walk recognizes checkpoints and standalone diffusion models (Load Diffusion Model / GGUF unet loaders), and picks up LoRAs from stock Load LoRA as well as rgthree's Power Lora Loader and Lora Loader Stack - including several LoRAs in one node. Disabled rows and empty/zero-strength slots are skipped, matching what actually loads.
Everything else carries over from the basic node: images, filename_prefix (with %date:...% tokens), save_workflow (off by default - on also embeds the ComfyUI graph), the AutoV2 hash cache in .hash_cache.json that makes repeat saves of the same files instant, the 🔎 Test detection button that previews the trace before you queue, and the images passthrough output. Same single-KSampler assumption - except that here, when that assumption breaks, you have a lever to fix it instead of a warning in the log.
Install
ComfyUI Manager (search "ComfyUI-IntoTheLatent-Utils") or:
cd ComfyUI/custom_nodes
git clone https://github.com/Into-The-Latent/ComfyUI-IntoTheLatent-Utils
then restart. No extra dependencies.
When do you reach for Advanced over Basic? Two cases: dynamic/batched prompts where you want the override sockets wired for certainty, and multi-sampler workflows (hires fix) where the trace will otherwise leave fields unresolved and warn at you. If you're a simple one-sampler, static-prompt poster, the basic node is simpler and just as good. And as with the basic node, treat the AutoV2 auto-linking as "should work" - the author flagged end-to-end verification as still pending.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | Images to save. | |
| filename_prefix | STRING | ITL | Filename prefix (supports %date:...% tokens like Save Image). |
| save_workflow | BOOLEAN | false | Also embed the ComfyUI workflow/prompt chunks (off = only the Civitai `parameters` chunk). |
| positiveopt | STRING | Override positive prompt (wire the Prompt Batch 'positive' output). | |
| negativeopt | STRING | Override negative prompt (wire the Prompt Batch 'negative' output). | |
| stepsopt | INT | Override steps. | |
| cfgopt | FLOAT | Override CFG scale. | |
| seedopt | INT | Override seed. | |
| sampler_nameopt | STRING | Override sampler name. | |
| scheduleropt | STRING | Override scheduler. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |