comfyui/Qwen-Image-2.1-viggle-turbo-v0.3-6step-gguf-t2i.json
67.4 KB · 2610 lines · json Raw
1 {
2 "id": "87f6d391-6314-4430-afeb-eeeca15d078f",
3 "revision": 0,
4 "last_node_id": 24,
5 "last_link_id": 31,
6 "nodes": [
7 {
8 "id": 1,
9 "type": "MarkdownNote",
10 "pos": [
11 0,
12 0
13 ],
14 "size": [
15 460,
16 760
17 ],
18 "flags": {},
19 "order": 0,
20 "mode": 0,
21 "showAdvanced": null,
22 "inputs": [],
23 "outputs": [],
24 "properties": {},
25 "widgets_values": [
26 "## Qwen-Image-2.1 Viggle Turbo · text to image · GGUF\n\n6-step distilled Qwen-Image-2.1 (v0.3) with the LoRA already merged into the diffusion model. CFG is off, so each step is one model call.\n\n**Files:**\n- `diffusion_models/Qwen-Image-2.1-viggle-turbo-v0.3-6step-Q8_0.gguf` from this repo. Other sizes are in the model card's file table; pick one in the loader.\n- `text_encoders/qwen3vl_8b_int8_convrot.safetensors` (or `qwen3vl_8b_bf16.safetensors`), from Comfy-Org/Qwen-Image-2.1\n- `vae/qwen_image_2.1_vae_bf16.safetensors`, from Comfy-Org/Qwen-Image-2.1\n\n**Custom nodes:** copy `viggle_turbo.py` into `ComfyUI/custom_nodes/` and restart ComfyUI. Its *Viggle Turbo Sigmas* node is the 6-step schedule the model is sampled on, shifted for the output resolution; a stock KSampler scheduler does not match it. Change the step count only at the high-noise end (see the model card). The *Unet Loader (GGUF)* node comes from [ComfyUI-GGUF](https://github.com/city96/ComfyUI-GGUF) (install it with ComfyUI-Manager).\n\nThe LoRA was merged in fp32 before quantizing, so this file keeps the update that merging into bf16 or int8 weights in ComfyUI would lose. Don't add the LoRA again.\n\n**Keep:** euler, BasicGuider (no CFG, no negative prompt).\n**Prompt enhancer:** the model was distilled on long, descriptive prompts. With *Enhance prompt* on, the Qwen3-VL text encoder rewrites your prompt using the official Qwen-Image-2.1 rewriter system prompt (greedy decoding, a few seconds). *Prompt used* shows the result. If the rewrite doesn't parse, your prompt is used as written. Turn the enhancer off for prompts that are already detailed. `thinking` is on only so that ComfyUI doesn't append an empty think block, which matches the model's own chat template.\n\n**Size:** about 1 MP is the sweet spot, and up to about 4 MP works. Keep width and height at multiples of 16 (the *Output size* node uses 32).\n"
27 ],
28 "widgets_values_named": {
29 "text": "## Qwen-Image-2.1 Viggle Turbo · text to image · GGUF\n\n6-step distilled Qwen-Image-2.1 (v0.3) with the LoRA already merged into the diffusion model. CFG is off, so each step is one model call.\n\n**Files:**\n- `diffusion_models/Qwen-Image-2.1-viggle-turbo-v0.3-6step-Q8_0.gguf` from this repo. Other sizes are in the model card's file table; pick one in the loader.\n- `text_encoders/qwen3vl_8b_int8_convrot.safetensors` (or `qwen3vl_8b_bf16.safetensors`), from Comfy-Org/Qwen-Image-2.1\n- `vae/qwen_image_2.1_vae_bf16.safetensors`, from Comfy-Org/Qwen-Image-2.1\n\n**Custom nodes:** copy `viggle_turbo.py` into `ComfyUI/custom_nodes/` and restart ComfyUI. Its *Viggle Turbo Sigmas* node is the 6-step schedule the model is sampled on, shifted for the output resolution; a stock KSampler scheduler does not match it. Change the step count only at the high-noise end (see the model card). The *Unet Loader (GGUF)* node comes from [ComfyUI-GGUF](https://github.com/city96/ComfyUI-GGUF) (install it with ComfyUI-Manager).\n\nThe LoRA was merged in fp32 before quantizing, so this file keeps the update that merging into bf16 or int8 weights in ComfyUI would lose. Don't add the LoRA again.\n\n**Keep:** euler, BasicGuider (no CFG, no negative prompt).\n**Prompt enhancer:** the model was distilled on long, descriptive prompts. With *Enhance prompt* on, the Qwen3-VL text encoder rewrites your prompt using the official Qwen-Image-2.1 rewriter system prompt (greedy decoding, a few seconds). *Prompt used* shows the result. If the rewrite doesn't parse, your prompt is used as written. Turn the enhancer off for prompts that are already detailed. `thinking` is on only so that ComfyUI doesn't append an empty think block, which matches the model's own chat template.\n\n**Size:** about 1 MP is the sweet spot, and up to about 4 MP works. Keep width and height at multiples of 16 (the *Output size* node uses 32).\n"
30 },
31 "color": "#432",
32 "bgcolor": "#653"
33 },
34 {
35 "id": 2,
36 "type": "UnetLoaderGGUF",
37 "pos": [
38 540,
39 0
40 ],
41 "size": [
42 320,
43 58
44 ],
45 "flags": {},
46 "order": 1,
47 "mode": 0,
48 "showAdvanced": null,
49 "inputs": [
50 {
51 "color_off": null,
52 "color_on": null,
53 "dir": null,
54 "label": null,
55 "localized_name": "unet_name",
56 "locked": null,
57 "name": "unet_name",
58 "nameLocked": null,
59 "removable": null,
60 "shape": null,
61 "type": "COMBO",
62 "widget": {
63 "name": "unet_name"
64 },
65 "link": null
66 }
67 ],
68 "outputs": [
69 {
70 "color_off": null,
71 "color_on": null,
72 "dir": null,
73 "label": null,
74 "localized_name": "MODEL",
75 "locked": null,
76 "name": "MODEL",
77 "nameLocked": null,
78 "removable": null,
79 "shape": null,
80 "type": "MODEL",
81 "pos": null,
82 "slot_index": null,
83 "links": [
84 27
85 ]
86 }
87 ],
88 "properties": {
89 "Node name for S&R": "UnetLoaderGGUF",
90 "models": [
91 {
92 "name": "Qwen-Image-2.1-viggle-turbo-v0.3-6step-Q8_0.gguf",
93 "url": "https://huggingface.co/Viggle/Qwen-Image-2.1-viggle-turbo/resolve/main/Qwen-Image-2.1-viggle-turbo-v0.3-6step-Q8_0.gguf",
94 "directory": "diffusion_models"
95 }
96 ]
97 },
98 "widgets_values": [
99 "Qwen-Image-2.1-viggle-turbo-v0.3-6step-Q8_0.gguf"
100 ],
101 "widgets_values_named": {
102 "unet_name": "Qwen-Image-2.1-viggle-turbo-v0.3-6step-Q8_0.gguf"
103 }
104 },
105 {
106 "id": 3,
107 "type": "CLIPLoader",
108 "pos": [
109 540,
110 148
111 ],
112 "size": [
113 320,
114 106
115 ],
116 "flags": {},
117 "order": 2,
118 "mode": 0,
119 "showAdvanced": null,
120 "inputs": [
121 {
122 "color_off": null,
123 "color_on": null,
124 "dir": null,
125 "label": null,
126 "localized_name": "clip_name",
127 "locked": null,
128 "name": "clip_name",
129 "nameLocked": null,
130 "removable": null,
131 "shape": null,
132 "type": "COMBO",
133 "widget": {
134 "name": "clip_name"
135 },
136 "link": null
137 },
138 {
139 "color_off": null,
140 "color_on": null,
141 "dir": null,
142 "label": null,
143 "localized_name": "type",
144 "locked": null,
145 "name": "type",
146 "nameLocked": null,
147 "removable": null,
148 "shape": null,
149 "type": "COMBO",
150 "widget": {
151 "name": "type"
152 },
153 "link": null
154 },
155 {
156 "color_off": null,
157 "color_on": null,
158 "dir": null,
159 "label": null,
160 "localized_name": "device",
161 "locked": null,
162 "name": "device",
163 "nameLocked": null,
164 "removable": null,
165 "shape": 7,
166 "type": "COMBO",
167 "widget": {
168 "name": "device"
169 },
170 "link": null
171 }
172 ],
173 "outputs": [
174 {
175 "color_off": null,
176 "color_on": null,
177 "dir": null,
178 "label": null,
179 "localized_name": "CLIP",
180 "locked": null,
181 "name": "CLIP",
182 "nameLocked": null,
183 "removable": null,
184 "shape": null,
185 "type": "CLIP",
186 "pos": null,
187 "slot_index": null,
188 "links": [
189 1,
190 2
191 ]
192 }
193 ],
194 "properties": {
195 "Node name for S&R": "CLIPLoader",
196 "models": [
197 {
198 "name": "qwen3vl_8b_int8_convrot.safetensors",
199 "url": "https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors",
200 "directory": "text_encoders"
201 }
202 ]
203 },
204 "widgets_values": [
205 "qwen3vl_8b_int8_convrot.safetensors",
206 "qwen_image",
207 "default"
208 ],
209 "widgets_values_named": {
210 "clip_name": "qwen3vl_8b_int8_convrot.safetensors",
211 "type": "qwen_image",
212 "device": "default"
213 }
214 },
215 {
216 "id": 4,
217 "type": "VAELoader",
218 "pos": [
219 540,
220 344
221 ],
222 "size": [
223 320,
224 58
225 ],
226 "flags": {},
227 "order": 3,
228 "mode": 0,
229 "showAdvanced": null,
230 "inputs": [
231 {
232 "color_off": null,
233 "color_on": null,
234 "dir": null,
235 "label": null,
236 "localized_name": "vae_name",
237 "locked": null,
238 "name": "vae_name",
239 "nameLocked": null,
240 "removable": null,
241 "shape": null,
242 "type": "COMBO",
243 "widget": {
244 "name": "vae_name"
245 },
246 "link": null
247 }
248 ],
249 "outputs": [
250 {
251 "color_off": null,
252 "color_on": null,
253 "dir": null,
254 "label": null,
255 "localized_name": "VAE",
256 "locked": null,
257 "name": "VAE",
258 "nameLocked": null,
259 "removable": null,
260 "shape": null,
261 "type": "VAE",
262 "pos": null,
263 "slot_index": null,
264 "links": [
265 3,
266 4
267 ]
268 }
269 ],
270 "properties": {
271 "Node name for S&R": "VAELoader",
272 "models": [
273 {
274 "name": "qwen_image_2.1_vae_bf16.safetensors",
275 "url": "https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/vae/qwen_image_2.1_vae_bf16.safetensors",
276 "directory": "vae"
277 }
278 ]
279 },
280 "widgets_values": [
281 "qwen_image_2.1_vae_bf16.safetensors"
282 ],
283 "widgets_values_named": {
284 "vae_name": "qwen_image_2.1_vae_bf16.safetensors"
285 }
286 },
287 {
288 "id": 5,
289 "type": "PrimitiveStringMultiline",
290 "pos": [
291 940,
292 0
293 ],
294 "size": [
295 440,
296 220
297 ],
298 "flags": {},
299 "order": 4,
300 "mode": 0,
301 "showAdvanced": null,
302 "inputs": [
303 {
304 "color_off": null,
305 "color_on": null,
306 "dir": null,
307 "label": null,
308 "localized_name": "value",
309 "locked": null,
310 "name": "value",
311 "nameLocked": null,
312 "removable": null,
313 "shape": null,
314 "type": "STRING",
315 "widget": {
316 "name": "value"
317 },
318 "link": null
319 }
320 ],
321 "outputs": [
322 {
323 "color_off": null,
324 "color_on": null,
325 "dir": null,
326 "label": null,
327 "localized_name": "STRING",
328 "locked": null,
329 "name": "STRING",
330 "nameLocked": null,
331 "removable": null,
332 "shape": null,
333 "type": "STRING",
334 "pos": null,
335 "slot_index": null,
336 "links": [
337 7,
338 13,
339 15
340 ]
341 }
342 ],
343 "title": "Prompt",
344 "properties": {
345 "Node name for S&R": "PrimitiveStringMultiline"
346 },
347 "widgets_values": [
348 "Soaking wet capybara taking shelter under a banana leaf in the rainy jungle, close up photo"
349 ],
350 "widgets_values_named": {
351 "value": "Soaking wet capybara taking shelter under a banana leaf in the rainy jungle, close up photo"
352 }
353 },
354 {
355 "id": 6,
356 "type": "ResolutionSelector",
357 "pos": [
358 940,
359 310
360 ],
361 "size": [
362 320,
363 150
364 ],
365 "flags": {},
366 "order": 5,
367 "mode": 0,
368 "showAdvanced": null,
369 "inputs": [
370 {
371 "color_off": null,
372 "color_on": null,
373 "dir": null,
374 "label": null,
375 "localized_name": "aspect_ratio",
376 "locked": null,
377 "name": "aspect_ratio",
378 "nameLocked": null,
379 "removable": null,
380 "shape": null,
381 "type": "COMBO",
382 "widget": {
383 "name": "aspect_ratio"
384 },
385 "link": null
386 },
387 {
388 "color_off": null,
389 "color_on": null,
390 "dir": null,
391 "label": null,
392 "localized_name": "megapixels",
393 "locked": null,
394 "name": "megapixels",
395 "nameLocked": null,
396 "removable": null,
397 "shape": null,
398 "type": "FLOAT",
399 "widget": {
400 "name": "megapixels"
401 },
402 "link": null
403 },
404 {
405 "color_off": null,
406 "color_on": null,
407 "dir": null,
408 "label": null,
409 "localized_name": "multiple",
410 "locked": null,
411 "name": "multiple",
412 "nameLocked": null,
413 "removable": null,
414 "shape": null,
415 "type": "INT",
416 "widget": {
417 "name": "multiple"
418 },
419 "link": null
420 },
421 {
422 "color_off": null,
423 "color_on": null,
424 "dir": null,
425 "label": null,
426 "localized_name": "preview",
427 "locked": null,
428 "name": "preview",
429 "nameLocked": null,
430 "removable": null,
431 "shape": 7,
432 "type": "RESOLUTION_PREVIEW",
433 "widget": {
434 "name": "preview"
435 },
436 "link": null
437 }
438 ],
439 "outputs": [
440 {
441 "color_off": null,
442 "color_on": null,
443 "dir": null,
444 "label": null,
445 "localized_name": "width",
446 "locked": null,
447 "name": "width",
448 "nameLocked": null,
449 "removable": null,
450 "shape": null,
451 "type": "INT",
452 "pos": null,
453 "slot_index": null,
454 "links": [
455 5,
456 28
457 ]
458 },
459 {
460 "color_off": null,
461 "color_on": null,
462 "dir": null,
463 "label": null,
464 "localized_name": "height",
465 "locked": null,
466 "name": "height",
467 "nameLocked": null,
468 "removable": null,
469 "shape": null,
470 "type": "INT",
471 "pos": null,
472 "slot_index": null,
473 "links": [
474 6,
475 29
476 ]
477 }
478 ],
479 "title": "Output size",
480 "properties": {
481 "Node name for S&R": "ResolutionSelector"
482 },
483 "widgets_values": [
484 "3:2 (Photo)",
485 1,
486 32
487 ],
488 "widgets_values_named": {
489 "aspect_ratio": "3:2 (Photo)",
490 "megapixels": 1,
491 "multiple": 32
492 }
493 },
494 {
495 "id": 7,
496 "type": "EmptyLatentImage",
497 "pos": [
498 940,
499 550
500 ],
501 "size": [
502 320,
503 106
504 ],
505 "flags": {},
506 "order": 6,
507 "mode": 0,
508 "showAdvanced": null,
509 "inputs": [
510 {
511 "color_off": null,
512 "color_on": null,
513 "dir": null,
514 "label": null,
515 "localized_name": "width",
516 "locked": null,
517 "name": "width",
518 "nameLocked": null,
519 "removable": null,
520 "shape": null,
521 "type": "INT",
522 "widget": {
523 "name": "width"
524 },
525 "link": 5
526 },
527 {
528 "color_off": null,
529 "color_on": null,
530 "dir": null,
531 "label": null,
532 "localized_name": "height",
533 "locked": null,
534 "name": "height",
535 "nameLocked": null,
536 "removable": null,
537 "shape": null,
538 "type": "INT",
539 "widget": {
540 "name": "height"
541 },
542 "link": 6
543 },
544 {
545 "color_off": null,
546 "color_on": null,
547 "dir": null,
548 "label": null,
549 "localized_name": "batch_size",
550 "locked": null,
551 "name": "batch_size",
552 "nameLocked": null,
553 "removable": null,
554 "shape": null,
555 "type": "INT",
556 "widget": {
557 "name": "batch_size"
558 },
559 "link": null
560 }
561 ],
562 "outputs": [
563 {
564 "color_off": null,
565 "color_on": null,
566 "dir": null,
567 "label": null,
568 "localized_name": "LATENT",
569 "locked": null,
570 "name": "LATENT",
571 "nameLocked": null,
572 "removable": null,
573 "shape": null,
574 "type": "LATENT",
575 "pos": null,
576 "slot_index": null,
577 "links": [
578 30,
579 31
580 ]
581 }
582 ],
583 "properties": {
584 "Node name for S&R": "EmptyLatentImage"
585 },
586 "widgets_values": [
587 1024,
588 1024,
589 1
590 ],
591 "widgets_values_named": {
592 "width": 1024,
593 "height": 1024,
594 "batch_size": 1
595 }
596 },
597 {
598 "id": 8,
599 "type": "PrimitiveBoolean",
600 "pos": [
601 1460,
602 0
603 ],
604 "size": [
605 320,
606 58
607 ],
608 "flags": {},
609 "order": 7,
610 "mode": 0,
611 "showAdvanced": null,
612 "inputs": [
613 {
614 "color_off": null,
615 "color_on": null,
616 "dir": null,
617 "label": null,
618 "localized_name": "value",
619 "locked": null,
620 "name": "value",
621 "nameLocked": null,
622 "removable": null,
623 "shape": null,
624 "type": "BOOLEAN",
625 "widget": {
626 "name": "value"
627 },
628 "link": null
629 }
630 ],
631 "outputs": [
632 {
633 "color_off": null,
634 "color_on": null,
635 "dir": null,
636 "label": null,
637 "localized_name": "BOOLEAN",
638 "locked": null,
639 "name": "BOOLEAN",
640 "nameLocked": null,
641 "removable": null,
642 "shape": null,
643 "type": "BOOLEAN",
644 "pos": null,
645 "slot_index": null,
646 "links": [
647 17
648 ]
649 }
650 ],
651 "title": "Enhance prompt",
652 "properties": {
653 "Node name for S&R": "PrimitiveBoolean"
654 },
655 "widgets_values": [
656 true
657 ],
658 "widgets_values_named": {
659 "value": true
660 }
661 },
662 {
663 "id": 9,
664 "type": "PrimitiveStringMultiline",
665 "pos": [
666 1460,
667 148
668 ],
669 "size": [
670 440,
671 180
672 ],
673 "flags": {},
674 "order": 8,
675 "mode": 0,
676 "showAdvanced": null,
677 "inputs": [
678 {
679 "color_off": null,
680 "color_on": null,
681 "dir": null,
682 "label": null,
683 "localized_name": "value",
684 "locked": null,
685 "name": "value",
686 "nameLocked": null,
687 "removable": null,
688 "shape": null,
689 "type": "STRING",
690 "widget": {
691 "name": "value"
692 },
693 "link": null
694 }
695 ],
696 "outputs": [
697 {
698 "color_off": null,
699 "color_on": null,
700 "dir": null,
701 "label": null,
702 "localized_name": "STRING",
703 "locked": null,
704 "name": "STRING",
705 "nameLocked": null,
706 "removable": null,
707 "shape": null,
708 "type": "STRING",
709 "pos": null,
710 "slot_index": null,
711 "links": [
712 8
713 ]
714 }
715 ],
716 "title": "PE system prompt (official Qwen-Image-2.1 T2I rewriter)",
717 "properties": {
718 "Node name for S&R": "PrimitiveStringMultiline"
719 },
720 "widgets_values": [
721 "# Image Prompt Rewriting Expert\n\nYou turn a user's image request into one long English paragraph that describes the\nfinished image as if you were looking at it, plus the aspect ratio it should be\nrendered at. You are not talking to the user and not talking to a renderer: you are\nan observer reporting what is in the frame.\n\nWork through the eight steps below in order. Each step commits one decision; later\nsteps never revise an earlier one.\n\n## Step 1 — Read the brief and split it in two\n\nList what the user has fixed and what they have left open.\n\nFixed, and it must survive into your description unchanged: every string of text\nthey want shown, every named object, every count, every stated colour, every stated\nposition, and the aspect ratio if they gave one. Copy their text strings character\nfor character, in their own script, including punctuation and spacing.\n\nA third thing they may give you is an instruction about the job rather than about the\npicture — \"use double quotes\", \"no hard-edged blocks\", \"4K, no noise\", \"make sure the\ntext is sharp\". That is not content. Obey it silently where it applies and never echo\nit: the description states what is in the frame, never what must be done.\n\nOpen, and you must decide it: everything they did not mention. A three-word request\nand a three-hundred-word request both become a description of the same size, so a\nshort brief means you are inventing most of the frame, not writing less.\n\n## Step 2 — Fix the frame\n\nDecide the orientation from the subject, then pick the ratio.\n\nIf the user states a ratio, use it. Otherwise: `3:2` for anything horizontal and\n`2:3` for anything vertical — these are the two defaults and cover most images.\nUse `1:1` for a square badge, icon, album cover or single centred emblem, `16:9`\nfor a wide cinematic or presentation frame, `1:2` or `9:16` for a phone screen or a\ntall standing banner. `3:4`, `2:1`, `21:9`, `4:3`, `9:21`, `4:5`, `3:1`, `5:4`,\n`1:3` exist but only when the subject or the user really calls for them.\n\nThe ratio lives only in the `wh_ratio` field. Never write a ratio, a resolution, or\na pixel count into the description itself.\n\n## Step 3 — Write the opening sentence\n\nOne sentence, around twenty words. Name the medium, the style, the subject, and the\nbackground or palette; usually name the orientation too:\n\n`The image is a ⟨vertical / wide / square / tall⟩ ⟨style⟩ ⟨photograph · poster · illustration · scene · portrait · infographic · close-up · graphic · page · card · sheet · logo⟩ of ⟨subject⟩, ⟨the background and its palette⟩.`\n\n`This is a …` or a bare `A vertical realistic photograph of …` work equally well. The\nmedium noun is the one part that is never omitted.\n\nThe style word goes here — realistic, photorealistic, minimalist, flat-vector,\ncinematic, watercolour, isometric, editorial, hand-drawn, 3D-rendered, retro. Name\nit once here; you may echo it in the closing sentence.\n\n## Step 4 — Inventory before you write\n\nBefore any more prose, settle two lists.\n\nEvery element that will appear, each with a place in the frame: upper-left,\nacross the top, on the far right, in the lower-third, in the centre, in front of,\nbehind, tucked into the corner. You will need eight to fourteen such positional\nphrases, about ten typically, and they must reach the corners, the edges and the\ncentre — not cluster in the middle.\n\nEvery piece of text that will be legible in the image, in reading order.\n\n## Step 5 — Walk the frame\n\nNow describe it in order. Which order depends on how the frame is filled.\n\n**If the frame is divided into regions** — a poster, a page, an interface, a layout, a\nwide scene with several things in it — walk the regions:\n\n1. The background and the surface it sits on — this comes immediately after the\n opening sentence, not at the end.\n2. The top band: headline, header bar, sky, ceiling, whatever occupies the top edge.\n3. Down and across the body of the frame: left side, then centre, then right side.\n Give each region one or two sentences.\n4. The bottom band: footer, foreground, ground plane, base row.\n\n**If one subject fills the frame** — a portrait, a close-up, a single object — walk\nthe subject instead: the background and how far it falls off, then the subject's pose\nand where it is placed in the frame, then head and face, then body and each garment or\nsurface, then what is held or touching it, then whatever little is left at the edges.\nKeep using positional phrases inside the subject — in the upper-left of the frame,\nbehind the left shoulder, along the lower edge — so the frame stays locatable.\n\nRoughly a third of your sentences should open on the positional phrase itself —\n\"On the right side of the frame, …\", \"In the upper-left corner, …\", \"Across the\nlower third, …\" — so the reader always knows where they are looking.\n\nKeep it to one paragraph. Break to a new paragraph only when the image is genuinely\nbuilt from stacked regions — panels, cards, sections, slides — and then one\nparagraph per region, each opening on where that region sits.\n\n## Step 6 — Set every piece of text\n\nSkip this step if nothing in the image is meant to be read — a third of images have\nno legible text at all, and inventing signage for them is a mistake.\n\nOtherwise, for each string from your Step 4 list, in reading order, name where it sits,\nwhat it looks like, and what it says: `a bold black headline across the top reads \"…\"`.\n\nPut the string in straight double quotes, in its own script — Chinese, Russian,\nKorean, Japanese and Arabic text stays in Chinese, Russian, Korean, Japanese and\nArabic. Give its weight, colour, case and relative size. Describe a line break as a\nsecond line rather than putting a real newline inside the string. If a mark is not meant\nto be read — distant signage, a label behind glass, dense body copy — call it\nblurred, indistinct, or too small to read rather than inventing letters. If the image contains a chart\nor a table, its axes, tick labels, legend entries, series and cell values are text\ntoo: write them out.\n\n## Step 7 — Give the lighting its own sentence\n\nEvery image has light in it, and the description always accounts for it: the source,\nits direction, its quality, and the shadows and highlights it leaves. Soft diffused\ndaylight from a window on the left, hard overhead studio light, warm low sun, flat\neven ambient light for a diagram.\n\nOnce the contents are placed, give it a sentence of its own — `The lighting is …` —\nor, if the light is what makes a particular surface look the way it does, fold it into\nthat surface's sentence. Either way it is stated explicitly, not left implied.\n\n## Step 8 — Close with the whole frame\n\nEnd on a single sentence that steps back:\n\n`The overall composition ⟨is / uses / feels⟩ …`\n\n`The composition is …`, `The overall design …`, `The overall mood …`, `The overall\npalette …` and `The image has …` are the same move. Cover balance and symmetry, the\npalette, the style, and the mood in that one sentence. Write exactly one such\nsentence — do not follow it with a second summary.\n\n## Throughout\n\n**Size.** The description runs about twenty sentences and four to five hundred words,\nroughly twenty-five words a sentence. That is the same size whether the brief was three\nwords or three hundred: a dense frame with many regions and a lot of text runs longer, a\nsingle quiet subject runs shorter, but a thin brief never buys a thin description.\n\n**Observe, don't instruct.** Present tense, third person, declarative. No \"you\", no\n\"create\", no \"make sure\", no \"the AI should\". No quality boosters — no \"masterpiece\",\n\"8K\", \"highly detailed\", \"award-winning\".\n\n**Hedge what you cannot be certain of.** An observer describing a picture says\n\"appears to be\", \"likely\", \"suggesting\", and offers a pair — \"a notebook\nor a tablet\", \"wood or dark laminate\" — when the thing is genuinely ambiguous. Do\nthis often; it is the natural register here. Be flatly definite only about what the\nuser fixed.\n\n**Name colours with a modifier, almost never bare.** Deep navy, muted olive, pale\ncream, warm terracotta, soft dusty rose, blue-grey, off-white, charcoal, brownish-\ngreen. Hex codes only if the user gave them.\n\n**Give the material, not just the noun.** Brushed metal, matte plastic, glossy\nceramic, coarse linen, weathered wood, frosted glass, grain, scuffs, condensation,\nvisible brush strokes, paper fibre.\n\n**Enumerate; never summarise.** \"Several items\" and \"various decorations\" are not\ndescriptions. Say what each thing is. Write small counts as words — three, five,\ntwelve — and if something is partly hidden, say so and describe the visible part.\n\n**People get their observable surface.** Build, posture, where they are looking,\nexpression, hair, skin tone, and each garment with its colour and material. Age is a\nlife stage or a decade — a child, a teenager, a young adult, middle-aged, elderly,\nin her thirties — never a number of years. If a face is turned away or cropped, say\nthat instead of describing it.\n\n**Objects by class, not by brand.** A silver laptop, a mirrorless camera, a compact\nhatchback — unless the user named the brand. Photographic and design vocabulary is\nwelcome: shallow depth of field, bokeh, backlit, close-up, negative space,\ngrid, drop shadow.\n\n**Everything holds together physically.** Shadows fall away from the light, reflections\nmatch what is in front of the surface, scale is consistent between neighbouring\nobjects, and a surface reacts to what sits on it. If the user asked for something\nimpossible, describe it as the image shows it and let the rest of the scene stay\ncoherent around it.\n\n## Language\n\nThe description is always in English, whatever language the request arrives in. The\nonly exception is text shown inside the image, which stays in its own script.\n\n## Output format\n\nReturn one strictly valid JSON object on a single line, nothing before or after:\n\n{\"rewritten_prompt\": \"<the description>\", \"wh_ratio\": \"<e.g. 3:2>\"}"
722 ],
723 "widgets_values_named": {
724 "value": "# Image Prompt Rewriting Expert\n\nYou turn a user's image request into one long English paragraph that describes the\nfinished image as if you were looking at it, plus the aspect ratio it should be\nrendered at. You are not talking to the user and not talking to a renderer: you are\nan observer reporting what is in the frame.\n\nWork through the eight steps below in order. Each step commits one decision; later\nsteps never revise an earlier one.\n\n## Step 1 — Read the brief and split it in two\n\nList what the user has fixed and what they have left open.\n\nFixed, and it must survive into your description unchanged: every string of text\nthey want shown, every named object, every count, every stated colour, every stated\nposition, and the aspect ratio if they gave one. Copy their text strings character\nfor character, in their own script, including punctuation and spacing.\n\nA third thing they may give you is an instruction about the job rather than about the\npicture — \"use double quotes\", \"no hard-edged blocks\", \"4K, no noise\", \"make sure the\ntext is sharp\". That is not content. Obey it silently where it applies and never echo\nit: the description states what is in the frame, never what must be done.\n\nOpen, and you must decide it: everything they did not mention. A three-word request\nand a three-hundred-word request both become a description of the same size, so a\nshort brief means you are inventing most of the frame, not writing less.\n\n## Step 2 — Fix the frame\n\nDecide the orientation from the subject, then pick the ratio.\n\nIf the user states a ratio, use it. Otherwise: `3:2` for anything horizontal and\n`2:3` for anything vertical — these are the two defaults and cover most images.\nUse `1:1` for a square badge, icon, album cover or single centred emblem, `16:9`\nfor a wide cinematic or presentation frame, `1:2` or `9:16` for a phone screen or a\ntall standing banner. `3:4`, `2:1`, `21:9`, `4:3`, `9:21`, `4:5`, `3:1`, `5:4`,\n`1:3` exist but only when the subject or the user really calls for them.\n\nThe ratio lives only in the `wh_ratio` field. Never write a ratio, a resolution, or\na pixel count into the description itself.\n\n## Step 3 — Write the opening sentence\n\nOne sentence, around twenty words. Name the medium, the style, the subject, and the\nbackground or palette; usually name the orientation too:\n\n`The image is a ⟨vertical / wide / square / tall⟩ ⟨style⟩ ⟨photograph · poster · illustration · scene · portrait · infographic · close-up · graphic · page · card · sheet · logo⟩ of ⟨subject⟩, ⟨the background and its palette⟩.`\n\n`This is a …` or a bare `A vertical realistic photograph of …` work equally well. The\nmedium noun is the one part that is never omitted.\n\nThe style word goes here — realistic, photorealistic, minimalist, flat-vector,\ncinematic, watercolour, isometric, editorial, hand-drawn, 3D-rendered, retro. Name\nit once here; you may echo it in the closing sentence.\n\n## Step 4 — Inventory before you write\n\nBefore any more prose, settle two lists.\n\nEvery element that will appear, each with a place in the frame: upper-left,\nacross the top, on the far right, in the lower-third, in the centre, in front of,\nbehind, tucked into the corner. You will need eight to fourteen such positional\nphrases, about ten typically, and they must reach the corners, the edges and the\ncentre — not cluster in the middle.\n\nEvery piece of text that will be legible in the image, in reading order.\n\n## Step 5 — Walk the frame\n\nNow describe it in order. Which order depends on how the frame is filled.\n\n**If the frame is divided into regions** — a poster, a page, an interface, a layout, a\nwide scene with several things in it — walk the regions:\n\n1. The background and the surface it sits on — this comes immediately after the\n opening sentence, not at the end.\n2. The top band: headline, header bar, sky, ceiling, whatever occupies the top edge.\n3. Down and across the body of the frame: left side, then centre, then right side.\n Give each region one or two sentences.\n4. The bottom band: footer, foreground, ground plane, base row.\n\n**If one subject fills the frame** — a portrait, a close-up, a single object — walk\nthe subject instead: the background and how far it falls off, then the subject's pose\nand where it is placed in the frame, then head and face, then body and each garment or\nsurface, then what is held or touching it, then whatever little is left at the edges.\nKeep using positional phrases inside the subject — in the upper-left of the frame,\nbehind the left shoulder, along the lower edge — so the frame stays locatable.\n\nRoughly a third of your sentences should open on the positional phrase itself —\n\"On the right side of the frame, …\", \"In the upper-left corner, …\", \"Across the\nlower third, …\" — so the reader always knows where they are looking.\n\nKeep it to one paragraph. Break to a new paragraph only when the image is genuinely\nbuilt from stacked regions — panels, cards, sections, slides — and then one\nparagraph per region, each opening on where that region sits.\n\n## Step 6 — Set every piece of text\n\nSkip this step if nothing in the image is meant to be read — a third of images have\nno legible text at all, and inventing signage for them is a mistake.\n\nOtherwise, for each string from your Step 4 list, in reading order, name where it sits,\nwhat it looks like, and what it says: `a bold black headline across the top reads \"…\"`.\n\nPut the string in straight double quotes, in its own script — Chinese, Russian,\nKorean, Japanese and Arabic text stays in Chinese, Russian, Korean, Japanese and\nArabic. Give its weight, colour, case and relative size. Describe a line break as a\nsecond line rather than putting a real newline inside the string. If a mark is not meant\nto be read — distant signage, a label behind glass, dense body copy — call it\nblurred, indistinct, or too small to read rather than inventing letters. If the image contains a chart\nor a table, its axes, tick labels, legend entries, series and cell values are text\ntoo: write them out.\n\n## Step 7 — Give the lighting its own sentence\n\nEvery image has light in it, and the description always accounts for it: the source,\nits direction, its quality, and the shadows and highlights it leaves. Soft diffused\ndaylight from a window on the left, hard overhead studio light, warm low sun, flat\neven ambient light for a diagram.\n\nOnce the contents are placed, give it a sentence of its own — `The lighting is …` —\nor, if the light is what makes a particular surface look the way it does, fold it into\nthat surface's sentence. Either way it is stated explicitly, not left implied.\n\n## Step 8 — Close with the whole frame\n\nEnd on a single sentence that steps back:\n\n`The overall composition ⟨is / uses / feels⟩ …`\n\n`The composition is …`, `The overall design …`, `The overall mood …`, `The overall\npalette …` and `The image has …` are the same move. Cover balance and symmetry, the\npalette, the style, and the mood in that one sentence. Write exactly one such\nsentence — do not follow it with a second summary.\n\n## Throughout\n\n**Size.** The description runs about twenty sentences and four to five hundred words,\nroughly twenty-five words a sentence. That is the same size whether the brief was three\nwords or three hundred: a dense frame with many regions and a lot of text runs longer, a\nsingle quiet subject runs shorter, but a thin brief never buys a thin description.\n\n**Observe, don't instruct.** Present tense, third person, declarative. No \"you\", no\n\"create\", no \"make sure\", no \"the AI should\". No quality boosters — no \"masterpiece\",\n\"8K\", \"highly detailed\", \"award-winning\".\n\n**Hedge what you cannot be certain of.** An observer describing a picture says\n\"appears to be\", \"likely\", \"suggesting\", and offers a pair — \"a notebook\nor a tablet\", \"wood or dark laminate\" — when the thing is genuinely ambiguous. Do\nthis often; it is the natural register here. Be flatly definite only about what the\nuser fixed.\n\n**Name colours with a modifier, almost never bare.** Deep navy, muted olive, pale\ncream, warm terracotta, soft dusty rose, blue-grey, off-white, charcoal, brownish-\ngreen. Hex codes only if the user gave them.\n\n**Give the material, not just the noun.** Brushed metal, matte plastic, glossy\nceramic, coarse linen, weathered wood, frosted glass, grain, scuffs, condensation,\nvisible brush strokes, paper fibre.\n\n**Enumerate; never summarise.** \"Several items\" and \"various decorations\" are not\ndescriptions. Say what each thing is. Write small counts as words — three, five,\ntwelve — and if something is partly hidden, say so and describe the visible part.\n\n**People get their observable surface.** Build, posture, where they are looking,\nexpression, hair, skin tone, and each garment with its colour and material. Age is a\nlife stage or a decade — a child, a teenager, a young adult, middle-aged, elderly,\nin her thirties — never a number of years. If a face is turned away or cropped, say\nthat instead of describing it.\n\n**Objects by class, not by brand.** A silver laptop, a mirrorless camera, a compact\nhatchback — unless the user named the brand. Photographic and design vocabulary is\nwelcome: shallow depth of field, bokeh, backlit, close-up, negative space,\ngrid, drop shadow.\n\n**Everything holds together physically.** Shadows fall away from the light, reflections\nmatch what is in front of the surface, scale is consistent between neighbouring\nobjects, and a surface reacts to what sits on it. If the user asked for something\nimpossible, describe it as the image shows it and let the rest of the scene stay\ncoherent around it.\n\n## Language\n\nThe description is always in English, whatever language the request arrives in. The\nonly exception is text shown inside the image, which stays in its own script.\n\n## Output format\n\nReturn one strictly valid JSON object on a single line, nothing before or after:\n\n{\"rewritten_prompt\": \"<the description>\", \"wh_ratio\": \"<e.g. 3:2>\"}"
725 }
726 },
727 {
728 "id": 10,
729 "type": "StringFormat",
730 "pos": [
731 1460,
732 418
733 ],
734 "size": [
735 320,
736 148
737 ],
738 "flags": {},
739 "order": 9,
740 "mode": 0,
741 "showAdvanced": null,
742 "inputs": [
743 {
744 "color_off": null,
745 "color_on": null,
746 "dir": null,
747 "label": null,
748 "localized_name": "a",
749 "locked": null,
750 "name": "values.a",
751 "nameLocked": null,
752 "removable": null,
753 "shape": 7,
754 "type": "*",
755 "pos": null,
756 "link": 7
757 },
758 {
759 "color_off": null,
760 "color_on": null,
761 "dir": null,
762 "label": null,
763 "localized_name": "b",
764 "locked": null,
765 "name": "values.b",
766 "nameLocked": null,
767 "removable": null,
768 "shape": 7,
769 "type": "*",
770 "pos": null,
771 "link": 28
772 },
773 {
774 "color_off": null,
775 "color_on": null,
776 "dir": null,
777 "label": null,
778 "localized_name": "c",
779 "locked": null,
780 "name": "values.c",
781 "nameLocked": null,
782 "removable": null,
783 "shape": 7,
784 "type": "*",
785 "pos": null,
786 "link": 29
787 },
788 {
789 "color_off": null,
790 "color_on": null,
791 "dir": null,
792 "label": null,
793 "localized_name": "d",
794 "locked": null,
795 "name": "values.d",
796 "nameLocked": null,
797 "removable": null,
798 "shape": 7,
799 "type": "*",
800 "pos": null,
801 "link": null
802 },
803 {
804 "color_off": null,
805 "color_on": null,
806 "dir": null,
807 "label": null,
808 "localized_name": "f_string",
809 "locked": null,
810 "name": "f_string",
811 "nameLocked": null,
812 "removable": null,
813 "shape": null,
814 "type": "STRING",
815 "widget": {
816 "name": "f_string"
817 },
818 "link": null
819 }
820 ],
821 "outputs": [
822 {
823 "color_off": null,
824 "color_on": null,
825 "dir": null,
826 "label": null,
827 "localized_name": "STRING",
828 "locked": null,
829 "name": "STRING",
830 "nameLocked": null,
831 "removable": null,
832 "shape": null,
833 "type": "STRING",
834 "pos": null,
835 "slot_index": null,
836 "links": [
837 9
838 ]
839 }
840 ],
841 "title": "PE request",
842 "properties": {
843 "Node name for S&R": "StringFormat"
844 },
845 "widgets_values": [
846 "{a}\nAspect ratio: {b}:{c}"
847 ],
848 "widgets_values_named": {
849 "f_string": "{a}\nAspect ratio: {b}:{c}"
850 }
851 },
852 {
853 "id": 11,
854 "type": "TextGenerate",
855 "pos": [
856 1980,
857 0
858 ],
859 "size": [
860 320,
861 288
862 ],
863 "flags": {},
864 "order": 10,
865 "mode": 0,
866 "showAdvanced": null,
867 "inputs": [
868 {
869 "color_off": null,
870 "color_on": null,
871 "dir": null,
872 "label": null,
873 "localized_name": "clip",
874 "locked": null,
875 "name": "clip",
876 "nameLocked": null,
877 "removable": null,
878 "shape": null,
879 "type": "CLIP",
880 "pos": null,
881 "link": 2
882 },
883 {
884 "color_off": null,
885 "color_on": null,
886 "dir": null,
887 "label": null,
888 "localized_name": "image",
889 "locked": null,
890 "name": "image",
891 "nameLocked": null,
892 "removable": null,
893 "shape": 7,
894 "type": "IMAGE",
895 "pos": null,
896 "link": null
897 },
898 {
899 "color_off": null,
900 "color_on": null,
901 "dir": null,
902 "label": null,
903 "localized_name": "video",
904 "locked": null,
905 "name": "video",
906 "nameLocked": null,
907 "removable": null,
908 "shape": 7,
909 "type": "IMAGE",
910 "pos": null,
911 "link": null
912 },
913 {
914 "color_off": null,
915 "color_on": null,
916 "dir": null,
917 "label": null,
918 "localized_name": "audio",
919 "locked": null,
920 "name": "audio",
921 "nameLocked": null,
922 "removable": null,
923 "shape": 7,
924 "type": "AUDIO",
925 "pos": null,
926 "link": null
927 },
928 {
929 "color_off": null,
930 "color_on": null,
931 "dir": null,
932 "label": null,
933 "localized_name": "system_prompt",
934 "locked": null,
935 "name": "system_prompt",
936 "nameLocked": null,
937 "removable": null,
938 "shape": 7,
939 "type": "STRING",
940 "pos": null,
941 "link": 8
942 },
943 {
944 "color_off": null,
945 "color_on": null,
946 "dir": null,
947 "label": null,
948 "localized_name": "prompt",
949 "locked": null,
950 "name": "prompt",
951 "nameLocked": null,
952 "removable": null,
953 "shape": null,
954 "type": "STRING",
955 "widget": {
956 "name": "prompt"
957 },
958 "link": 9
959 },
960 {
961 "color_off": null,
962 "color_on": null,
963 "dir": null,
964 "label": null,
965 "localized_name": "max_length",
966 "locked": null,
967 "name": "max_length",
968 "nameLocked": null,
969 "removable": null,
970 "shape": null,
971 "type": "INT",
972 "widget": {
973 "name": "max_length"
974 },
975 "link": null
976 },
977 {
978 "color_off": null,
979 "color_on": null,
980 "dir": null,
981 "label": null,
982 "localized_name": "Sampling Mode",
983 "locked": null,
984 "name": "sampling_mode",
985 "nameLocked": null,
986 "removable": null,
987 "shape": null,
988 "type": "COMFY_DYNAMICCOMBO_V3",
989 "widget": {
990 "name": "sampling_mode"
991 },
992 "link": null
993 },
994 {
995 "color_off": null,
996 "color_on": null,
997 "dir": null,
998 "label": null,
999 "localized_name": "thinking",
1000 "locked": null,
1001 "name": "thinking",
1002 "nameLocked": null,
1003 "removable": null,
1004 "shape": 7,
1005 "type": "BOOLEAN",
1006 "widget": {
1007 "name": "thinking"
1008 },
1009 "link": null
1010 },
1011 {
1012 "color_off": null,
1013 "color_on": null,
1014 "dir": null,
1015 "label": null,
1016 "localized_name": "use_default_template",
1017 "locked": null,
1018 "name": "use_default_template",
1019 "nameLocked": null,
1020 "removable": null,
1021 "shape": 7,
1022 "type": "BOOLEAN",
1023 "widget": {
1024 "name": "use_default_template"
1025 },
1026 "link": null
1027 },
1028 {
1029 "color_off": null,
1030 "color_on": null,
1031 "dir": null,
1032 "label": null,
1033 "localized_name": "mtp",
1034 "locked": null,
1035 "name": "mtp",
1036 "nameLocked": null,
1037 "removable": null,
1038 "shape": 7,
1039 "type": "COMBO",
1040 "widget": {
1041 "name": "mtp"
1042 },
1043 "link": null
1044 }
1045 ],
1046 "outputs": [
1047 {
1048 "color_off": null,
1049 "color_on": null,
1050 "dir": null,
1051 "label": null,
1052 "localized_name": "generated_text",
1053 "locked": null,
1054 "name": "generated_text",
1055 "nameLocked": null,
1056 "removable": null,
1057 "shape": null,
1058 "type": "STRING",
1059 "pos": null,
1060 "slot_index": null,
1061 "links": [
1062 10
1063 ]
1064 },
1065 {
1066 "color_off": null,
1067 "color_on": null,
1068 "dir": null,
1069 "label": null,
1070 "localized_name": "thinking",
1071 "locked": null,
1072 "name": "thinking",
1073 "nameLocked": null,
1074 "removable": null,
1075 "shape": null,
1076 "type": "STRING",
1077 "pos": null,
1078 "slot_index": null,
1079 "links": null
1080 }
1081 ],
1082 "title": "Rewrite prompt (Qwen3-VL text encoder)",
1083 "properties": {
1084 "Node name for S&R": "TextGenerate"
1085 },
1086 "widgets_values": [
1087 "",
1088 512,
1089 "off",
1090 true,
1091 true,
1092 "auto"
1093 ],
1094 "widgets_values_named": {
1095 "prompt": "",
1096 "max_length": 512,
1097 "sampling_mode": "off",
1098 "thinking": true,
1099 "use_default_template": true,
1100 "mtp": "auto"
1101 }
1102 },
1103 {
1104 "id": 12,
1105 "type": "JsonExtractString",
1106 "pos": [
1107 1980,
1108 378
1109 ],
1110 "size": [
1111 320,
1112 112
1113 ],
1114 "flags": {},
1115 "order": 11,
1116 "mode": 0,
1117 "showAdvanced": null,
1118 "inputs": [
1119 {
1120 "color_off": null,
1121 "color_on": null,
1122 "dir": null,
1123 "label": null,
1124 "localized_name": "json_string",
1125 "locked": null,
1126 "name": "json_string",
1127 "nameLocked": null,
1128 "removable": null,
1129 "shape": null,
1130 "type": "STRING",
1131 "widget": {
1132 "name": "json_string"
1133 },
1134 "link": 10
1135 },
1136 {
1137 "color_off": null,
1138 "color_on": null,
1139 "dir": null,
1140 "label": null,
1141 "localized_name": "key",
1142 "locked": null,
1143 "name": "key",
1144 "nameLocked": null,
1145 "removable": null,
1146 "shape": null,
1147 "type": "STRING",
1148 "widget": {
1149 "name": "key"
1150 },
1151 "link": null
1152 }
1153 ],
1154 "outputs": [
1155 {
1156 "color_off": null,
1157 "color_on": null,
1158 "dir": null,
1159 "label": null,
1160 "localized_name": "STRING",
1161 "locked": null,
1162 "name": "STRING",
1163 "nameLocked": null,
1164 "removable": null,
1165 "shape": null,
1166 "type": "STRING",
1167 "pos": null,
1168 "slot_index": null,
1169 "links": [
1170 11,
1171 12
1172 ]
1173 }
1174 ],
1175 "properties": {
1176 "Node name for S&R": "JsonExtractString"
1177 },
1178 "widgets_values": [
1179 "",
1180 "rewritten_prompt"
1181 ],
1182 "widgets_values_named": {
1183 "json_string": "",
1184 "key": "rewritten_prompt"
1185 }
1186 },
1187 {
1188 "id": 13,
1189 "type": "StringCompare",
1190 "pos": [
1191 1980,
1192 580
1193 ],
1194 "size": [
1195 320,
1196 190
1197 ],
1198 "flags": {},
1199 "order": 12,
1200 "mode": 0,
1201 "showAdvanced": null,
1202 "inputs": [
1203 {
1204 "color_off": null,
1205 "color_on": null,
1206 "dir": null,
1207 "label": null,
1208 "localized_name": "string_a",
1209 "locked": null,
1210 "name": "string_a",
1211 "nameLocked": null,
1212 "removable": null,
1213 "shape": null,
1214 "type": "STRING",
1215 "widget": {
1216 "name": "string_a"
1217 },
1218 "link": 11
1219 },
1220 {
1221 "color_off": null,
1222 "color_on": null,
1223 "dir": null,
1224 "label": null,
1225 "localized_name": "string_b",
1226 "locked": null,
1227 "name": "string_b",
1228 "nameLocked": null,
1229 "removable": null,
1230 "shape": null,
1231 "type": "STRING",
1232 "widget": {
1233 "name": "string_b"
1234 },
1235 "link": null
1236 },
1237 {
1238 "color_off": null,
1239 "color_on": null,
1240 "dir": null,
1241 "label": null,
1242 "localized_name": "mode",
1243 "locked": null,
1244 "name": "mode",
1245 "nameLocked": null,
1246 "removable": null,
1247 "shape": null,
1248 "type": "COMBO",
1249 "widget": {
1250 "name": "mode"
1251 },
1252 "link": null
1253 },
1254 {
1255 "color_off": null,
1256 "color_on": null,
1257 "dir": null,
1258 "label": null,
1259 "localized_name": "case_sensitive",
1260 "locked": null,
1261 "name": "case_sensitive",
1262 "nameLocked": null,
1263 "removable": null,
1264 "shape": null,
1265 "type": "BOOLEAN",
1266 "widget": {
1267 "name": "case_sensitive"
1268 },
1269 "link": null
1270 }
1271 ],
1272 "outputs": [
1273 {
1274 "color_off": null,
1275 "color_on": null,
1276 "dir": null,
1277 "label": null,
1278 "localized_name": "BOOLEAN",
1279 "locked": null,
1280 "name": "BOOLEAN",
1281 "nameLocked": null,
1282 "removable": null,
1283 "shape": null,
1284 "type": "BOOLEAN",
1285 "pos": null,
1286 "slot_index": null,
1287 "links": [
1288 14
1289 ]
1290 }
1291 ],
1292 "title": "Rewrite failed?",
1293 "properties": {
1294 "Node name for S&R": "StringCompare"
1295 },
1296 "widgets_values": [
1297 "",
1298 "",
1299 "Equal",
1300 true
1301 ],
1302 "widgets_values_named": {
1303 "string_a": "",
1304 "string_b": "",
1305 "mode": "Equal",
1306 "case_sensitive": true
1307 }
1308 },
1309 {
1310 "id": 14,
1311 "type": "ComfySwitchNode",
1312 "pos": [
1313 2380,
1314 0
1315 ],
1316 "size": [
1317 320,
1318 78
1319 ],
1320 "flags": {},
1321 "order": 13,
1322 "mode": 0,
1323 "showAdvanced": null,
1324 "inputs": [
1325 {
1326 "color_off": null,
1327 "color_on": null,
1328 "dir": null,
1329 "label": null,
1330 "localized_name": "on_false",
1331 "locked": null,
1332 "name": "on_false",
1333 "nameLocked": null,
1334 "removable": null,
1335 "shape": 7,
1336 "type": "STRING",
1337 "pos": null,
1338 "link": 12
1339 },
1340 {
1341 "color_off": null,
1342 "color_on": null,
1343 "dir": null,
1344 "label": null,
1345 "localized_name": "on_true",
1346 "locked": null,
1347 "name": "on_true",
1348 "nameLocked": null,
1349 "removable": null,
1350 "shape": 7,
1351 "type": "STRING",
1352 "pos": null,
1353 "link": 13
1354 },
1355 {
1356 "color_off": null,
1357 "color_on": null,
1358 "dir": null,
1359 "label": null,
1360 "localized_name": "switch",
1361 "locked": null,
1362 "name": "switch",
1363 "nameLocked": null,
1364 "removable": null,
1365 "shape": null,
1366 "type": "BOOLEAN",
1367 "widget": {
1368 "name": "switch"
1369 },
1370 "link": 14
1371 }
1372 ],
1373 "outputs": [
1374 {
1375 "color_off": null,
1376 "color_on": null,
1377 "dir": null,
1378 "label": null,
1379 "localized_name": "output",
1380 "locked": null,
1381 "name": "output",
1382 "nameLocked": null,
1383 "removable": null,
1384 "shape": null,
1385 "type": "STRING",
1386 "pos": null,
1387 "slot_index": null,
1388 "links": [
1389 16
1390 ]
1391 }
1392 ],
1393 "title": "Fall back to the original prompt",
1394 "properties": {
1395 "Node name for S&R": "ComfySwitchNode"
1396 },
1397 "widgets_values": [
1398 false
1399 ],
1400 "widgets_values_named": {
1401 "switch": false
1402 }
1403 },
1404 {
1405 "id": 15,
1406 "type": "ComfySwitchNode",
1407 "pos": [
1408 2380,
1409 168
1410 ],
1411 "size": [
1412 320,
1413 78
1414 ],
1415 "flags": {},
1416 "order": 14,
1417 "mode": 0,
1418 "showAdvanced": null,
1419 "inputs": [
1420 {
1421 "color_off": null,
1422 "color_on": null,
1423 "dir": null,
1424 "label": null,
1425 "localized_name": "on_false",
1426 "locked": null,
1427 "name": "on_false",
1428 "nameLocked": null,
1429 "removable": null,
1430 "shape": 7,
1431 "type": "STRING",
1432 "pos": null,
1433 "link": 15
1434 },
1435 {
1436 "color_off": null,
1437 "color_on": null,
1438 "dir": null,
1439 "label": null,
1440 "localized_name": "on_true",
1441 "locked": null,
1442 "name": "on_true",
1443 "nameLocked": null,
1444 "removable": null,
1445 "shape": 7,
1446 "type": "STRING",
1447 "pos": null,
1448 "link": 16
1449 },
1450 {
1451 "color_off": null,
1452 "color_on": null,
1453 "dir": null,
1454 "label": null,
1455 "localized_name": "switch",
1456 "locked": null,
1457 "name": "switch",
1458 "nameLocked": null,
1459 "removable": null,
1460 "shape": null,
1461 "type": "BOOLEAN",
1462 "widget": {
1463 "name": "switch"
1464 },
1465 "link": 17
1466 }
1467 ],
1468 "outputs": [
1469 {
1470 "color_off": null,
1471 "color_on": null,
1472 "dir": null,
1473 "label": null,
1474 "localized_name": "output",
1475 "locked": null,
1476 "name": "output",
1477 "nameLocked": null,
1478 "removable": null,
1479 "shape": null,
1480 "type": "STRING",
1481 "pos": null,
1482 "slot_index": null,
1483 "links": [
1484 18,
1485 19
1486 ]
1487 }
1488 ],
1489 "title": "Enhanced or original",
1490 "properties": {
1491 "Node name for S&R": "ComfySwitchNode"
1492 },
1493 "widgets_values": [
1494 false
1495 ],
1496 "widgets_values_named": {
1497 "switch": false
1498 }
1499 },
1500 {
1501 "id": 16,
1502 "type": "PreviewAny",
1503 "pos": [
1504 2380,
1505 336
1506 ],
1507 "size": [
1508 440,
1509 260
1510 ],
1511 "flags": {},
1512 "order": 15,
1513 "mode": 0,
1514 "showAdvanced": null,
1515 "inputs": [
1516 {
1517 "color_off": null,
1518 "color_on": null,
1519 "dir": null,
1520 "label": null,
1521 "localized_name": "source",
1522 "locked": null,
1523 "name": "source",
1524 "nameLocked": null,
1525 "removable": null,
1526 "shape": null,
1527 "type": "*",
1528 "pos": null,
1529 "link": 18
1530 }
1531 ],
1532 "outputs": [
1533 {
1534 "color_off": null,
1535 "color_on": null,
1536 "dir": null,
1537 "label": null,
1538 "localized_name": "STRING",
1539 "locked": null,
1540 "name": "STRING",
1541 "nameLocked": null,
1542 "removable": null,
1543 "shape": null,
1544 "type": "STRING",
1545 "pos": null,
1546 "slot_index": null,
1547 "links": null
1548 }
1549 ],
1550 "title": "Prompt used",
1551 "properties": {
1552 "Node name for S&R": "PreviewAny"
1553 },
1554 "widgets_values": [],
1555 "widgets_values_named": {}
1556 },
1557 {
1558 "id": 17,
1559 "type": "TextEncodeQwenImage21",
1560 "pos": [
1561 2900,
1562 0
1563 ],
1564 "size": [
1565 320,
1566 206
1567 ],
1568 "flags": {},
1569 "order": 16,
1570 "mode": 0,
1571 "showAdvanced": null,
1572 "inputs": [
1573 {
1574 "color_off": null,
1575 "color_on": null,
1576 "dir": null,
1577 "label": null,
1578 "localized_name": "clip",
1579 "locked": null,
1580 "name": "clip",
1581 "nameLocked": null,
1582 "removable": null,
1583 "shape": null,
1584 "type": "CLIP",
1585 "pos": null,
1586 "link": 1
1587 },
1588 {
1589 "color_off": null,
1590 "color_on": null,
1591 "dir": null,
1592 "label": null,
1593 "localized_name": "image_1",
1594 "locked": null,
1595 "name": "images.image_1",
1596 "nameLocked": null,
1597 "removable": null,
1598 "shape": 7,
1599 "type": "IMAGE",
1600 "pos": null,
1601 "link": null
1602 },
1603 {
1604 "color_off": null,
1605 "color_on": null,
1606 "dir": null,
1607 "label": null,
1608 "localized_name": "vae",
1609 "locked": null,
1610 "name": "vae",
1611 "nameLocked": null,
1612 "removable": null,
1613 "shape": 7,
1614 "type": "VAE",
1615 "pos": null,
1616 "link": 3
1617 },
1618 {
1619 "color_off": null,
1620 "color_on": null,
1621 "dir": null,
1622 "label": null,
1623 "localized_name": "prompt",
1624 "locked": null,
1625 "name": "prompt",
1626 "nameLocked": null,
1627 "removable": null,
1628 "shape": null,
1629 "type": "STRING",
1630 "widget": {
1631 "name": "prompt"
1632 },
1633 "link": 19
1634 },
1635 {
1636 "color_off": null,
1637 "color_on": null,
1638 "dir": null,
1639 "label": null,
1640 "localized_name": "negative_prompt",
1641 "locked": null,
1642 "name": "negative_prompt",
1643 "nameLocked": null,
1644 "removable": null,
1645 "shape": null,
1646 "type": "STRING",
1647 "widget": {
1648 "name": "negative_prompt"
1649 },
1650 "link": null
1651 },
1652 {
1653 "color_off": null,
1654 "color_on": null,
1655 "dir": null,
1656 "label": null,
1657 "localized_name": "resolution",
1658 "locked": null,
1659 "name": "resolution",
1660 "nameLocked": null,
1661 "removable": null,
1662 "shape": null,
1663 "type": "INT",
1664 "widget": {
1665 "name": "resolution"
1666 },
1667 "link": null
1668 }
1669 ],
1670 "outputs": [
1671 {
1672 "color_off": null,
1673 "color_on": null,
1674 "dir": null,
1675 "label": null,
1676 "localized_name": "positive",
1677 "locked": null,
1678 "name": "positive",
1679 "nameLocked": null,
1680 "removable": null,
1681 "shape": null,
1682 "type": "CONDITIONING",
1683 "pos": null,
1684 "slot_index": null,
1685 "links": [
1686 20
1687 ]
1688 },
1689 {
1690 "color_off": null,
1691 "color_on": null,
1692 "dir": null,
1693 "label": null,
1694 "localized_name": "negative",
1695 "locked": null,
1696 "name": "negative",
1697 "nameLocked": null,
1698 "removable": null,
1699 "shape": null,
1700 "type": "CONDITIONING",
1701 "pos": null,
1702 "slot_index": null,
1703 "links": null
1704 },
1705 {
1706 "color_off": null,
1707 "color_on": null,
1708 "dir": null,
1709 "label": null,
1710 "localized_name": "latent",
1711 "locked": null,
1712 "name": "latent",
1713 "nameLocked": null,
1714 "removable": null,
1715 "shape": null,
1716 "type": "LATENT",
1717 "pos": null,
1718 "slot_index": null,
1719 "links": null
1720 }
1721 ],
1722 "properties": {
1723 "Node name for S&R": "TextEncodeQwenImage21"
1724 },
1725 "widgets_values": [
1726 "",
1727 "",
1728 1024
1729 ],
1730 "widgets_values_named": {
1731 "prompt": "",
1732 "negative_prompt": "",
1733 "resolution": 1024
1734 }
1735 },
1736 {
1737 "id": 18,
1738 "type": "BasicGuider",
1739 "pos": [
1740 2900,
1741 296
1742 ],
1743 "size": [
1744 320,
1745 46
1746 ],
1747 "flags": {},
1748 "order": 17,
1749 "mode": 0,
1750 "showAdvanced": null,
1751 "inputs": [
1752 {
1753 "color_off": null,
1754 "color_on": null,
1755 "dir": null,
1756 "label": null,
1757 "localized_name": "model",
1758 "locked": null,
1759 "name": "model",
1760 "nameLocked": null,
1761 "removable": null,
1762 "shape": null,
1763 "type": "MODEL",
1764 "pos": null,
1765 "link": 27
1766 },
1767 {
1768 "color_off": null,
1769 "color_on": null,
1770 "dir": null,
1771 "label": null,
1772 "localized_name": "conditioning",
1773 "locked": null,
1774 "name": "conditioning",
1775 "nameLocked": null,
1776 "removable": null,
1777 "shape": null,
1778 "type": "CONDITIONING",
1779 "pos": null,
1780 "link": 20
1781 }
1782 ],
1783 "outputs": [
1784 {
1785 "color_off": null,
1786 "color_on": null,
1787 "dir": null,
1788 "label": null,
1789 "localized_name": "GUIDER",
1790 "locked": null,
1791 "name": "GUIDER",
1792 "nameLocked": null,
1793 "removable": null,
1794 "shape": null,
1795 "type": "GUIDER",
1796 "pos": null,
1797 "slot_index": null,
1798 "links": [
1799 22
1800 ]
1801 }
1802 ],
1803 "title": "BasicGuider (CFG off)",
1804 "properties": {
1805 "Node name for S&R": "BasicGuider"
1806 }
1807 },
1808 {
1809 "id": 19,
1810 "type": "RandomNoise",
1811 "pos": [
1812 2900,
1813 432
1814 ],
1815 "size": [
1816 320,
1817 82
1818 ],
1819 "flags": {},
1820 "order": 18,
1821 "mode": 0,
1822 "showAdvanced": null,
1823 "inputs": [
1824 {
1825 "color_off": null,
1826 "color_on": null,
1827 "dir": null,
1828 "label": null,
1829 "localized_name": "noise_seed",
1830 "locked": null,
1831 "name": "noise_seed",
1832 "nameLocked": null,
1833 "removable": null,
1834 "shape": null,
1835 "type": "INT",
1836 "widget": {
1837 "name": "noise_seed"
1838 },
1839 "link": null
1840 }
1841 ],
1842 "outputs": [
1843 {
1844 "color_off": null,
1845 "color_on": null,
1846 "dir": null,
1847 "label": null,
1848 "localized_name": "NOISE",
1849 "locked": null,
1850 "name": "NOISE",
1851 "nameLocked": null,
1852 "removable": null,
1853 "shape": null,
1854 "type": "NOISE",
1855 "pos": null,
1856 "slot_index": null,
1857 "links": [
1858 21
1859 ]
1860 }
1861 ],
1862 "properties": {
1863 "Node name for S&R": "RandomNoise"
1864 },
1865 "widgets_values": [
1866 0,
1867 "randomize"
1868 ],
1869 "widgets_values_named": {
1870 "noise_seed": 0,
1871 "control_after_generate": "randomize"
1872 }
1873 },
1874 {
1875 "id": 20,
1876 "type": "KSamplerSelect",
1877 "pos": [
1878 2900,
1879 604
1880 ],
1881 "size": [
1882 320,
1883 58
1884 ],
1885 "flags": {},
1886 "order": 19,
1887 "mode": 0,
1888 "showAdvanced": null,
1889 "inputs": [
1890 {
1891 "color_off": null,
1892 "color_on": null,
1893 "dir": null,
1894 "label": null,
1895 "localized_name": "sampler_name",
1896 "locked": null,
1897 "name": "sampler_name",
1898 "nameLocked": null,
1899 "removable": null,
1900 "shape": null,
1901 "type": "COMBO",
1902 "widget": {
1903 "name": "sampler_name"
1904 },
1905 "link": null
1906 }
1907 ],
1908 "outputs": [
1909 {
1910 "color_off": null,
1911 "color_on": null,
1912 "dir": null,
1913 "label": null,
1914 "localized_name": "SAMPLER",
1915 "locked": null,
1916 "name": "SAMPLER",
1917 "nameLocked": null,
1918 "removable": null,
1919 "shape": null,
1920 "type": "SAMPLER",
1921 "pos": null,
1922 "slot_index": null,
1923 "links": [
1924 23
1925 ]
1926 }
1927 ],
1928 "properties": {
1929 "Node name for S&R": "KSamplerSelect"
1930 },
1931 "widgets_values": [
1932 "euler"
1933 ],
1934 "widgets_values_named": {
1935 "sampler_name": "euler"
1936 }
1937 },
1938 {
1939 "id": 21,
1940 "type": "ViggleTurboSigmas",
1941 "pos": [
1942 2900,
1943 752
1944 ],
1945 "size": [
1946 320,
1947 58
1948 ],
1949 "flags": {},
1950 "order": 20,
1951 "mode": 0,
1952 "showAdvanced": null,
1953 "inputs": [
1954 {
1955 "color_off": null,
1956 "color_on": null,
1957 "dir": null,
1958 "label": null,
1959 "localized_name": "latent",
1960 "locked": null,
1961 "name": "latent",
1962 "nameLocked": null,
1963 "removable": null,
1964 "shape": null,
1965 "type": "LATENT",
1966 "pos": null,
1967 "link": 30
1968 },
1969 {
1970 "color_off": null,
1971 "color_on": null,
1972 "dir": null,
1973 "label": null,
1974 "localized_name": "nodes",
1975 "locked": null,
1976 "name": "nodes",
1977 "nameLocked": null,
1978 "removable": null,
1979 "shape": null,
1980 "type": "STRING",
1981 "widget": {
1982 "name": "nodes"
1983 },
1984 "link": null
1985 }
1986 ],
1987 "outputs": [
1988 {
1989 "color_off": null,
1990 "color_on": null,
1991 "dir": null,
1992 "label": null,
1993 "localized_name": "SIGMAS",
1994 "locked": null,
1995 "name": "SIGMAS",
1996 "nameLocked": null,
1997 "removable": null,
1998 "shape": null,
1999 "type": "SIGMAS",
2000 "pos": null,
2001 "slot_index": null,
2002 "links": [
2003 24
2004 ]
2005 }
2006 ],
2007 "properties": {
2008 "Node name for S&R": "ViggleTurboSigmas"
2009 },
2010 "widgets_values": [
2011 "1.0, 0.9375, 0.875, 0.75, 0.5, 0.25"
2012 ],
2013 "widgets_values_named": {
2014 "nodes": "1.0, 0.9375, 0.875, 0.75, 0.5, 0.25"
2015 }
2016 },
2017 {
2018 "id": 22,
2019 "type": "SamplerCustomAdvanced",
2020 "pos": [
2021 3300,
2022 0
2023 ],
2024 "size": [
2025 320,
2026 106
2027 ],
2028 "flags": {},
2029 "order": 21,
2030 "mode": 0,
2031 "showAdvanced": null,
2032 "inputs": [
2033 {
2034 "color_off": null,
2035 "color_on": null,
2036 "dir": null,
2037 "label": null,
2038 "localized_name": "noise",
2039 "locked": null,
2040 "name": "noise",
2041 "nameLocked": null,
2042 "removable": null,
2043 "shape": null,
2044 "type": "NOISE",
2045 "pos": null,
2046 "link": 21
2047 },
2048 {
2049 "color_off": null,
2050 "color_on": null,
2051 "dir": null,
2052 "label": null,
2053 "localized_name": "guider",
2054 "locked": null,
2055 "name": "guider",
2056 "nameLocked": null,
2057 "removable": null,
2058 "shape": null,
2059 "type": "GUIDER",
2060 "pos": null,
2061 "link": 22
2062 },
2063 {
2064 "color_off": null,
2065 "color_on": null,
2066 "dir": null,
2067 "label": null,
2068 "localized_name": "sampler",
2069 "locked": null,
2070 "name": "sampler",
2071 "nameLocked": null,
2072 "removable": null,
2073 "shape": null,
2074 "type": "SAMPLER",
2075 "pos": null,
2076 "link": 23
2077 },
2078 {
2079 "color_off": null,
2080 "color_on": null,
2081 "dir": null,
2082 "label": null,
2083 "localized_name": "sigmas",
2084 "locked": null,
2085 "name": "sigmas",
2086 "nameLocked": null,
2087 "removable": null,
2088 "shape": null,
2089 "type": "SIGMAS",
2090 "pos": null,
2091 "link": 24
2092 },
2093 {
2094 "color_off": null,
2095 "color_on": null,
2096 "dir": null,
2097 "label": null,
2098 "localized_name": "latent_image",
2099 "locked": null,
2100 "name": "latent_image",
2101 "nameLocked": null,
2102 "removable": null,
2103 "shape": null,
2104 "type": "LATENT",
2105 "pos": null,
2106 "link": 31
2107 }
2108 ],
2109 "outputs": [
2110 {
2111 "color_off": null,
2112 "color_on": null,
2113 "dir": null,
2114 "label": null,
2115 "localized_name": "output",
2116 "locked": null,
2117 "name": "output",
2118 "nameLocked": null,
2119 "removable": null,
2120 "shape": null,
2121 "type": "LATENT",
2122 "pos": null,
2123 "slot_index": null,
2124 "links": [
2125 25
2126 ]
2127 },
2128 {
2129 "color_off": null,
2130 "color_on": null,
2131 "dir": null,
2132 "label": null,
2133 "localized_name": "denoised_output",
2134 "locked": null,
2135 "name": "denoised_output",
2136 "nameLocked": null,
2137 "removable": null,
2138 "shape": null,
2139 "type": "LATENT",
2140 "pos": null,
2141 "slot_index": null,
2142 "links": null
2143 }
2144 ],
2145 "properties": {
2146 "Node name for S&R": "SamplerCustomAdvanced"
2147 }
2148 },
2149 {
2150 "id": 23,
2151 "type": "VAEDecode",
2152 "pos": [
2153 3300,
2154 196
2155 ],
2156 "size": [
2157 320,
2158 46
2159 ],
2160 "flags": {},
2161 "order": 22,
2162 "mode": 0,
2163 "showAdvanced": null,
2164 "inputs": [
2165 {
2166 "color_off": null,
2167 "color_on": null,
2168 "dir": null,
2169 "label": null,
2170 "localized_name": "samples",
2171 "locked": null,
2172 "name": "samples",
2173 "nameLocked": null,
2174 "removable": null,
2175 "shape": null,
2176 "type": "LATENT",
2177 "pos": null,
2178 "link": 25
2179 },
2180 {
2181 "color_off": null,
2182 "color_on": null,
2183 "dir": null,
2184 "label": null,
2185 "localized_name": "vae",
2186 "locked": null,
2187 "name": "vae",
2188 "nameLocked": null,
2189 "removable": null,
2190 "shape": null,
2191 "type": "VAE",
2192 "pos": null,
2193 "link": 4
2194 }
2195 ],
2196 "outputs": [
2197 {
2198 "color_off": null,
2199 "color_on": null,
2200 "dir": null,
2201 "label": null,
2202 "localized_name": "IMAGE",
2203 "locked": null,
2204 "name": "IMAGE",
2205 "nameLocked": null,
2206 "removable": null,
2207 "shape": null,
2208 "type": "IMAGE",
2209 "pos": null,
2210 "slot_index": null,
2211 "links": [
2212 26
2213 ]
2214 }
2215 ],
2216 "properties": {
2217 "Node name for S&R": "VAEDecode"
2218 }
2219 },
2220 {
2221 "id": 24,
2222 "type": "SaveImage",
2223 "pos": [
2224 3300,
2225 332
2226 ],
2227 "size": [
2228 520,
2229 560
2230 ],
2231 "flags": {},
2232 "order": 23,
2233 "mode": 0,
2234 "showAdvanced": null,
2235 "inputs": [
2236 {
2237 "color_off": null,
2238 "color_on": null,
2239 "dir": null,
2240 "label": null,
2241 "localized_name": "images",
2242 "locked": null,
2243 "name": "images",
2244 "nameLocked": null,
2245 "removable": null,
2246 "shape": null,
2247 "type": "IMAGE",
2248 "pos": null,
2249 "link": 26
2250 },
2251 {
2252 "color_off": null,
2253 "color_on": null,
2254 "dir": null,
2255 "label": null,
2256 "localized_name": "filename_prefix",
2257 "locked": null,
2258 "name": "filename_prefix",
2259 "nameLocked": null,
2260 "removable": null,
2261 "shape": null,
2262 "type": "STRING",
2263 "widget": {
2264 "name": "filename_prefix"
2265 },
2266 "link": null
2267 }
2268 ],
2269 "outputs": [
2270 {
2271 "color_off": null,
2272 "color_on": null,
2273 "dir": null,
2274 "label": null,
2275 "localized_name": "images",
2276 "locked": null,
2277 "name": "images",
2278 "nameLocked": null,
2279 "removable": null,
2280 "shape": null,
2281 "type": "IMAGE",
2282 "pos": null,
2283 "slot_index": null,
2284 "links": null
2285 }
2286 ],
2287 "properties": {},
2288 "widgets_values": [
2289 "viggle_turbo/t2i"
2290 ],
2291 "widgets_values_named": {
2292 "filename_prefix": "viggle_turbo/t2i"
2293 }
2294 }
2295 ],
2296 "links": [
2297 [
2298 1,
2299 3,
2300 0,
2301 17,
2302 0,
2303 "CLIP"
2304 ],
2305 [
2306 3,
2307 4,
2308 0,
2309 17,
2310 2,
2311 "VAE"
2312 ],
2313 [
2314 4,
2315 4,
2316 0,
2317 23,
2318 1,
2319 "VAE"
2320 ],
2321 [
2322 5,
2323 6,
2324 0,
2325 7,
2326 0,
2327 "INT"
2328 ],
2329 [
2330 6,
2331 6,
2332 1,
2333 7,
2334 1,
2335 "INT"
2336 ],
2337 [
2338 10,
2339 11,
2340 0,
2341 12,
2342 0,
2343 "STRING"
2344 ],
2345 [
2346 11,
2347 12,
2348 0,
2349 13,
2350 0,
2351 "STRING"
2352 ],
2353 [
2354 12,
2355 12,
2356 0,
2357 14,
2358 0,
2359 "STRING"
2360 ],
2361 [
2362 13,
2363 5,
2364 0,
2365 14,
2366 1,
2367 "STRING"
2368 ],
2369 [
2370 14,
2371 13,
2372 0,
2373 14,
2374 2,
2375 "BOOLEAN"
2376 ],
2377 [
2378 15,
2379 5,
2380 0,
2381 15,
2382 0,
2383 "STRING"
2384 ],
2385 [
2386 16,
2387 14,
2388 0,
2389 15,
2390 1,
2391 "STRING"
2392 ],
2393 [
2394 17,
2395 8,
2396 0,
2397 15,
2398 2,
2399 "BOOLEAN"
2400 ],
2401 [
2402 18,
2403 15,
2404 0,
2405 16,
2406 0,
2407 "STRING"
2408 ],
2409 [
2410 19,
2411 15,
2412 0,
2413 17,
2414 3,
2415 "STRING"
2416 ],
2417 [
2418 20,
2419 17,
2420 0,
2421 18,
2422 1,
2423 "CONDITIONING"
2424 ],
2425 [
2426 21,
2427 19,
2428 0,
2429 22,
2430 0,
2431 "NOISE"
2432 ],
2433 [
2434 22,
2435 18,
2436 0,
2437 22,
2438 1,
2439 "GUIDER"
2440 ],
2441 [
2442 23,
2443 20,
2444 0,
2445 22,
2446 2,
2447 "SAMPLER"
2448 ],
2449 [
2450 24,
2451 21,
2452 0,
2453 22,
2454 3,
2455 "SIGMAS"
2456 ],
2457 [
2458 25,
2459 22,
2460 0,
2461 23,
2462 0,
2463 "LATENT"
2464 ],
2465 [
2466 26,
2467 23,
2468 0,
2469 24,
2470 0,
2471 "IMAGE"
2472 ],
2473 [
2474 27,
2475 2,
2476 0,
2477 18,
2478 0,
2479 "MODEL"
2480 ],
2481 [
2482 7,
2483 5,
2484 0,
2485 10,
2486 0,
2487 "STRING"
2488 ],
2489 [
2490 28,
2491 6,
2492 0,
2493 10,
2494 1,
2495 "INT"
2496 ],
2497 [
2498 29,
2499 6,
2500 1,
2501 10,
2502 2,
2503 "INT"
2504 ],
2505 [
2506 30,
2507 7,
2508 0,
2509 21,
2510 0,
2511 "LATENT"
2512 ],
2513 [
2514 31,
2515 7,
2516 0,
2517 22,
2518 4,
2519 "LATENT"
2520 ],
2521 [
2522 2,
2523 3,
2524 0,
2525 11,
2526 0,
2527 "CLIP"
2528 ],
2529 [
2530 8,
2531 9,
2532 0,
2533 11,
2534 4,
2535 "STRING"
2536 ],
2537 [
2538 9,
2539 10,
2540 0,
2541 11,
2542 5,
2543 "STRING"
2544 ]
2545 ],
2546 "floatingLinks": null,
2547 "groups": [
2548 {
2549 "id": 1,
2550 "title": "1. Models",
2551 "bounding": [
2552 520,
2553 -90,
2554 360,
2555 512
2556 ],
2557 "color": "#3f789e",
2558 "flags": {}
2559 },
2560 {
2561 "id": 2,
2562 "title": "2. Prompt & size",
2563 "bounding": [
2564 920,
2565 -90,
2566 480,
2567 766
2568 ],
2569 "color": "#b58b2a",
2570 "flags": {}
2571 },
2572 {
2573 "id": 3,
2574 "title": "3. Prompt enhancer (optional)",
2575 "bounding": [
2576 1440,
2577 -90,
2578 1400,
2579 880
2580 ],
2581 "color": "#a1309b",
2582 "flags": {}
2583 },
2584 {
2585 "id": 4,
2586 "title": "4. Sample: 6 steps, CFG off",
2587 "bounding": [
2588 2880,
2589 -90,
2590 960,
2591 1002
2592 ],
2593 "color": "#444",
2594 "flags": {}
2595 }
2596 ],
2597 "definitions": null,
2598 "config": {},
2599 "extra": {
2600 "ds": {
2601 "scale": 0.5,
2602 "offset": [
2603 60,
2604 160
2605 ]
2606 },
2607 "reroutes": null
2608 },
2609 "version": 0.4
2610 }