Files
StyleRef-styleref-comfyui/workflows/02-consistency-grid.json
T
BehzadandClaude Sonnet 5 cd36fae865 Run the templates on FLUX, and name the loaded style
The root templates ran on SDXL base, where every gallery style washed out. A
full compiled style is ~480 tokens and SDXL's CLIP attends to ~77 per chunk, so
the style was truncated before the sampler saw it. No checkpoint swap fixes
that, Juggernaut included: it is an SDXL finetune with the same encoder.

Root set now runs FLUX.1 dev (Comfy-Org fp8 all-in-one, since BFL's own file is
UNET-only and CheckpointLoaderSimple cannot load it), compiled from the flux
target, whose T5 encoder takes the whole prompt. FluxGuidance 3.5, CFG 1.0, and
ConditioningZeroOut on the negative input: FLUX is guidance distilled and has no
negative channel, exactly like Z-Image. Uses EmptySD3LatentImage because FLUX
works in a 16-channel latent space.

The two sets load different gallery styles on purpose. How well a style demos is
a property of the style and the model together: Z-Image reproduces painterly
technique and keeps the Renaissance style, FLUX is strongest at light and
tonality and takes a noir one.

Also:

- Adds the reference-images template the root set was missing, and renumbers
  Facets to 05, so both sets are 01-05 with matching names. Both sets are now
  pinned by test against a shared story list.
- Model download metadata moves to each node's properties.models, where ComfyUI
  reads it, so a missing checkpoint offers a download instead of being silently
  substituted.
- The Load node names the style its slug resolves to, on a read-only row under
  style_ref, via a new /styleref/resolve route.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-27 13:20:07 +02:00

1686 lines
27 KiB
JSON

