Metadata Append
Building tag strings your outputs can carry
- value
- METADATA
If you've ever wanted to know which checkpoint and seed produced a given image without squinting at six separate filename parts, you've wanted this. Metadata Append (class name MarMetaDataAppend) is a string builder that assembles a tag line in a fixed format - Key1 [Value1]; Key2 [Value2]; Key3 [Value3] - by chaining one node per piece of information. It's the node that turns "remember to note the settings" into "the settings are in the string."
Three inputs do all the work. metadata is the base string you've built so far, and it's a socket - you connect the previous Metadata Append's output here, which is how entries accumulate. value is a wildcard (*) input, so it accepts anything: wire a seed's INT, a sampler combo, a model filename, whatever. key is a text box where you type the label - the default is the unhelpful my_key, so change it to seed, model, sampler, or anything that describes the value you're recording. The node appends ; key [value] onto the base and hands you the whole thing back as a STRING output named METADATA.
The mechanism is just string formatting, which is why it's so flexible. It also matches the author's framing exactly: the tooltip says the value "accepts any data type," and every input tolerates None gracefully (an empty base simply becomes key [value] instead of crashing). One small quirk worth knowing: if the base is empty, the first entry comes out as key [value ] - note the stray space before the closing bracket. It's cosmetic, invisible in most uses, but if you're parsing this string later with a script, trim it.
Now the honest part, because metadata words mean different things in different tools. This node does not write PNG chunks by itself. In ComfyUI, the workflow + prompt that ride inside a saved PNG are written by SaveImage and its siblings; this node just produces a plain string for you to route wherever. And the Key [Value] format is the author's own convention, built for his Ultimate Model Tester Workflow - it is not the A1111-style parameters block that Civitai auto-detects, so don't expect auto-linking if you paste it into a save node that only writes that dialect. If your goal is Civitai-friendly uploads, you want a save node that emits A1111-style parameters instead; if your goal is a compact, readable settings tag on your own outputs - or a metadata string routed through this pack's Hub Pro nodes into a custom saver - this is exactly the tool.
The typical setup is a small chain: Convert to String on a seed or model name, then a row of Metadata Append nodes (one per fact you want recorded), each wired into the next, ending wherever your workflow stores or displays the tag. It's a clean way to stamp an image's provenance into the pipeline.
Like everything in comfyui-mdsnodes, install is trivial - no extra packages, nothing to download. In ComfyUI Manager search ComfyUI-MDSNodes, install, restart; or:
cd ComfyUI/custom_nodes
git clone https://github.com/MarwanDSAI/comfyui-mdsnodes
You'll find "Metadata Append" under MDSNodes → Text. If your output looks like a single entry missing the ; separators, that's normal - you've only added one. Chain the next node's metadata input to this one's METADATA output and the list grows. It's a quiet utility, but for anyone who likes their outputs to explain themselves, it earns its place fast.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| metadata | STRING | The original base string. If disconnected, treated as empty. | |
| value | * | The dynamic value to insert inside the brackets. Accepts any data type. | |
| key | STRING | my_key | The key name you type into the textbox. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| METADATA | STRING | The combined output string with the appended key and value. |