π·οΈ Extract Metadata
Read the workflow back out of any image or video
- Output
The whole point of the pack, in one node
The defining quirk of this ecosystem is that the image is the project file: a ComfyUI PNG carries the full graph and the API prompt as PNG text chunks, and an A1111 image carries a flat parameters string. That metadata is the interesting part of an output file, and it's normally locked inside the container until you open ExifTool or drag the picture back onto the canvas.
Extract Metadata gets it out as text. Point it at a file, and the pack's ime backend (the author's own image-metadata-editor CLI) reads the metadata and hands it to you as a string, which means you can then do things the canvas can't: pull the seed out with a jq filter, feed the prompt into another pipeline, or strip a field before re-saving.
This is the node that makes the rest of the metadata group make sense. Extract β edit the JSON β convert the structure for a different format β save with metadata. Each step is a separate node in the pack because each step is separately useful.
How it works
The node shells out to the ime executable - it looks on your system PATH first, then in the pack's own bin/ folder - passes the file path, and captures stdout as text. It refuses to run on an empty path (file_path is empty) and on a file that isn't there (File not found: β¦), which is a nice change from the file-system nodes' cheerful silence.
Two things follow from the shell-out design. First, ime has to exist. If the pack's install.py was never run - common with a git-clone install where nobody read the README's step 2 - you get a clear error telling you to download it or put it in bin/. That error is the single most common first contact with this node. Second, extraction happens server-side, so the path in the field must be a real path on the machine running ComfyUI. Not a URL, not a relative path from your browser's perspective.
It's registered as an output node, which is deliberate: it runs even when its output isn't connected, so the node's built-in preview always populates. The visible text is what the tool printed.
Inputs and output
File Path - a STRING, typed or wired. Absolute. The pack's π Directory, π List Files and π Array For Each combination is the batch way to feed it: List a folder, walk the filenames, feed each one in across queued runs.
One output: Output (STRING), the extracted metadata as text. Wire it into π JSON Get Value to pull a single field, π JSON Delete Key to drop one before re-saving, π JSON Preview to read it comfortably, or π·οΈ Convert Metadata Format if you're about to save in a different container.
What you can and can't get back
Be realistic about the input file. If it still has its chunks - a PNG straight out of Save Image, an original downloaded from a host that stores the original - you get everything: prompt, workflow, seeds, model names and hashes, the whole node graph. If it's been re-encoded, you get whatever the new container kept and nothing else. Reddit, most Discord inline previews and every CDN thumbnail re-encode, and re-encoding to JPEG or WebP means the PNG chunks are gone by definition. There's no recovering a node graph from pixels. The node reads files; it doesn't perform miracles.
Video is the other half of the pitch: ime handles video containers too, so MP4/WebM files from a ComfyUI video workflow can be inspected the same way. Handy when someone posts a clip and you want to know which model and sampler produced it.
Install
Manager: Extensions β Node Pack β search "Honda Nodes" β Install β restart - Manager runs the pack's install step for you. If you cloned by hand, this node needs that step:
cd ComfyUI/custom_nodes
git clone --depth 1 https://github.com/Avaray/honda-nodes.git
cd honda-nodes
python install.py # ComfyUI's python; portable Windows: ..\..\..\python_embeded\python.exe install.py
That downloads ime (and jq) into honda-nodes/bin. It needs network access to GitHub releases, and if the API rate-limits the version lookup it falls back to a hardcoded tag - which is fine, but it does mean a stale tag can be fetched on a bad day.
Common issues
"The 'ime' CLI tool was not found." install.py hasn't run, or it ran with a Python that couldn't write to bin/. Re-run it and watch the output; it prints the download URL and the destination.
"File not found." The path is absolute on the server but wrong - trailing whitespace, backslashes from Windows pasted into a Linux box, or a file that ComfyUI saved under a different filename_prefix than you assumed.
Empty or near-empty output. The file has no metadata left, which is usually a re-encode. Open it in ExifTool to confirm before you go hunting through the node.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| file_path | STRING | Path to the image or video file. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| Output | STRING | β |