{
"last_node_id": 33,
"last_link_id": 42,
"nodes": [
{
"id": 1,
"type": "Note",
"pos": [
40,
60
],
"size": [
320,
216
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [],
"properties": {
"Node name for S&R": "Note"
},
"widgets_values": [
"Consistency grid \u2014 no account needed.\nOne style feeds three Apply nodes with three different subjects; each renders through its own sampler. Queue once and compare: one style, many subjects, a coherent set within this model.\nChange any subject, or swap the style on StyleRef Load, and queue again."
],
"title": "Consistency grid"
},
{
"id": 2,
"type": "StyleRefLoad",
"pos": [
40,
324
],
"size": [
320,
248
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "style",
"type": "STYLEREF_STYLE",
"links": [
1,
15,
29
],
"slot_index": 0
},
{
"name": "search_results",
"type": "STRING",
"links": [],
"slot_index": 1
}
],
"properties": {
"Node name for S&R": "StyleRefLoad"
},
"widgets_values": [
"72e1zdae-e2d54a18d090",
"",
"any",
true,
false
]
},
{
"id": 3,
"type": "CheckpointLoaderSimple",
"pos": [
40,
620
],
"size": [
320,
160
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
8,
22,
36
],
"slot_index": 0
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
5,
19,
33
],
"slot_index": 1
},
{
"name": "VAE",
"type": "VAE",
"links": [
13,
27,
41
],
"slot_index": 2
}
],
"properties": {
"Node name for S&R": "CheckpointLoaderSimple",
"models": [
{
"name": "flux1-dev-fp8.safetensors",
"url": "https://huggingface.co/Comfy-Org/flux1-dev/resolve/main/flux1-dev-fp8.safetensors",
"directory": "checkpoints"
}
]
},
"widgets_values": [
"flux1-dev-fp8.safetensors"
]
},
{
"id": 4,
"type": "StyleRefApply",
"pos": [
420,
60
],
"size": [
320,
424
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"name": "style",
"type": "STYLEREF_STYLE",
"link": 1
}
],
"outputs": [
{
"name": "positive",
"type": "STRING",
"links": [
2,
4
],
"slot_index": 0
},
{
"name": "negative",
"type": "STRING",
"links": [
3
],
"slot_index": 1
},
{
"name": "attribution",
"type": "STRING",
"links": [],
"slot_index": 2
}
],
"properties": {
"Node name for S&R": "StyleRefApply"
},
"widgets_values": [
"two friends flipping through crates of vinyl in a record shop",
"flux",
"",
false,
"",
true
],
"title": "Subject 1"
},
{
"id": 5,
"type": "PreviewAny",
"pos": [
420,
532
],
"size": [
320,
84
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 2
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": [],
"title": "Compiled positive 1"
},
{
"id": 6,
"type": "PreviewAny",
"pos": [
420,
664
],
"size": [
320,
84
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 3
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": [],
"title": "Compiled negative 1"
},
{
"id": 7,
"type": "CLIPTextEncode",
"pos": [
800,
60
],
"size": [
320,
198
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 5
},
{
"name": "text",
"type": "STRING",
"link": 4
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
6,
7
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
],
"title": "Positive (from StyleRef)"
},
{
"id": 8,
"type": "FluxGuidance",
"pos": [
800,
306
],
"size": [
320,
112
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "conditioning",
"type": "CONDITIONING",
"link": 6
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
9
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "FluxGuidance"
},
"widgets_values": [
3.5
],
"title": "Flux guidance"
},
{
"id": 9,
"type": "ConditioningZeroOut",
"pos": [
800,
466
],
"size": [
320,
84
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "conditioning",
"type": "CONDITIONING",
"link": 7
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
10
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "ConditioningZeroOut"
},
"widgets_values": [],
"title": "FLUX has no negative"
},
{
"id": 10,
"type": "EmptySD3LatentImage",
"pos": [
800,
598
],
"size": [
320,
168
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
11
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "EmptySD3LatentImage"
},
"widgets_values": [
1024,
1024,
1
]
},
{
"id": 11,
"type": "KSampler",
"pos": [
1180,
60
],
"size": [
320,
352
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 8
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 9
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 10
},
{
"name": "latent_image",
"type": "LATENT",
"link": 11
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
12
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
0,
"randomize",
20,
1.0,
"euler",
"simple",
1.0
]
},
{
"id": 12,
"type": "VAEDecode",
"pos": [
1560,
60
],
"size": [
320,
108
],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 12
},
{
"name": "vae",
"type": "VAE",
"link": 13
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
14
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 13,
"type": "SaveImage",
"pos": [
1560,
216
],
"size": [
320,
112
],
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 14
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"StyleRef"
]
},
{
"id": 14,
"type": "StyleRefApply",
"pos": [
420,
796
],
"size": [
320,
424
],
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{
"name": "style",
"type": "STYLEREF_STYLE",
"link": 15
}
],
"outputs": [
{
"name": "positive",
"type": "STRING",
"links": [
16,
18
],
"slot_index": 0
},
{
"name": "negative",
"type": "STRING",
"links": [
17
],
"slot_index": 1
},
{
"name": "attribution",
"type": "STRING",
"links": [],
"slot_index": 2
}
],
"properties": {
"Node name for S&R": "StyleRefApply"
},
"widgets_values": [
"A lone surfer strolled back along the beach at dusk, carrying her large surfing board.",
"flux",
"",
false,
"",
true
],
"title": "Subject 2"
},
{
"id": 15,
"type": "PreviewAny",
"pos": [
420,
1268
],
"size": [
320,
84
],
"flags": {},
"order": 14,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 16
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": [],
"title": "Compiled positive 2"
},
{
"id": 16,
"type": "PreviewAny",
"pos": [
420,
1400
],
"size": [
320,
84
],
"flags": {},
"order": 15,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 17
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": [],
"title": "Compiled negative 2"
},
{
"id": 17,
"type": "CLIPTextEncode",
"pos": [
800,
814
],
"size": [
320,
198
],
"flags": {},
"order": 16,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 19
},
{
"name": "text",
"type": "STRING",
"link": 18
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
20,
21
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
],
"title": "Positive (from StyleRef)"
},
{
"id": 18,
"type": "FluxGuidance",
"pos": [
800,
1060
],
"size": [
320,
112
],
"flags": {},
"order": 17,
"mode": 0,
"inputs": [
{
"name": "conditioning",
"type": "CONDITIONING",
"link": 20
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
23
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "FluxGuidance"
},
"widgets_values": [
3.5
],
"title": "Flux guidance"
},
{
"id": 19,
"type": "ConditioningZeroOut",
"pos": [
800,
1220
],
"size": [
320,
84
],
"flags": {},
"order": 18,
"mode": 0,
"inputs": [
{
"name": "conditioning",
"type": "CONDITIONING",
"link": 21
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
24
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "ConditioningZeroOut"
},
"widgets_values": [],
"title": "FLUX has no negative"
},
{
"id": 20,
"type": "EmptySD3LatentImage",
"pos": [
800,
1352
],
"size": [
320,
168
],
"flags": {},
"order": 19,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
25
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "EmptySD3LatentImage"
},
"widgets_values": [
1024,
1024,
1
]
},
{
"id": 21,
"type": "KSampler",
"pos": [
1180,
460
],
"size": [
320,
352
],
"flags": {},
"order": 20,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 22
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 23
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 24
},
{
"name": "latent_image",
"type": "LATENT",
"link": 25
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
26
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
0,
"randomize",
20,
1.0,
"euler",
"simple",
1.0
]
},
{
"id": 22,
"type": "VAEDecode",
"pos": [
1560,
376
],
"size": [
320,
108
],
"flags": {},
"order": 21,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 26
},
{
"name": "vae",
"type": "VAE",
"link": 27
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
28
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 23,
"type": "SaveImage",
"pos": [
1560,
532
],
"size": [
320,
112
],
"flags": {},
"order": 22,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 28
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"StyleRef"
]
},
{
"id": 24,
"type": "StyleRefApply",
"pos": [
420,
1532
],
"size": [
320,
424
],
"flags": {},
"order": 23,
"mode": 0,
"inputs": [
{
"name": "style",
"type": "STYLEREF_STYLE",
"link": 29
}
],
"outputs": [
{
"name": "positive",
"type": "STRING",
"links": [
30,
32
],
"slot_index": 0
},
{
"name": "negative",
"type": "STRING",
"links": [
31
],
"slot_index": 1
},
{
"name": "attribution",
"type": "STRING",
"links": [],
"slot_index": 2
}
],
"properties": {
"Node name for S&R": "StyleRefApply"
},
"widgets_values": [
"a roadside diner at night seen from the parking lot",
"flux",
"",
false,
"",
true
],
"title": "Subject 3"
},
{
"id": 25,
"type": "PreviewAny",
"pos": [
420,
2004
],
"size": [
320,
84
],
"flags": {},
"order": 24,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 30
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": [],
"title": "Compiled positive 3"
},
{
"id": 26,
"type": "PreviewAny",
"pos": [
420,
2136
],
"size": [
320,
84
],
"flags": {},
"order": 25,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 31
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": [],
"title": "Compiled negative 3"
},
{
"id": 27,
"type": "CLIPTextEncode",
"pos": [
800,
1568
],
"size": [
320,
198
],
"flags": {},
"order": 26,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 33
},
{
"name": "text",
"type": "STRING",
"link": 32
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
34,
35
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
],
"title": "Positive (from StyleRef)"
},
{
"id": 28,
"type": "FluxGuidance",
"pos": [
800,
1814
],
"size": [
320,
112
],
"flags": {},
"order": 27,
"mode": 0,
"inputs": [
{
"name": "conditioning",
"type": "CONDITIONING",
"link": 34
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
37
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "FluxGuidance"
},
"widgets_values": [
3.5
],
"title": "Flux guidance"
},
{
"id": 29,
"type": "ConditioningZeroOut",
"pos": [
800,
1974
],
"size": [
320,
84
],
"flags": {},
"order": 28,
"mode": 0,
"inputs": [
{
"name": "conditioning",
"type": "CONDITIONING",
"link": 35
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
38
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "ConditioningZeroOut"
},
"widgets_values": [],
"title": "FLUX has no negative"
},
{
"id": 30,
"type": "EmptySD3LatentImage",
"pos": [
800,
2106
],
"size": [
320,
168
],
"flags": {},
"order": 29,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
39
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "EmptySD3LatentImage"
},
"widgets_values": [
1024,
1024,
1
]
},
{
"id": 31,
"type": "KSampler",
"pos": [
1180,
860
],
"size": [
320,
352
],
"flags": {},
"order": 30,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 36
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 37
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 38
},
{
"name": "latent_image",
"type": "LATENT",
"link": 39
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
40
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
0,
"randomize",
20,
1.0,
"euler",
"simple",
1.0
]
},
{
"id": 32,
"type": "VAEDecode",
"pos": [
1560,
692
],
"size": [
320,
108
],
"flags": {},
"order": 31,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 40
},
{
"name": "vae",
"type": "VAE",
"link": 41
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
42
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 33,
"type": "SaveImage",
"pos": [
1560,
848
],
"size": [
320,
112
],
"flags": {},
"order": 32,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 42
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"StyleRef"
]
}
],
"links": [
[
1,
2,
0,
4,
0,
"STYLEREF_STYLE"
],
[
2,
4,
0,
5,
0,
"STRING"
],
[
3,
4,
1,
6,
0,
"STRING"
],
[
4,
4,
0,
7,
1,
"STRING"
],
[
5,
3,
1,
7,
0,
"CLIP"
],
[
6,
7,
0,
8,
0,
"CONDITIONING"
],
[
7,
7,
0,
9,
0,
"CONDITIONING"
],
[
8,
3,
0,
11,
0,
"MODEL"
],
[
9,
8,
0,
11,
1,
"CONDITIONING"
],
[
10,
9,
0,
11,
2,
"CONDITIONING"
],
[
11,
10,
0,
11,
3,
"LATENT"
],
[
12,
11,
0,
12,
0,
"LATENT"
],
[
13,
3,
2,
12,
1,
"VAE"
],
[
14,
12,
0,
13,
0,
"IMAGE"
],
[
15,
2,
0,
14,
0,
"STYLEREF_STYLE"
],
[
16,
14,
0,
15,
0,
"STRING"
],
[
17,
14,
1,
16,
0,
"STRING"
],
[
18,
14,
0,
17,
1,
"STRING"
],
[
19,
3,
1,
17,
0,
"CLIP"
],
[
20,
17,
0,
18,
0,
"CONDITIONING"
],
[
21,
17,
0,
19,
0,
"CONDITIONING"
],
[
22,
3,
0,
21,
0,
"MODEL"
],
[
23,
18,
0,
21,
1,
"CONDITIONING"
],
[
24,
19,
0,
21,
2,
"CONDITIONING"
],
[
25,
20,
0,
21,
3,
"LATENT"
],
[
26,
21,
0,
22,
0,
"LATENT"
],
[
27,
3,
2,
22,
1,
"VAE"
],
[
28,
22,
0,
23,
0,
"IMAGE"
],
[
29,
2,
0,
24,
0,
"STYLEREF_STYLE"
],
[
30,
24,
0,
25,
0,
"STRING"
],
[
31,
24,
1,
26,
0,
"STRING"
],
[
32,
24,
0,
27,
1,
"STRING"
],
[
33,
3,
1,
27,
0,
"CLIP"
],
[
34,
27,
0,
28,
0,
"CONDITIONING"
],
[
35,
27,
0,
29,
0,
"CONDITIONING"
],
[
36,
3,
0,
31,
0,
"MODEL"
],
[
37,
28,
0,
31,
1,
"CONDITIONING"
],
[
38,
29,
0,
31,
2,
"CONDITIONING"
],
[
39,
30,
0,
31,
3,
"LATENT"
],
[
40,
31,
0,
32,
0,
"LATENT"
],
[
41,
3,
2,
32,
1,
"VAE"
],
[
42,
32,
0,
33,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"styleref": {
"notes": "Generated by scripts/build_workflows.py \u2014 edit the script, not this file."
}
},
"version": 0.4,
"models": [
{
"name": "flux1-dev-fp8.safetensors",
"url": "https://huggingface.co/Comfy-Org/flux1-dev/resolve/main/flux1-dev-fp8.safetensors",
"directory": "checkpoints"
}
]
}