Feat: Add text-driven prompting sample workflow and documentation
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 327 KiB |
@@ -0,0 +1,691 @@
|
||||
{
|
||||
"id": "1d4e4326-6985-4b88-a21b-a8a603a38a6b",
|
||||
"revision": 0,
|
||||
"last_node_id": 13,
|
||||
"last_link_id": 24,
|
||||
"nodes": [
|
||||
{
|
||||
"id": 10,
|
||||
"type": "TextDrivenJoinStrings",
|
||||
"pos": [
|
||||
624.0013774104677,
|
||||
387.48467630854066
|
||||
],
|
||||
"size": [
|
||||
231.97501237517213,
|
||||
98
|
||||
],
|
||||
"flags": {},
|
||||
"order": 6,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"label": "string0",
|
||||
"name": "string_inputs.string0",
|
||||
"type": "STRING",
|
||||
"link": 17
|
||||
},
|
||||
{
|
||||
"label": "string1",
|
||||
"name": "string_inputs.string1",
|
||||
"shape": 7,
|
||||
"type": "STRING",
|
||||
"link": 18
|
||||
},
|
||||
{
|
||||
"label": "string2",
|
||||
"name": "string_inputs.string2",
|
||||
"shape": 7,
|
||||
"type": "STRING",
|
||||
"link": null
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "string_out",
|
||||
"type": "STRING",
|
||||
"links": [
|
||||
19
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"Node name for S&R": "TextDrivenJoinStrings"
|
||||
},
|
||||
"widgets_values": [
|
||||
","
|
||||
],
|
||||
"color": "#232",
|
||||
"bgcolor": "#353"
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"type": "KSampler",
|
||||
"pos": [
|
||||
1134.633264462809,
|
||||
527.0919421487622
|
||||
],
|
||||
"size": [
|
||||
270,
|
||||
262
|
||||
],
|
||||
"flags": {},
|
||||
"order": 9,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "model",
|
||||
"type": "MODEL",
|
||||
"link": 12
|
||||
},
|
||||
{
|
||||
"name": "positive",
|
||||
"type": "CONDITIONING",
|
||||
"link": 13
|
||||
},
|
||||
{
|
||||
"name": "negative",
|
||||
"type": "CONDITIONING",
|
||||
"link": 14
|
||||
},
|
||||
{
|
||||
"name": "latent_image",
|
||||
"type": "LATENT",
|
||||
"link": 11
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "LATENT",
|
||||
"type": "LATENT",
|
||||
"links": [
|
||||
10
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.19.3",
|
||||
"Node name for S&R": "KSampler"
|
||||
},
|
||||
"widgets_values": [
|
||||
893386370465587,
|
||||
"randomize",
|
||||
30,
|
||||
7,
|
||||
"euler",
|
||||
"normal",
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"type": "VAEDecode",
|
||||
"pos": [
|
||||
1136.0795454545457,
|
||||
441.47727272727286
|
||||
],
|
||||
"size": [
|
||||
140,
|
||||
46
|
||||
],
|
||||
"flags": {},
|
||||
"order": 10,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "samples",
|
||||
"type": "LATENT",
|
||||
"link": 10
|
||||
},
|
||||
{
|
||||
"name": "vae",
|
||||
"type": "VAE",
|
||||
"link": 20
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "IMAGE",
|
||||
"type": "IMAGE",
|
||||
"links": [
|
||||
9
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.19.3",
|
||||
"Node name for S&R": "VAEDecode"
|
||||
},
|
||||
"widgets_values": []
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"type": "TextDrivenResolutionSelector",
|
||||
"pos": [
|
||||
624.0013774104659,
|
||||
684.5748966942159
|
||||
],
|
||||
"size": [
|
||||
259.2310546875,
|
||||
132
|
||||
],
|
||||
"flags": {},
|
||||
"order": 0,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "width",
|
||||
"type": "INT",
|
||||
"links": [
|
||||
23
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "height",
|
||||
"type": "INT",
|
||||
"links": [
|
||||
24
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"Node name for S&R": "TextDrivenResolutionSelector"
|
||||
},
|
||||
"widgets_values": [
|
||||
"768x1024 (3:4)\n832x1216 (13:19)\n960x1280 (3:4)\n1024x1365 (3:4)\n1024x1496 (paper)\n1080x1440 (3:4)\n1152x1536 (3:4)\n1280x1728 (3:4)\n1536x1536 (1:1)",
|
||||
"1024x1365 (3:4)"
|
||||
],
|
||||
"color": "#232",
|
||||
"bgcolor": "#353"
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"type": "EmptyLatentImage",
|
||||
"pos": [
|
||||
905.3719008264499,
|
||||
660.0292699724531
|
||||
],
|
||||
"size": [
|
||||
210,
|
||||
106
|
||||
],
|
||||
"flags": {},
|
||||
"order": 5,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "width",
|
||||
"type": "INT",
|
||||
"widget": {
|
||||
"name": "width"
|
||||
},
|
||||
"link": 23
|
||||
},
|
||||
{
|
||||
"name": "height",
|
||||
"type": "INT",
|
||||
"widget": {
|
||||
"name": "height"
|
||||
},
|
||||
"link": 24
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "LATENT",
|
||||
"type": "LATENT",
|
||||
"links": [
|
||||
11
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.19.3",
|
||||
"Node name for S&R": "EmptyLatentImage"
|
||||
},
|
||||
"widgets_values": [
|
||||
1024,
|
||||
1024,
|
||||
1
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"type": "SaveImage",
|
||||
"pos": [
|
||||
1134.8467630854004,
|
||||
66.0898760330579
|
||||
],
|
||||
"size": [
|
||||
237.07128099173542,
|
||||
324.3567493112946
|
||||
],
|
||||
"flags": {},
|
||||
"order": 11,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "images",
|
||||
"type": "IMAGE",
|
||||
"link": 9
|
||||
}
|
||||
],
|
||||
"outputs": [],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.19.3",
|
||||
"Node name for S&R": "SaveImage"
|
||||
},
|
||||
"widgets_values": [
|
||||
"ComfyUI_TextDriven"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"type": "TextDrivenTextLinePrompt",
|
||||
"pos": [
|
||||
378.7964876033059,
|
||||
152.6687327823689
|
||||
],
|
||||
"size": [
|
||||
322.43457300275486,
|
||||
180.97451790633613
|
||||
],
|
||||
"flags": {},
|
||||
"order": 1,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "optional_text_in",
|
||||
"shape": 7,
|
||||
"type": "STRING",
|
||||
"link": null
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "string_out",
|
||||
"type": "STRING",
|
||||
"links": [
|
||||
17
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"Node name for S&R": "TextDrivenTextLinePrompt"
|
||||
},
|
||||
"widgets_values": [
|
||||
"1girl, solo, emilia \\(re:zero\\), blonde hair,\n(abstract background:1.5),\nthree quarter view, speed lines,\n(by carnelian:0.6),",
|
||||
"2: (abstract background:1.5)",
|
||||
1.5,
|
||||
true
|
||||
],
|
||||
"color": "#232",
|
||||
"bgcolor": "#353"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"type": "TextDrivenMultiPrompts",
|
||||
"pos": [
|
||||
383.41081267217646,
|
||||
390.4872589531677
|
||||
],
|
||||
"size": [
|
||||
222.9048828125,
|
||||
364
|
||||
],
|
||||
"flags": {},
|
||||
"order": 2,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "optional_text_in",
|
||||
"shape": 7,
|
||||
"type": "STRING",
|
||||
"link": null
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "string_out",
|
||||
"type": "STRING",
|
||||
"links": [
|
||||
18
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"Node name for S&R": "TextDrivenMultiPrompts"
|
||||
},
|
||||
"widgets_values": [
|
||||
"3",
|
||||
"cinematic lighting, volumetric lighting",
|
||||
1,
|
||||
true,
|
||||
"sundress, ruffled, cotton",
|
||||
1.2,
|
||||
true,
|
||||
"masterpiece, delicate, serene atmosphere",
|
||||
0.8,
|
||||
true,
|
||||
"",
|
||||
1,
|
||||
true,
|
||||
"",
|
||||
1,
|
||||
true,
|
||||
"",
|
||||
1,
|
||||
true,
|
||||
"",
|
||||
1,
|
||||
true,
|
||||
"",
|
||||
1,
|
||||
true,
|
||||
"",
|
||||
1,
|
||||
true,
|
||||
"",
|
||||
1,
|
||||
true
|
||||
],
|
||||
"color": "#232",
|
||||
"bgcolor": "#353"
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"type": "MarkdownNote",
|
||||
"pos": [
|
||||
717.6652892561983,
|
||||
64.05148071625365
|
||||
],
|
||||
"size": [
|
||||
388.06301652892535,
|
||||
270.0120523415977
|
||||
],
|
||||
"flags": {},
|
||||
"order": 3,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [],
|
||||
"properties": {},
|
||||
"widgets_values": [
|
||||
"# Text-Driven Prompting Workflow Guide\n\nThis workflow streamlines prompt management and eliminates manual weight tweaking by utilizing two custom nodes for layered control.\n\n---\n\n## Node Overview\n\n### 1. Text Line Prompt (Text-Driven)\nManages a list of prompt assets or concepts line by line.\n* **Bi-directional Sync:** Select a line via the dropdown menu to modify its multiplier or active state. The raw text area updates automatically in real-time.\n* **Muting Function:** Deactivating a line prepends `//` to comment it out. These lines are completely skipped during backend execution to output a clean string.\n* **Regex Parsing:** Properly handles character LoRA escaped brackets `\\( \\)` and safely bypasses rows containing multiple unescaped brackets.\n\n### 2. Multi Prompts (Text-Driven)\nProvides centralized layer-control for multiple modifiers.\n* **Dynamic UI Layout:** Input fields dynamically hide or show based on the \"num_prompts\" value (up to 10 slots) to keep the canvas clean.\n* **Granular Controls:** Allows you to adjust individual multipliers and toggle the active state of each prompt fragment with a single click.\n\n---\n\n## Workflow Pipeline\n\nThe nodes are connected in a relay structure to compile the final prompt:\n\n1. **Base Generation:** [Text Line Prompt] manages base characters, core concepts, or specific styles.\n2. **Modifier Stacking:** The selected base prompt is fed into [Multi Prompts] via the hidden `optional_text_in` input pin.\n3. **Final Output:** [Multi Prompts] appends aesthetic modifiers (lighting, attire, quality tokens), then sends the fully combined string directly to the SDXL CLIP Text Encode.\n\n### Quick Start\n1. Choose a row in **Text Line Prompt** using the dropdown menu.\n2. Tweak individual weights or toggle active states in **Multi Prompts**.\n3. Click **Queue Prompt** to execute."
|
||||
],
|
||||
"color": "#432",
|
||||
"bgcolor": "#653"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"type": "CLIPTextEncode",
|
||||
"pos": [
|
||||
896.5909090909092,
|
||||
387.07816804407724
|
||||
],
|
||||
"size": [
|
||||
218.659765625,
|
||||
88
|
||||
],
|
||||
"flags": {},
|
||||
"order": 8,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "clip",
|
||||
"type": "CLIP",
|
||||
"link": 15
|
||||
},
|
||||
{
|
||||
"name": "text",
|
||||
"type": "STRING",
|
||||
"widget": {
|
||||
"name": "text"
|
||||
},
|
||||
"link": 19
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "CONDITIONING",
|
||||
"type": "CONDITIONING",
|
||||
"links": [
|
||||
13
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.19.3",
|
||||
"Node name for S&R": "CLIPTextEncode"
|
||||
},
|
||||
"widgets_values": [
|
||||
""
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"type": "CLIPTextEncode",
|
||||
"pos": [
|
||||
897.3226584022048,
|
||||
524.1477272727292
|
||||
],
|
||||
"size": [
|
||||
218.659765625,
|
||||
88
|
||||
],
|
||||
"flags": {},
|
||||
"order": 7,
|
||||
"mode": 0,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "clip",
|
||||
"type": "CLIP",
|
||||
"link": 16
|
||||
}
|
||||
],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "CONDITIONING",
|
||||
"type": "CONDITIONING",
|
||||
"links": [
|
||||
14
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.19.3",
|
||||
"Node name for S&R": "CLIPTextEncode"
|
||||
},
|
||||
"widgets_values": [
|
||||
"blurry, low quality, text, error, cropped, worst quality"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"type": "CheckpointLoaderSimple",
|
||||
"pos": [
|
||||
628.323002754823,
|
||||
530.5096418732777
|
||||
],
|
||||
"size": [
|
||||
210,
|
||||
98
|
||||
],
|
||||
"flags": {},
|
||||
"order": 4,
|
||||
"mode": 0,
|
||||
"inputs": [],
|
||||
"outputs": [
|
||||
{
|
||||
"name": "MODEL",
|
||||
"type": "MODEL",
|
||||
"links": [
|
||||
12
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "CLIP",
|
||||
"type": "CLIP",
|
||||
"links": [
|
||||
15,
|
||||
16
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "VAE",
|
||||
"type": "VAE",
|
||||
"links": [
|
||||
20
|
||||
]
|
||||
}
|
||||
],
|
||||
"properties": {
|
||||
"cnr_id": "comfy-core",
|
||||
"ver": "0.19.3",
|
||||
"Node name for S&R": "CheckpointLoaderSimple"
|
||||
},
|
||||
"widgets_values": ["sd_xl_base_1.0.safetensors"]
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
[
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null
|
||||
],
|
||||
[
|
||||
9,
|
||||
8,
|
||||
0,
|
||||
9,
|
||||
0,
|
||||
"IMAGE"
|
||||
],
|
||||
[
|
||||
10,
|
||||
7,
|
||||
0,
|
||||
8,
|
||||
0,
|
||||
"LATENT"
|
||||
],
|
||||
[
|
||||
11,
|
||||
6,
|
||||
0,
|
||||
7,
|
||||
3,
|
||||
"LATENT"
|
||||
],
|
||||
[
|
||||
12,
|
||||
1,
|
||||
0,
|
||||
7,
|
||||
0,
|
||||
"MODEL"
|
||||
],
|
||||
[
|
||||
13,
|
||||
4,
|
||||
0,
|
||||
7,
|
||||
1,
|
||||
"CONDITIONING"
|
||||
],
|
||||
[
|
||||
14,
|
||||
5,
|
||||
0,
|
||||
7,
|
||||
2,
|
||||
"CONDITIONING"
|
||||
],
|
||||
[
|
||||
15,
|
||||
1,
|
||||
1,
|
||||
4,
|
||||
0,
|
||||
"CLIP"
|
||||
],
|
||||
[
|
||||
16,
|
||||
1,
|
||||
1,
|
||||
5,
|
||||
0,
|
||||
"CLIP"
|
||||
],
|
||||
[
|
||||
17,
|
||||
2,
|
||||
0,
|
||||
10,
|
||||
0,
|
||||
"STRING"
|
||||
],
|
||||
[
|
||||
18,
|
||||
3,
|
||||
0,
|
||||
10,
|
||||
1,
|
||||
"STRING"
|
||||
],
|
||||
[
|
||||
19,
|
||||
10,
|
||||
0,
|
||||
4,
|
||||
1,
|
||||
"STRING"
|
||||
],
|
||||
[
|
||||
20,
|
||||
1,
|
||||
2,
|
||||
8,
|
||||
1,
|
||||
"VAE"
|
||||
],
|
||||
[
|
||||
23,
|
||||
11,
|
||||
0,
|
||||
6,
|
||||
0,
|
||||
"INT"
|
||||
],
|
||||
[
|
||||
24,
|
||||
11,
|
||||
1,
|
||||
6,
|
||||
1,
|
||||
"INT"
|
||||
]
|
||||
],
|
||||
"groups": [],
|
||||
"config": {},
|
||||
"extra": {
|
||||
"ds": {
|
||||
"scale": 1.366588235294118,
|
||||
"offset": [
|
||||
-115.43560606060629,
|
||||
107.90960743801628
|
||||
]
|
||||
},
|
||||
"frontendVersion": "1.42.11"
|
||||
},
|
||||
"version": 0.4
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
# Text-Driven Prompting Workflow Guide
|
||||
|
||||
This workflow streamlines prompt management and eliminates manual weight tweaking by utilizing two custom nodes for layered control.
|
||||
|
||||
---
|
||||
|
||||
## Node Overview
|
||||
|
||||
### 1. Text Line Prompt (Text-Driven)
|
||||
Manages a list of prompt assets or concepts line by line.
|
||||
* **Bi-directional Sync:** Select a line via the dropdown menu to modify its multiplier or active state. The raw text area updates automatically in real-time.
|
||||
* **Muting Function:** Deactivating a line prepends `//` to comment it out. These lines are completely skipped during backend execution to output a clean string.
|
||||
* **Regex Parsing:** Properly handles character LoRA escaped brackets `\( \)` and safely bypasses rows containing multiple unescaped brackets.
|
||||
|
||||
### 2. Multi Prompts (Text-Driven)
|
||||
Provides centralized layer-control for multiple modifiers.
|
||||
* **Dynamic UI Layout:** Input fields dynamically hide or show based on the "num_prompts" value (up to 10 slots) to keep the canvas clean.
|
||||
* **Granular Controls:** Allows you to adjust individual multipliers and toggle the active state of each prompt fragment with a single click.
|
||||
|
||||
---
|
||||
|
||||
## Workflow Pipeline
|
||||
|
||||
The nodes are connected in a relay structure to compile the final prompt:
|
||||
|
||||
1. **Base Generation:** [Text Line Prompt] manages base characters, core concepts, or specific styles.
|
||||
2. **Modifier Stacking:** The selected base prompt is fed into [Multi Prompts] via the hidden `optional_text_in` input pin.
|
||||
3. **Final Output:** [Multi Prompts] appends aesthetic modifiers (lighting, attire, quality tokens), then sends the fully combined string directly to the SDXL CLIP Text Encode.
|
||||
|
||||
### Quick Start
|
||||
1. Choose a row in **Text Line Prompt** using the dropdown menu.
|
||||
2. Tweak individual weights or toggle active states in **Multi Prompts**.
|
||||
3. Click **Queue Prompt** to execute.
|
||||
Reference in New Issue
Block a user