FSL Image Saver w/ Metadata V5
FSL Image Saver w/ Metadata V5 — the legacy saver that still gets referenced
- images
- external_metadata
- metadata_raw
- image
FSLImageSaverWithMetadataV5 is the older metadata-saver in the FSL pack, and the README is unambiguous about its status: [Legacy], "De-versioned in the newest update." If a workflow you loaded references it, this is what you're seeing. If you're building fresh, the maintained FSLImageSaverWithMetadata is the one to use - the README calls the current version "the metadata saver" and treats V5 as superseded.
What it does
Mechanically it's the same idea as its successor: save an IMAGE batch as PNGs with generation parameters embedded in the file's metadata. It writes the same two kinds of chunks - an A1111-style parameters text block assembled from whatever string inputs you filled in, plus an fsl_metadata JSON chunk if you pass the external_metadata DICT. Filenames and subfolders are sanitized against path traversal, append_datetime timestamps the prefix, and ComfyUI's save-path helper handles the counter naming.
What differs from the current version
The visible differences are small but worth knowing if you're comparing:
- Output type. V5 returns
METADATA_RAWas its first output instead of the newer node'sMETADATADICT. That's a wire-type mismatch - a workflow expecting one won't accept the other without a convert. - Extra optional strings. V5 has
guidance_scale_stringandwatermark_stringfields the current node dropped. If you were relying on those, they live here only. external_metadatadefaults to{}rather than being required - behavior is otherwise the same.- It's registered as an output node (
is_output_node), where the current saver isn't, so V5 always runs at the end of the graph.
For the save-and-metadata core - filename prefix, subfolder, datetime suffix, model/seed/width/height/temperature/cfg/steps/sampler/scheduler/positive/negative strings - the two nodes are interchangeable.
When to use it
Basically two scenarios: you loaded an old FSL workflow and it works, or you specifically need the guidance_scale_string/watermark_string fields. In both cases it'll keep working - the legacy tag means "no longer the recommended path," not "broken." Otherwise default to the maintained node; the pack's direction is clear, and Google-model metadata conventions have moved on.
Install
Same pack, same routine:
cd ComfyUI/custom_nodes
git clone https://github.com/fredlef/Comfyui_FSL_Nodes
cd Comfyui_FSL_Nodes
pip install -r requirements.txt
or ComfyUI Manager → "ComfyUI FSL Nodes", then restart. No models, no API key - pure local saving. If you're converting an old workflow, the honest advice is to leave V5 alone while it's wired, then migrate when you next touch the graph; converting the METADATA_RAW socket is the one step that needs a moment's attention.
Inputs (19)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| filename | STRING | gemini_out | — |
| save_to_subfolder | STRING | — | |
| append_datetimeopt | BOOLEAN | false | — |
| model_stringopt | STRING | — | |
| modelnameopt | STRING | — | |
| seed_stringopt | STRING | — | |
| width_stringopt | STRING | — | |
| height_stringopt | STRING | — | |
| temperature_stringopt | STRING | — | |
| positive_stringopt | STRING | — | |
| negative_stringopt | STRING | — | |
| cfg_stringopt | STRING | — | |
| steps_stringopt | STRING | — | |
| sampler_stringopt | STRING | — | |
| scheduler_stringopt | STRING | — | |
| guidance_scale_stringopt | STRING | — | |
| watermark_stringopt | STRING | — | |
| external_metadataopt | DICT | [object Object] | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| metadata_raw | METADATA_RAW | — |
| image | IMAGE | — |