diff --git a/.gitignore b/.gitignore
index 976a184..48bf3ba 100644
--- a/.gitignore
+++ b/.gitignore
@@ -153,3 +153,4 @@ dmypy.json
cython_debug/
.idea/
+preview/
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 42c1432..8b15cb9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,26 @@
# Change Log
+## v1.3.0
+> Starting from this version, to support auto-detection on Civitai, `calculate_model_hash` will be renamed as
+> `calculate_hash` and it will be enabled by default. Due to the addition of temporary storage of the model hash values,
+> the first image generated after switching to the new model will take more time to calculate the hash value,
+> but it will not affect the generation speed afterwards until the server is restarted.
+
+- Add `Lora Loader` node and `Lora Selector` node
+- Add `VAE_NAME` output to the `Parameter Generator` node and add `vae_name` input to the `Prompt Saver` node #39
+- Add `lora_name` input to the `Prompt Saver` node
+- Add `resource_hash` switch to the `Prompt Saver` node
+- Add resources hashes to metadata for auto-detection on Civitai #35
+- Add temporary storage for model hashes
+- Add `WEB_DIRECTORY` and remove old js directory
+- Fix adding the `Parameter Generator` node to a workflow disables the queue button #45
+- Fix the `Parameter Generator` node doesn't load seed value from generated images #44
+- Fix the input validation of the `Batch Loader` node #37 #38
+- Fix the parsing error caused by the loss of model data #43
+- Fix the error message caused by aspect_ratio
+- Rename `calculate_model_hash` as `calculate_hash`
+- Update seedGen.js to rgthree's latest code
+- Update core to cc3c8b2
+
## v1.2.1
- Fix the input validation of the `Prompt Reader` node #37
- Fix the `Batch Loader` node not working when not connected to any node
diff --git a/README.md b/README.md
index ead9a4b..b014bf1 100644
--- a/README.md
+++ b/README.md
@@ -23,7 +23,7 @@ additional metadata to ensure compatibility with metadata detection on websites
Change Log •
Credits
-
+
@@ -66,6 +66,10 @@ git pull --recurse-submodules
## Usage
### Prompt Reader Node
+
+

