Nodes/ComfyUI-IntoTheLatent-Utils/ITL Save Metadata (Civitai) Advanced
ComfyUI Node

ITL Save Metadata (Civitai) Advanced

Save Civitai-readable metadata, with override sockets for the volatile fields

By Into-The-Latent·Created 30 days ago·Updated about 11 hours ago· 2
ITL Save Metadata (Civitai) Advanced
  • images
  • images
filename_prefixITL
save_workflowfalse
positive
negative
steps
cfg
seed
sampler_name
scheduler

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.

CategoryInto The Latent/image

Inputs (10)

NameTypeDefaultDescription
imagesIMAGEImages to save.
filename_prefixSTRINGITLFilename prefix (supports %date:...% tokens like Save Image).
save_workflowBOOLEANfalseAlso embed the ComfyUI workflow/prompt chunks (off = only the Civitai `parameters` chunk).
positiveoptSTRINGOverride positive prompt (wire the Prompt Batch 'positive' output).
negativeoptSTRINGOverride negative prompt (wire the Prompt Batch 'negative' output).
stepsoptINTOverride steps.
cfgoptFLOATOverride CFG scale.
seedoptINTOverride seed.
sampler_nameoptSTRINGOverride sampler name.
scheduleroptSTRINGOverride scheduler.

Outputs (1)

NameTypeDescription
imagesIMAGE