Files
StyleRef-styleref-comfyui/workflows/z-image/05-facets.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

1097 lines
20 KiB
JSON

{
"last_node_id": 21,
"last_link_id": 20,
"nodes": [
{
"id": 1,
"type": "Note",
"pos": [
40,
60
],
"size": [
320,
720
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [],
"properties": {
"Node name for S&R": "Note"
},
"widgets_values": [
"Inside the style \u2014 the Facets node.\nApply gives you one prompt string. Facets gives you the style's sections one output at a time \u2014 24 of them, exactly the sections you see on the style board at styleref.io, plus the six custom items.\nSix are previewed here so you can read them. Every other output is on the node too; drag any of them into a text input.\nThey are plain STRINGs, so they go anywhere text goes: a second CLIP encoder for regional conditioning, an IPAdapter or ControlNet prompt, a LoRA trigger line, or your own nodes. That is the escape hatch \u2014 use the palette without taking the whole prompt.\nThe render alongside is the paved road (Apply), so you can compare the assembled prompt against the parts it was built from.\n\nZ-Image Turbo (S3-DiT). Three model files download on first use: the UNET (diffusion_models/), the Qwen text encoder (text_encoders/), and the VAE (vae/).\nSampler defaults are turbo: 8 steps, CFG 1.0, euler/simple.\nZ-Image takes no negative prompt. The model runs without classifier-free guidance, so there is no negative encoder on this canvas \u2014 the sampler's negative input gets a zeroed conditioning. StyleRef still compiles the negative and previews it; put anything you need from it into `subject` on Apply as a positive phrase (\"fully clothed\", \"no text or watermark\"). Raising CFG does not bring the negative back.\nStyle prompts use the `diffusion` target \u2014 Z-Image reads the same tag-weighted output SDXL/SD1.5 use."
],
"title": "Facets on Z-Image"
},
{
"id": 2,
"type": "StyleRefLoad",
"pos": [
40,
828
],
"size": [
320,
248
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "style",
"type": "STYLEREF_STYLE",
"links": [
1,
8
],
"slot_index": 0
},
{
"name": "search_results",
"type": "STRING",
"links": [],
"slot_index": 1
}
],
"properties": {
"Node name for S&R": "StyleRefLoad"
},
"widgets_values": [
"sbdlwwly-66ae1a89efdc",
"",
"any",
true,
false
],
"title": "Load \u2014 swap this slug"
},
{
"id": 3,
"type": "UNETLoader",
"pos": [
40,
1124
],
"size": [
320,
140
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
13
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "UNETLoader",
"models": [
{
"name": "z_image_turbo_bf16.safetensors",
"url": "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/diffusion_models/z_image_turbo_bf16.safetensors",
"directory": "diffusion_models"
}
]
},
"widgets_values": [
"z_image_turbo_bf16.safetensors",
"default"
],
"title": "Z-Image UNET"
},
{
"id": 4,
"type": "CLIPLoader",
"pos": [
40,
1312
],
"size": [
320,
168
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"links": [
12
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPLoader",
"models": [
{
"name": "qwen_3_4b.safetensors",
"url": "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/text_encoders/qwen_3_4b.safetensors",
"directory": "text_encoders"
}
]
},
"widgets_values": [
"qwen_3_4b.safetensors",
"lumina2",
"default"
],
"title": "Qwen text encoder"
},
{
"id": 5,
"type": "VAELoader",
"pos": [
40,
1528
],
"size": [
320,
112
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"links": [
19
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "VAELoader",
"models": [
{
"name": "ae.safetensors",
"url": "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/vae/ae.safetensors",
"directory": "vae"
}
]
},
"widgets_values": [
"ae.safetensors"
],
"title": "Z-Image VAE"
},
{
"id": 6,
"type": "StyleRefFacets",
"pos": [
420,
60
],
"size": [
320,
636
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "style",
"type": "STYLEREF_STYLE",
"link": 1
}
],
"outputs": [
{
"name": "output_format",
"type": "STRING",
"links": [],
"slot_index": 0
},
{
"name": "container_boundary",
"type": "STRING",
"links": [],
"slot_index": 1
},
{
"name": "mood_personality",
"type": "STRING",
"links": [
4
],
"slot_index": 2
},
{
"name": "colors",
"type": "STRING",
"links": [
2
],
"slot_index": 3
},
{
"name": "typography",
"type": "STRING",
"links": [],
"slot_index": 4
},
{
"name": "light_shadow",
"type": "STRING",
"links": [
3
],
"slot_index": 5
},
{
"name": "spatial_hierarchy",
"type": "STRING",
"links": [],
"slot_index": 6
},
{
"name": "surface_material",
"type": "STRING",
"links": [
5
],
"slot_index": 7
},
{
"name": "motion",
"type": "STRING",
"links": [],
"slot_index": 8
},
{
"name": "shape_language",
"type": "STRING",
"links": [
6
],
"slot_index": 9
},
{
"name": "stroke_system",
"type": "STRING",
"links": [],
"slot_index": 10
},
{
"name": "voice_language",
"type": "STRING",
"links": [],
"slot_index": 11
},
{
"name": "post_processing",
"type": "STRING",
"links": [],
"slot_index": 12
},
{
"name": "background_environment",
"type": "STRING",
"links": [],
"slot_index": 13
},
{
"name": "artistic_mediums",
"type": "STRING",
"links": [],
"slot_index": 14
},
{
"name": "ui_web",
"type": "STRING",
"links": [],
"slot_index": 15
},
{
"name": "references",
"type": "STRING",
"links": [],
"slot_index": 16
},
{
"name": "guardrails",
"type": "STRING",
"links": [
7
],
"slot_index": 17
},
{
"name": "custom_style_item_1",
"type": "STRING",
"links": [],
"slot_index": 18
},
{
"name": "custom_style_item_2",
"type": "STRING",
"links": [],
"slot_index": 19
},
{
"name": "custom_style_item_3",
"type": "STRING",
"links": [],
"slot_index": 20
},
{
"name": "custom_style_item_4",
"type": "STRING",
"links": [],
"slot_index": 21
},
{
"name": "custom_style_item_5",
"type": "STRING",
"links": [],
"slot_index": 22
},
{
"name": "custom_style_item_6",
"type": "STRING",
"links": [],
"slot_index": 23
}
],
"properties": {
"Node name for S&R": "StyleRefFacets"
},
"widgets_values": [],
"title": "Facets \u2014 every section"
},
{
"id": 7,
"type": "PreviewAny",
"pos": [
800,
60
],
"size": [
320,
84
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 2
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": [],
"title": "Facet \u2014 colors"
},
{
"id": 8,
"type": "PreviewAny",
"pos": [
800,
192
],
"size": [
320,
84
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 3
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": [],
"title": "Facet \u2014 light shadow"
},
{
"id": 9,
"type": "PreviewAny",
"pos": [
800,
324
],
"size": [
320,
84
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 4
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": [],
"title": "Facet \u2014 mood personality"
},
{
"id": 10,
"type": "PreviewAny",
"pos": [
800,
456
],
"size": [
320,
84
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 5
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": [],
"title": "Facet \u2014 surface material"
},
{
"id": 11,
"type": "PreviewAny",
"pos": [
800,
588
],
"size": [
320,
84
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 6
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": [],
"title": "Facet \u2014 shape language"
},
{
"id": 12,
"type": "PreviewAny",
"pos": [
800,
720
],
"size": [
320,
84
],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 7
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": [],
"title": "Facet \u2014 guardrails"
},
{
"id": 13,
"type": "StyleRefApply",
"pos": [
1180,
60
],
"size": [
320,
424
],
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "style",
"type": "STYLEREF_STYLE",
"link": 8
}
],
"outputs": [
{
"name": "positive",
"type": "STRING",
"links": [
9,
11
],
"slot_index": 0
},
{
"name": "negative",
"type": "STRING",
"links": [
10
],
"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",
"diffusion",
"",
false,
"",
true
]
},
{
"id": 14,
"type": "PreviewAny",
"pos": [
1180,
532
],
"size": [
320,
84
],
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 9
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": [],
"title": "Compiled positive"
},
{
"id": 15,
"type": "PreviewAny",
"pos": [
1180,
664
],
"size": [
320,
84
],
"flags": {},
"order": 14,
"mode": 0,
"inputs": [
{
"name": "source",
"type": "*",
"link": 10
}
],
"outputs": [],
"properties": {
"Node name for S&R": "PreviewAny"
},
"widgets_values": [],
"title": "Compiled negative"
},
{
"id": 16,
"type": "CLIPTextEncode",
"pos": [
1560,
60
],
"size": [
320,
198
],
"flags": {},
"order": 15,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 12
},
{
"name": "text",
"type": "STRING",
"link": 11
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
14,
15
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
],
"title": "Positive (from StyleRef)"
},
{
"id": 17,
"type": "ConditioningZeroOut",
"pos": [
1560,
306
],
"size": [
320,
84
],
"flags": {},
"order": 16,
"mode": 0,
"inputs": [
{
"name": "conditioning",
"type": "CONDITIONING",
"link": 15
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
16
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "ConditioningZeroOut"
},
"widgets_values": [],
"title": "Z-Image has no negative"
},
{
"id": 18,
"type": "EmptySD3LatentImage",
"pos": [
1560,
438
],
"size": [
320,
168
],
"flags": {},
"order": 17,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
17
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "EmptySD3LatentImage"
},
"widgets_values": [
1024,
1024,
1
]
},
{
"id": 19,
"type": "KSampler",
"pos": [
1940,
60
],
"size": [
320,
352
],
"flags": {},
"order": 18,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 13
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 14
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 16
},
{
"name": "latent_image",
"type": "LATENT",
"link": 17
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
18
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "KSampler"
},
"widgets_values": [
0,
"randomize",
8,
1.0,
"euler",
"simple",
1.0
]
},
{
"id": 20,
"type": "VAEDecode",
"pos": [
2320,
60
],
"size": [
320,
108
],
"flags": {},
"order": 19,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 18
},
{
"name": "vae",
"type": "VAE",
"link": 19
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
20
],
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 21,
"type": "SaveImage",
"pos": [
2320,
216
],
"size": [
320,
112
],
"flags": {},
"order": 20,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 20
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveImage"
},
"widgets_values": [
"StyleRef"
]
}
],
"links": [
[
1,
2,
0,
6,
0,
"STYLEREF_STYLE"
],
[
2,
6,
3,
7,
0,
"STRING"
],
[
3,
6,
5,
8,
0,
"STRING"
],
[
4,
6,
2,
9,
0,
"STRING"
],
[
5,
6,
7,
10,
0,
"STRING"
],
[
6,
6,
9,
11,
0,
"STRING"
],
[
7,
6,
17,
12,
0,
"STRING"
],
[
8,
2,
0,
13,
0,
"STYLEREF_STYLE"
],
[
9,
13,
0,
14,
0,
"STRING"
],
[
10,
13,
1,
15,
0,
"STRING"
],
[
11,
13,
0,
16,
1,
"STRING"
],
[
12,
4,
0,
16,
0,
"CLIP"
],
[
13,
3,
0,
19,
0,
"MODEL"
],
[
14,
16,
0,
19,
1,
"CONDITIONING"
],
[
15,
16,
0,
17,
0,
"CONDITIONING"
],
[
16,
17,
0,
19,
2,
"CONDITIONING"
],
[
17,
18,
0,
19,
3,
"LATENT"
],
[
18,
19,
0,
20,
0,
"LATENT"
],
[
19,
5,
0,
20,
1,
"VAE"
],
[
20,
20,
0,
21,
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": "z_image_turbo_bf16.safetensors",
"url": "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/diffusion_models/z_image_turbo_bf16.safetensors",
"directory": "diffusion_models"
},
{
"name": "qwen_3_4b.safetensors",
"url": "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/text_encoders/qwen_3_4b.safetensors",
"directory": "text_encoders"
},
{
"name": "ae.safetensors",
"url": "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/vae/ae.safetensors",
"directory": "vae"
}
]
}