Image Metadata Core
Read the generation story back out of any image
- images
- images
- final_prompt
- source_prompt
- seed
- generation_settings
- models
- resolved_inputs
- full_report
- metadata_json
- has_metadata
In this ecosystem the image is the project file. SickOllie's Output Core writes its structured metadata into every PNG it saves, and Studio Image Metadata Core (SOImageMetadataCoreStudio) is the node that reads it back out. Drop in a PNG, JPG, or WebP - or connect an IMAGE - and it extracts the resolved prompt, seed, generation settings, models, LoRAs, and resolved inputs, shows them in readable sections with copy controls, and exposes the same data as typed outputs you can wire into anything else.
How it works
The node prefers structured SICK OLLIE metadata when it's present, then falls back through the usual suspects: ComfyUI workflow/prompt chunks, and A1111/Civitai-style parameters text. It handles PNG, JPG, and WebP, and the README is explicit that JPG/WebP metadata is useful for inspection while PNG is the reliable ComfyUI workflow container. Under the hood, uploads use a private temp token instead of dumping files into ComfyUI/input, so inspecting images won't pollute your input folder.
Inputs: image_file (a file picker, default [None]), an optional connected images, and a wall of read-only display fields - status, final_prompt_display, source_prompt_display, generation_display, models_display, prompt_log_display, outfit_a_display/outfit_b_display/outfit_c_display, scene_display, and substitutions_display. Those mirror exactly what Prompt Core assembled, which is the point: this is how you verify that a saved image used the outfit and scene you thought it did.
The outputs that matter
Ten of them: images (passthrough), final_prompt, source_prompt, seed (INT), generation_settings, models, resolved_inputs, full_report, metadata_json, and has_metadata (BOOLEAN). For beginners, final_prompt and seed are the workhorses - wire them into a text/seed display or a save recipe. has_metadata is handy for branching: it tells you whether the file carried any recognized generation data at all, which a lot of scraped or re-encoded images won't.
Installing it
Part of the SickOllie pack:
cd ComfyUI/custom_nodes
git clone https://github.com/sickollie/SickOllie
or ComfyUI Manager → "SickOllie". Restart, Ctrl+F5. No extra dependencies.
Where people get burned
The metadata has to be there in the first place. If the image was re-encoded by a host, screenshotted, or saved as JPEG, there's no graph to recover - this node can only read what survived, and the README's own rule is "PNG with prompt and workflow metadata enabled" for round-trip. Second, Civitai matching is hash-based and exact: a converted or retrained file won't match its published page even when the name looks right, so models may resolve a name but not a Civitai ID. And don't expect has_metadata to be true for images from sources that strip chunks - false isn't a bug, it's the honest answer.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| image_file | STRING | [None] | — |
| status | STRING | — | |
| final_prompt_display | STRING | — | |
| source_prompt_display | STRING | — | |
| generation_display | STRING | — | |
| models_display | STRING | — | |
| prompt_log_display | STRING | — | |
| outfit_a_display | STRING | — | |
| outfit_b_display | STRING | — | |
| outfit_c_display | STRING | — | |
| scene_display | STRING | — | |
| substitutions_display | STRING | — | |
| imagesopt | IMAGE | — |
Outputs (10)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| final_prompt | STRING | — |
| source_prompt | STRING | — |
| seed | INT | — |
| generation_settings | STRING | — |
| models | STRING | — |
| resolved_inputs | STRING | — |
| full_report | STRING | — |
| metadata_json | STRING | — |
| has_metadata | BOOLEAN | — |