new list utility nodes (#13)
* add List-related nodes for Checkpoints / LoRAs / Samplers/ Schedulers * wiki: reorg XY Plot 3rd tutorial and add example * bump version
@@ -9,6 +9,6 @@
|
||||
|
||||
- [1 - the basics](./XY%20Plot/1%20-%20the%20basics/)
|
||||
- [2 - pimp my grid](./XY%20Plot/2%20-%20pimp%20my%20grid/)
|
||||
- [3 - advanced techniques](./XY%20Plot/3%20-%20advanced%20techniques/)
|
||||
- [3 - complex variations](./XY%20Plot/3%20-%20complex%20variations/)
|
||||
|
||||
**[Format](./Format/)**
|
||||
|
||||
@@ -138,11 +138,12 @@ That being said, I hope you have found these tutorials interesting and easy to f
|
||||
> [!NOTE]
|
||||
> If you have any suggestion to improve them (content, features, better English, shorter sentences, ...), feel free to open [an issue](https://github.com/bugltd/ComfyLab-Pack/issues), [a discussion](https://github.com/bugltd/ComfyLab-Pack/discussions), or even a Pull Request if you can.
|
||||
|
||||
Thank you for reading, and enjoy your beautiful grids my friends!
|
||||
Thank you for reading, and enjoy your beautiful grids!
|
||||
|
||||
## Going further (advanced)
|
||||
|
||||
These 2 tutorials are intended for a large audience, and to cover the most standard use cases.\
|
||||
These 2 tutorials are intended for a large audience, and to cover the most standard use cases.
|
||||
|
||||
But please note there are **many advanced techniques you can apply with ComfyLab XY Plot nodes**, for example:
|
||||
|
||||
- vary checkpoints, LoRA (any model in fact), ... virtually anything
|
||||
@@ -153,11 +154,11 @@ But please note there are **many advanced techniques you can apply with ComfyLab
|
||||
- with the [ComfyLab `Output Config` node](../../Output%20Config/)
|
||||
- ...
|
||||
|
||||
If you want to dive deeper, I propose we move to the **next (and last) tutorial of the XY Plot series: 3 - advanced techniques**.\
|
||||
But before doing that, please note:
|
||||
If you want to go deeper, we can now move to the **next tutorial of the XY Plot series: 3 - complex variations**.\
|
||||
It will show how you can vary many things like checkpoints / LoRAs / ..., and virtually any model or value in a combo widget, by using 3 methods:
|
||||
|
||||
- it addresses some edge cases that may not be needed for most
|
||||
- it is not as detailed as those 2 first tutorials, we'll go faster
|
||||
- if you haven't done it yet, I strongly advise you read the [XY Plot core concepts](../../../node%20reference/xy%20plot/0%20-%20core%20concepts.md): it's not long, and you may learn some important design choices there.
|
||||
- simple, with dedicated nodes for checkpoints / LoRAs / samplers / schedulers
|
||||
- versatile, that should adapt to any kind of model (or combo widget)
|
||||
- with the [`Output Config` node](../../Output%20Config/), to standardize your workflow and keep parameters separated
|
||||
|
||||
Interested? Let's go to the next tutorial: **[3 - advanced techniques](../3%20-%20advanced%20techniques/)**
|
||||
Interested? Let's go to the next tutorial: **[3 - complex variations](../3%20-%20complex%20variations/)**
|
||||
|
||||
@@ -1,139 +0,0 @@
|
||||
# Tutorials / XY Plot: 3 - advanced techniques
|
||||
|
||||
Welcome to this third (and last) tutorial of the XY Plot series!
|
||||
|
||||
Here we are going to see a few advanced techniques you may find useful.\
|
||||
Of course, I cannot anticipate all the use cases, but by following this tutorial, I hope you will see the versatility of the ComfyLab XY Plot nodes, and understand how to adapt for your scenario.\
|
||||
Here, no frills, we'll go straight to the point, to focus of the functionalities rather than fancy grid customization.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> If you haven't yet, it is recommended to follow (at least read) the first 2 tutorials ([1](../1%20-%20the%20basics/) & [2](../2%20-%20pimp%20my%20grid/)), and read the [XY Plot core concepts](../../../node%20reference/xy%20plot/0%20-%20core%20concepts.md).\
|
||||
> You will probably need them in this advanced tutorial.
|
||||
|
||||
Tutorial sections:
|
||||
|
||||
- [Part 1 - Various checkpoints (or LoRAs, ...)](#part-1---various-checkpoints-or-loras-)
|
||||
- [Part 2 - Various resolutions and aspect ratios](#part-2---various-resolutions-and-aspect-ratios)
|
||||
- [Part 3 - Using the Output Config node](#part-3---using-the-output-config-node)
|
||||
- [TL;DR / Conclusion](#tldr--conclusion)
|
||||
|
||||
> [!TIP]
|
||||
> As for all nodes in this extension, you can get useful contextual information, by just **moving the mouse pointer over a node or its inputs / widgets / outputs**. This should help you understand some details, without reading the more detailed wiki pages (yet).
|
||||
|
||||
And as always, if you do not want to follow all the steps, you can jump directly to [the conclusion](#tldr--conclusion).
|
||||
|
||||
---
|
||||
|
||||
## Part 1 - Various checkpoints (or LoRAs, ...)
|
||||
|
||||
**Load either `workflow - part 1.json` or `workflow - part 1.png` into ComfyUI.**\
|
||||
**Important:**
|
||||
|
||||
- in the first input list, adjust to checkpoints that are available in your ComfyUI instance
|
||||
- do no add the `.safetensors` extension, it will be added automatically
|
||||
|
||||
Execute the workflow.
|
||||
|
||||

|
||||
|
||||
Here we build a grid with 2 different checkpoints, vs a list of predefined seeds.
|
||||
|
||||
What should be noticed:
|
||||
|
||||
<ins>Checkpoints:</ins>
|
||||
|
||||
- we have chosen not to include the `.safetensors` extension in the input
|
||||
- it would have been displayed in the row headers, making them too long
|
||||
- instead, we have used a `Format: String` node, to append `.safetensors` to the `dim1 value` output of the `Queue` node
|
||||
- but by simply doing so, we cannot pipe the text output to the `Load Checkpoint` node, why?
|
||||
- the `chkpt_name` widget does not accept any string, but a string that exists in the list
|
||||
- so to bypass this limitation we simply convert the text output to Any, thanks to the `Convert to Any` node
|
||||
- 
|
||||
|
||||
> [!NOTE]
|
||||
> You can read more about the Any output in the [XY Plot core concepts](../../../node%20reference/xy%20plot/0%20-%20core%20concepts.md), and the [2nd tutorial of the `Output Config` node](../../Output%20Config/2%20-%20more%20options)
|
||||
|
||||
<ins>Seeds:</ins>
|
||||
|
||||
- theoritically, we should have converted the list values to integers, thanks to the `convert` combo widget
|
||||
- but it also works (for seeds only AFAIK)
|
||||
|
||||
### Lessons learned
|
||||
|
||||
- combo widgets (as `chkpt_name` in `Load Checkpoint`) do not accept simple strings
|
||||
- a workaround is to use an output with type Any (`"*"`)
|
||||
- should we have included the `.safetensors` in the first input, we could have dropped the `Format: String` and `Convert to Any` node, because the type of `Queue` outputs is Any
|
||||
- but this wouldn't be great in terms of display in the grid
|
||||
- the checkpoint list is connected to `dim1`, not `dim2`, for a performance reason
|
||||
- if you want: just switch dim1 / dim2 and check the processing time _(more in the [core concepts page](../../../node%20reference/xy%20plot/0%20-%20core%20concepts.md))_
|
||||
|
||||
> [!TIP]
|
||||
> You can basically use this approach for any combo widget, in particular when loading models (LoRA, ...).\
|
||||
> But be **very cautious** about the values you set in input: by using the Any type, we bypass the standard ComfyUI type checks, so the workflow may fail if the values are incorrect.
|
||||
|
||||
### Variant: Random seeds
|
||||
|
||||
Instead of fixed seeds, if you prefer to have a new random set of seeds each time you generate the grid, just replace the `List: ftom Multiline` node with `List: Random Seeds`.
|
||||
|
||||
## Part 2 - Various resolutions and aspect ratios
|
||||
|
||||
**Load either `workflow - part 2.json` or `workflow - part 2.png` into ComfyUI.**\
|
||||
Adjust the checkpoint to one available in your ComfyUI instance.\
|
||||
Execute the workflow.
|
||||
|
||||

|
||||
|
||||
What we did:
|
||||
|
||||
- include the ComfyLab `Resolution to Dimensions` node, to split the first input (`1024 x 1024`, ...) into width and height, piped into `Empty Latent Image`
|
||||
- we could have done this differently, I chose this method as it is straightforward in this case
|
||||
- we also used a 2nd input list to set rotations, piped into the `rotation` input of `Rotate Latent`
|
||||
- remember, we can do that because the `Queue` outputs are of type Any
|
||||
|
||||
While probably not the most useful as such, this example demonstrates **the ability of the ComfyLab XY Plot to handle various resolutions or aspect ratios within the same grid**.
|
||||
|
||||
## Part 3 - Using the Output Config node
|
||||
|
||||
Here the workflow is similar to [Part1](#part-1---various-checkpoints-or-loras-), except that we use the `Output Config` node, to simplify and standardize our workflow.
|
||||
|
||||
**Load either `workflow - part 3.json` or `workflow - part 3.png` into ComfyUI.**\
|
||||
**Copy one of the `output config - part 3.*` file, adjust the checkpoints to your env, and load it into the `Output Config` node.**
|
||||
|
||||
- you should get outputs like this (more than the 4 displayed here):
|
||||
- 
|
||||
|
||||
Execute the workflow.
|
||||
|
||||

|
||||
|
||||
As expected, we have strictly the same results as in [Part 1](#part-1---various-checkpoints-or-loras-).
|
||||
|
||||
What should be noticed:
|
||||
|
||||
- the output config file is available in 3 different formats: JSON, JSON5 and YAML
|
||||
- we replaced the input lists by a single `Output Config` node
|
||||
- we also added more outputs to the config file: CFG, steps, sampler, ... quite a lot indeed
|
||||
- of course, we could have used 2 different `Output Config` nodes, one for the XY Plot itself, and another one for the other values: it's up to you to define how you want to standardize your configs
|
||||
- note how the `Output Config` node auto-detects the type from output values:
|
||||
- for example, `cfg` is written without quotes, so it's detected as a string
|
||||
- but for more combo widgets (sampler, scheduler), we have to force type to be Any (`*`)
|
||||
|
||||
> [!TIP]
|
||||
> We won't go into details here about the configuration file itself, but you can find more information in the corresponding [node reference](../../../node%20reference/output%20config.md) and the [dedicated tutorials](../../../tutorials/Output%20Config/).
|
||||
|
||||
## TL;DR / Conclusion
|
||||
|
||||
In this tutorial, we have:
|
||||
|
||||
- seen how to handle various checkpoints (or virtually any sort of model)
|
||||
- and optimized the grid display at the same time
|
||||
- demonstrated the ability of the XY Plot to include images or various dimensions / apect ratios within the same grid
|
||||
- shown how we can use the `Output Config` node, to keep a collection of configs, while standardizing our workflow
|
||||
|
||||
This tutorial is still in construction, so I will certainly add most techniques in the future, be sure to check.
|
||||
|
||||
Also, you will find [various examples](../../../examples/) in the wiki (with less explanations).
|
||||
|
||||
In the meantime, if you have any suggestion, feel free to open [a discussion](https://github.com/bugltd/ComfyLab-Pack/discussions).
|
||||
|
||||
Thank you for reading, enjoy!
|
||||
|
Before Width: | Height: | Size: 103 KiB |
|
Before Width: | Height: | Size: 389 KiB |
|
Before Width: | Height: | Size: 382 KiB |
@@ -0,0 +1,145 @@
|
||||
# Tutorials / XY Plot: 3 - Complex variations
|
||||
|
||||
Welcome to this third tutorial of the XY Plot series!
|
||||
|
||||
Here we are going to see a few advanced techniques, to make virtually anything vary, for example models or any value in a combo widget.\
|
||||
To achieve that, we will use 3 different methods:
|
||||
|
||||
- simple: with dedicated nodes, for checkpoints / LoRAs / samplers / schedulers
|
||||
- versatile: adaptable to any kind of model (or combo widget)
|
||||
- with the [`Output Config`](../../Output%20Config/) node: to standardize your workflow, and keep parameters separated
|
||||
|
||||
Each of these approaches will generate the same results: depending on your specifity, pick the one that matches your specific needs.
|
||||
|
||||
> [!TIP]
|
||||
> In the following, we vary checkpoints vs a fixed list of seeds.
|
||||
> If you prefer to have a new set of **random seeds** each time you generate the grid, just replace the corresponding `List: ftom Multiline` node with `List: Random Seeds`.
|
||||
|
||||
Tutorial sections:
|
||||
|
||||
- [Expected results](#expected-results)
|
||||
- [Part 1 - Simple: with a dedicated node (for checkpoints, LoRAs, samplers, schedulers)](#part-1---simple-with-a-dedicated-node-for-checkpoints-loras-samplers-schedulers)
|
||||
- [Part 2 - Versatile: any model (or combo widget)](#part-2---versatile-any-model-or-combo-widget)
|
||||
- [Part 3 - With the `Output Config` node](#part-3---with-the-output-config-node)
|
||||
- [TL;DR / Conclusion](#tldr--conclusion)
|
||||
|
||||
And as always, if you do not want to follow all the steps, you can jump directly to [the conclusion](#tldr--conclusion).
|
||||
|
||||
---
|
||||
|
||||
## Expected results
|
||||
|
||||
If you use the exact same parameters:
|
||||
|
||||
- checkpoints: `sd_xl_base_1.0`, `Juggernaut-XI-byRunDiffusion`
|
||||
- seeds: `156680208700286`, `715168739510668`, `568208062071311`
|
||||
|
||||
You should get the same result:\
|
||||

|
||||
|
||||
## Part 1 - Simple: with a dedicated node (for checkpoints, LoRAs, samplers, schedulers)
|
||||
|
||||
> [!TIP]
|
||||
> Here we use the `List: Checkpoints` node, that allows to select any number of checkpoints (from your ComfyUI `models/checkpoints` folder), and get a list of file names.\
|
||||
> Similar nodes exist for: LoRAs, samplers, schedulers.
|
||||
|
||||
**Load either `workflow - part 1.json` or `workflow - part 1.png` into ComfyUI.**\
|
||||
**Important:**
|
||||
|
||||
- in the `List: Checkpoints` node, select a few checkpoints from your env
|
||||
- in the example, I use SDXL 1.0 and Juggernaut XL v11
|
||||
- ensure the widget `with file extension?` is unchecked, as we will add the extension later
|
||||
|
||||
Execute the workflow.
|
||||
|
||||
### What should be noticed
|
||||
|
||||
> [!NOTE]
|
||||
> we have chosen to not include the `.safetensors` extension in the input: it would have been displayed in the row headers, making them too long. Of course, you can keep it, and skip the following.
|
||||
|
||||
To append the `.safetensors` extension:
|
||||
|
||||
- we use a `Format: String` node, to add the extension to the `dim1 value` output of the `Queue` node
|
||||
- but by simply doing so, we cannot pipe the text output to the `Load Checkpoint` node, why?
|
||||
- the `chkpt_name` widget does not accept any string, but a string that exists in the list
|
||||
- so to bypass this limitation we simply convert the text output to Any, thanks to the `Convert to Any` node
|
||||
- 
|
||||
|
||||
> [!NOTE]
|
||||
> You can read more about the Any output in the [XY Plot core concepts](../../../node%20reference/xy%20plot/0%20-%20core%20concepts.md), and the [2nd tutorial of the `Output Config` node](../../Output%20Config/2%20-%20more%20options/)
|
||||
|
||||
### Lessons learned
|
||||
|
||||
- combo widgets (as `chkpt_name` in `Load Checkpoint`) do not accept simple strings
|
||||
- a workaround is to use an output with type Any (`"*"`)
|
||||
- should we have included the `.safetensors` in the first input, we could have dropped the `Format: String` and `Convert to Any` nodes, because the `XY Plot: Queue` outputs are themselves of type Any
|
||||
- but this wouldn't be great in terms of display in the grid
|
||||
- the checkpoint list is connected to `dim1`, not `dim2`, for a performance reason
|
||||
- for the test: just switch dim1 / dim2 and check the processing time _(more in the [core concepts page](../../../node%20reference/xy%20plot/0%20-%20core%20concepts.md))_
|
||||
|
||||
## Part 2 - Versatile: any model (or combo widget)
|
||||
|
||||
While it is usually simpler to use the `List` nodes dedicated to checkpoints / LoRAs / samplers / schedulers, there are some cases where we need to use a more versatile approach:
|
||||
|
||||
- we want to vary another type of model / value from a combo widget
|
||||
- we have stored the list as a separate text file (e.g. test case), and prefer to re-use it, rather than manually selecting the values
|
||||
|
||||
This short part will cover exactly that, to show how you can adapt the XY Plot to many specific cases.
|
||||
|
||||
**Load either `workflow - part 2.json` or `workflow - part 2.png` into ComfyUI.**\
|
||||
**Important:**
|
||||
|
||||
- in the first input list, adjust to checkpoints that are available in your ComfyUI instance
|
||||
- do no add the `.safetensors` extension, it will be added automatically
|
||||
|
||||
Execute the workflow.
|
||||
|
||||
### Lessons learned
|
||||
|
||||
By using a `List: String` or `List: Multiline`, we can basically send any value, as long as we ensure it matches the destinastion widget.\
|
||||
You can use this approach for any combo widget, in particular when loading models, or any value in a combo widget.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> Be **very cautious** about the values you set in input: by using the Any type, we bypass the standard ComfyUI type checks, so the workflow may fail if the values are incorrect.
|
||||
|
||||
## Part 3 - With the `Output Config` node
|
||||
|
||||
Here we use the ComfyLab [`Output Config`](../../../node%20reference/output%20config.md) node, to keep our workflow and values separated.
|
||||
|
||||
**Load either `workflow - part 3.json` or `workflow - part 3.png` into ComfyUI.**\
|
||||
**Copy one of the `output config - part 3.*` files, adjust the checkpoints to your env, and load it into the `Output Config` node.**
|
||||
|
||||
- you should get outputs like this (more than the 4 displayed here):
|
||||
- 
|
||||
|
||||
Execute the workflow.
|
||||
|
||||
As expected, we have strictly the same results as in [Part1](#part-1---simple-with-a-dedicated-node-for-checkpoints-loras-samplers-schedulers) and [Part 2](#part-2---versatile-any-model-or-combo-widget).
|
||||
|
||||
### What should be noticed
|
||||
|
||||
- the output config file is available in 3 different formats: JSON, JSON5 and YAML
|
||||
- we have replaced the input lists by a single `Output Config` node
|
||||
- we've also added more outputs to the config file: CFG, steps, sampler, ... quite a lot indeed
|
||||
- of course, we could have used 2 different `Output Config` nodes, one for the XY Plot itself, and another one for the other values: it's up to you to define how you want to standardize your configs
|
||||
- note how the `Output Config` node auto-detects the type from output values:
|
||||
- for example, `cfg` is written without quotes, so it's detected as a float
|
||||
- but for combo widgets (sampler, scheduler), we have to force type to be Any (`*`)
|
||||
|
||||
> [!TIP]
|
||||
> We won't go into details here about the configuration file itself, but you can find more information in the corresponding [node reference](../../../node%20reference/output%20config.md) and the [dedicated tutorials](../../../tutorials/Output%20Config/).
|
||||
|
||||
## TL;DR / Conclusion
|
||||
|
||||
In this tutorial, we have covered 3 different methods to vary checkpoints (or many other things):
|
||||
|
||||
- simple one, using a dedicated node: applicable to checkpoints, LoRAs, samplers, schedulers
|
||||
- a more versatile one, that should adapt to many of your use cases: use a `List: from String` or `List: from Multiline`
|
||||
- one using the `Output Config` node, to standardize your workflow and keep the values separated
|
||||
|
||||
> [!TIP]
|
||||
> You can find [more examples](../../../examples/) in the wiki.
|
||||
|
||||
If you have any suggestion on how to improve this wiki, feel free to open [a discussion](https://github.com/bugltd/ComfyLab-Pack/discussions).
|
||||
|
||||
Thank you for reading, enjoy!
|
||||
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 139 KiB After Width: | Height: | Size: 139 KiB |
@@ -1,4 +1,4 @@
|
||||
# Tutorials / XY Plot / 3 - Advanced techniques / Part 3
|
||||
# Tutorials / XY Plot / 3 - Complex variations / Part 3
|
||||
# more details about the config format in the Output Config node reference and tutorials
|
||||
checkpoints:
|
||||
value:
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Tutorials / XY Plot / 3 - Advanced techniques / Part 3
|
||||
Tutorials / XY Plot / 3 - Complex variations / Part 3
|
||||
more details about the config format in the Output Config node reference and tutorials
|
||||
*/
|
||||
{
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"last_node_id": 20,
|
||||
"last_link_id": 22,
|
||||
"last_node_id": 21,
|
||||
"last_link_id": 23,
|
||||
"nodes": [
|
||||
{
|
||||
"id": 7,
|
||||
@@ -305,49 +305,6 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"type": "ListFromMultiline",
|
||||
"pos": [
|
||||
-240,
|
||||
180
|
||||
],
|
||||
"size": [
|
||||
290,
|
||||
200
|
||||
],
|
||||
"flags": {},
|
||||
"order": 1,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "list",
|
||||
"type": "LIST",
|
||||
"links": [
|
||||
18
|
||||
],
|
||||
"slot_index": 0,
|
||||
"shape": 6
|
||||
},
|
||||
{
|
||||
"name": "count",
|
||||
"type": "INT",
|
||||
"links": null
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"Node name for S&R": "ListFromMultiline"
|
||||
},
|
||||
"widgets_values": [
|
||||
0,
|
||||
true,
|
||||
"disabled",
|
||||
"# here we list seed values\n156680208700286\n715168739510668\n568208062071311"
|
||||
],
|
||||
"color": "#232",
|
||||
"bgcolor": "#353"
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"type": "PreviewImage",
|
||||
@@ -460,49 +417,6 @@
|
||||
"color": "#2a363b",
|
||||
"bgcolor": "#3f5159"
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"type": "ListFromMultiline",
|
||||
"pos": [
|
||||
-430,
|
||||
-100
|
||||
],
|
||||
"size": [
|
||||
470,
|
||||
200
|
||||
],
|
||||
"flags": {},
|
||||
"order": 2,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "list",
|
||||
"type": "LIST",
|
||||
"links": [
|
||||
15
|
||||
],
|
||||
"slot_index": 0,
|
||||
"shape": 6
|
||||
},
|
||||
{
|
||||
"name": "count",
|
||||
"type": "INT",
|
||||
"links": null
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"Node name for S&R": "ListFromMultiline"
|
||||
},
|
||||
"widgets_values": [
|
||||
0,
|
||||
true,
|
||||
"disabled",
|
||||
"# here we list the checkpoints\n# do not add the '.safetensors' extension, it will be appended later\nsd_xl_base_1.0\nJuggernaut-XI-byRunDiffusion"
|
||||
],
|
||||
"color": "#232",
|
||||
"bgcolor": "#353"
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"type": "XYPlotQueue",
|
||||
@@ -521,7 +435,7 @@
|
||||
{
|
||||
"name": "dim1",
|
||||
"type": "LIST",
|
||||
"link": 15,
|
||||
"link": 23,
|
||||
"shape": 6
|
||||
},
|
||||
{
|
||||
@@ -652,6 +566,96 @@
|
||||
],
|
||||
"color": "#2a363b",
|
||||
"bgcolor": "#3f5159"
|
||||
},
|
||||
{
|
||||
"id": 21,
|
||||
"type": "ListCheckpoints",
|
||||
"pos": [
|
||||
-280,
|
||||
-110
|
||||
],
|
||||
"size": [
|
||||
315,
|
||||
126
|
||||
],
|
||||
"flags": {},
|
||||
"order": 1,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "list",
|
||||
"type": "LIST",
|
||||
"links": [
|
||||
23
|
||||
],
|
||||
"slot_index": 0,
|
||||
"shape": 6
|
||||
},
|
||||
{
|
||||
"name": "count",
|
||||
"type": "INT",
|
||||
"links": null
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"Node name for S&R": "ListCheckpoints"
|
||||
},
|
||||
"widgets_values": [
|
||||
{
|
||||
"selected": [
|
||||
"sd_xl_base_1.0.safetensors"
|
||||
]
|
||||
},
|
||||
false,
|
||||
"sd_xl_base_1.0.safetensors",
|
||||
"none"
|
||||
],
|
||||
"color": "#232",
|
||||
"bgcolor": "#353"
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"type": "ListFromMultiline",
|
||||
"pos": [
|
||||
-240,
|
||||
180
|
||||
],
|
||||
"size": [
|
||||
290,
|
||||
200
|
||||
],
|
||||
"flags": {},
|
||||
"order": 2,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "list",
|
||||
"type": "LIST",
|
||||
"links": [
|
||||
18
|
||||
],
|
||||
"slot_index": 0,
|
||||
"shape": 6
|
||||
},
|
||||
{
|
||||
"name": "count",
|
||||
"type": "INT",
|
||||
"links": null
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"Node name for S&R": "ListFromMultiline"
|
||||
},
|
||||
"widgets_values": [
|
||||
0,
|
||||
true,
|
||||
"integer",
|
||||
"# here we list seed values\n156680208700286\n715168739510668\n568208062071311"
|
||||
],
|
||||
"color": "#232",
|
||||
"bgcolor": "#353"
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
@@ -751,14 +755,6 @@
|
||||
0,
|
||||
"XY_PLOT_DATA"
|
||||
],
|
||||
[
|
||||
15,
|
||||
14,
|
||||
0,
|
||||
13,
|
||||
0,
|
||||
"LIST"
|
||||
],
|
||||
[
|
||||
18,
|
||||
15,
|
||||
@@ -798,21 +794,29 @@
|
||||
3,
|
||||
4,
|
||||
"INT"
|
||||
],
|
||||
[
|
||||
23,
|
||||
21,
|
||||
0,
|
||||
13,
|
||||
0,
|
||||
"LIST"
|
||||
]
|
||||
],
|
||||
"groups": [],
|
||||
"config": {},
|
||||
"extra": {
|
||||
"ds": {
|
||||
"scale": 1.1000000000000003,
|
||||
"scale": 1,
|
||||
"offset": [
|
||||
478.0620672954512,
|
||||
266.4479981606637
|
||||
564,
|
||||
126
|
||||
]
|
||||
},
|
||||
"node_versions": {
|
||||
"comfy-core": "0.3.10",
|
||||
"ComfyLab-Pack": "1985411cc05fb8b6faa361d2fc18c3d867e9bdb5"
|
||||
"ComfyLab-Pack": "4fe6425c10985b88586d861d8d5e45b62b8cd1fa"
|
||||
}
|
||||
},
|
||||
"version": 0.4
|
||||
|
After Width: | Height: | Size: 377 KiB |
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"last_node_id": 22,
|
||||
"last_link_id": 31,
|
||||
"last_node_id": 20,
|
||||
"last_link_id": 22,
|
||||
"nodes": [
|
||||
{
|
||||
"id": 7,
|
||||
@@ -14,7 +14,7 @@
|
||||
180.6060791015625
|
||||
],
|
||||
"flags": {},
|
||||
"order": 4,
|
||||
"order": 8,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
@@ -40,6 +40,64 @@
|
||||
"text, watermark"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"type": "CheckpointLoaderSimple",
|
||||
"pos": [
|
||||
26,
|
||||
474
|
||||
],
|
||||
"size": [
|
||||
315,
|
||||
98
|
||||
],
|
||||
"flags": {},
|
||||
"order": 6,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "ckpt_name",
|
||||
"type": "COMBO",
|
||||
"link": 21,
|
||||
"widget": {
|
||||
"name": "ckpt_name"
|
||||
}
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "MODEL",
|
||||
"type": "MODEL",
|
||||
"links": [
|
||||
1
|
||||
],
|
||||
"slot_index": 0
|
||||
},
|
||||
{
|
||||
"name": "CLIP",
|
||||
"type": "CLIP",
|
||||
"links": [
|
||||
3,
|
||||
5
|
||||
],
|
||||
"slot_index": 1
|
||||
},
|
||||
{
|
||||
"name": "VAE",
|
||||
"type": "VAE",
|
||||
"links": [
|
||||
8
|
||||
],
|
||||
"slot_index": 2
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"Node name for S&R": "CheckpointLoaderSimple"
|
||||
},
|
||||
"widgets_values": [
|
||||
"v1-5-pruned-emaonly.ckpt"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"type": "VAEDecode",
|
||||
@@ -120,7 +178,7 @@
|
||||
164.31304931640625
|
||||
],
|
||||
"flags": {},
|
||||
"order": 3,
|
||||
"order": 7,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
@@ -146,55 +204,6 @@
|
||||
"beautiful scenery nature glass bottle landscape, , purple galaxy bottle,"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"type": "CheckpointLoaderSimple",
|
||||
"pos": [
|
||||
26,
|
||||
474
|
||||
],
|
||||
"size": [
|
||||
315,
|
||||
98
|
||||
],
|
||||
"flags": {},
|
||||
"order": 0,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "MODEL",
|
||||
"type": "MODEL",
|
||||
"links": [
|
||||
1
|
||||
],
|
||||
"slot_index": 0
|
||||
},
|
||||
{
|
||||
"name": "CLIP",
|
||||
"type": "CLIP",
|
||||
"links": [
|
||||
3,
|
||||
5
|
||||
],
|
||||
"slot_index": 1
|
||||
},
|
||||
{
|
||||
"name": "VAE",
|
||||
"type": "VAE",
|
||||
"links": [
|
||||
8
|
||||
],
|
||||
"slot_index": 2
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"Node name for S&R": "CheckpointLoaderSimple"
|
||||
},
|
||||
"widgets_values": [
|
||||
"sd_xl_base_1.0.safetensors"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"type": "KSampler",
|
||||
@@ -228,7 +237,15 @@
|
||||
{
|
||||
"name": "latent_image",
|
||||
"type": "LATENT",
|
||||
"link": 26
|
||||
"link": 2
|
||||
},
|
||||
{
|
||||
"name": "seed",
|
||||
"type": "INT",
|
||||
"link": 22,
|
||||
"widget": {
|
||||
"name": "seed"
|
||||
}
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
@@ -245,7 +262,7 @@
|
||||
"Node name for S&R": "KSampler"
|
||||
},
|
||||
"widgets_values": [
|
||||
134178653729123,
|
||||
440313153020244,
|
||||
"randomize",
|
||||
20,
|
||||
8,
|
||||
@@ -254,139 +271,27 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"type": "ListFromMultiline",
|
||||
"pos": [
|
||||
-410,
|
||||
160
|
||||
],
|
||||
"size": [
|
||||
218.39999389648438,
|
||||
220
|
||||
],
|
||||
"flags": {},
|
||||
"order": 1,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "list",
|
||||
"type": "LIST",
|
||||
"links": [
|
||||
18
|
||||
],
|
||||
"slot_index": 0,
|
||||
"shape": 6
|
||||
},
|
||||
{
|
||||
"name": "count",
|
||||
"type": "INT",
|
||||
"links": null
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"Node name for S&R": "ListFromMultiline"
|
||||
},
|
||||
"widgets_values": [
|
||||
0,
|
||||
true,
|
||||
"disabled",
|
||||
"# rotations\nnone\n90 degrees"
|
||||
],
|
||||
"color": "#232",
|
||||
"bgcolor": "#353"
|
||||
},
|
||||
{
|
||||
"id": 22,
|
||||
"type": "ResolutionToDims",
|
||||
"pos": [
|
||||
190,
|
||||
-110
|
||||
],
|
||||
"size": [
|
||||
252,
|
||||
102
|
||||
],
|
||||
"flags": {},
|
||||
"order": 6,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "resolution",
|
||||
"type": "STRING",
|
||||
"link": 29,
|
||||
"widget": {
|
||||
"name": "resolution"
|
||||
}
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "width",
|
||||
"type": "INT",
|
||||
"links": [
|
||||
30
|
||||
],
|
||||
"slot_index": 0
|
||||
},
|
||||
{
|
||||
"name": "height",
|
||||
"type": "INT",
|
||||
"links": [
|
||||
31
|
||||
],
|
||||
"slot_index": 1
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"Node name for S&R": "ResolutionToDims"
|
||||
},
|
||||
"widgets_values": [
|
||||
"1024x1024",
|
||||
1
|
||||
],
|
||||
"color": "#2a363b",
|
||||
"bgcolor": "#3f5159"
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"type": "EmptyLatentImage",
|
||||
"pos": [
|
||||
500,
|
||||
-10
|
||||
473,
|
||||
609
|
||||
],
|
||||
"size": [
|
||||
315,
|
||||
106
|
||||
],
|
||||
"flags": {},
|
||||
"order": 7,
|
||||
"order": 0,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "width",
|
||||
"type": "INT",
|
||||
"link": 30,
|
||||
"widget": {
|
||||
"name": "width"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "height",
|
||||
"type": "INT",
|
||||
"link": 31,
|
||||
"widget": {
|
||||
"name": "height"
|
||||
}
|
||||
}
|
||||
],
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "LATENT",
|
||||
"type": "LATENT",
|
||||
"links": [
|
||||
25
|
||||
2
|
||||
],
|
||||
"slot_index": 0
|
||||
}
|
||||
@@ -400,52 +305,6 @@
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 21,
|
||||
"type": "LatentRotate",
|
||||
"pos": [
|
||||
860,
|
||||
10
|
||||
],
|
||||
"size": [
|
||||
210,
|
||||
70
|
||||
],
|
||||
"flags": {},
|
||||
"order": 8,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "samples",
|
||||
"type": "LATENT",
|
||||
"link": 25
|
||||
},
|
||||
{
|
||||
"name": "rotation",
|
||||
"type": "COMBO",
|
||||
"link": 28,
|
||||
"widget": {
|
||||
"name": "rotation"
|
||||
}
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "LATENT",
|
||||
"type": "LATENT",
|
||||
"links": [
|
||||
26
|
||||
],
|
||||
"slot_index": 0
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"Node name for S&R": "LatentRotate"
|
||||
},
|
||||
"widgets_values": [
|
||||
"none"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"type": "PreviewImage",
|
||||
@@ -454,8 +313,8 @@
|
||||
180
|
||||
],
|
||||
"size": [
|
||||
720,
|
||||
640
|
||||
440,
|
||||
320
|
||||
],
|
||||
"flags": {},
|
||||
"order": 12,
|
||||
@@ -474,61 +333,103 @@
|
||||
"widgets_values": []
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"type": "ListFromMultiline",
|
||||
"id": 20,
|
||||
"type": "FormatString",
|
||||
"pos": [
|
||||
-410,
|
||||
-110
|
||||
470,
|
||||
-100
|
||||
],
|
||||
"size": [
|
||||
220,
|
||||
210
|
||||
210,
|
||||
78
|
||||
],
|
||||
"flags": {},
|
||||
"order": 2,
|
||||
"order": 4,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
"inputs": [
|
||||
{
|
||||
"name": "list",
|
||||
"type": "LIST",
|
||||
"links": [
|
||||
15
|
||||
],
|
||||
"slot_index": 0,
|
||||
"shape": 6
|
||||
"name": "arg0",
|
||||
"type": "STRING,INT,FLOAT,BOOLEAN",
|
||||
"link": 19,
|
||||
"label": "arg0"
|
||||
},
|
||||
{
|
||||
"name": "count",
|
||||
"type": "INT",
|
||||
"links": null
|
||||
"name": "arg1",
|
||||
"type": "STRING,INT,FLOAT,BOOLEAN",
|
||||
"link": null
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "formatted",
|
||||
"type": "STRING",
|
||||
"links": [
|
||||
20
|
||||
],
|
||||
"slot_index": 0
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"Node name for S&R": "ListFromMultiline"
|
||||
"Node name for S&R": "FormatString"
|
||||
},
|
||||
"widgets_values": [
|
||||
0,
|
||||
true,
|
||||
"disabled",
|
||||
"# image dimensions\n1024 x 1024\n896 x 1152\n1216 x 832"
|
||||
"{arg0}.safetensors"
|
||||
],
|
||||
"color": "#232",
|
||||
"bgcolor": "#353"
|
||||
"color": "#2a363b",
|
||||
"bgcolor": "#3f5159"
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"type": "ConvertToAny",
|
||||
"pos": [
|
||||
730,
|
||||
-100
|
||||
],
|
||||
"size": [
|
||||
168,
|
||||
26
|
||||
],
|
||||
"flags": {},
|
||||
"order": 5,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "value",
|
||||
"type": "*",
|
||||
"link": 20
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "value_any",
|
||||
"type": "*",
|
||||
"links": [
|
||||
21
|
||||
],
|
||||
"slot_index": 0,
|
||||
"label": "value (Any)"
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"Node name for S&R": "ConvertToAny"
|
||||
},
|
||||
"widgets_values": [],
|
||||
"color": "#2a363b",
|
||||
"bgcolor": "#3f5159"
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"type": "XYPlotQueue",
|
||||
"pos": [
|
||||
-150,
|
||||
-100
|
||||
110,
|
||||
-120
|
||||
],
|
||||
"size": [
|
||||
315,
|
||||
146
|
||||
],
|
||||
"flags": {},
|
||||
"order": 5,
|
||||
"order": 3,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
@@ -561,7 +462,7 @@
|
||||
"name": "dim1_value",
|
||||
"type": "*",
|
||||
"links": [
|
||||
29
|
||||
19
|
||||
],
|
||||
"slot_index": 1,
|
||||
"label": "dim1 value"
|
||||
@@ -570,7 +471,7 @@
|
||||
"name": "dim2_value",
|
||||
"type": "*",
|
||||
"links": [
|
||||
28
|
||||
22
|
||||
],
|
||||
"slot_index": 2,
|
||||
"label": "dim2 value"
|
||||
@@ -661,10 +562,96 @@
|
||||
"widgets_values": [
|
||||
"{dim1}",
|
||||
"{dim2}",
|
||||
false
|
||||
true
|
||||
],
|
||||
"color": "#2a363b",
|
||||
"bgcolor": "#3f5159"
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"type": "ListFromMultiline",
|
||||
"pos": [
|
||||
-430,
|
||||
-100
|
||||
],
|
||||
"size": [
|
||||
470,
|
||||
200
|
||||
],
|
||||
"flags": {},
|
||||
"order": 1,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "list",
|
||||
"type": "LIST",
|
||||
"links": [
|
||||
15
|
||||
],
|
||||
"slot_index": 0,
|
||||
"shape": 6
|
||||
},
|
||||
{
|
||||
"name": "count",
|
||||
"type": "INT",
|
||||
"links": null
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"Node name for S&R": "ListFromMultiline"
|
||||
},
|
||||
"widgets_values": [
|
||||
0,
|
||||
true,
|
||||
"disabled",
|
||||
"# here we list the checkpoints\n# do not add the '.safetensors' extension, it will be appended later\nsd_xl_base_1.0\nJuggernaut-XI-byRunDiffusion"
|
||||
],
|
||||
"color": "#232",
|
||||
"bgcolor": "#353"
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"type": "ListFromMultiline",
|
||||
"pos": [
|
||||
-240,
|
||||
180
|
||||
],
|
||||
"size": [
|
||||
290,
|
||||
200
|
||||
],
|
||||
"flags": {},
|
||||
"order": 2,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "list",
|
||||
"type": "LIST",
|
||||
"links": [
|
||||
18
|
||||
],
|
||||
"slot_index": 0,
|
||||
"shape": 6
|
||||
},
|
||||
{
|
||||
"name": "count",
|
||||
"type": "INT",
|
||||
"links": null
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"Node name for S&R": "ListFromMultiline"
|
||||
},
|
||||
"widgets_values": [
|
||||
0,
|
||||
true,
|
||||
"integer",
|
||||
"# here we list seed values\n156680208700286\n715168739510668\n568208062071311"
|
||||
],
|
||||
"color": "#232",
|
||||
"bgcolor": "#353"
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
@@ -676,6 +663,14 @@
|
||||
0,
|
||||
"MODEL"
|
||||
],
|
||||
[
|
||||
2,
|
||||
5,
|
||||
0,
|
||||
3,
|
||||
3,
|
||||
"LATENT"
|
||||
],
|
||||
[
|
||||
3,
|
||||
4,
|
||||
@@ -773,51 +768,35 @@
|
||||
"LIST"
|
||||
],
|
||||
[
|
||||
25,
|
||||
5,
|
||||
0,
|
||||
21,
|
||||
0,
|
||||
"LATENT"
|
||||
],
|
||||
[
|
||||
26,
|
||||
21,
|
||||
0,
|
||||
3,
|
||||
3,
|
||||
"LATENT"
|
||||
],
|
||||
[
|
||||
28,
|
||||
19,
|
||||
13,
|
||||
2,
|
||||
21,
|
||||
1,
|
||||
20,
|
||||
0,
|
||||
"STRING,INT,FLOAT,BOOLEAN"
|
||||
],
|
||||
[
|
||||
20,
|
||||
20,
|
||||
0,
|
||||
19,
|
||||
0,
|
||||
"*"
|
||||
],
|
||||
[
|
||||
21,
|
||||
19,
|
||||
0,
|
||||
4,
|
||||
0,
|
||||
"COMBO"
|
||||
],
|
||||
[
|
||||
29,
|
||||
22,
|
||||
13,
|
||||
1,
|
||||
22,
|
||||
0,
|
||||
"STRING"
|
||||
],
|
||||
[
|
||||
30,
|
||||
22,
|
||||
0,
|
||||
5,
|
||||
0,
|
||||
"INT"
|
||||
],
|
||||
[
|
||||
31,
|
||||
22,
|
||||
1,
|
||||
5,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
"INT"
|
||||
]
|
||||
],
|
||||
@@ -825,15 +804,15 @@
|
||||
"config": {},
|
||||
"extra": {
|
||||
"ds": {
|
||||
"scale": 1.1000000000000003,
|
||||
"scale": 1,
|
||||
"offset": [
|
||||
458.9711582045418,
|
||||
260.08436179702727
|
||||
544,
|
||||
216
|
||||
]
|
||||
},
|
||||
"node_versions": {
|
||||
"comfy-core": "0.3.10",
|
||||
"ComfyLab-Pack": "1985411cc05fb8b6faa361d2fc18c3d867e9bdb5"
|
||||
"ComfyLab-Pack": "4fe6425c10985b88586d861d8d5e45b62b8cd1fa"
|
||||
}
|
||||
},
|
||||
"version": 0.4
|
||||
|
After Width: | Height: | Size: 390 KiB |
|
Before Width: | Height: | Size: 972 KiB After Width: | Height: | Size: 972 KiB |
@@ -41,12 +41,13 @@ Contents:
|
||||
- make the grid RGBA to add a custom background inage
|
||||
- display 'page X / Y'
|
||||
|
||||
## Tutorial 3 - advanced techniques
|
||||
## Tutorial 3 - complex variations
|
||||
|
||||
**[>> Go to the tutorial](./3%20-%20advanced%20techniques/)**
|
||||
**[>> Go to the tutorial](./3%20-%20complex%20variations/)**
|
||||
|
||||
Contents:
|
||||
|
||||
- various checkpoints (or virtually any model, LoRA, ...)
|
||||
- integrate various image resolutions / aspect ratios in the grid
|
||||
- combine the XY Plot with the `Output Config` node
|
||||
- various checkpoints (or virtually any model, LoRA, ...), following 3 methods using:
|
||||
- dedicated nodes to manually select a list of checkpoints / LoRAs / samplers / scheduler
|
||||
- a more versatile approach for vurtually anything (models, any combo value)
|
||||
- the `Output Config` node to keep the use case data separated from your workflow
|
||||
|
||||