+
+
- The `Prompt Reader` Node works exactly the same as the
[standalone SD Prompt Reader](https://github.com/receyuki/stable-diffusion-prompt-reader).
It uses the Image Data Reader from the
@@ -74,13 +78,30 @@ allowing it to support the same formats and receive updates along with the
[SD Prompt Reader](https://github.com/receyuki/stable-diffusion-prompt-reader).
- 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.
+to ensure maximum compatibility.
+
+ More Information
+
+#### `parameter_index`
- For images containing multiple sets of parameters, such as those processed through `hires-fix` or `refiner`,
you will need to modify the `parameter_index` to select the parameters you need
+#### SDXL
- For images generated by SDXL and containing multiple sets of prompts,
the `text_g` will be combined with `text_l` into a single prompt
-- For batch processing, please use the `Batch Loader` node.
+#### Batch Read
+- For batch processing, please use the `Batch 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.
+
+

+
+
+#### Additional Parameters
- To read parameters other than the existing output, please connect the `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:
1. Identical path, filename, and extension.
@@ -90,108 +111,198 @@ e.g. `sd_xl_base.safetensors` will be matched with `SDXL\sd_xl_base.safetensors`
e.g. `sd_xl_base` will be matched with `SDXL\sd_xl_base.safetensors`, and vice versa.
4. If a matching model cannot be found, the original name will be outputted.
-
-

-
+
### Prompt Saver Node
-- The `Prompt Saver` Node and The `Parameter Generator` Node are designed to be used together.
-- The `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.
-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 this node within the workflow
-to ensure maximum compatibility.
-- Since it's not possible to directly extract metadata from `KSampler`, it is necessary to
-use the `Parameter Generator` Node to generate parameters and simultaneously output them to both
-the `Prompt Saver` Node and `KSampler`.
-- Please refer to the following table for placeholders supported by the `filename` and `path`.
-
- | Placeholder |
- |-------------|
- | %date |
- | %time |
- | %counter |
- | %seed |
- | %steps |
- | %cfg |
- | %extension |
- | %model |
- | %sampler |
- | %scheduler |
- | %quality |
-- `%counter` cannot be used for the `path`. This `%counter` is slightly different from the `%counter`
-in the built-in Saver node, it will count all image files in the `path`.
-- When the filename already exists, an index will be added at the end of the filename,
-e.g. `file.png, file_1.png, file_2.png`.
-- For the `date_format` and `time_format`, please refer to
-[strftime.org](https://strftime.org/) or [www.strfti.me](https://www.strfti.me/).
-- When the `save_metadata_file` is turned on, the metadata will be saved as a TXT file with the same name
-alongside the image.
-
-## Parameter Generator Node
-- Since it's not possible to directly extract metadata from `KSampler`, it is necessary to
-use the `Parameter Generator` Node to generate parameters and simultaneously output them to both
-the `Prompt Saver` Node and `KSampler`.
-- The `Parameter Generator` Node can also be used as a control panel for complex ComfyUI workflows, just like the [AP workflow](https://perilli.com/ai/comfyui/).
-- The `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](https://platform.stability.ai/docs/features/api-parameters#about-dimensions)
-and the [StableSwarmUI source code](https://github.com/Stability-AI/StableSwarmUI) (developed by Stability AI).
-- `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.
+- The `Prompt Saver` Node and the `Parameter Generator` Node are designed to be used together.
+- The `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.
+Due to custom nodes and complex workflows potentially causing issues with SD Prompt Reader's ability
+to read image metadata correctly, it's recommended to embed this node within the workflow
+to ensure maximum compatibility.
+- Since it's not possible to directly extract metadata from `KSampler`, it's necessary to
+use the `Parameter Generator` Node to generate parameters and simultaneously output them to
+the `Prompt Saver` Node and `KSampler` Node.
+
+ More Information
+
+#### Duplicate Filename
+- When the filename already exists, an index will be added at the end of the filename,
+e.g. `file.png, file_1.png, file_2.png`.
+#### Hashes & Auto-Detection on Civitai
+- When `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.
+- When `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.
+- If you need to calculate the hash of Lora, please use the `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`
+- When the `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`
+- For the `date_format` and `time_format`, please refer to
+[strftime.org](https://strftime.org/) or [www.strfti.me](https://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 | |
+
+
+
+### Parameter Generator Node
+- Since it's not possible to directly extract metadata from `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.
+- The `Parameter Generator` Node can also be used as a control panel for complex ComfyUI workflows, just like the [AP workflow](https://perilli.com/ai/comfyui/).
+
+ More Information
+
+#### Optimal Resolution
+- The `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](https://platform.stability.ai/docs/features/api-parameters#about-dimensions)
+and the [StableSwarmUI source code](https://github.com/Stability-AI/StableSwarmUI) (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
+
+

+
+
- The `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.
+
+ More Information
+
- For batch processing, please connect the `IMAGE` output of the `Batch Loader` Node to the `image` input of
the `Prompt Reader` Node.
+
+

+
+
+#### `path`
- The `path` supports relative paths such as `./input/` or absolute paths like `C:/Users/receyuki/Pictures`.
- Both `\ ` and `/` are acceptable.
- You can also input a single file or a list of files into the `path`,
in which case the `image_load_limit` and `start_index` will not function.
-
-

-
+
### Parameter Extractor Node
-- The `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`
-- Connect the `SETTINGS` of the `Prompt Reader` Node to the `settings` of the `Parameter Extractor` Node.
-After the first run, the parameter list will be loaded.
-
+- The `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`
+
+ More Information
+
+- Connect the `SETTINGS` of the `Prompt Reader` Node to the `settings` of the `Parameter Extractor` Node.
+After the first run, the parameter list will be loaded.
+
+

+
+
+
### Prompt Merger Node & Type Converter Node
+
+

+
+
- Since the A1111 format cannot store `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.
- Since `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 & Lora Selector Node
-

+
-### [Example Workflow](https://raw.githubusercontent.com/receyuki/comfyui-prompt-reader-node/main/workflows/example_workflow.json)
+- The `Lora Loader` Node and `Lora Selector` Node are used to write Lora data into metadata and support auto-detection
+on Civitai.
+
+ More Information
+- Replace the original loader with the `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.
+#### Multiple Loras
+- If you need to load multiple Loras, please connect the `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.
+1. Lora Loader chain
-

+
+2. Lora Selector chain
+
+

+
+
+
+
+### Example Workflow
+
+ Simple Example
+
+

+
+
+
+
+ Lora Example
+
+

+
+
+
+
+ Hires-fix Example
+
+

+
+
+
+
+ SDXL Example
+
+

+
+
+
+
## Credits
- The SD Prompt Reader node is based on [ComfyUI Load Image With Metadata](https://github.com/tkoenig89/ComfyUI_Load_Image_With_Metadata)
- The SD Prompt Saver node is based on [Comfy Image Saver](https://github.com/giriss/comfy-image-saver) & [Stable Diffusion Webui](https://github.com/AUTOMATIC1111/stable-diffusion-webui)
diff --git a/images/example_workflow.png b/images/example_workflow.png
deleted file mode 100644
index d1499dd..0000000
Binary files a/images/example_workflow.png and /dev/null differ
diff --git a/images/generator.png b/images/generator.png
index bdb6d8d..eef1372 100644
Binary files a/images/generator.png and b/images/generator.png differ
diff --git a/images/loader2reader.png b/images/loader2reader.png
new file mode 100644
index 0000000..7099d8c
Binary files /dev/null and b/images/loader2reader.png differ
diff --git a/images/lora.png b/images/lora.png
new file mode 100644
index 0000000..e4b9849
Binary files /dev/null and b/images/lora.png differ
diff --git a/images/lora_loader_chain.png b/images/lora_loader_chain.png
new file mode 100644
index 0000000..3421fdd
Binary files /dev/null and b/images/lora_loader_chain.png differ
diff --git a/images/lora_selector_chain.png b/images/lora_selector_chain.png
new file mode 100644
index 0000000..137dbf4
Binary files /dev/null and b/images/lora_selector_chain.png differ
diff --git a/images/reader2extractor.png b/images/reader2extractor.png
new file mode 100644
index 0000000..5aba8f2
Binary files /dev/null and b/images/reader2extractor.png differ
diff --git a/images/saver.png b/images/saver.png
index 6c0aa09..16d0367 100644
Binary files a/images/saver.png and b/images/saver.png differ
diff --git a/images/screenshot_v130.png b/images/screenshot_v130.png
new file mode 100644
index 0000000..4794a8f
Binary files /dev/null and b/images/screenshot_v130.png differ
diff --git a/workflows/hires_fix_example.json b/workflows/hires_fix_example.json
new file mode 100644
index 0000000..85800ac
--- /dev/null
+++ b/workflows/hires_fix_example.json
@@ -0,0 +1,2072 @@
+{
+ "last_node_id": 21,
+ "last_link_id": 84,
+ "nodes": [
+ {
+ "id": 12,
+ "type": "SDLoraSelector",
+ "pos": [
+ 1780,
+ 130
+ ],
+ "size": {
+ "0": 320,
+ "1": 80
+ },
+ "flags": {},
+ "order": 8,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "last_lora",
+ "type": "*",
+ "link": 44
+ }
+ ],
+ "outputs": [
+ {
+ "name": "LORA_NAME",
+ "type": "COMBO",
+ "links": [
+ 45
+ ],
+ "shape": 3,
+ "slot_index": 0
+ },
+ {
+ "name": "NEXT_LORA",
+ "type": "*",
+ "links": [
+ 53
+ ],
+ "shape": 3,
+ "slot_index": 1
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SDLoraSelector"
+ },
+ "widgets_values": [
+ "fashigirl-v6-nai-5ep-resize.safetensors"
+ ]
+ },
+ {
+ "id": 13,
+ "type": "LoraLoader",
+ "pos": [
+ 2200,
+ 130
+ ],
+ "size": {
+ "0": 320,
+ "1": 122
+ },
+ "flags": {},
+ "order": 9,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "model",
+ "type": "MODEL",
+ "link": 47
+ },
+ {
+ "name": "clip",
+ "type": "CLIP",
+ "link": 46,
+ "slot_index": 1
+ },
+ {
+ "name": "lora_name",
+ "type": "COMBO",
+ "link": 45,
+ "widget": {
+ "name": "lora_name"
+ }
+ }
+ ],
+ "outputs": [
+ {
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 48
+ ],
+ "shape": 3,
+ "slot_index": 0
+ },
+ {
+ "name": "CLIP",
+ "type": "CLIP",
+ "links": [
+ 51,
+ 52
+ ],
+ "shape": 3,
+ "slot_index": 1
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "LoraLoader"
+ },
+ "widgets_values": [
+ "104V2.safetensors",
+ 0.6,
+ 1
+ ]
+ },
+ {
+ "id": 11,
+ "type": "SDLoraLoader",
+ "pos": [
+ 1360,
+ 130
+ ],
+ "size": {
+ "0": 320,
+ "1": 150
+ },
+ "flags": {},
+ "order": 6,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "model",
+ "type": "MODEL",
+ "link": 49
+ },
+ {
+ "name": "clip",
+ "type": "CLIP",
+ "link": 50,
+ "slot_index": 1
+ },
+ {
+ "name": "last_lora",
+ "type": "*",
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 47
+ ],
+ "shape": 3,
+ "slot_index": 0
+ },
+ {
+ "name": "CLIP",
+ "type": "CLIP",
+ "links": [
+ 46
+ ],
+ "shape": 3
+ },
+ {
+ "name": "NEXT_LORA",
+ "type": "*",
+ "links": [
+ 44
+ ],
+ "shape": 3,
+ "slot_index": 2
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SDLoraLoader"
+ },
+ "widgets_values": [
+ "koreandolllikenessV20_v20.safetensors",
+ 0.3,
+ 1
+ ]
+ },
+ {
+ "id": 10,
+ "type": "SDBatchLoader",
+ "pos": [
+ 100,
+ 130
+ ],
+ "size": {
+ "0": 315,
+ "1": 148
+ },
+ "flags": {},
+ "order": 0,
+ "mode": 0,
+ "outputs": [
+ {
+ "name": "IMAGE",
+ "type": "*",
+ "links": [
+ 55
+ ],
+ "shape": 6,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SDBatchLoader"
+ },
+ "widgets_values": [
+ "./input/",
+ 1,
+ 1,
+ "input\\00067-2302238556.png"
+ ]
+ },
+ {
+ "id": 5,
+ "type": "EmptyLatentImage",
+ "pos": [
+ 1360,
+ 410
+ ],
+ "size": {
+ "0": 320,
+ "1": 74
+ },
+ "flags": {},
+ "order": 7,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "width",
+ "type": "INT",
+ "link": 58,
+ "widget": {
+ "name": "width"
+ }
+ },
+ {
+ "name": "height",
+ "type": "INT",
+ "link": 59,
+ "widget": {
+ "name": "height"
+ },
+ "slot_index": 1
+ },
+ {
+ "name": "batch_size",
+ "type": "INT",
+ "link": 4,
+ "widget": {
+ "name": "batch_size"
+ }
+ }
+ ],
+ "outputs": [
+ {
+ "name": "LATENT",
+ "type": "LATENT",
+ "links": [
+ 10
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "EmptyLatentImage"
+ },
+ "widgets_values": [
+ 512,
+ 512,
+ 1
+ ]
+ },
+ {
+ "id": 16,
+ "type": "ImageUpscaleWithModel",
+ "pos": [
+ 3880,
+ 130
+ ],
+ "size": {
+ "0": 320,
+ "1": 50
+ },
+ "flags": {},
+ "order": 14,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "upscale_model",
+ "type": "UPSCALE_MODEL",
+ "link": 60
+ },
+ {
+ "name": "image",
+ "type": "IMAGE",
+ "link": 75
+ }
+ ],
+ "outputs": [
+ {
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": [
+ 61
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ImageUpscaleWithModel"
+ }
+ },
+ {
+ "id": 15,
+ "type": "UpscaleModelLoader",
+ "pos": [
+ 100,
+ 408
+ ],
+ "size": {
+ "0": 320,
+ "1": 60
+ },
+ "flags": {},
+ "order": 1,
+ "mode": 0,
+ "outputs": [
+ {
+ "name": "UPSCALE_MODEL",
+ "type": "UPSCALE_MODEL",
+ "links": [
+ 60
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "UpscaleModelLoader"
+ },
+ "widgets_values": [
+ "RealESRGAN_x4plus.pth"
+ ]
+ },
+ {
+ "id": 19,
+ "type": "VAEEncode",
+ "pos": [
+ 4720,
+ 130
+ ],
+ "size": {
+ "0": 320,
+ "1": 50
+ },
+ "flags": {},
+ "order": 16,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "pixels",
+ "type": "IMAGE",
+ "link": 63
+ },
+ {
+ "name": "vae",
+ "type": "VAE",
+ "link": 67
+ }
+ ],
+ "outputs": [
+ {
+ "name": "LATENT",
+ "type": "LATENT",
+ "links": [
+ 65
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "VAEEncode"
+ }
+ },
+ {
+ "id": 6,
+ "type": "CLIPTextEncode",
+ "pos": [
+ 2620,
+ 130
+ ],
+ "size": {
+ "0": 320,
+ "1": 54
+ },
+ "flags": {},
+ "order": 10,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "clip",
+ "type": "CLIP",
+ "link": 51,
+ "slot_index": 0
+ },
+ {
+ "name": "text",
+ "type": "STRING",
+ "link": 5,
+ "widget": {
+ "name": "text"
+ },
+ "slot_index": 1
+ }
+ ],
+ "outputs": [
+ {
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 36,
+ 73
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPTextEncode"
+ },
+ "widgets_values": [
+ ""
+ ]
+ },
+ {
+ "id": 7,
+ "type": "CLIPTextEncode",
+ "pos": [
+ 2620,
+ 314
+ ],
+ "size": {
+ "0": 320,
+ "1": 54
+ },
+ "flags": {},
+ "order": 11,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "clip",
+ "type": "CLIP",
+ "link": 52,
+ "slot_index": 0
+ },
+ {
+ "name": "text",
+ "type": "STRING",
+ "link": 6,
+ "widget": {
+ "name": "text"
+ }
+ }
+ ],
+ "outputs": [
+ {
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 35,
+ 74
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPTextEncode"
+ },
+ "widgets_values": [
+ ""
+ ]
+ },
+ {
+ "id": 8,
+ "type": "VAEDecode",
+ "pos": [
+ 3460,
+ 130
+ ],
+ "size": {
+ "0": 320,
+ "1": 50
+ },
+ "flags": {},
+ "order": 13,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "samples",
+ "type": "LATENT",
+ "link": 13
+ },
+ {
+ "name": "vae",
+ "type": "VAE",
+ "link": 12,
+ "slot_index": 1
+ }
+ ],
+ "outputs": [
+ {
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": [
+ 75
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "VAEDecode"
+ }
+ },
+ {
+ "id": 21,
+ "type": "VAEDecode",
+ "pos": [
+ 5560,
+ 130
+ ],
+ "size": {
+ "0": 210,
+ "1": 46
+ },
+ "flags": {},
+ "order": 18,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "samples",
+ "type": "LATENT",
+ "link": 76
+ },
+ {
+ "name": "vae",
+ "type": "VAE",
+ "link": 77,
+ "slot_index": 1
+ }
+ ],
+ "outputs": [
+ {
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": [
+ 78
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "VAEDecode"
+ }
+ },
+ {
+ "id": 9,
+ "type": "SDParameterExtractor",
+ "pos": [
+ 940,
+ 2170
+ ],
+ "size": {
+ "0": 320,
+ "1": 150
+ },
+ "flags": {},
+ "order": 5,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "settings",
+ "type": "STRING",
+ "link": 79,
+ "widget": {
+ "name": "settings"
+ },
+ "slot_index": 0
+ }
+ ],
+ "outputs": [
+ {
+ "name": "VALUE",
+ "type": "*",
+ "links": [
+ 80
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SDParameterExtractor"
+ },
+ "widgets_values": [
+ "",
+ "Denoising strength",
+ "FLOAT",
+ 0,
+ "Denoising strength: 0.45"
+ ]
+ },
+ {
+ "id": 1,
+ "type": "SDPromptReader",
+ "pos": [
+ 520,
+ 130
+ ],
+ "size": [
+ 320,
+ 840
+ ],
+ "flags": {},
+ "order": 2,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "image",
+ "type": "COMBO",
+ "link": 55,
+ "widget": {
+ "name": "image"
+ },
+ "slot_index": 0
+ }
+ ],
+ "outputs": [
+ {
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "MASK",
+ "type": "MASK",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "POSITIVE",
+ "type": "STRING",
+ "links": [
+ 5,
+ 23
+ ],
+ "shape": 3,
+ "slot_index": 2
+ },
+ {
+ "name": "NEGATIVE",
+ "type": "STRING",
+ "links": [
+ 6,
+ 24
+ ],
+ "shape": 3,
+ "slot_index": 3
+ },
+ {
+ "name": "SEED",
+ "type": "INT",
+ "links": [],
+ "shape": 3
+ },
+ {
+ "name": "STEPS",
+ "type": "INT",
+ "links": [
+ 19,
+ 26
+ ],
+ "shape": 3,
+ "slot_index": 5
+ },
+ {
+ "name": "CFG",
+ "type": "FLOAT",
+ "links": [
+ 20,
+ 27
+ ],
+ "shape": 3,
+ "slot_index": 6
+ },
+ {
+ "name": "WIDTH",
+ "type": "INT",
+ "links": [
+ 31
+ ],
+ "shape": 3,
+ "slot_index": 7
+ },
+ {
+ "name": "HEIGHT",
+ "type": "INT",
+ "links": [
+ 32
+ ],
+ "shape": 3,
+ "slot_index": 8
+ },
+ {
+ "name": "MODEL_NAME",
+ "type": "*",
+ "links": [
+ 41,
+ 81
+ ],
+ "shape": 3,
+ "slot_index": 9
+ },
+ {
+ "name": "FILENAME",
+ "type": "STRING",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "SETTINGS",
+ "type": "STRING",
+ "links": [
+ 79
+ ],
+ "shape": 3,
+ "slot_index": 11
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SDPromptReader"
+ },
+ "widgets_values": [
+ "00067-2302238556.png",
+ "image",
+ 0,
+ "ultra realistic 8k cg, HDR, epic, perfect artwork, masterpiece, bokeh, beautiful face, perfect female body, alluring, perfect female figure, ultra high res, beach, pink hair, seductive posture, seductive gaze, skindentation, 1girl, kpop idol, blush, street, earring, choker, close up, strap dress, half-length portrait, , ",
+ "grayscale, monochrome, low quality, worst quality, lowres, acnes, bad anatomy, bad hands, deformed, error, logo, mosaic censoring, sketches, skin blemishes, skin spots, text, watermark, FastNegativeV2",
+ "Steps: 35, Sampler: DPM++ 2M Karras, CFG scale: 7.5, Seed: 2302238556, Size: 512x512, Model hash: 18ed2b6c48, Model: xxmix9realistic_v40, Denoising strength: 0.45, Hires upscale: 2, Hires steps: 15, Hires upscaler: R-ESRGAN 4x+, Lora hashes: \"koreandolllikenessV20_v20: 8f3d16e6eada, fashigirl-v6-nai-5ep-resize: 4e0173ae8cef\", Version: 1.6.0"
+ ]
+ },
+ {
+ "id": 17,
+ "type": "ImageScale",
+ "pos": [
+ 4300,
+ 130
+ ],
+ "size": {
+ "0": 320,
+ "1": 130
+ },
+ "flags": {},
+ "order": 15,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "image",
+ "type": "IMAGE",
+ "link": 61
+ },
+ {
+ "name": "width",
+ "type": "INT",
+ "link": 82,
+ "widget": {
+ "name": "width"
+ }
+ },
+ {
+ "name": "height",
+ "type": "INT",
+ "link": 83,
+ "widget": {
+ "name": "height"
+ },
+ "slot_index": 2
+ }
+ ],
+ "outputs": [
+ {
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": [
+ 63
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "ImageScale"
+ },
+ "widgets_values": [
+ "bilinear",
+ 1024,
+ 1024,
+ "disabled"
+ ]
+ },
+ {
+ "id": 2,
+ "type": "SDParameterGenerator",
+ "pos": [
+ 940,
+ 130
+ ],
+ "size": [
+ 320,
+ 880
+ ],
+ "flags": {},
+ "order": 3,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "ckpt_name",
+ "type": "COMBO",
+ "link": 41,
+ "widget": {
+ "name": "ckpt_name"
+ },
+ "slot_index": 0
+ }
+ ],
+ "outputs": [
+ {
+ "name": "MODEL_NAME",
+ "type": "COMBO",
+ "links": [
+ 39
+ ],
+ "shape": 3,
+ "slot_index": 0
+ },
+ {
+ "name": "VAE_NAME",
+ "type": "COMBO",
+ "links": [
+ 40
+ ],
+ "shape": 3,
+ "slot_index": 1
+ },
+ {
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 49
+ ],
+ "shape": 3,
+ "slot_index": 2
+ },
+ {
+ "name": "CLIP",
+ "type": "CLIP",
+ "links": [
+ 50
+ ],
+ "shape": 3,
+ "slot_index": 3
+ },
+ {
+ "name": "VAE",
+ "type": "VAE",
+ "links": [
+ 12
+ ],
+ "shape": 3,
+ "slot_index": 4
+ },
+ {
+ "name": "SEED",
+ "type": "INT",
+ "links": [
+ 30,
+ 84
+ ],
+ "shape": 3,
+ "slot_index": 5
+ },
+ {
+ "name": "STEPS",
+ "type": "INT",
+ "links": [],
+ "shape": 3,
+ "slot_index": 6
+ },
+ {
+ "name": "REFINER_START_STEP",
+ "type": "INT",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "CFG",
+ "type": "FLOAT",
+ "links": [],
+ "shape": 3
+ },
+ {
+ "name": "SAMPLER_NAME",
+ "type": "COMBO",
+ "links": [
+ 17,
+ 28
+ ],
+ "shape": 3,
+ "slot_index": 9
+ },
+ {
+ "name": "SCHEDULER",
+ "type": "COMBO",
+ "links": [
+ 18,
+ 29
+ ],
+ "shape": 3,
+ "slot_index": 10
+ },
+ {
+ "name": "POSITIVE_ASCORE",
+ "type": "FLOAT",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "NEGATIVE_ASCORE",
+ "type": "FLOAT",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "WIDTH",
+ "type": "INT",
+ "links": [
+ 58
+ ],
+ "shape": 3,
+ "slot_index": 13
+ },
+ {
+ "name": "HEIGHT",
+ "type": "INT",
+ "links": [
+ 59
+ ],
+ "shape": 3,
+ "slot_index": 14
+ },
+ {
+ "name": "BATCH_SIZE",
+ "type": "INT",
+ "links": [
+ 4
+ ],
+ "shape": 3,
+ "slot_index": 15
+ },
+ {
+ "name": "PARAMETERS",
+ "type": "STRING",
+ "links": null,
+ "shape": 3
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SDParameterGenerator"
+ },
+ "widgets_values": [
+ "xxmix9realistic_v40.safetensors",
+ "kl-f8-anime2.ckpt",
+ "SDv1 512px",
+ "none",
+ -1,
+ 30,
+ 1,
+ 8,
+ "dpmpp_2m",
+ "karras",
+ 6,
+ 6,
+ "1:1 - 512x512",
+ 512,
+ 512,
+ 1,
+ "Total steps: 30,\nRefiner off",
+ "Optimal resolution for SDv1 512px model\nwith aspect ratio 1:1: 512 x 512",
+ null,
+ "Total steps: 30,\nRefiner off",
+ "Optimal resolution for SDv1 512px model\nwith aspect ratio 1:1: 512 x 512"
+ ]
+ },
+ {
+ "id": 20,
+ "type": "SDParameterGenerator",
+ "pos": [
+ 940,
+ 1140
+ ],
+ "size": [
+ 320,
+ 900
+ ],
+ "flags": {},
+ "order": 4,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "ckpt_name",
+ "type": "COMBO",
+ "link": 81,
+ "widget": {
+ "name": "ckpt_name"
+ }
+ }
+ ],
+ "outputs": [
+ {
+ "name": "MODEL_NAME",
+ "type": "COMBO",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "VAE_NAME",
+ "type": "COMBO",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 66
+ ],
+ "shape": 3
+ },
+ {
+ "name": "CLIP",
+ "type": "CLIP",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "VAE",
+ "type": "VAE",
+ "links": [
+ 67,
+ 77
+ ],
+ "shape": 3,
+ "slot_index": 4
+ },
+ {
+ "name": "SEED",
+ "type": "INT",
+ "links": [
+ 68
+ ],
+ "shape": 3
+ },
+ {
+ "name": "STEPS",
+ "type": "INT",
+ "links": [
+ 70
+ ],
+ "shape": 3
+ },
+ {
+ "name": "REFINER_START_STEP",
+ "type": "INT",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "CFG",
+ "type": "FLOAT",
+ "links": [
+ 69
+ ],
+ "shape": 3,
+ "slot_index": 8
+ },
+ {
+ "name": "SAMPLER_NAME",
+ "type": "COMBO",
+ "links": [
+ 72
+ ],
+ "shape": 3
+ },
+ {
+ "name": "SCHEDULER",
+ "type": "COMBO",
+ "links": [
+ 71
+ ],
+ "shape": 3,
+ "slot_index": 10
+ },
+ {
+ "name": "POSITIVE_ASCORE",
+ "type": "FLOAT",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "NEGATIVE_ASCORE",
+ "type": "FLOAT",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "WIDTH",
+ "type": "INT",
+ "links": [
+ 82
+ ],
+ "shape": 3,
+ "slot_index": 13
+ },
+ {
+ "name": "HEIGHT",
+ "type": "INT",
+ "links": [
+ 83
+ ],
+ "shape": 3
+ },
+ {
+ "name": "BATCH_SIZE",
+ "type": "INT",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "PARAMETERS",
+ "type": "STRING",
+ "links": null,
+ "shape": 3
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SDParameterGenerator"
+ },
+ "widgets_values": [
+ "xxmix9realistic_v40.safetensors",
+ "baked VAE",
+ "SDv1 512px",
+ "none",
+ -1,
+ 15,
+ 1,
+ 8,
+ "dpmpp_2m",
+ "karras",
+ 6,
+ 6,
+ "custom",
+ 1024,
+ 1024,
+ 1,
+ "Total steps: 15,\nRefiner off",
+ "Custom aspect ratio: 512 x 512",
+ null,
+ "Total steps: 15,\nRefiner off",
+ "Custom aspect ratio: 1024 x 1024"
+ ]
+ },
+ {
+ "id": 4,
+ "type": "KSamplerAdvanced",
+ "pos": [
+ 3040,
+ 130
+ ],
+ "size": [
+ 320,
+ 290
+ ],
+ "flags": {},
+ "order": 12,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "model",
+ "type": "MODEL",
+ "link": 48
+ },
+ {
+ "name": "positive",
+ "type": "CONDITIONING",
+ "link": 36,
+ "slot_index": 1
+ },
+ {
+ "name": "negative",
+ "type": "CONDITIONING",
+ "link": 35
+ },
+ {
+ "name": "latent_image",
+ "type": "LATENT",
+ "link": 10
+ },
+ {
+ "name": "noise_seed",
+ "type": "INT",
+ "link": 84,
+ "widget": {
+ "name": "noise_seed"
+ },
+ "slot_index": 4
+ },
+ {
+ "name": "steps",
+ "type": "INT",
+ "link": 19,
+ "widget": {
+ "name": "steps"
+ }
+ },
+ {
+ "name": "cfg",
+ "type": "FLOAT",
+ "link": 20,
+ "widget": {
+ "name": "cfg"
+ },
+ "slot_index": 6
+ },
+ {
+ "name": "sampler_name",
+ "type": "COMBO",
+ "link": 17,
+ "widget": {
+ "name": "sampler_name"
+ }
+ },
+ {
+ "name": "scheduler",
+ "type": "COMBO",
+ "link": 18,
+ "widget": {
+ "name": "scheduler"
+ },
+ "slot_index": 8
+ }
+ ],
+ "outputs": [
+ {
+ "name": "LATENT",
+ "type": "LATENT",
+ "links": [
+ 13
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "KSamplerAdvanced"
+ },
+ "widgets_values": [
+ "enable",
+ 627002773111205,
+ "randomize",
+ 20,
+ 8,
+ "euler",
+ "normal",
+ 0,
+ 10000,
+ "disable"
+ ]
+ },
+ {
+ "id": 18,
+ "type": "KSampler",
+ "pos": [
+ 5140,
+ 130
+ ],
+ "size": [
+ 320,
+ 210
+ ],
+ "flags": {},
+ "order": 17,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "model",
+ "type": "MODEL",
+ "link": 66,
+ "slot_index": 0
+ },
+ {
+ "name": "positive",
+ "type": "CONDITIONING",
+ "link": 73
+ },
+ {
+ "name": "negative",
+ "type": "CONDITIONING",
+ "link": 74
+ },
+ {
+ "name": "latent_image",
+ "type": "LATENT",
+ "link": 65
+ },
+ {
+ "name": "seed",
+ "type": "INT",
+ "link": 68,
+ "widget": {
+ "name": "seed"
+ },
+ "slot_index": 4
+ },
+ {
+ "name": "steps",
+ "type": "INT",
+ "link": 70,
+ "widget": {
+ "name": "steps"
+ },
+ "slot_index": 5
+ },
+ {
+ "name": "cfg",
+ "type": "FLOAT",
+ "link": 69,
+ "widget": {
+ "name": "cfg"
+ }
+ },
+ {
+ "name": "sampler_name",
+ "type": "COMBO",
+ "link": 72,
+ "widget": {
+ "name": "sampler_name"
+ },
+ "slot_index": 7
+ },
+ {
+ "name": "scheduler",
+ "type": "COMBO",
+ "link": 71,
+ "widget": {
+ "name": "scheduler"
+ }
+ },
+ {
+ "name": "denoise",
+ "type": "FLOAT",
+ "link": 80,
+ "widget": {
+ "name": "denoise"
+ }
+ }
+ ],
+ "outputs": [
+ {
+ "name": "LATENT",
+ "type": "LATENT",
+ "links": [
+ 76
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "KSampler"
+ },
+ "widgets_values": [
+ 711738883642669,
+ "randomize",
+ 20,
+ 8,
+ "euler",
+ "normal",
+ 1
+ ]
+ },
+ {
+ "id": 3,
+ "type": "SDPromptSaver",
+ "pos": [
+ 5870,
+ 130
+ ],
+ "size": [
+ 320,
+ 560
+ ],
+ "flags": {},
+ "order": 19,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "images",
+ "type": "IMAGE",
+ "link": 78
+ },
+ {
+ "name": "lora_name",
+ "type": "*",
+ "link": 53
+ },
+ {
+ "name": "model_name",
+ "type": "COMBO",
+ "link": 39,
+ "widget": {
+ "name": "model_name"
+ },
+ "slot_index": 2
+ },
+ {
+ "name": "vae_name",
+ "type": "COMBO",
+ "link": 40,
+ "widget": {
+ "name": "vae_name"
+ }
+ },
+ {
+ "name": "seed",
+ "type": "INT",
+ "link": 30,
+ "widget": {
+ "name": "seed"
+ },
+ "slot_index": 4
+ },
+ {
+ "name": "steps",
+ "type": "INT",
+ "link": 26,
+ "widget": {
+ "name": "steps"
+ },
+ "slot_index": 5
+ },
+ {
+ "name": "cfg",
+ "type": "FLOAT",
+ "link": 27,
+ "widget": {
+ "name": "cfg"
+ }
+ },
+ {
+ "name": "sampler_name",
+ "type": "COMBO",
+ "link": 28,
+ "widget": {
+ "name": "sampler_name"
+ },
+ "slot_index": 7
+ },
+ {
+ "name": "scheduler",
+ "type": "COMBO",
+ "link": 29,
+ "widget": {
+ "name": "scheduler"
+ }
+ },
+ {
+ "name": "width",
+ "type": "INT",
+ "link": 31,
+ "widget": {
+ "name": "width"
+ },
+ "slot_index": 9
+ },
+ {
+ "name": "height",
+ "type": "INT",
+ "link": 32,
+ "widget": {
+ "name": "height"
+ }
+ },
+ {
+ "name": "positive",
+ "type": "STRING",
+ "link": 23,
+ "widget": {
+ "name": "positive"
+ }
+ },
+ {
+ "name": "negative",
+ "type": "STRING",
+ "link": 24,
+ "widget": {
+ "name": "negative"
+ },
+ "slot_index": 12
+ }
+ ],
+ "outputs": [
+ {
+ "name": "FILENAME",
+ "type": "STRING",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "FILE_PATH",
+ "type": "STRING",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "METADATA",
+ "type": "STRING",
+ "links": null,
+ "shape": 3
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SDPromptSaver"
+ },
+ "widgets_values": [
+ "ComfyUI_%time_%seed_%counter",
+ "%date/",
+ "CheckpointYesmix_v35.safetensors",
+ "kl-f8-anime2.ckpt",
+ 691950401040312,
+ "randomize",
+ 20,
+ 8,
+ "euler",
+ "normal",
+ 1,
+ 1,
+ "",
+ "",
+ "png",
+ true,
+ true,
+ true,
+ 100,
+ "%Y-%m-%d",
+ "%H%M%S",
+ false,
+ "SD Prompt Reader Node Example Image"
+ ]
+ }
+ ],
+ "links": [
+ [
+ 4,
+ 2,
+ 15,
+ 5,
+ 2,
+ "INT"
+ ],
+ [
+ 5,
+ 1,
+ 2,
+ 6,
+ 1,
+ "STRING"
+ ],
+ [
+ 6,
+ 1,
+ 3,
+ 7,
+ 1,
+ "STRING"
+ ],
+ [
+ 10,
+ 5,
+ 0,
+ 4,
+ 3,
+ "LATENT"
+ ],
+ [
+ 12,
+ 2,
+ 4,
+ 8,
+ 1,
+ "VAE"
+ ],
+ [
+ 13,
+ 4,
+ 0,
+ 8,
+ 0,
+ "LATENT"
+ ],
+ [
+ 17,
+ 2,
+ 9,
+ 4,
+ 7,
+ "COMBO"
+ ],
+ [
+ 18,
+ 2,
+ 10,
+ 4,
+ 8,
+ "COMBO"
+ ],
+ [
+ 19,
+ 1,
+ 5,
+ 4,
+ 5,
+ "INT"
+ ],
+ [
+ 20,
+ 1,
+ 6,
+ 4,
+ 6,
+ "FLOAT"
+ ],
+ [
+ 23,
+ 1,
+ 2,
+ 3,
+ 11,
+ "STRING"
+ ],
+ [
+ 24,
+ 1,
+ 3,
+ 3,
+ 12,
+ "STRING"
+ ],
+ [
+ 26,
+ 1,
+ 5,
+ 3,
+ 5,
+ "INT"
+ ],
+ [
+ 27,
+ 1,
+ 6,
+ 3,
+ 6,
+ "FLOAT"
+ ],
+ [
+ 28,
+ 2,
+ 9,
+ 3,
+ 7,
+ "COMBO"
+ ],
+ [
+ 29,
+ 2,
+ 10,
+ 3,
+ 8,
+ "COMBO"
+ ],
+ [
+ 30,
+ 2,
+ 5,
+ 3,
+ 4,
+ "INT"
+ ],
+ [
+ 31,
+ 1,
+ 7,
+ 3,
+ 9,
+ "INT"
+ ],
+ [
+ 32,
+ 1,
+ 8,
+ 3,
+ 10,
+ "INT"
+ ],
+ [
+ 35,
+ 7,
+ 0,
+ 4,
+ 2,
+ "CONDITIONING"
+ ],
+ [
+ 36,
+ 6,
+ 0,
+ 4,
+ 1,
+ "CONDITIONING"
+ ],
+ [
+ 39,
+ 2,
+ 0,
+ 3,
+ 2,
+ "COMBO"
+ ],
+ [
+ 40,
+ 2,
+ 1,
+ 3,
+ 3,
+ "COMBO"
+ ],
+ [
+ 41,
+ 1,
+ 9,
+ 2,
+ 0,
+ "COMBO"
+ ],
+ [
+ 44,
+ 11,
+ 2,
+ 12,
+ 0,
+ "*"
+ ],
+ [
+ 45,
+ 12,
+ 0,
+ 13,
+ 2,
+ "COMBO"
+ ],
+ [
+ 46,
+ 11,
+ 1,
+ 13,
+ 1,
+ "CLIP"
+ ],
+ [
+ 47,
+ 11,
+ 0,
+ 13,
+ 0,
+ "MODEL"
+ ],
+ [
+ 48,
+ 13,
+ 0,
+ 4,
+ 0,
+ "MODEL"
+ ],
+ [
+ 49,
+ 2,
+ 2,
+ 11,
+ 0,
+ "MODEL"
+ ],
+ [
+ 50,
+ 2,
+ 3,
+ 11,
+ 1,
+ "CLIP"
+ ],
+ [
+ 51,
+ 13,
+ 1,
+ 6,
+ 0,
+ "CLIP"
+ ],
+ [
+ 52,
+ 13,
+ 1,
+ 7,
+ 0,
+ "CLIP"
+ ],
+ [
+ 53,
+ 12,
+ 1,
+ 3,
+ 1,
+ "*"
+ ],
+ [
+ 55,
+ 10,
+ 0,
+ 1,
+ 0,
+ "COMBO"
+ ],
+ [
+ 58,
+ 2,
+ 13,
+ 5,
+ 0,
+ "INT"
+ ],
+ [
+ 59,
+ 2,
+ 14,
+ 5,
+ 1,
+ "INT"
+ ],
+ [
+ 60,
+ 15,
+ 0,
+ 16,
+ 0,
+ "UPSCALE_MODEL"
+ ],
+ [
+ 61,
+ 16,
+ 0,
+ 17,
+ 0,
+ "IMAGE"
+ ],
+ [
+ 63,
+ 17,
+ 0,
+ 19,
+ 0,
+ "IMAGE"
+ ],
+ [
+ 65,
+ 19,
+ 0,
+ 18,
+ 3,
+ "LATENT"
+ ],
+ [
+ 66,
+ 20,
+ 2,
+ 18,
+ 0,
+ "MODEL"
+ ],
+ [
+ 67,
+ 20,
+ 4,
+ 19,
+ 1,
+ "VAE"
+ ],
+ [
+ 68,
+ 20,
+ 5,
+ 18,
+ 4,
+ "INT"
+ ],
+ [
+ 69,
+ 20,
+ 8,
+ 18,
+ 6,
+ "FLOAT"
+ ],
+ [
+ 70,
+ 20,
+ 6,
+ 18,
+ 5,
+ "INT"
+ ],
+ [
+ 71,
+ 20,
+ 10,
+ 18,
+ 8,
+ "COMBO"
+ ],
+ [
+ 72,
+ 20,
+ 9,
+ 18,
+ 7,
+ "COMBO"
+ ],
+ [
+ 73,
+ 6,
+ 0,
+ 18,
+ 1,
+ "CONDITIONING"
+ ],
+ [
+ 74,
+ 7,
+ 0,
+ 18,
+ 2,
+ "CONDITIONING"
+ ],
+ [
+ 75,
+ 8,
+ 0,
+ 16,
+ 1,
+ "IMAGE"
+ ],
+ [
+ 76,
+ 18,
+ 0,
+ 21,
+ 0,
+ "LATENT"
+ ],
+ [
+ 77,
+ 20,
+ 4,
+ 21,
+ 1,
+ "VAE"
+ ],
+ [
+ 78,
+ 21,
+ 0,
+ 3,
+ 0,
+ "IMAGE"
+ ],
+ [
+ 79,
+ 1,
+ 11,
+ 9,
+ 0,
+ "STRING"
+ ],
+ [
+ 80,
+ 9,
+ 0,
+ 18,
+ 9,
+ "FLOAT"
+ ],
+ [
+ 81,
+ 1,
+ 9,
+ 20,
+ 0,
+ "COMBO"
+ ],
+ [
+ 82,
+ 20,
+ 13,
+ 17,
+ 1,
+ "INT"
+ ],
+ [
+ 83,
+ 20,
+ 14,
+ 17,
+ 2,
+ "INT"
+ ],
+ [
+ 84,
+ 2,
+ 5,
+ 4,
+ 4,
+ "INT"
+ ]
+ ],
+ "groups": [],
+ "config": {},
+ "extra": {},
+ "version": 0.4
+}
\ No newline at end of file
diff --git a/workflows/hires_fix_example.png b/workflows/hires_fix_example.png
new file mode 100644
index 0000000..4a699af
Binary files /dev/null and b/workflows/hires_fix_example.png differ
diff --git a/workflows/lora_example.json b/workflows/lora_example.json
new file mode 100644
index 0000000..f3f4109
--- /dev/null
+++ b/workflows/lora_example.json
@@ -0,0 +1,1398 @@
+{
+ "last_node_id": 13,
+ "last_link_id": 59,
+ "nodes": [
+ {
+ "id": 6,
+ "type": "CLIPTextEncode",
+ "pos": [
+ 2615,
+ 130
+ ],
+ "size": {
+ "0": 320,
+ "1": 54
+ },
+ "flags": {},
+ "order": 8,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "clip",
+ "type": "CLIP",
+ "link": 51,
+ "slot_index": 0
+ },
+ {
+ "name": "text",
+ "type": "STRING",
+ "link": 5,
+ "widget": {
+ "name": "text"
+ },
+ "slot_index": 1
+ }
+ ],
+ "outputs": [
+ {
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 36
+ ],
+ "shape": 3
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPTextEncode"
+ },
+ "widgets_values": [
+ ""
+ ]
+ },
+ {
+ "id": 8,
+ "type": "VAEDecode",
+ "pos": [
+ 3455,
+ 130
+ ],
+ "size": {
+ "0": 320,
+ "1": 50
+ },
+ "flags": {},
+ "order": 11,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "samples",
+ "type": "LATENT",
+ "link": 13
+ },
+ {
+ "name": "vae",
+ "type": "VAE",
+ "link": 12,
+ "slot_index": 1
+ }
+ ],
+ "outputs": [
+ {
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": [
+ 14
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "VAEDecode"
+ }
+ },
+ {
+ "id": 7,
+ "type": "CLIPTextEncode",
+ "pos": [
+ 2615,
+ 314
+ ],
+ "size": {
+ "0": 320,
+ "1": 54
+ },
+ "flags": {},
+ "order": 9,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "clip",
+ "type": "CLIP",
+ "link": 52,
+ "slot_index": 0
+ },
+ {
+ "name": "text",
+ "type": "STRING",
+ "link": 6,
+ "widget": {
+ "name": "text"
+ }
+ }
+ ],
+ "outputs": [
+ {
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 35
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPTextEncode"
+ },
+ "widgets_values": [
+ ""
+ ]
+ },
+ {
+ "id": 12,
+ "type": "SDLoraSelector",
+ "pos": [
+ 1775,
+ 130
+ ],
+ "size": {
+ "0": 320,
+ "1": 80
+ },
+ "flags": {},
+ "order": 6,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "last_lora",
+ "type": "*",
+ "link": 44
+ }
+ ],
+ "outputs": [
+ {
+ "name": "LORA_NAME",
+ "type": "COMBO",
+ "links": [
+ 45
+ ],
+ "shape": 3,
+ "slot_index": 0
+ },
+ {
+ "name": "NEXT_LORA",
+ "type": "*",
+ "links": [
+ 53
+ ],
+ "shape": 3,
+ "slot_index": 1
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SDLoraSelector"
+ },
+ "widgets_values": [
+ "fashigirl-v6-nai-5ep-resize.safetensors"
+ ]
+ },
+ {
+ "id": 13,
+ "type": "LoraLoader",
+ "pos": [
+ 2195,
+ 130
+ ],
+ "size": {
+ "0": 320,
+ "1": 122
+ },
+ "flags": {},
+ "order": 7,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "model",
+ "type": "MODEL",
+ "link": 47
+ },
+ {
+ "name": "clip",
+ "type": "CLIP",
+ "link": 46,
+ "slot_index": 1
+ },
+ {
+ "name": "lora_name",
+ "type": "COMBO",
+ "link": 45,
+ "widget": {
+ "name": "lora_name"
+ }
+ }
+ ],
+ "outputs": [
+ {
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 48
+ ],
+ "shape": 3,
+ "slot_index": 0
+ },
+ {
+ "name": "CLIP",
+ "type": "CLIP",
+ "links": [
+ 51,
+ 52
+ ],
+ "shape": 3,
+ "slot_index": 1
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "LoraLoader"
+ },
+ "widgets_values": [
+ "104V2.safetensors",
+ 0.6,
+ 1
+ ]
+ },
+ {
+ "id": 11,
+ "type": "SDLoraLoader",
+ "pos": [
+ 1355,
+ 130
+ ],
+ "size": {
+ "0": 320,
+ "1": 150
+ },
+ "flags": {},
+ "order": 4,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "model",
+ "type": "MODEL",
+ "link": 49
+ },
+ {
+ "name": "clip",
+ "type": "CLIP",
+ "link": 50,
+ "slot_index": 1
+ },
+ {
+ "name": "last_lora",
+ "type": "*",
+ "link": null
+ }
+ ],
+ "outputs": [
+ {
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 47
+ ],
+ "shape": 3,
+ "slot_index": 0
+ },
+ {
+ "name": "CLIP",
+ "type": "CLIP",
+ "links": [
+ 46
+ ],
+ "shape": 3
+ },
+ {
+ "name": "NEXT_LORA",
+ "type": "*",
+ "links": [
+ 44
+ ],
+ "shape": 3,
+ "slot_index": 2
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SDLoraLoader"
+ },
+ "widgets_values": [
+ "koreandolllikenessV20_v20.safetensors",
+ 0.3,
+ 1
+ ]
+ },
+ {
+ "id": 10,
+ "type": "SDBatchLoader",
+ "pos": [
+ 100,
+ 130
+ ],
+ "size": {
+ "0": 315,
+ "1": 148
+ },
+ "flags": {},
+ "order": 0,
+ "mode": 0,
+ "outputs": [
+ {
+ "name": "IMAGE",
+ "type": "*",
+ "links": [
+ 55
+ ],
+ "shape": 6,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SDBatchLoader"
+ },
+ "widgets_values": [
+ "./input/",
+ 1,
+ 1,
+ "input\\00067-2302238556.png"
+ ]
+ },
+ {
+ "id": 5,
+ "type": "EmptyLatentImage",
+ "pos": [
+ 1355,
+ 410
+ ],
+ "size": {
+ "0": 320,
+ "1": 74
+ },
+ "flags": {},
+ "order": 5,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "width",
+ "type": "INT",
+ "link": 58,
+ "widget": {
+ "name": "width"
+ }
+ },
+ {
+ "name": "height",
+ "type": "INT",
+ "link": 59,
+ "widget": {
+ "name": "height"
+ },
+ "slot_index": 1
+ },
+ {
+ "name": "batch_size",
+ "type": "INT",
+ "link": 4,
+ "widget": {
+ "name": "batch_size"
+ }
+ }
+ ],
+ "outputs": [
+ {
+ "name": "LATENT",
+ "type": "LATENT",
+ "links": [
+ 10
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "EmptyLatentImage"
+ },
+ "widgets_values": [
+ 512,
+ 512,
+ 1
+ ]
+ },
+ {
+ "id": 2,
+ "type": "SDParameterGenerator",
+ "pos": [
+ 935,
+ 130
+ ],
+ "size": {
+ "0": 320,
+ "1": 898
+ },
+ "flags": {},
+ "order": 2,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "ckpt_name",
+ "type": "COMBO",
+ "link": 41,
+ "widget": {
+ "name": "ckpt_name"
+ },
+ "slot_index": 0
+ }
+ ],
+ "outputs": [
+ {
+ "name": "MODEL_NAME",
+ "type": "COMBO",
+ "links": [
+ 39
+ ],
+ "shape": 3,
+ "slot_index": 0
+ },
+ {
+ "name": "VAE_NAME",
+ "type": "COMBO",
+ "links": [
+ 40
+ ],
+ "shape": 3,
+ "slot_index": 1
+ },
+ {
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 49
+ ],
+ "shape": 3,
+ "slot_index": 2
+ },
+ {
+ "name": "CLIP",
+ "type": "CLIP",
+ "links": [
+ 50
+ ],
+ "shape": 3,
+ "slot_index": 3
+ },
+ {
+ "name": "VAE",
+ "type": "VAE",
+ "links": [
+ 12
+ ],
+ "shape": 3
+ },
+ {
+ "name": "SEED",
+ "type": "INT",
+ "links": [
+ 30
+ ],
+ "shape": 3
+ },
+ {
+ "name": "STEPS",
+ "type": "INT",
+ "links": [],
+ "shape": 3,
+ "slot_index": 6
+ },
+ {
+ "name": "REFINER_START_STEP",
+ "type": "INT",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "CFG",
+ "type": "FLOAT",
+ "links": [],
+ "shape": 3
+ },
+ {
+ "name": "SAMPLER_NAME",
+ "type": "COMBO",
+ "links": [
+ 17,
+ 28
+ ],
+ "shape": 3,
+ "slot_index": 9
+ },
+ {
+ "name": "SCHEDULER",
+ "type": "COMBO",
+ "links": [
+ 18,
+ 29
+ ],
+ "shape": 3,
+ "slot_index": 10
+ },
+ {
+ "name": "POSITIVE_ASCORE",
+ "type": "FLOAT",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "NEGATIVE_ASCORE",
+ "type": "FLOAT",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "WIDTH",
+ "type": "INT",
+ "links": [
+ 58
+ ],
+ "shape": 3,
+ "slot_index": 13
+ },
+ {
+ "name": "HEIGHT",
+ "type": "INT",
+ "links": [
+ 59
+ ],
+ "shape": 3,
+ "slot_index": 14
+ },
+ {
+ "name": "BATCH_SIZE",
+ "type": "INT",
+ "links": [
+ 4
+ ],
+ "shape": 3,
+ "slot_index": 15
+ },
+ {
+ "name": "PARAMETERS",
+ "type": "STRING",
+ "links": null,
+ "shape": 3
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SDParameterGenerator"
+ },
+ "widgets_values": [
+ "xxmix9realistic_v40.safetensors",
+ "baked VAE",
+ "SDv1 512px",
+ "none",
+ -1,
+ 30,
+ 1,
+ 8,
+ "dpmpp_2m",
+ "karras",
+ 6,
+ 6,
+ "16:9 - 672x384",
+ 672,
+ 384,
+ 1,
+ "Total steps: 30,\nRefiner off",
+ "Optimal resolution for SDv1 512px model\nwith aspect ratio 16:9: 672 x 384",
+ null,
+ "Total steps: 30,\nRefiner off",
+ "Optimal resolution for SDv1 512px model\nwith aspect ratio 1:1: 512 x 512"
+ ]
+ },
+ {
+ "id": 1,
+ "type": "SDPromptReader",
+ "pos": [
+ 515,
+ 130
+ ],
+ "size": [
+ 320,
+ 840
+ ],
+ "flags": {},
+ "order": 1,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "image",
+ "type": "COMBO",
+ "link": 55,
+ "widget": {
+ "name": "image"
+ },
+ "slot_index": 0
+ }
+ ],
+ "outputs": [
+ {
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "MASK",
+ "type": "MASK",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "POSITIVE",
+ "type": "STRING",
+ "links": [
+ 5,
+ 23
+ ],
+ "shape": 3,
+ "slot_index": 2
+ },
+ {
+ "name": "NEGATIVE",
+ "type": "STRING",
+ "links": [
+ 6,
+ 24
+ ],
+ "shape": 3,
+ "slot_index": 3
+ },
+ {
+ "name": "SEED",
+ "type": "INT",
+ "links": [
+ 54
+ ],
+ "shape": 3
+ },
+ {
+ "name": "STEPS",
+ "type": "INT",
+ "links": [
+ 19,
+ 26
+ ],
+ "shape": 3,
+ "slot_index": 5
+ },
+ {
+ "name": "CFG",
+ "type": "FLOAT",
+ "links": [
+ 20,
+ 27
+ ],
+ "shape": 3,
+ "slot_index": 6
+ },
+ {
+ "name": "WIDTH",
+ "type": "INT",
+ "links": [
+ 31
+ ],
+ "shape": 3,
+ "slot_index": 7
+ },
+ {
+ "name": "HEIGHT",
+ "type": "INT",
+ "links": [
+ 32
+ ],
+ "shape": 3,
+ "slot_index": 8
+ },
+ {
+ "name": "MODEL_NAME",
+ "type": "*",
+ "links": [
+ 41
+ ],
+ "shape": 3
+ },
+ {
+ "name": "FILENAME",
+ "type": "STRING",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "SETTINGS",
+ "type": "STRING",
+ "links": [
+ 42
+ ],
+ "shape": 3,
+ "slot_index": 11
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SDPromptReader"
+ },
+ "widgets_values": [
+ "00067-2302238556.png",
+ "image",
+ 0,
+ "ultra realistic 8k cg, HDR, epic, perfect artwork, masterpiece, bokeh, beautiful face, perfect female body, alluring, perfect female figure, ultra high res, beach, pink hair, seductive posture, seductive gaze, skindentation, 1girl, kpop idol, blush, street, earring, choker, close up, strap dress, half-length portrait, , ",
+ "grayscale, monochrome, low quality, worst quality, lowres, acnes, bad anatomy, bad hands, deformed, error, logo, mosaic censoring, sketches, skin blemishes, skin spots, text, watermark, FastNegativeV2",
+ "Steps: 35, Sampler: DPM++ 2M Karras, CFG scale: 7.5, Seed: 2302238556, Size: 512x512, Model hash: 18ed2b6c48, Model: xxmix9realistic_v40, Denoising strength: 0.45, Hires upscale: 2, Hires steps: 15, Hires upscaler: R-ESRGAN 4x+, Lora hashes: \"koreandolllikenessV20_v20: 8f3d16e6eada, fashigirl-v6-nai-5ep-resize: 4e0173ae8cef\", Version: 1.6.0"
+ ]
+ },
+ {
+ "id": 9,
+ "type": "SDParameterExtractor",
+ "pos": [
+ 935,
+ 1158
+ ],
+ "size": {
+ "0": 320,
+ "1": 150
+ },
+ "flags": {},
+ "order": 3,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "settings",
+ "type": "STRING",
+ "link": 42,
+ "widget": {
+ "name": "settings"
+ },
+ "slot_index": 0
+ }
+ ],
+ "outputs": [
+ {
+ "name": "VALUE",
+ "type": "*",
+ "links": null,
+ "shape": 3
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SDParameterExtractor"
+ },
+ "widgets_values": [
+ "",
+ "Hires upscaler",
+ "STRING",
+ 0,
+ "Hires upscaler: R-ESRGAN 4x+"
+ ]
+ },
+ {
+ "id": 4,
+ "type": "KSamplerAdvanced",
+ "pos": [
+ 3035,
+ 130
+ ],
+ "size": [
+ 320,
+ 290
+ ],
+ "flags": {},
+ "order": 10,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "model",
+ "type": "MODEL",
+ "link": 48
+ },
+ {
+ "name": "positive",
+ "type": "CONDITIONING",
+ "link": 36,
+ "slot_index": 1
+ },
+ {
+ "name": "negative",
+ "type": "CONDITIONING",
+ "link": 35
+ },
+ {
+ "name": "latent_image",
+ "type": "LATENT",
+ "link": 10
+ },
+ {
+ "name": "noise_seed",
+ "type": "INT",
+ "link": 54,
+ "widget": {
+ "name": "noise_seed"
+ },
+ "slot_index": 4
+ },
+ {
+ "name": "steps",
+ "type": "INT",
+ "link": 19,
+ "widget": {
+ "name": "steps"
+ }
+ },
+ {
+ "name": "cfg",
+ "type": "FLOAT",
+ "link": 20,
+ "widget": {
+ "name": "cfg"
+ },
+ "slot_index": 6
+ },
+ {
+ "name": "sampler_name",
+ "type": "COMBO",
+ "link": 17,
+ "widget": {
+ "name": "sampler_name"
+ }
+ },
+ {
+ "name": "scheduler",
+ "type": "COMBO",
+ "link": 18,
+ "widget": {
+ "name": "scheduler"
+ },
+ "slot_index": 8
+ }
+ ],
+ "outputs": [
+ {
+ "name": "LATENT",
+ "type": "LATENT",
+ "links": [
+ 13
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "KSamplerAdvanced"
+ },
+ "widgets_values": [
+ "enable",
+ 641679173595011,
+ "randomize",
+ 20,
+ 8,
+ "euler",
+ "normal",
+ 0,
+ 10000,
+ "disable"
+ ]
+ },
+ {
+ "id": 3,
+ "type": "SDPromptSaver",
+ "pos": [
+ 3875,
+ 130
+ ],
+ "size": [
+ 320,
+ 560
+ ],
+ "flags": {},
+ "order": 12,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "images",
+ "type": "IMAGE",
+ "link": 14
+ },
+ {
+ "name": "lora_name",
+ "type": "*",
+ "link": 53
+ },
+ {
+ "name": "model_name",
+ "type": "COMBO",
+ "link": 39,
+ "widget": {
+ "name": "model_name"
+ },
+ "slot_index": 2
+ },
+ {
+ "name": "vae_name",
+ "type": "COMBO",
+ "link": 40,
+ "widget": {
+ "name": "vae_name"
+ }
+ },
+ {
+ "name": "seed",
+ "type": "INT",
+ "link": 30,
+ "widget": {
+ "name": "seed"
+ },
+ "slot_index": 4
+ },
+ {
+ "name": "steps",
+ "type": "INT",
+ "link": 26,
+ "widget": {
+ "name": "steps"
+ },
+ "slot_index": 5
+ },
+ {
+ "name": "cfg",
+ "type": "FLOAT",
+ "link": 27,
+ "widget": {
+ "name": "cfg"
+ }
+ },
+ {
+ "name": "sampler_name",
+ "type": "COMBO",
+ "link": 28,
+ "widget": {
+ "name": "sampler_name"
+ },
+ "slot_index": 7
+ },
+ {
+ "name": "scheduler",
+ "type": "COMBO",
+ "link": 29,
+ "widget": {
+ "name": "scheduler"
+ }
+ },
+ {
+ "name": "width",
+ "type": "INT",
+ "link": 31,
+ "widget": {
+ "name": "width"
+ },
+ "slot_index": 9
+ },
+ {
+ "name": "height",
+ "type": "INT",
+ "link": 32,
+ "widget": {
+ "name": "height"
+ }
+ },
+ {
+ "name": "positive",
+ "type": "STRING",
+ "link": 23,
+ "widget": {
+ "name": "positive"
+ }
+ },
+ {
+ "name": "negative",
+ "type": "STRING",
+ "link": 24,
+ "widget": {
+ "name": "negative"
+ },
+ "slot_index": 12
+ }
+ ],
+ "outputs": [
+ {
+ "name": "FILENAME",
+ "type": "STRING",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "FILE_PATH",
+ "type": "STRING",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "METADATA",
+ "type": "STRING",
+ "links": null,
+ "shape": 3
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SDPromptSaver"
+ },
+ "widgets_values": [
+ "ComfyUI_%time_%seed_%counter",
+ "%date/",
+ "CheckpointYesmix_v35.safetensors",
+ "kl-f8-anime2.ckpt",
+ 580520195332712,
+ "randomize",
+ 20,
+ 8,
+ "euler",
+ "normal",
+ 1,
+ 1,
+ "",
+ "",
+ "png",
+ true,
+ true,
+ true,
+ 100,
+ "%Y-%m-%d",
+ "%H%M%S",
+ false,
+ "SD Prompt Reader Node Example Image"
+ ]
+ }
+ ],
+ "links": [
+ [
+ 4,
+ 2,
+ 15,
+ 5,
+ 2,
+ "INT"
+ ],
+ [
+ 5,
+ 1,
+ 2,
+ 6,
+ 1,
+ "STRING"
+ ],
+ [
+ 6,
+ 1,
+ 3,
+ 7,
+ 1,
+ "STRING"
+ ],
+ [
+ 10,
+ 5,
+ 0,
+ 4,
+ 3,
+ "LATENT"
+ ],
+ [
+ 12,
+ 2,
+ 4,
+ 8,
+ 1,
+ "VAE"
+ ],
+ [
+ 13,
+ 4,
+ 0,
+ 8,
+ 0,
+ "LATENT"
+ ],
+ [
+ 14,
+ 8,
+ 0,
+ 3,
+ 0,
+ "IMAGE"
+ ],
+ [
+ 17,
+ 2,
+ 9,
+ 4,
+ 7,
+ "COMBO"
+ ],
+ [
+ 18,
+ 2,
+ 10,
+ 4,
+ 8,
+ "COMBO"
+ ],
+ [
+ 19,
+ 1,
+ 5,
+ 4,
+ 5,
+ "INT"
+ ],
+ [
+ 20,
+ 1,
+ 6,
+ 4,
+ 6,
+ "FLOAT"
+ ],
+ [
+ 23,
+ 1,
+ 2,
+ 3,
+ 11,
+ "STRING"
+ ],
+ [
+ 24,
+ 1,
+ 3,
+ 3,
+ 12,
+ "STRING"
+ ],
+ [
+ 26,
+ 1,
+ 5,
+ 3,
+ 5,
+ "INT"
+ ],
+ [
+ 27,
+ 1,
+ 6,
+ 3,
+ 6,
+ "FLOAT"
+ ],
+ [
+ 28,
+ 2,
+ 9,
+ 3,
+ 7,
+ "COMBO"
+ ],
+ [
+ 29,
+ 2,
+ 10,
+ 3,
+ 8,
+ "COMBO"
+ ],
+ [
+ 30,
+ 2,
+ 5,
+ 3,
+ 4,
+ "INT"
+ ],
+ [
+ 31,
+ 1,
+ 7,
+ 3,
+ 9,
+ "INT"
+ ],
+ [
+ 32,
+ 1,
+ 8,
+ 3,
+ 10,
+ "INT"
+ ],
+ [
+ 35,
+ 7,
+ 0,
+ 4,
+ 2,
+ "CONDITIONING"
+ ],
+ [
+ 36,
+ 6,
+ 0,
+ 4,
+ 1,
+ "CONDITIONING"
+ ],
+ [
+ 39,
+ 2,
+ 0,
+ 3,
+ 2,
+ "COMBO"
+ ],
+ [
+ 40,
+ 2,
+ 1,
+ 3,
+ 3,
+ "COMBO"
+ ],
+ [
+ 41,
+ 1,
+ 9,
+ 2,
+ 0,
+ "COMBO"
+ ],
+ [
+ 42,
+ 1,
+ 11,
+ 9,
+ 0,
+ "STRING"
+ ],
+ [
+ 44,
+ 11,
+ 2,
+ 12,
+ 0,
+ "*"
+ ],
+ [
+ 45,
+ 12,
+ 0,
+ 13,
+ 2,
+ "COMBO"
+ ],
+ [
+ 46,
+ 11,
+ 1,
+ 13,
+ 1,
+ "CLIP"
+ ],
+ [
+ 47,
+ 11,
+ 0,
+ 13,
+ 0,
+ "MODEL"
+ ],
+ [
+ 48,
+ 13,
+ 0,
+ 4,
+ 0,
+ "MODEL"
+ ],
+ [
+ 49,
+ 2,
+ 2,
+ 11,
+ 0,
+ "MODEL"
+ ],
+ [
+ 50,
+ 2,
+ 3,
+ 11,
+ 1,
+ "CLIP"
+ ],
+ [
+ 51,
+ 13,
+ 1,
+ 6,
+ 0,
+ "CLIP"
+ ],
+ [
+ 52,
+ 13,
+ 1,
+ 7,
+ 0,
+ "CLIP"
+ ],
+ [
+ 53,
+ 12,
+ 1,
+ 3,
+ 1,
+ "*"
+ ],
+ [
+ 54,
+ 1,
+ 4,
+ 4,
+ 4,
+ "INT"
+ ],
+ [
+ 55,
+ 10,
+ 0,
+ 1,
+ 0,
+ "COMBO"
+ ],
+ [
+ 58,
+ 2,
+ 13,
+ 5,
+ 0,
+ "INT"
+ ],
+ [
+ 59,
+ 2,
+ 14,
+ 5,
+ 1,
+ "INT"
+ ]
+ ],
+ "groups": [],
+ "config": {},
+ "extra": {},
+ "version": 0.4
+}
\ No newline at end of file
diff --git a/workflows/lora_example.png b/workflows/lora_example.png
new file mode 100644
index 0000000..84211ae
Binary files /dev/null and b/workflows/lora_example.png differ
diff --git a/workflows/sdxl_example.json b/workflows/sdxl_example.json
new file mode 100644
index 0000000..c4672f0
--- /dev/null
+++ b/workflows/sdxl_example.json
@@ -0,0 +1,1943 @@
+{
+ "last_node_id": 22,
+ "last_link_id": 101,
+ "nodes": [
+ {
+ "id": 8,
+ "type": "VAEDecode",
+ "pos": [
+ 1780,
+ 130
+ ],
+ "size": {
+ "0": 320,
+ "1": 50
+ },
+ "flags": {},
+ "order": 17,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "samples",
+ "type": "LATENT",
+ "link": 52
+ },
+ {
+ "name": "vae",
+ "type": "VAE",
+ "link": 59,
+ "slot_index": 1
+ }
+ ],
+ "outputs": [
+ {
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": [
+ 14
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "VAEDecode"
+ }
+ },
+ {
+ "id": 10,
+ "type": "CheckpointLoaderSimple",
+ "pos": [
+ 100,
+ 130
+ ],
+ "size": {
+ "0": 315,
+ "1": 98
+ },
+ "flags": {},
+ "order": 0,
+ "mode": 0,
+ "outputs": [
+ {
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 41
+ ],
+ "shape": 3
+ },
+ {
+ "name": "CLIP",
+ "type": "CLIP",
+ "links": [
+ 57,
+ 58
+ ],
+ "shape": 3,
+ "slot_index": 1
+ },
+ {
+ "name": "VAE",
+ "type": "VAE",
+ "links": [
+ 59
+ ],
+ "shape": 3,
+ "slot_index": 2
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CheckpointLoaderSimple"
+ },
+ "widgets_values": [
+ "sd_xl_refiner_1.0_0.9vae.safetensors"
+ ]
+ },
+ {
+ "id": 11,
+ "type": "CLIPTextEncodeSDXL",
+ "pos": [
+ 520,
+ 830
+ ],
+ "size": {
+ "0": 320,
+ "1": 202
+ },
+ "flags": {},
+ "order": 11,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "clip",
+ "type": "CLIP",
+ "link": 55
+ },
+ {
+ "name": "width",
+ "type": "INT",
+ "link": 66,
+ "widget": {
+ "name": "width"
+ },
+ "slot_index": 1
+ },
+ {
+ "name": "height",
+ "type": "INT",
+ "link": 67,
+ "widget": {
+ "name": "height"
+ }
+ },
+ {
+ "name": "target_width",
+ "type": "INT",
+ "link": 68,
+ "widget": {
+ "name": "target_width"
+ },
+ "slot_index": 3
+ },
+ {
+ "name": "target_height",
+ "type": "INT",
+ "link": 69,
+ "widget": {
+ "name": "target_height"
+ }
+ },
+ {
+ "name": "text_g",
+ "type": "STRING",
+ "link": 70,
+ "widget": {
+ "name": "text_g"
+ },
+ "slot_index": 5
+ },
+ {
+ "name": "text_l",
+ "type": "STRING",
+ "link": 71,
+ "widget": {
+ "name": "text_l"
+ },
+ "slot_index": 6
+ }
+ ],
+ "outputs": [
+ {
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 86
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "title": "CLIPTextEncodeSDXL Positive",
+ "properties": {
+ "Node name for S&R": "CLIPTextEncodeSDXL"
+ },
+ "widgets_values": [
+ 1024,
+ 1024,
+ 0,
+ 0,
+ 1024,
+ 1024,
+ "CLIP_G",
+ "CLIP_L"
+ ]
+ },
+ {
+ "id": 13,
+ "type": "CLIPTextEncodeSDXL",
+ "pos": [
+ 520,
+ 498
+ ],
+ "size": {
+ "0": 320,
+ "1": 202
+ },
+ "flags": {},
+ "order": 10,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "clip",
+ "type": "CLIP",
+ "link": 56,
+ "slot_index": 0
+ },
+ {
+ "name": "width",
+ "type": "INT",
+ "link": 62,
+ "widget": {
+ "name": "width"
+ },
+ "slot_index": 3
+ },
+ {
+ "name": "height",
+ "type": "INT",
+ "link": 63,
+ "widget": {
+ "name": "height"
+ }
+ },
+ {
+ "name": "target_width",
+ "type": "INT",
+ "link": 64,
+ "widget": {
+ "name": "target_width"
+ },
+ "slot_index": 5
+ },
+ {
+ "name": "target_height",
+ "type": "INT",
+ "link": 65,
+ "widget": {
+ "name": "target_height"
+ }
+ },
+ {
+ "name": "text_g",
+ "type": "STRING",
+ "link": 75,
+ "widget": {
+ "name": "text_g"
+ },
+ "slot_index": 5
+ },
+ {
+ "name": "text_l",
+ "type": "STRING",
+ "link": 76,
+ "widget": {
+ "name": "text_l"
+ }
+ }
+ ],
+ "outputs": [
+ {
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 54
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "title": "CLIPTextEncodeSDXL Negative",
+ "properties": {
+ "Node name for S&R": "CLIPTextEncodeSDXL"
+ },
+ "widgets_values": [
+ 1024,
+ 1024,
+ 0,
+ 0,
+ 1024,
+ 1024,
+ "CLIP_G",
+ "CLIP_L"
+ ]
+ },
+ {
+ "id": 14,
+ "type": "CLIPTextEncodeSDXLRefiner",
+ "pos": [
+ 520,
+ 1162
+ ],
+ "size": {
+ "0": 320,
+ "1": 114
+ },
+ "flags": {},
+ "order": 12,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "clip",
+ "type": "CLIP",
+ "link": 58
+ },
+ {
+ "name": "ascore",
+ "type": "FLOAT",
+ "link": 80,
+ "widget": {
+ "name": "ascore"
+ }
+ },
+ {
+ "name": "width",
+ "type": "INT",
+ "link": 81,
+ "widget": {
+ "name": "width"
+ },
+ "slot_index": 2
+ },
+ {
+ "name": "height",
+ "type": "INT",
+ "link": 82,
+ "widget": {
+ "name": "height"
+ }
+ },
+ {
+ "name": "text",
+ "type": "STRING",
+ "link": 77,
+ "widget": {
+ "name": "text"
+ },
+ "slot_index": 4
+ }
+ ],
+ "outputs": [
+ {
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 87
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "title": "CLIPTextEncodeSDXLRefiner Negative",
+ "properties": {
+ "Node name for S&R": "CLIPTextEncodeSDXLRefiner"
+ },
+ "widgets_values": [
+ 6,
+ 1024,
+ 1024,
+ ""
+ ]
+ },
+ {
+ "id": 12,
+ "type": "CLIPTextEncodeSDXLRefiner",
+ "pos": [
+ 520,
+ 1406
+ ],
+ "size": {
+ "0": 320,
+ "1": 114
+ },
+ "flags": {},
+ "order": 13,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "clip",
+ "type": "CLIP",
+ "link": 57
+ },
+ {
+ "name": "ascore",
+ "type": "FLOAT",
+ "link": 79,
+ "widget": {
+ "name": "ascore"
+ },
+ "slot_index": 1
+ },
+ {
+ "name": "width",
+ "type": "INT",
+ "link": 83,
+ "widget": {
+ "name": "width"
+ },
+ "slot_index": 2
+ },
+ {
+ "name": "height",
+ "type": "INT",
+ "link": 84,
+ "widget": {
+ "name": "height"
+ }
+ },
+ {
+ "name": "text",
+ "type": "STRING",
+ "link": 78,
+ "widget": {
+ "name": "text"
+ }
+ }
+ ],
+ "outputs": [
+ {
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 46
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "title": "CLIPTextEncodeSDXLRefiner Positive",
+ "properties": {
+ "Node name for S&R": "CLIPTextEncodeSDXLRefiner"
+ },
+ "widgets_values": [
+ 6,
+ 1024,
+ 1024,
+ ""
+ ]
+ },
+ {
+ "id": 18,
+ "type": "PrimitiveNode",
+ "pos": [
+ 100,
+ 358
+ ],
+ "size": {
+ "0": 320,
+ "1": 80
+ },
+ "flags": {},
+ "order": 1,
+ "mode": 0,
+ "outputs": [
+ {
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 75
+ ],
+ "slot_index": 0,
+ "widget": {
+ "name": "text_g"
+ }
+ }
+ ],
+ "title": "Negative Clip G",
+ "properties": {
+ "Run widget replace on values": false
+ },
+ "widgets_values": [
+ "CLIP_G"
+ ]
+ },
+ {
+ "id": 17,
+ "type": "PrimitiveNode",
+ "pos": [
+ 100,
+ 568
+ ],
+ "size": {
+ "0": 320,
+ "1": 80
+ },
+ "flags": {},
+ "order": 2,
+ "mode": 0,
+ "outputs": [
+ {
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 76,
+ 91
+ ],
+ "slot_index": 0,
+ "widget": {
+ "name": "text_l"
+ }
+ }
+ ],
+ "title": "Negative Clip L",
+ "properties": {
+ "Run widget replace on values": false
+ },
+ "widgets_values": [
+ "CLIP_L"
+ ]
+ },
+ {
+ "id": 21,
+ "type": "SDPromptMerger",
+ "pos": [
+ 520,
+ 314
+ ],
+ "size": {
+ "0": 320,
+ "1": 54
+ },
+ "flags": {},
+ "order": 9,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "text_g",
+ "type": "STRING",
+ "link": 88,
+ "widget": {
+ "name": "text_g"
+ },
+ "slot_index": 0
+ },
+ {
+ "name": "text_l",
+ "type": "STRING",
+ "link": 89,
+ "widget": {
+ "name": "text_l"
+ }
+ }
+ ],
+ "outputs": [
+ {
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 94
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SDPromptMerger"
+ },
+ "widgets_values": [
+ "CLIP_G",
+ "CLIP_L"
+ ]
+ },
+ {
+ "id": 22,
+ "type": "SDPromptMerger",
+ "pos": [
+ 520,
+ 130
+ ],
+ "size": {
+ "0": 320,
+ "1": 54
+ },
+ "flags": {},
+ "order": 8,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "text_g",
+ "type": "STRING",
+ "link": null,
+ "widget": {
+ "name": "text_g"
+ }
+ },
+ {
+ "name": "text_l",
+ "type": "STRING",
+ "link": 91,
+ "widget": {
+ "name": "text_l"
+ },
+ "slot_index": 1
+ }
+ ],
+ "outputs": [
+ {
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 93
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SDPromptMerger"
+ },
+ "widgets_values": [
+ "CLIP_G",
+ "CLIP_L"
+ ]
+ },
+ {
+ "id": 5,
+ "type": "EmptyLatentImage",
+ "pos": [
+ 520,
+ 1650
+ ],
+ "size": {
+ "0": 320,
+ "1": 74
+ },
+ "flags": {},
+ "order": 14,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "width",
+ "type": "INT",
+ "link": 99,
+ "widget": {
+ "name": "width"
+ }
+ },
+ {
+ "name": "height",
+ "type": "INT",
+ "link": 100,
+ "widget": {
+ "name": "height"
+ },
+ "slot_index": 1
+ },
+ {
+ "name": "batch_size",
+ "type": "INT",
+ "link": 4,
+ "widget": {
+ "name": "batch_size"
+ }
+ }
+ ],
+ "outputs": [
+ {
+ "name": "LATENT",
+ "type": "LATENT",
+ "links": [
+ 10
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "EmptyLatentImage"
+ },
+ "widgets_values": [
+ 512,
+ 512,
+ 1
+ ]
+ },
+ {
+ "id": 4,
+ "type": "KSamplerAdvanced",
+ "pos": [
+ 940,
+ 130
+ ],
+ "size": [
+ 320,
+ 290
+ ],
+ "flags": {},
+ "order": 15,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "model",
+ "type": "MODEL",
+ "link": 9
+ },
+ {
+ "name": "positive",
+ "type": "CONDITIONING",
+ "link": 86,
+ "slot_index": 1
+ },
+ {
+ "name": "negative",
+ "type": "CONDITIONING",
+ "link": 54
+ },
+ {
+ "name": "latent_image",
+ "type": "LATENT",
+ "link": 10
+ },
+ {
+ "name": "noise_seed",
+ "type": "INT",
+ "link": 11,
+ "widget": {
+ "name": "noise_seed"
+ },
+ "slot_index": 4
+ },
+ {
+ "name": "steps",
+ "type": "INT",
+ "link": 42,
+ "widget": {
+ "name": "steps"
+ }
+ },
+ {
+ "name": "cfg",
+ "type": "FLOAT",
+ "link": 101,
+ "widget": {
+ "name": "cfg"
+ },
+ "slot_index": 6
+ },
+ {
+ "name": "sampler_name",
+ "type": "COMBO",
+ "link": 17,
+ "widget": {
+ "name": "sampler_name"
+ }
+ },
+ {
+ "name": "scheduler",
+ "type": "COMBO",
+ "link": 18,
+ "widget": {
+ "name": "scheduler"
+ },
+ "slot_index": 8
+ },
+ {
+ "name": "end_at_step",
+ "type": "INT",
+ "link": 45,
+ "widget": {
+ "name": "end_at_step"
+ }
+ }
+ ],
+ "outputs": [
+ {
+ "name": "LATENT",
+ "type": "LATENT",
+ "links": [
+ 51
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "KSamplerAdvanced"
+ },
+ "widgets_values": [
+ "enable",
+ 667642027243430,
+ "randomize",
+ 20,
+ 8,
+ "euler",
+ "normal",
+ 0,
+ 10000,
+ "enable"
+ ]
+ },
+ {
+ "id": 9,
+ "type": "KSamplerAdvanced",
+ "pos": [
+ 1360,
+ 130
+ ],
+ "size": [
+ 320,
+ 310
+ ],
+ "flags": {},
+ "order": 16,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "model",
+ "type": "MODEL",
+ "link": 41,
+ "slot_index": 0
+ },
+ {
+ "name": "positive",
+ "type": "CONDITIONING",
+ "link": 46
+ },
+ {
+ "name": "negative",
+ "type": "CONDITIONING",
+ "link": 87
+ },
+ {
+ "name": "latent_image",
+ "type": "LATENT",
+ "link": 51
+ },
+ {
+ "name": "steps",
+ "type": "INT",
+ "link": 43,
+ "widget": {
+ "name": "steps"
+ },
+ "slot_index": 4
+ },
+ {
+ "name": "cfg",
+ "type": "FLOAT",
+ "link": 48,
+ "widget": {
+ "name": "cfg"
+ },
+ "slot_index": 5
+ },
+ {
+ "name": "sampler_name",
+ "type": "COMBO",
+ "link": 49,
+ "widget": {
+ "name": "sampler_name"
+ },
+ "slot_index": 6
+ },
+ {
+ "name": "scheduler",
+ "type": "COMBO",
+ "link": 50,
+ "widget": {
+ "name": "scheduler"
+ }
+ },
+ {
+ "name": "start_at_step",
+ "type": "INT",
+ "link": 44,
+ "widget": {
+ "name": "start_at_step"
+ }
+ }
+ ],
+ "outputs": [
+ {
+ "name": "LATENT",
+ "type": "LATENT",
+ "links": [
+ 52
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "KSamplerAdvanced"
+ },
+ "widgets_values": [
+ "enable",
+ 996620651190540,
+ "randomize",
+ 20,
+ 8,
+ "euler",
+ "normal",
+ 0,
+ 10000,
+ "disable"
+ ]
+ },
+ {
+ "id": 3,
+ "type": "SDPromptSaver",
+ "pos": [
+ 2200,
+ 130
+ ],
+ "size": [
+ 320,
+ 560
+ ],
+ "flags": {},
+ "order": 18,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "images",
+ "type": "IMAGE",
+ "link": 14
+ },
+ {
+ "name": "lora_name",
+ "type": "*",
+ "link": null
+ },
+ {
+ "name": "model_name",
+ "type": "COMBO",
+ "link": 39,
+ "widget": {
+ "name": "model_name"
+ },
+ "slot_index": 2
+ },
+ {
+ "name": "vae_name",
+ "type": "COMBO",
+ "link": 40,
+ "widget": {
+ "name": "vae_name"
+ }
+ },
+ {
+ "name": "seed",
+ "type": "INT",
+ "link": 30,
+ "widget": {
+ "name": "seed"
+ },
+ "slot_index": 4
+ },
+ {
+ "name": "steps",
+ "type": "INT",
+ "link": 97,
+ "widget": {
+ "name": "steps"
+ },
+ "slot_index": 5
+ },
+ {
+ "name": "cfg",
+ "type": "FLOAT",
+ "link": 98,
+ "widget": {
+ "name": "cfg"
+ },
+ "slot_index": 6
+ },
+ {
+ "name": "sampler_name",
+ "type": "COMBO",
+ "link": 28,
+ "widget": {
+ "name": "sampler_name"
+ },
+ "slot_index": 7
+ },
+ {
+ "name": "scheduler",
+ "type": "COMBO",
+ "link": 29,
+ "widget": {
+ "name": "scheduler"
+ }
+ },
+ {
+ "name": "width",
+ "type": "INT",
+ "link": 95,
+ "widget": {
+ "name": "width"
+ },
+ "slot_index": 9
+ },
+ {
+ "name": "height",
+ "type": "INT",
+ "link": 96,
+ "widget": {
+ "name": "height"
+ }
+ },
+ {
+ "name": "positive",
+ "type": "STRING",
+ "link": 94,
+ "widget": {
+ "name": "positive"
+ }
+ },
+ {
+ "name": "negative",
+ "type": "STRING",
+ "link": 93,
+ "widget": {
+ "name": "negative"
+ },
+ "slot_index": 12
+ }
+ ],
+ "outputs": [
+ {
+ "name": "FILENAME",
+ "type": "STRING",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "FILE_PATH",
+ "type": "STRING",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "METADATA",
+ "type": "STRING",
+ "links": null,
+ "shape": 3
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SDPromptSaver"
+ },
+ "widgets_values": [
+ "ComfyUI_%time_%seed_%counter",
+ "%date/",
+ "CheckpointYesmix_v35.safetensors",
+ "kl-f8-anime2.ckpt",
+ 660675745249894,
+ "randomize",
+ 20,
+ 8,
+ "euler",
+ "normal",
+ 1,
+ 1,
+ "",
+ "",
+ "png",
+ true,
+ true,
+ true,
+ 100,
+ "%Y-%m-%d",
+ "%H%M%S",
+ false,
+ "SD Prompt Reader Node Example Image"
+ ]
+ },
+ {
+ "id": 16,
+ "type": "PrimitiveNode",
+ "pos": [
+ 100,
+ 778
+ ],
+ "size": {
+ "0": 320,
+ "1": 80
+ },
+ "flags": {},
+ "order": 3,
+ "mode": 0,
+ "outputs": [
+ {
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 70,
+ 88
+ ],
+ "slot_index": 0,
+ "widget": {
+ "name": "text_g"
+ }
+ }
+ ],
+ "title": "Positive Clip G",
+ "properties": {
+ "Run widget replace on values": false
+ },
+ "widgets_values": [
+ "CLIP_G"
+ ]
+ },
+ {
+ "id": 15,
+ "type": "PrimitiveNode",
+ "pos": [
+ 100,
+ 988
+ ],
+ "size": {
+ "0": 320,
+ "1": 80
+ },
+ "flags": {},
+ "order": 4,
+ "mode": 0,
+ "outputs": [
+ {
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 71,
+ 89
+ ],
+ "widget": {
+ "name": "text_l"
+ },
+ "slot_index": 0
+ }
+ ],
+ "title": "Positive Clip L",
+ "properties": {
+ "Run widget replace on values": false
+ },
+ "widgets_values": [
+ "CLIP_L"
+ ]
+ },
+ {
+ "id": 19,
+ "type": "PrimitiveNode",
+ "pos": [
+ 100,
+ 1198
+ ],
+ "size": {
+ "0": 320,
+ "1": 80
+ },
+ "flags": {},
+ "order": 5,
+ "mode": 0,
+ "outputs": [
+ {
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 77
+ ],
+ "slot_index": 0,
+ "widget": {
+ "name": "text"
+ }
+ }
+ ],
+ "title": "Refiner Negative",
+ "properties": {
+ "Run widget replace on values": false
+ },
+ "widgets_values": [
+ ""
+ ]
+ },
+ {
+ "id": 20,
+ "type": "PrimitiveNode",
+ "pos": [
+ 100,
+ 1408
+ ],
+ "size": {
+ "0": 320,
+ "1": 80
+ },
+ "flags": {},
+ "order": 6,
+ "mode": 0,
+ "outputs": [
+ {
+ "name": "STRING",
+ "type": "STRING",
+ "links": [
+ 78
+ ],
+ "slot_index": 0,
+ "widget": {
+ "name": "text"
+ }
+ }
+ ],
+ "title": "Refiner Positive",
+ "properties": {
+ "Run widget replace on values": false
+ },
+ "widgets_values": [
+ ""
+ ]
+ },
+ {
+ "id": 2,
+ "type": "SDParameterGenerator",
+ "pos": [
+ 100,
+ 1618
+ ],
+ "size": {
+ "0": 320,
+ "1": 902
+ },
+ "flags": {},
+ "order": 7,
+ "mode": 0,
+ "outputs": [
+ {
+ "name": "MODEL_NAME",
+ "type": "COMBO",
+ "links": [
+ 39
+ ],
+ "shape": 3,
+ "slot_index": 0
+ },
+ {
+ "name": "VAE_NAME",
+ "type": "COMBO",
+ "links": [
+ 40
+ ],
+ "shape": 3,
+ "slot_index": 1
+ },
+ {
+ "name": "MODEL",
+ "type": "MODEL",
+ "links": [
+ 9
+ ],
+ "shape": 3,
+ "slot_index": 2
+ },
+ {
+ "name": "CLIP",
+ "type": "CLIP",
+ "links": [
+ 55,
+ 56
+ ],
+ "shape": 3,
+ "slot_index": 3
+ },
+ {
+ "name": "VAE",
+ "type": "VAE",
+ "links": [],
+ "shape": 3
+ },
+ {
+ "name": "SEED",
+ "type": "INT",
+ "links": [
+ 11,
+ 30
+ ],
+ "shape": 3
+ },
+ {
+ "name": "STEPS",
+ "type": "INT",
+ "links": [
+ 42,
+ 43,
+ 97
+ ],
+ "shape": 3,
+ "slot_index": 6
+ },
+ {
+ "name": "REFINER_START_STEP",
+ "type": "INT",
+ "links": [
+ 44,
+ 45
+ ],
+ "shape": 3,
+ "slot_index": 7
+ },
+ {
+ "name": "CFG",
+ "type": "FLOAT",
+ "links": [
+ 48,
+ 98,
+ 101
+ ],
+ "shape": 3,
+ "slot_index": 8
+ },
+ {
+ "name": "SAMPLER_NAME",
+ "type": "COMBO",
+ "links": [
+ 17,
+ 28,
+ 49
+ ],
+ "shape": 3,
+ "slot_index": 9
+ },
+ {
+ "name": "SCHEDULER",
+ "type": "COMBO",
+ "links": [
+ 18,
+ 29,
+ 50
+ ],
+ "shape": 3,
+ "slot_index": 10
+ },
+ {
+ "name": "POSITIVE_ASCORE",
+ "type": "FLOAT",
+ "links": [
+ 79
+ ],
+ "shape": 3
+ },
+ {
+ "name": "NEGATIVE_ASCORE",
+ "type": "FLOAT",
+ "links": [
+ 80
+ ],
+ "shape": 3,
+ "slot_index": 12
+ },
+ {
+ "name": "WIDTH",
+ "type": "INT",
+ "links": [
+ 62,
+ 64,
+ 66,
+ 68,
+ 81,
+ 83,
+ 95,
+ 99
+ ],
+ "shape": 3,
+ "slot_index": 13
+ },
+ {
+ "name": "HEIGHT",
+ "type": "INT",
+ "links": [
+ 63,
+ 65,
+ 67,
+ 69,
+ 82,
+ 84,
+ 96,
+ 100
+ ],
+ "shape": 3,
+ "slot_index": 14
+ },
+ {
+ "name": "BATCH_SIZE",
+ "type": "INT",
+ "links": [
+ 4
+ ],
+ "shape": 3,
+ "slot_index": 15
+ },
+ {
+ "name": "PARAMETERS",
+ "type": "STRING",
+ "links": null,
+ "shape": 3
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SDParameterGenerator"
+ },
+ "widgets_values": [
+ "sd_xl_base_1.0_0.9vae.safetensors",
+ "baked VAE",
+ "SDXL 1024px",
+ "none",
+ 40346610113952,
+ 50,
+ 0.8,
+ 8,
+ "dpmpp_2m",
+ "karras",
+ 6,
+ 6,
+ "1:1 - 1024x1024",
+ 1024,
+ 1024,
+ 1,
+ "Total steps: 50,\nRefiner start at step: 40 (80%)",
+ "Optimal resolution for SDXL 1024px model\nwith aspect ratio 1:1: 1024 x 1024",
+ null,
+ "Total steps: 30,\nRefiner off",
+ "Optimal resolution for SDv1 512px model\nwith aspect ratio 1:1: 512 x 512"
+ ]
+ }
+ ],
+ "links": [
+ [
+ 4,
+ 2,
+ 15,
+ 5,
+ 2,
+ "INT"
+ ],
+ [
+ 9,
+ 2,
+ 2,
+ 4,
+ 0,
+ "MODEL"
+ ],
+ [
+ 10,
+ 5,
+ 0,
+ 4,
+ 3,
+ "LATENT"
+ ],
+ [
+ 11,
+ 2,
+ 5,
+ 4,
+ 4,
+ "INT"
+ ],
+ [
+ 14,
+ 8,
+ 0,
+ 3,
+ 0,
+ "IMAGE"
+ ],
+ [
+ 17,
+ 2,
+ 9,
+ 4,
+ 7,
+ "COMBO"
+ ],
+ [
+ 18,
+ 2,
+ 10,
+ 4,
+ 8,
+ "COMBO"
+ ],
+ [
+ 28,
+ 2,
+ 9,
+ 3,
+ 7,
+ "COMBO"
+ ],
+ [
+ 29,
+ 2,
+ 10,
+ 3,
+ 8,
+ "COMBO"
+ ],
+ [
+ 30,
+ 2,
+ 5,
+ 3,
+ 4,
+ "INT"
+ ],
+ [
+ 39,
+ 2,
+ 0,
+ 3,
+ 2,
+ "COMBO"
+ ],
+ [
+ 40,
+ 2,
+ 1,
+ 3,
+ 3,
+ "COMBO"
+ ],
+ [
+ 41,
+ 10,
+ 0,
+ 9,
+ 0,
+ "MODEL"
+ ],
+ [
+ 42,
+ 2,
+ 6,
+ 4,
+ 5,
+ "INT"
+ ],
+ [
+ 43,
+ 2,
+ 6,
+ 9,
+ 4,
+ "INT"
+ ],
+ [
+ 44,
+ 2,
+ 7,
+ 9,
+ 8,
+ "INT"
+ ],
+ [
+ 45,
+ 2,
+ 7,
+ 4,
+ 9,
+ "INT"
+ ],
+ [
+ 46,
+ 12,
+ 0,
+ 9,
+ 1,
+ "CONDITIONING"
+ ],
+ [
+ 48,
+ 2,
+ 8,
+ 9,
+ 5,
+ "FLOAT"
+ ],
+ [
+ 49,
+ 2,
+ 9,
+ 9,
+ 6,
+ "COMBO"
+ ],
+ [
+ 50,
+ 2,
+ 10,
+ 9,
+ 7,
+ "COMBO"
+ ],
+ [
+ 51,
+ 4,
+ 0,
+ 9,
+ 3,
+ "LATENT"
+ ],
+ [
+ 52,
+ 9,
+ 0,
+ 8,
+ 0,
+ "LATENT"
+ ],
+ [
+ 54,
+ 13,
+ 0,
+ 4,
+ 2,
+ "CONDITIONING"
+ ],
+ [
+ 55,
+ 2,
+ 3,
+ 11,
+ 0,
+ "CLIP"
+ ],
+ [
+ 56,
+ 2,
+ 3,
+ 13,
+ 0,
+ "CLIP"
+ ],
+ [
+ 57,
+ 10,
+ 1,
+ 12,
+ 0,
+ "CLIP"
+ ],
+ [
+ 58,
+ 10,
+ 1,
+ 14,
+ 0,
+ "CLIP"
+ ],
+ [
+ 59,
+ 10,
+ 2,
+ 8,
+ 1,
+ "VAE"
+ ],
+ [
+ 62,
+ 2,
+ 13,
+ 13,
+ 1,
+ "INT"
+ ],
+ [
+ 63,
+ 2,
+ 14,
+ 13,
+ 2,
+ "INT"
+ ],
+ [
+ 64,
+ 2,
+ 13,
+ 13,
+ 3,
+ "INT"
+ ],
+ [
+ 65,
+ 2,
+ 14,
+ 13,
+ 4,
+ "INT"
+ ],
+ [
+ 66,
+ 2,
+ 13,
+ 11,
+ 1,
+ "INT"
+ ],
+ [
+ 67,
+ 2,
+ 14,
+ 11,
+ 2,
+ "INT"
+ ],
+ [
+ 68,
+ 2,
+ 13,
+ 11,
+ 3,
+ "INT"
+ ],
+ [
+ 69,
+ 2,
+ 14,
+ 11,
+ 4,
+ "INT"
+ ],
+ [
+ 70,
+ 16,
+ 0,
+ 11,
+ 5,
+ "STRING"
+ ],
+ [
+ 71,
+ 15,
+ 0,
+ 11,
+ 6,
+ "STRING"
+ ],
+ [
+ 75,
+ 18,
+ 0,
+ 13,
+ 5,
+ "STRING"
+ ],
+ [
+ 76,
+ 17,
+ 0,
+ 13,
+ 6,
+ "STRING"
+ ],
+ [
+ 77,
+ 19,
+ 0,
+ 14,
+ 4,
+ "STRING"
+ ],
+ [
+ 78,
+ 20,
+ 0,
+ 12,
+ 4,
+ "STRING"
+ ],
+ [
+ 79,
+ 2,
+ 11,
+ 12,
+ 1,
+ "FLOAT"
+ ],
+ [
+ 80,
+ 2,
+ 12,
+ 14,
+ 1,
+ "FLOAT"
+ ],
+ [
+ 81,
+ 2,
+ 13,
+ 14,
+ 2,
+ "INT"
+ ],
+ [
+ 82,
+ 2,
+ 14,
+ 14,
+ 3,
+ "INT"
+ ],
+ [
+ 83,
+ 2,
+ 13,
+ 12,
+ 2,
+ "INT"
+ ],
+ [
+ 84,
+ 2,
+ 14,
+ 12,
+ 3,
+ "INT"
+ ],
+ [
+ 86,
+ 11,
+ 0,
+ 4,
+ 1,
+ "CONDITIONING"
+ ],
+ [
+ 87,
+ 14,
+ 0,
+ 9,
+ 2,
+ "CONDITIONING"
+ ],
+ [
+ 88,
+ 16,
+ 0,
+ 21,
+ 0,
+ "STRING"
+ ],
+ [
+ 89,
+ 15,
+ 0,
+ 21,
+ 1,
+ "STRING"
+ ],
+ [
+ 91,
+ 17,
+ 0,
+ 22,
+ 1,
+ "STRING"
+ ],
+ [
+ 93,
+ 22,
+ 0,
+ 3,
+ 12,
+ "STRING"
+ ],
+ [
+ 94,
+ 21,
+ 0,
+ 3,
+ 11,
+ "STRING"
+ ],
+ [
+ 95,
+ 2,
+ 13,
+ 3,
+ 9,
+ "INT"
+ ],
+ [
+ 96,
+ 2,
+ 14,
+ 3,
+ 10,
+ "INT"
+ ],
+ [
+ 97,
+ 2,
+ 6,
+ 3,
+ 5,
+ "INT"
+ ],
+ [
+ 98,
+ 2,
+ 8,
+ 3,
+ 6,
+ "FLOAT"
+ ],
+ [
+ 99,
+ 2,
+ 13,
+ 5,
+ 0,
+ "INT"
+ ],
+ [
+ 100,
+ 2,
+ 14,
+ 5,
+ 1,
+ "INT"
+ ],
+ [
+ 101,
+ 2,
+ 8,
+ 4,
+ 6,
+ "FLOAT"
+ ]
+ ],
+ "groups": [],
+ "config": {},
+ "extra": {},
+ "version": 0.4
+}
\ No newline at end of file
diff --git a/workflows/sdxl_example.png b/workflows/sdxl_example.png
new file mode 100644
index 0000000..c0d881a
Binary files /dev/null and b/workflows/sdxl_example.png differ
diff --git a/workflows/example_workflow.json b/workflows/simple_example.json
similarity index 83%
rename from workflows/example_workflow.json
rename to workflows/simple_example.json
index 704ea2b..36b7331 100644
--- a/workflows/example_workflow.json
+++ b/workflows/simple_example.json
@@ -1,13 +1,103 @@
{
- "last_node_id": 10,
- "last_link_id": 56,
+ "last_node_id": 8,
+ "last_link_id": 40,
"nodes": [
{
- "id": 4,
+ "id": 6,
+ "type": "CLIPTextEncode",
+ "pos": [
+ 520,
+ 130
+ ],
+ "size": {
+ "0": 320,
+ "1": 54
+ },
+ "flags": {},
+ "order": 2,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "clip",
+ "type": "CLIP",
+ "link": 7,
+ "slot_index": 0
+ },
+ {
+ "name": "text",
+ "type": "STRING",
+ "link": 5,
+ "widget": {
+ "name": "text"
+ },
+ "slot_index": 1
+ }
+ ],
+ "outputs": [
+ {
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 36
+ ],
+ "shape": 3
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPTextEncode"
+ },
+ "widgets_values": [
+ ""
+ ]
+ },
+ {
+ "id": 8,
+ "type": "VAEDecode",
+ "pos": [
+ 1360,
+ 130
+ ],
+ "size": {
+ "0": 320,
+ "1": 50
+ },
+ "flags": {},
+ "order": 6,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "samples",
+ "type": "LATENT",
+ "link": 13
+ },
+ {
+ "name": "vae",
+ "type": "VAE",
+ "link": 12,
+ "slot_index": 1
+ }
+ ],
+ "outputs": [
+ {
+ "name": "IMAGE",
+ "type": "IMAGE",
+ "links": [
+ 14
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "VAEDecode"
+ }
+ },
+ {
+ "id": 5,
"type": "EmptyLatentImage",
"pos": [
- 840,
- 500
+ 520,
+ 498
],
"size": {
"0": 320,
@@ -20,7 +110,7 @@
{
"name": "width",
"type": "INT",
- "link": 10,
+ "link": 21,
"widget": {
"name": "width"
}
@@ -28,15 +118,16 @@
{
"name": "height",
"type": "INT",
- "link": 11,
+ "link": 22,
"widget": {
"name": "height"
- }
+ },
+ "slot_index": 1
},
{
"name": "batch_size",
"type": "INT",
- "link": 9,
+ "link": 4,
"widget": {
"name": "batch_size"
}
@@ -47,7 +138,7 @@
"name": "LATENT",
"type": "LATENT",
"links": [
- 23
+ 10
],
"shape": 3,
"slot_index": 0
@@ -63,398 +154,7 @@
]
},
{
- "id": 7,
- "type": "CLIPTextEncode",
- "pos": [
- 840,
- 650
- ],
- "size": {
- "0": 320,
- "1": 54
- },
- "flags": {},
- "order": 3,
- "mode": 0,
- "inputs": [
- {
- "name": "clip",
- "type": "CLIP",
- "link": 32
- },
- {
- "name": "text",
- "type": "STRING",
- "link": 37,
- "widget": {
- "name": "text"
- }
- }
- ],
- "outputs": [
- {
- "name": "CONDITIONING",
- "type": "CONDITIONING",
- "links": [
- 18
- ],
- "shape": 3,
- "slot_index": 0
- }
- ],
- "properties": {
- "Node name for S&R": "CLIPTextEncode"
- },
- "widgets_values": [
- ""
- ]
- },
- {
- "id": 5,
- "type": "VAEDecode",
- "pos": [
- 840,
- 910
- ],
- "size": {
- "0": 320,
- "1": 50
- },
- "flags": {},
- "order": 6,
- "mode": 0,
- "inputs": [
- {
- "name": "samples",
- "type": "LATENT",
- "link": 22,
- "slot_index": 0
- },
- {
- "name": "vae",
- "type": "VAE",
- "link": 21
- }
- ],
- "outputs": [
- {
- "name": "IMAGE",
- "type": "IMAGE",
- "links": [
- 42
- ],
- "shape": 3,
- "slot_index": 0
- }
- ],
- "properties": {
- "Node name for S&R": "VAEDecode"
- }
- },
- {
- "id": 6,
- "type": "CLIPTextEncode",
- "pos": [
- 840,
- 780
- ],
- "size": {
- "0": 320,
- "1": 54
- },
- "flags": {},
- "order": 2,
- "mode": 0,
- "inputs": [
- {
- "name": "clip",
- "type": "CLIP",
- "link": 20,
- "slot_index": 0
- },
- {
- "name": "text",
- "type": "STRING",
- "link": 38,
- "widget": {
- "name": "text"
- },
- "slot_index": 1
- }
- ],
- "outputs": [
- {
- "name": "CONDITIONING",
- "type": "CONDITIONING",
- "links": [
- 39
- ],
- "shape": 3,
- "slot_index": 0
- }
- ],
- "properties": {
- "Node name for S&R": "CLIPTextEncode"
- },
- "widgets_values": [
- ""
- ]
- },
- {
- "id": 8,
- "type": "KSamplerAdvanced",
- "pos": [
- 840,
- 130
- ],
- "size": {
- "0": 320,
- "1": 290
- },
- "flags": {},
- "order": 5,
- "mode": 0,
- "inputs": [
- {
- "name": "model",
- "type": "MODEL",
- "link": 17
- },
- {
- "name": "positive",
- "type": "CONDITIONING",
- "link": 18
- },
- {
- "name": "negative",
- "type": "CONDITIONING",
- "link": 39
- },
- {
- "name": "latent_image",
- "type": "LATENT",
- "link": 23
- },
- {
- "name": "noise_seed",
- "type": "INT",
- "link": 24,
- "widget": {
- "name": "noise_seed"
- },
- "slot_index": 4
- },
- {
- "name": "steps",
- "type": "INT",
- "link": 53,
- "widget": {
- "name": "steps"
- }
- },
- {
- "name": "cfg",
- "type": "FLOAT",
- "link": 55,
- "widget": {
- "name": "cfg"
- }
- },
- {
- "name": "sampler_name",
- "type": "COMBO",
- "link": 15,
- "widget": {
- "name": "sampler_name"
- }
- },
- {
- "name": "scheduler",
- "type": "COMBO",
- "link": 12,
- "widget": {
- "name": "scheduler"
- }
- }
- ],
- "outputs": [
- {
- "name": "LATENT",
- "type": "LATENT",
- "links": [
- 22
- ],
- "shape": 3
- }
- ],
- "properties": {
- "Node name for S&R": "KSamplerAdvanced"
- },
- "widgets_values": [
- "enable",
- 1033713264376921,
- "randomize",
- 20,
- 8,
- "euler",
- "normal",
- 0,
- 10000,
- "disable"
- ]
- },
- {
- "id": 10,
- "type": "SDPromptSaver",
- "pos": [
- 1210,
- 130
- ],
- "size": {
- "0": 320,
- "1": 550
- },
- "flags": {},
- "order": 7,
- "mode": 0,
- "inputs": [
- {
- "name": "images",
- "type": "IMAGE",
- "link": 42
- },
- {
- "name": "model_name",
- "type": 0,
- "link": 43,
- "widget": {
- "name": "model_name"
- }
- },
- {
- "name": "seed",
- "type": 0,
- "link": 44,
- "widget": {
- "name": "seed"
- }
- },
- {
- "name": "steps",
- "type": 0,
- "link": 54,
- "widget": {
- "name": "steps"
- },
- "slot_index": 3
- },
- {
- "name": "cfg",
- "type": 0,
- "link": 56,
- "widget": {
- "name": "cfg"
- },
- "slot_index": 4
- },
- {
- "name": "sampler_name",
- "type": 0,
- "link": 45,
- "widget": {
- "name": "sampler_name"
- }
- },
- {
- "name": "scheduler",
- "type": 0,
- "link": 46,
- "widget": {
- "name": "scheduler"
- }
- },
- {
- "name": "width",
- "type": 0,
- "link": 47,
- "widget": {
- "name": "width"
- }
- },
- {
- "name": "height",
- "type": 0,
- "link": 48,
- "widget": {
- "name": "height"
- }
- },
- {
- "name": "positive",
- "type": 0,
- "link": 49,
- "widget": {
- "name": "positive"
- }
- },
- {
- "name": "negative",
- "type": 0,
- "link": 50,
- "widget": {
- "name": "negative"
- }
- }
- ],
- "outputs": [
- {
- "name": "FILENAME",
- "type": "STRING",
- "links": null,
- "shape": 3
- },
- {
- "name": "FILE_PATH",
- "type": "STRING",
- "links": null,
- "shape": 3
- },
- {
- "name": "METADATA",
- "type": "STRING",
- "links": null,
- "shape": 3
- }
- ],
- "properties": {
- "Node name for S&R": "SDPromptSaver"
- },
- "widgets_values": [
- "ComfyUI_%time_%seed_%counter",
- "%date/",
- "CheckpointYesmix_v35.safetensors",
- 0,
- "randomize",
- 20,
- 8,
- "euler",
- "normal",
- 1,
- 1,
- "",
- "",
- "png",
- false,
- true,
- 100,
- "%Y-%m-%d",
- "%H%M%S",
- false,
- "ComfyUI Example Image"
- ]
- },
- {
- "id": 9,
+ "id": 1,
"type": "SDPromptReader",
"pos": [
100,
@@ -462,7 +162,7 @@
],
"size": {
"0": 320,
- "1": 900
+ "1": 980
},
"flags": {},
"order": 0,
@@ -484,8 +184,8 @@
"name": "POSITIVE",
"type": "STRING",
"links": [
- 37,
- 49
+ 5,
+ 23
],
"shape": 3,
"slot_index": 2
@@ -494,8 +194,8 @@
"name": "NEGATIVE",
"type": "STRING",
"links": [
- 38,
- 50
+ 6,
+ 24
],
"shape": 3,
"slot_index": 3
@@ -510,8 +210,8 @@
"name": "STEPS",
"type": "INT",
"links": [
- 53,
- 54
+ 19,
+ 26
],
"shape": 3,
"slot_index": 5
@@ -520,8 +220,8 @@
"name": "CFG",
"type": "FLOAT",
"links": [
- 55,
- 56
+ 20,
+ 27
],
"shape": 3,
"slot_index": 6
@@ -529,15 +229,22 @@
{
"name": "WIDTH",
"type": "INT",
- "links": null,
+ "links": [
+ 21,
+ 31
+ ],
"shape": 3,
"slot_index": 7
},
{
"name": "HEIGHT",
"type": "INT",
- "links": null,
- "shape": 3
+ "links": [
+ 22,
+ 32
+ ],
+ "shape": 3,
+ "slot_index": 8
},
{
"name": "MODEL_NAME",
@@ -571,15 +278,170 @@
]
},
{
- "id": 2,
- "type": "SDParameterGenerator",
+ "id": 7,
+ "type": "CLIPTextEncode",
"pos": [
- 470,
+ 520,
+ 314
+ ],
+ "size": {
+ "0": 320,
+ "1": 54
+ },
+ "flags": {},
+ "order": 3,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "clip",
+ "type": "CLIP",
+ "link": 8,
+ "slot_index": 0
+ },
+ {
+ "name": "text",
+ "type": "STRING",
+ "link": 6,
+ "widget": {
+ "name": "text"
+ }
+ }
+ ],
+ "outputs": [
+ {
+ "name": "CONDITIONING",
+ "type": "CONDITIONING",
+ "links": [
+ 35
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "CLIPTextEncode"
+ },
+ "widgets_values": [
+ ""
+ ]
+ },
+ {
+ "id": 4,
+ "type": "KSamplerAdvanced",
+ "pos": [
+ 940,
130
],
"size": {
"0": 320,
- "1": 900
+ "1": 500
+ },
+ "flags": {},
+ "order": 5,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "model",
+ "type": "MODEL",
+ "link": 9
+ },
+ {
+ "name": "positive",
+ "type": "CONDITIONING",
+ "link": 36,
+ "slot_index": 1
+ },
+ {
+ "name": "negative",
+ "type": "CONDITIONING",
+ "link": 35
+ },
+ {
+ "name": "latent_image",
+ "type": "LATENT",
+ "link": 10
+ },
+ {
+ "name": "noise_seed",
+ "type": "INT",
+ "link": 11,
+ "widget": {
+ "name": "noise_seed"
+ },
+ "slot_index": 4
+ },
+ {
+ "name": "steps",
+ "type": "INT",
+ "link": 19,
+ "widget": {
+ "name": "steps"
+ }
+ },
+ {
+ "name": "cfg",
+ "type": "FLOAT",
+ "link": 20,
+ "widget": {
+ "name": "cfg"
+ },
+ "slot_index": 6
+ },
+ {
+ "name": "sampler_name",
+ "type": "COMBO",
+ "link": 17,
+ "widget": {
+ "name": "sampler_name"
+ }
+ },
+ {
+ "name": "scheduler",
+ "type": "COMBO",
+ "link": 18,
+ "widget": {
+ "name": "scheduler"
+ },
+ "slot_index": 8
+ }
+ ],
+ "outputs": [
+ {
+ "name": "LATENT",
+ "type": "LATENT",
+ "links": [
+ 13
+ ],
+ "shape": 3,
+ "slot_index": 0
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "KSamplerAdvanced"
+ },
+ "widgets_values": [
+ "enable",
+ 230662586134329,
+ "randomize",
+ 20,
+ 8,
+ "euler",
+ "normal",
+ 0,
+ 10000,
+ "disable"
+ ]
+ },
+ {
+ "id": 2,
+ "type": "SDParameterGenerator",
+ "pos": [
+ 100,
+ 1240
+ ],
+ "size": {
+ "0": 320,
+ "1": 970
},
"flags": {},
"order": 1,
@@ -589,54 +451,62 @@
"name": "MODEL_NAME",
"type": "COMBO",
"links": [
- 43
+ 39
],
"shape": 3,
"slot_index": 0
},
{
- "name": "MODEL",
- "type": "MODEL",
+ "name": "VAE_NAME",
+ "type": "COMBO",
"links": [
- 17
+ 40
],
"shape": 3,
"slot_index": 1
},
{
- "name": "CLIP",
- "type": "CLIP",
+ "name": "MODEL",
+ "type": "MODEL",
"links": [
- 20,
- 32
+ 9
],
"shape": 3,
"slot_index": 2
},
{
- "name": "VAE",
- "type": "VAE",
+ "name": "CLIP",
+ "type": "CLIP",
"links": [
- 21
+ 7,
+ 8
],
"shape": 3,
"slot_index": 3
},
+ {
+ "name": "VAE",
+ "type": "VAE",
+ "links": [
+ 12
+ ],
+ "shape": 3
+ },
{
"name": "SEED",
"type": "INT",
"links": [
- 24,
- 44
+ 11,
+ 30
],
- "shape": 3,
- "slot_index": 4
+ "shape": 3
},
{
"name": "STEPS",
"type": "INT",
"links": [],
- "shape": 3
+ "shape": 3,
+ "slot_index": 6
},
{
"name": "REFINER_START_STEP",
@@ -654,21 +524,21 @@
"name": "SAMPLER_NAME",
"type": "COMBO",
"links": [
- 15,
- 45
+ 17,
+ 28
],
"shape": 3,
- "slot_index": 8
+ "slot_index": 9
},
{
"name": "SCHEDULER",
"type": "COMBO",
"links": [
- 12,
- 46
+ 18,
+ 29
],
"shape": 3,
- "slot_index": 9
+ "slot_index": 10
},
{
"name": "POSITIVE_ASCORE",
@@ -685,31 +555,24 @@
{
"name": "WIDTH",
"type": "INT",
- "links": [
- 10,
- 47
- ],
+ "links": [],
"shape": 3,
- "slot_index": 12
+ "slot_index": 13
},
{
"name": "HEIGHT",
"type": "INT",
- "links": [
- 11,
- 48
- ],
- "shape": 3,
- "slot_index": 13
+ "links": [],
+ "shape": 3
},
{
"name": "BATCH_SIZE",
"type": "INT",
"links": [
- 9
+ 4
],
"shape": 3,
- "slot_index": 14
+ "slot_index": 15
},
{
"name": "PARAMETERS",
@@ -738,246 +601,423 @@
512,
512,
1,
- "Total steps: 30,\nRefiner off",
- "Optimal resolution for SDv1 512px model\nwith aspect ratio 1:1: 512 x 512",
- null,
"",
- ""
+ "",
+ null,
+ "Total steps: 30,\nRefiner off",
+ "Optimal resolution for SDv1 512px model\nwith aspect ratio 1:1: 512 x 512"
+ ]
+ },
+ {
+ "id": 3,
+ "type": "SDPromptSaver",
+ "pos": [
+ 1780,
+ 130
+ ],
+ "size": [
+ 320,
+ 560
+ ],
+ "flags": {},
+ "order": 7,
+ "mode": 0,
+ "inputs": [
+ {
+ "name": "images",
+ "type": "IMAGE",
+ "link": 14
+ },
+ {
+ "name": "lora_name",
+ "type": "*",
+ "link": null
+ },
+ {
+ "name": "model_name",
+ "type": "COMBO",
+ "link": 39,
+ "widget": {
+ "name": "model_name"
+ },
+ "slot_index": 2
+ },
+ {
+ "name": "vae_name",
+ "type": "COMBO",
+ "link": 40,
+ "widget": {
+ "name": "vae_name"
+ }
+ },
+ {
+ "name": "seed",
+ "type": "INT",
+ "link": 30,
+ "widget": {
+ "name": "seed"
+ },
+ "slot_index": 4
+ },
+ {
+ "name": "steps",
+ "type": "INT",
+ "link": 26,
+ "widget": {
+ "name": "steps"
+ },
+ "slot_index": 5
+ },
+ {
+ "name": "cfg",
+ "type": "FLOAT",
+ "link": 27,
+ "widget": {
+ "name": "cfg"
+ }
+ },
+ {
+ "name": "sampler_name",
+ "type": "COMBO",
+ "link": 28,
+ "widget": {
+ "name": "sampler_name"
+ },
+ "slot_index": 7
+ },
+ {
+ "name": "scheduler",
+ "type": "COMBO",
+ "link": 29,
+ "widget": {
+ "name": "scheduler"
+ }
+ },
+ {
+ "name": "width",
+ "type": "INT",
+ "link": 31,
+ "widget": {
+ "name": "width"
+ },
+ "slot_index": 9
+ },
+ {
+ "name": "height",
+ "type": "INT",
+ "link": 32,
+ "widget": {
+ "name": "height"
+ }
+ },
+ {
+ "name": "positive",
+ "type": "STRING",
+ "link": 23,
+ "widget": {
+ "name": "positive"
+ }
+ },
+ {
+ "name": "negative",
+ "type": "STRING",
+ "link": 24,
+ "widget": {
+ "name": "negative"
+ },
+ "slot_index": 12
+ }
+ ],
+ "outputs": [
+ {
+ "name": "FILENAME",
+ "type": "STRING",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "FILE_PATH",
+ "type": "STRING",
+ "links": null,
+ "shape": 3
+ },
+ {
+ "name": "METADATA",
+ "type": "STRING",
+ "links": null,
+ "shape": 3
+ }
+ ],
+ "properties": {
+ "Node name for S&R": "SDPromptSaver"
+ },
+ "widgets_values": [
+ "ComfyUI_%time_%seed_%counter",
+ "%date/",
+ "CheckpointYesmix_v35.safetensors",
+ "kl-f8-anime2.ckpt",
+ 408800844508233,
+ "randomize",
+ 20,
+ 8,
+ "euler",
+ "normal",
+ 1,
+ 1,
+ "",
+ "",
+ "png",
+ true,
+ true,
+ true,
+ 100,
+ "%Y-%m-%d",
+ "%H%M%S",
+ false,
+ "SD Prompt Reader Node Example Image"
]
}
],
"links": [
[
- 9,
- 2,
- 14,
4,
2,
- "INT"
- ],
- [
- 10,
- 2,
- 12,
- 4,
- 0,
- "INT"
- ],
- [
- 11,
- 2,
- 13,
- 4,
- 1,
- "INT"
- ],
- [
- 12,
- 2,
- 9,
- 8,
- 8,
- "COMBO"
- ],
- [
15,
+ 5,
2,
- 8,
- 8,
- 7,
- "COMBO"
+ "INT"
],
[
- 17,
- 2,
+ 5,
1,
+ 2,
+ 6,
+ 1,
+ "STRING"
+ ],
+ [
+ 6,
+ 1,
+ 3,
+ 7,
+ 1,
+ "STRING"
+ ],
+ [
+ 7,
+ 2,
+ 3,
+ 6,
+ 0,
+ "CLIP"
+ ],
+ [
8,
+ 2,
+ 3,
+ 7,
+ 0,
+ "CLIP"
+ ],
+ [
+ 9,
+ 2,
+ 2,
+ 4,
0,
"MODEL"
],
[
- 18,
- 7,
- 0,
- 8,
- 1,
- "CONDITIONING"
- ],
- [
- 20,
- 2,
- 2,
- 6,
- 0,
- "CLIP"
- ],
- [
- 21,
- 2,
- 3,
+ 10,
5,
+ 0,
+ 4,
+ 3,
+ "LATENT"
+ ],
+ [
+ 11,
+ 2,
+ 5,
+ 4,
+ 4,
+ "INT"
+ ],
+ [
+ 12,
+ 2,
+ 4,
+ 8,
1,
"VAE"
],
[
- 22,
- 8,
+ 13,
+ 4,
0,
- 5,
+ 8,
0,
"LATENT"
],
[
- 23,
- 4,
- 0,
+ 14,
8,
+ 0,
3,
- "LATENT"
- ],
- [
- 24,
- 2,
- 4,
- 8,
- 4,
- "INT"
- ],
- [
- 32,
- 2,
- 2,
- 7,
- 0,
- "CLIP"
- ],
- [
- 37,
- 9,
- 2,
- 7,
- 1,
- "STRING"
- ],
- [
- 38,
- 9,
- 3,
- 6,
- 1,
- "STRING"
- ],
- [
- 39,
- 6,
- 0,
- 8,
- 2,
- "CONDITIONING"
- ],
- [
- 42,
- 5,
- 0,
- 10,
0,
"IMAGE"
],
[
- 43,
+ 17,
+ 2,
+ 9,
+ 4,
+ 7,
+ "COMBO"
+ ],
+ [
+ 18,
+ 2,
+ 10,
+ 4,
+ 8,
+ "COMBO"
+ ],
+ [
+ 19,
+ 1,
+ 5,
+ 4,
+ 5,
+ "INT"
+ ],
+ [
+ 20,
+ 1,
+ 6,
+ 4,
+ 6,
+ "FLOAT"
+ ],
+ [
+ 21,
+ 1,
+ 7,
+ 5,
+ 0,
+ "INT"
+ ],
+ [
+ 22,
+ 1,
+ 8,
+ 5,
+ 1,
+ "INT"
+ ],
+ [
+ 23,
+ 1,
+ 2,
+ 3,
+ 11,
+ "STRING"
+ ],
+ [
+ 24,
+ 1,
+ 3,
+ 3,
+ 12,
+ "STRING"
+ ],
+ [
+ 26,
+ 1,
+ 5,
+ 3,
+ 5,
+ "INT"
+ ],
+ [
+ 27,
+ 1,
+ 6,
+ 3,
+ 6,
+ "FLOAT"
+ ],
+ [
+ 28,
+ 2,
+ 9,
+ 3,
+ 7,
+ "COMBO"
+ ],
+ [
+ 29,
+ 2,
+ 10,
+ 3,
+ 8,
+ "COMBO"
+ ],
+ [
+ 30,
+ 2,
+ 5,
+ 3,
+ 4,
+ "INT"
+ ],
+ [
+ 31,
+ 1,
+ 7,
+ 3,
+ 9,
+ "INT"
+ ],
+ [
+ 32,
+ 1,
+ 8,
+ 3,
+ 10,
+ "INT"
+ ],
+ [
+ 35,
+ 7,
+ 0,
+ 4,
+ 2,
+ "CONDITIONING"
+ ],
+ [
+ 36,
+ 6,
+ 0,
+ 4,
+ 1,
+ "CONDITIONING"
+ ],
+ [
+ 39,
2,
0,
- 10,
+ 3,
+ 2,
+ "COMBO"
+ ],
+ [
+ 40,
+ 2,
1,
- "COMBO"
- ],
- [
- 44,
- 2,
- 4,
- 10,
- 2,
- "INT"
- ],
- [
- 45,
- 2,
- 8,
- 10,
- 5,
- "COMBO"
- ],
- [
- 46,
- 2,
- 9,
- 10,
- 6,
- "COMBO"
- ],
- [
- 47,
- 2,
- 12,
- 10,
- 7,
- "INT"
- ],
- [
- 48,
- 2,
- 13,
- 10,
- 8,
- "INT"
- ],
- [
- 49,
- 9,
- 2,
- 10,
- 9,
- "STRING"
- ],
- [
- 50,
- 9,
3,
- 10,
- 10,
- "STRING"
- ],
- [
- 53,
- 9,
- 5,
- 8,
- 5,
- "INT"
- ],
- [
- 54,
- 9,
- 5,
- 10,
3,
- "INT"
- ],
- [
- 55,
- 9,
- 6,
- 8,
- 6,
- "FLOAT"
- ],
- [
- 56,
- 9,
- 6,
- 10,
- 4,
- "FLOAT"
+ "COMBO"
]
],
"groups": [],
diff --git a/workflows/simple_example.png b/workflows/simple_example.png
new file mode 100644
index 0000000..aee845f
Binary files /dev/null and b/workflows/simple_example.png differ