The ultimate solution for managing image metadata and multi-tool compatibility. ComfyUI node version of the SD Prompt Reader.
This is a subproject of the <a href="https://github.com/receyuki/stable-diffusion-prompt-reader">SD Prompt Reader.</a> It helps you extract metadata from images in any format supported by the <a href="https://github.com/receyuki/stable-diffusion-prompt-reader">SD Prompt Reader</a> and saves the images with additional metadata to ensure compatibility with metadata detection on websites such as Civitai. <br>
<p> <a href="#supported-formats">Supported Formats</a> • <a href="#installation">Installation</a> • <a href="#usage">Usage</a> • <a href="./CHANGELOG.md">Change Log</a> • <a href="#credits">Credits</a> </p> <img src="./images/screenshot_v130.png"> </div>| | PNG | JPEG | WEBP | TXT* | |----------------------------------------------------------------------------------------|:---:|:----:|:----:|:----:| | A1111's webUI | ✅ | ✅ | ✅ | ✅ | | Easy Diffusion | ✅ | ✅ | ✅ | | | StableSwarmUI* | ✅ | ✅ | | | | StableSwarmUI (prior to 0.5.8-alpha)* | ✅ | ✅ | | | | Fooocus-MRE* | ✅ | ✅ | | | | NovelAI (stealth pnginfo) | ✅ | | ✅ | | | NovelAI (legacy) | ✅ | | | | | InvokeAI | ✅ | | | | | InvokeAI (prior to 2.3.5-post.2) | ✅ | | | | | InvokeAI (prior to 1.15) | ✅ | | | | | ComfyUI* | ✅ | | | | | Draw Things | ✅ | | | | | Naifu(4chan) | ✅ | | | |
See SD Prompt Reader for details
[!NOTE] While ZIP package is available, it is strongly recommended not to use it for installation.
Search for SD Prompt Reader
in the ComfyUI Manager and install it.
Please make sure to install the submodules along with the main repository.
cd
to the custom_node
foldergit clone --recursive https://github.com/receyuki/comfyui-prompt-reader-node.git
cd comfyui-prompt-reader-node
pip install -r requirements.txt
When updating, don't forget to include the submodules along with the main repository.
git pull --recurse-submodules
Prompt Reader
Node works exactly the same as the
standalone SD Prompt Reader.
It uses the Image Data Reader from the
standalone SD Prompt Reader,
allowing it to support the same formats and receive updates along with the
SD Prompt Reader.<details> <summary><b>More Information</b></summary>[!IMPORTANT] Due to custom nodes and complex workflows potentially causing issues with SD Prompt Reader's ability to read image metadata correctly, it is recommended to embed the
Prompt Saver
Node within the workflow to ensure maximum compatibility.
parameter_index
hires-fix
or refiner
,
you will need to modify the parameter_index
to select the parameters you needtext_g
will be combined with text_l
into a single promptBatch Loader
node. When using the Batch Loader
node for bulk reading,
the preview image will not update, and the text box will only display the metadata of the last image.settings
to the Parameter Extractor
node.MODEL_NAME
MODEL_NAME
is a special output that matches the model name in the metadata with the existing models on the server
according to the following priority:
sd_xl_base.safetensors
will be matched with SDXL\sd_xl_base.safetensors
, and vice versa.sd_xl_base
will be matched with SDXL\sd_xl_base.safetensors
, and vice versa.Prompt Saver
Node and the Parameter Generator
Node are designed to be used together.Prompt Saver
Node will write additional metadata in the A1111 format to the output images
to be compatible with any tools that support the A1111 format,
including SD Prompt Reader and Civitai.<details> <summary><b>More Information</b></summary>[!TIP] Since it's not possible to directly extract metadata from
KSampler
, it's necessary to use theParameter Generator
Node to generate parameters and simultaneously output them to thePrompt Saver
Node andKSampler
Node.
file.png, file_1.png, file_2.png
.calculate_hash
is enabled, the node will compute the hash values of checkpoint, VAE, Lora,
and embedding/Textual Inversion, and write them into the metadata. After the server restarts, or a new checkpoint,
VAE, Lora, or embedding/Textual Inversion is loaded, the first image generation may take a longer time for hash calculation.
The hash value will be stored in temporary storage without the need for repeated calculation,
until the server is restarted.resource_hash
is enabled, the resource hashes will be written into the metadata to support auto-detection
on Civitai. This function will only run when calculate_hash
is enabled.Lora Loader
Node or the Lora Selector
Node.
The hash value of the embedding/Textual Inversion will be automatically detected from the prompt.save_metadata_file
save_metadata_file
is turned on, the metadata will be saved as a TXT file with the same name
alongside the image.date_format
& time_format
date_format
and time_format
, please refer to
strftime.org or www.strfti.me.filename
& path
%counter
cannot be used for path
, it can only be used for filename
. This %counter
is slightly different
from the %counter
in the built-in Saver
node, it will count all image files in the path
.
Please refer to the following table for placeholders supported by the filename
and path
.
| | | |------------|------------| | %seed | %date | | %steps | %time | | %cfg | %counter | | %model | %extension | | %sampler | %quality | | %scheduler | |
KSampler
, it's necessary to
use the Parameter Generator
Node to generate parameters and simultaneously output them to both
the Prompt Saver
Node and KSampler
Node.<details> <summary><b>More Information</b></summary>[!TIP] The
Parameter Generator
Node can also be used as a control panel for complex ComfyUI workflows, just like the AP workflow.
model_version
and aspect_ratio
are used only for calculating the optimal resolution of the selected
model version under the chosen aspect ratio. The calculation method is based on the
Stability AI development documentation
and the StableSwarmUI source code (developed by Stability AI).refiner_start
refiner_start
refers to the proportion of steps completed when the refiner starts running,
i.e., the proportion of base steps to total steps. This is used to calculate the start_at_step
(REFINER_START_STEP
)
required by the refiner KSampler
under the selected step ratio.Batch Loader
Node is specifically designed for the Prompt Reader
Node to batch-read image files in a directory
and cannot be used with other custom nodes.IMAGE
output of the Batch Loader
Node to the image
input of
the Prompt Reader
Node.path
path
supports relative paths such as ./input/
or absolute paths like C:/Users/receyuki/Pictures
.\
and /
are acceptable.path
,
in which case the image_load_limit
and start_index
will not function.Parameter Extractor
Node is an extension of the Prompt Reader
Node, designed to retrieve the values
of all parameters in the settings (including those parameters that the Prompt Reader
Node cannot output).
e.g. Hires upscaler
SETTINGS
of the Prompt Reader
Node to the settings
of the Parameter Extractor
Node.
After the first run, the parameter list will be loaded.text_g
and text_l
separately, SDXL users need to use
the Prompt Merger
Node to combine text_g
and text_l
into a single prompt.model_name
, sampler_name
, and scheduler
are special types
that cannot be directly used by some other nodes,
You can use the Type Converter
Node to convert them into STRING
type.Lora Loader
Node and Lora Selector
Node are used to write Lora data into metadata and support auto-detection
on Civitai.Lora Loader
Node, or connect the LORA_NAME
output of the Lora Selector
Node
to the lora_name
input of other lora loaders (built-in or custom), and link the NEXT_LORA
output to the lora_name
input of the Prompt Saver
Node. Both of these nodes have the same function, please choose according to your needs.Lora Loader
Node or Lora Selector
Node head to tail
through last_lora
and NEXT_LORA
, and connect the NEXT_LORA
at the end of the Lora chain to the lora_name
input
of the Prompt Saver
Node.