comfyui/Qwen-Image-2.1-viggle-turbo-t2i.json
70.0 KB · 2742 lines · json Raw
1 {
2 "id": "2236888a-8654-4de4-b5a6-ae63e839c76c",
3 "revision": 0,
4 "last_node_id": 25,
5 "last_link_id": 32,
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\n\n6-step distilled LoRA for Qwen-Image-2.1 (v0.3). CFG is off, so each step is one model call.\n\n**Files** (the base files are the ones the official Qwen-Image-2.1 template uses):\n- `diffusion_models/qwen_image_2.1_int8_convrot.safetensors` (or `qwen_image_2.1_bf16.safetensors`)\n- `text_encoders/qwen3vl_8b_int8_convrot.safetensors` (or `qwen3vl_8b_bf16.safetensors`)\n- `vae/qwen_image_2.1_vae_bf16.safetensors`\n- `loras/Qwen-Image-2.1-viggle-turbo-v0.3-6step-lora-r128.safetensors` (or the r256 original)\n\n**Custom nodes:** copy `viggle_turbo.py` into `ComfyUI/custom_nodes/` and restart ComfyUI. It adds two nodes:\n- *Viggle Turbo Sigmas*: the 6-step schedule the LoRA 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).\n- *Viggle Turbo LoRA (unmerged)*: applies the LoRA at runtime as `W x + B A x`, like diffusers. The stock LoRA loaders merge it into the weights instead, which drops about 30% of this LoRA's update on bf16 weights and adds noise several times its size on int8 weights. Unmerged costs about 10-25% more time per step.\n\n**Keep:** euler, BasicGuider (no CFG, no negative prompt), the unmerged LoRA node at strength 1.0.\n\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\n\n6-step distilled LoRA for Qwen-Image-2.1 (v0.3). CFG is off, so each step is one model call.\n\n**Files** (the base files are the ones the official Qwen-Image-2.1 template uses):\n- `diffusion_models/qwen_image_2.1_int8_convrot.safetensors` (or `qwen_image_2.1_bf16.safetensors`)\n- `text_encoders/qwen3vl_8b_int8_convrot.safetensors` (or `qwen3vl_8b_bf16.safetensors`)\n- `vae/qwen_image_2.1_vae_bf16.safetensors`\n- `loras/Qwen-Image-2.1-viggle-turbo-v0.3-6step-lora-r128.safetensors` (or the r256 original)\n\n**Custom nodes:** copy `viggle_turbo.py` into `ComfyUI/custom_nodes/` and restart ComfyUI. It adds two nodes:\n- *Viggle Turbo Sigmas*: the 6-step schedule the LoRA 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).\n- *Viggle Turbo LoRA (unmerged)*: applies the LoRA at runtime as `W x + B A x`, like diffusers. The stock LoRA loaders merge it into the weights instead, which drops about 30% of this LoRA's update on bf16 weights and adds noise several times its size on int8 weights. Unmerged costs about 10-25% more time per step.\n\n**Keep:** euler, BasicGuider (no CFG, no negative prompt), the unmerged LoRA node at strength 1.0.\n\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": "UNETLoader",
37 "pos": [
38 540,
39 0
40 ],
41 "size": [
42 320,
43 82
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 "color_off": null,
69 "color_on": null,
70 "dir": null,
71 "label": null,
72 "localized_name": "weight_dtype",
73 "locked": null,
74 "name": "weight_dtype",
75 "nameLocked": null,
76 "removable": null,
77 "shape": null,
78 "type": "COMBO",
79 "widget": {
80 "name": "weight_dtype"
81 },
82 "link": null
83 }
84 ],
85 "outputs": [
86 {
87 "color_off": null,
88 "color_on": null,
89 "dir": null,
90 "label": null,
91 "localized_name": "MODEL",
92 "locked": null,
93 "name": "MODEL",
94 "nameLocked": null,
95 "removable": null,
96 "shape": null,
97 "type": "MODEL",
98 "pos": null,
99 "slot_index": null,
100 "links": [
101 1
102 ]
103 }
104 ],
105 "properties": {
106 "Node name for S&R": "UNETLoader",
107 "models": [
108 {
109 "name": "qwen_image_2.1_int8_convrot.safetensors",
110 "url": "https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/diffusion_models/qwen_image_2.1_int8_convrot.safetensors",
111 "directory": "diffusion_models"
112 }
113 ]
114 },
115 "widgets_values": [
116 "qwen_image_2.1_int8_convrot.safetensors",
117 "default"
118 ],
119 "widgets_values_named": {
120 "unet_name": "qwen_image_2.1_int8_convrot.safetensors",
121 "weight_dtype": "default"
122 }
123 },
124 {
125 "id": 3,
126 "type": "ViggleTurboLora",
127 "pos": [
128 540,
129 172
130 ],
131 "size": [
132 356.9,
133 82
134 ],
135 "flags": {},
136 "order": 2,
137 "mode": 0,
138 "showAdvanced": null,
139 "inputs": [
140 {
141 "color_off": null,
142 "color_on": null,
143 "dir": null,
144 "label": null,
145 "localized_name": "model",
146 "locked": null,
147 "name": "model",
148 "nameLocked": null,
149 "removable": null,
150 "shape": null,
151 "type": "MODEL",
152 "pos": null,
153 "link": 1
154 },
155 {
156 "color_off": null,
157 "color_on": null,
158 "dir": null,
159 "label": null,
160 "localized_name": "lora_name",
161 "locked": null,
162 "name": "lora_name",
163 "nameLocked": null,
164 "removable": null,
165 "shape": null,
166 "type": "COMBO",
167 "widget": {
168 "name": "lora_name"
169 },
170 "link": null
171 },
172 {
173 "color_off": null,
174 "color_on": null,
175 "dir": null,
176 "label": null,
177 "localized_name": "strength",
178 "locked": null,
179 "name": "strength",
180 "nameLocked": null,
181 "removable": null,
182 "shape": null,
183 "type": "FLOAT",
184 "widget": {
185 "name": "strength"
186 },
187 "link": null
188 }
189 ],
190 "outputs": [
191 {
192 "color_off": null,
193 "color_on": null,
194 "dir": null,
195 "label": null,
196 "localized_name": "MODEL",
197 "locked": null,
198 "name": "MODEL",
199 "nameLocked": null,
200 "removable": null,
201 "shape": null,
202 "type": "MODEL",
203 "pos": null,
204 "slot_index": null,
205 "links": [
206 28
207 ]
208 }
209 ],
210 "properties": {
211 "Node name for S&R": "ViggleTurboLora",
212 "models": [
213 {
214 "name": "Qwen-Image-2.1-viggle-turbo-v0.3-6step-lora-r128.safetensors",
215 "url": "https://huggingface.co/Viggle/Qwen-Image-2.1-viggle-turbo/resolve/main/Qwen-Image-2.1-viggle-turbo-v0.3-6step-lora-r128.safetensors",
216 "directory": "loras"
217 }
218 ]
219 },
220 "widgets_values": [
221 "Qwen-Image-2.1-viggle-turbo-v0.3-6step-lora-r128.safetensors",
222 1
223 ],
224 "widgets_values_named": {
225 "lora_name": "Qwen-Image-2.1-viggle-turbo-v0.3-6step-lora-r128.safetensors",
226 "strength": 1
227 }
228 },
229 {
230 "id": 4,
231 "type": "CLIPLoader",
232 "pos": [
233 540,
234 344
235 ],
236 "size": [
237 320,
238 106
239 ],
240 "flags": {},
241 "order": 3,
242 "mode": 0,
243 "showAdvanced": null,
244 "inputs": [
245 {
246 "color_off": null,
247 "color_on": null,
248 "dir": null,
249 "label": null,
250 "localized_name": "clip_name",
251 "locked": null,
252 "name": "clip_name",
253 "nameLocked": null,
254 "removable": null,
255 "shape": null,
256 "type": "COMBO",
257 "widget": {
258 "name": "clip_name"
259 },
260 "link": null
261 },
262 {
263 "color_off": null,
264 "color_on": null,
265 "dir": null,
266 "label": null,
267 "localized_name": "type",
268 "locked": null,
269 "name": "type",
270 "nameLocked": null,
271 "removable": null,
272 "shape": null,
273 "type": "COMBO",
274 "widget": {
275 "name": "type"
276 },
277 "link": null
278 },
279 {
280 "color_off": null,
281 "color_on": null,
282 "dir": null,
283 "label": null,
284 "localized_name": "device",
285 "locked": null,
286 "name": "device",
287 "nameLocked": null,
288 "removable": null,
289 "shape": 7,
290 "type": "COMBO",
291 "widget": {
292 "name": "device"
293 },
294 "link": null
295 }
296 ],
297 "outputs": [
298 {
299 "color_off": null,
300 "color_on": null,
301 "dir": null,
302 "label": null,
303 "localized_name": "CLIP",
304 "locked": null,
305 "name": "CLIP",
306 "nameLocked": null,
307 "removable": null,
308 "shape": null,
309 "type": "CLIP",
310 "pos": null,
311 "slot_index": null,
312 "links": [
313 2,
314 3
315 ]
316 }
317 ],
318 "properties": {
319 "Node name for S&R": "CLIPLoader",
320 "models": [
321 {
322 "name": "qwen3vl_8b_int8_convrot.safetensors",
323 "url": "https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors",
324 "directory": "text_encoders"
325 }
326 ]
327 },
328 "widgets_values": [
329 "qwen3vl_8b_int8_convrot.safetensors",
330 "qwen_image",
331 "default"
332 ],
333 "widgets_values_named": {
334 "clip_name": "qwen3vl_8b_int8_convrot.safetensors",
335 "type": "qwen_image",
336 "device": "default"
337 }
338 },
339 {
340 "id": 5,
341 "type": "VAELoader",
342 "pos": [
343 540,
344 540
345 ],
346 "size": [
347 320,
348 58
349 ],
350 "flags": {},
351 "order": 4,
352 "mode": 0,
353 "showAdvanced": null,
354 "inputs": [
355 {
356 "color_off": null,
357 "color_on": null,
358 "dir": null,
359 "label": null,
360 "localized_name": "vae_name",
361 "locked": null,
362 "name": "vae_name",
363 "nameLocked": null,
364 "removable": null,
365 "shape": null,
366 "type": "COMBO",
367 "widget": {
368 "name": "vae_name"
369 },
370 "link": null
371 }
372 ],
373 "outputs": [
374 {
375 "color_off": null,
376 "color_on": null,
377 "dir": null,
378 "label": null,
379 "localized_name": "VAE",
380 "locked": null,
381 "name": "VAE",
382 "nameLocked": null,
383 "removable": null,
384 "shape": null,
385 "type": "VAE",
386 "pos": null,
387 "slot_index": null,
388 "links": [
389 4,
390 5
391 ]
392 }
393 ],
394 "properties": {
395 "Node name for S&R": "VAELoader",
396 "models": [
397 {
398 "name": "qwen_image_2.1_vae_bf16.safetensors",
399 "url": "https://huggingface.co/Comfy-Org/Qwen-Image-2.1/resolve/main/vae/qwen_image_2.1_vae_bf16.safetensors",
400 "directory": "vae"
401 }
402 ]
403 },
404 "widgets_values": [
405 "qwen_image_2.1_vae_bf16.safetensors"
406 ],
407 "widgets_values_named": {
408 "vae_name": "qwen_image_2.1_vae_bf16.safetensors"
409 }
410 },
411 {
412 "id": 6,
413 "type": "PrimitiveStringMultiline",
414 "pos": [
415 976.9,
416 0
417 ],
418 "size": [
419 440,
420 220
421 ],
422 "flags": {},
423 "order": 5,
424 "mode": 0,
425 "showAdvanced": null,
426 "inputs": [
427 {
428 "color_off": null,
429 "color_on": null,
430 "dir": null,
431 "label": null,
432 "localized_name": "value",
433 "locked": null,
434 "name": "value",
435 "nameLocked": null,
436 "removable": null,
437 "shape": null,
438 "type": "STRING",
439 "widget": {
440 "name": "value"
441 },
442 "link": null
443 }
444 ],
445 "outputs": [
446 {
447 "color_off": null,
448 "color_on": null,
449 "dir": null,
450 "label": null,
451 "localized_name": "STRING",
452 "locked": null,
453 "name": "STRING",
454 "nameLocked": null,
455 "removable": null,
456 "shape": null,
457 "type": "STRING",
458 "pos": null,
459 "slot_index": null,
460 "links": [
461 8,
462 14,
463 16
464 ]
465 }
466 ],
467 "title": "Prompt",
468 "properties": {
469 "Node name for S&R": "PrimitiveStringMultiline"
470 },
471 "widgets_values": [
472 "Soaking wet capybara taking shelter under a banana leaf in the rainy jungle, close up photo"
473 ],
474 "widgets_values_named": {
475 "value": "Soaking wet capybara taking shelter under a banana leaf in the rainy jungle, close up photo"
476 }
477 },
478 {
479 "id": 7,
480 "type": "ResolutionSelector",
481 "pos": [
482 976.9,
483 310
484 ],
485 "size": [
486 320,
487 150
488 ],
489 "flags": {},
490 "order": 6,
491 "mode": 0,
492 "showAdvanced": null,
493 "inputs": [
494 {
495 "color_off": null,
496 "color_on": null,
497 "dir": null,
498 "label": null,
499 "localized_name": "aspect_ratio",
500 "locked": null,
501 "name": "aspect_ratio",
502 "nameLocked": null,
503 "removable": null,
504 "shape": null,
505 "type": "COMBO",
506 "widget": {
507 "name": "aspect_ratio"
508 },
509 "link": null
510 },
511 {
512 "color_off": null,
513 "color_on": null,
514 "dir": null,
515 "label": null,
516 "localized_name": "megapixels",
517 "locked": null,
518 "name": "megapixels",
519 "nameLocked": null,
520 "removable": null,
521 "shape": null,
522 "type": "FLOAT",
523 "widget": {
524 "name": "megapixels"
525 },
526 "link": null
527 },
528 {
529 "color_off": null,
530 "color_on": null,
531 "dir": null,
532 "label": null,
533 "localized_name": "multiple",
534 "locked": null,
535 "name": "multiple",
536 "nameLocked": null,
537 "removable": null,
538 "shape": null,
539 "type": "INT",
540 "widget": {
541 "name": "multiple"
542 },
543 "link": null
544 },
545 {
546 "color_off": null,
547 "color_on": null,
548 "dir": null,
549 "label": null,
550 "localized_name": "preview",
551 "locked": null,
552 "name": "preview",
553 "nameLocked": null,
554 "removable": null,
555 "shape": 7,
556 "type": "RESOLUTION_PREVIEW",
557 "widget": {
558 "name": "preview"
559 },
560 "link": null
561 }
562 ],
563 "outputs": [
564 {
565 "color_off": null,
566 "color_on": null,
567 "dir": null,
568 "label": null,
569 "localized_name": "width",
570 "locked": null,
571 "name": "width",
572 "nameLocked": null,
573 "removable": null,
574 "shape": null,
575 "type": "INT",
576 "pos": null,
577 "slot_index": null,
578 "links": [
579 6,
580 29
581 ]
582 },
583 {
584 "color_off": null,
585 "color_on": null,
586 "dir": null,
587 "label": null,
588 "localized_name": "height",
589 "locked": null,
590 "name": "height",
591 "nameLocked": null,
592 "removable": null,
593 "shape": null,
594 "type": "INT",
595 "pos": null,
596 "slot_index": null,
597 "links": [
598 7,
599 30
600 ]
601 }
602 ],
603 "title": "Output size",
604 "properties": {
605 "Node name for S&R": "ResolutionSelector"
606 },
607 "widgets_values": [
608 "3:2 (Photo)",
609 1,
610 32
611 ],
612 "widgets_values_named": {
613 "aspect_ratio": "3:2 (Photo)",
614 "megapixels": 1,
615 "multiple": 32
616 }
617 },
618 {
619 "id": 8,
620 "type": "EmptyLatentImage",
621 "pos": [
622 976.9,
623 550
624 ],
625 "size": [
626 320,
627 106
628 ],
629 "flags": {},
630 "order": 7,
631 "mode": 0,
632 "showAdvanced": null,
633 "inputs": [
634 {
635 "color_off": null,
636 "color_on": null,
637 "dir": null,
638 "label": null,
639 "localized_name": "width",
640 "locked": null,
641 "name": "width",
642 "nameLocked": null,
643 "removable": null,
644 "shape": null,
645 "type": "INT",
646 "widget": {
647 "name": "width"
648 },
649 "link": 6
650 },
651 {
652 "color_off": null,
653 "color_on": null,
654 "dir": null,
655 "label": null,
656 "localized_name": "height",
657 "locked": null,
658 "name": "height",
659 "nameLocked": null,
660 "removable": null,
661 "shape": null,
662 "type": "INT",
663 "widget": {
664 "name": "height"
665 },
666 "link": 7
667 },
668 {
669 "color_off": null,
670 "color_on": null,
671 "dir": null,
672 "label": null,
673 "localized_name": "batch_size",
674 "locked": null,
675 "name": "batch_size",
676 "nameLocked": null,
677 "removable": null,
678 "shape": null,
679 "type": "INT",
680 "widget": {
681 "name": "batch_size"
682 },
683 "link": null
684 }
685 ],
686 "outputs": [
687 {
688 "color_off": null,
689 "color_on": null,
690 "dir": null,
691 "label": null,
692 "localized_name": "LATENT",
693 "locked": null,
694 "name": "LATENT",
695 "nameLocked": null,
696 "removable": null,
697 "shape": null,
698 "type": "LATENT",
699 "pos": null,
700 "slot_index": null,
701 "links": [
702 31,
703 32
704 ]
705 }
706 ],
707 "properties": {
708 "Node name for S&R": "EmptyLatentImage"
709 },
710 "widgets_values": [
711 1024,
712 1024,
713 1
714 ],
715 "widgets_values_named": {
716 "width": 1024,
717 "height": 1024,
718 "batch_size": 1
719 }
720 },
721 {
722 "id": 9,
723 "type": "PrimitiveBoolean",
724 "pos": [
725 1496.9,
726 0
727 ],
728 "size": [
729 320,
730 58
731 ],
732 "flags": {},
733 "order": 8,
734 "mode": 0,
735 "showAdvanced": null,
736 "inputs": [
737 {
738 "color_off": null,
739 "color_on": null,
740 "dir": null,
741 "label": null,
742 "localized_name": "value",
743 "locked": null,
744 "name": "value",
745 "nameLocked": null,
746 "removable": null,
747 "shape": null,
748 "type": "BOOLEAN",
749 "widget": {
750 "name": "value"
751 },
752 "link": null
753 }
754 ],
755 "outputs": [
756 {
757 "color_off": null,
758 "color_on": null,
759 "dir": null,
760 "label": null,
761 "localized_name": "BOOLEAN",
762 "locked": null,
763 "name": "BOOLEAN",
764 "nameLocked": null,
765 "removable": null,
766 "shape": null,
767 "type": "BOOLEAN",
768 "pos": null,
769 "slot_index": null,
770 "links": [
771 18
772 ]
773 }
774 ],
775 "title": "Enhance prompt",
776 "properties": {
777 "Node name for S&R": "PrimitiveBoolean"
778 },
779 "widgets_values": [
780 true
781 ],
782 "widgets_values_named": {
783 "value": true
784 }
785 },
786 {
787 "id": 10,
788 "type": "PrimitiveStringMultiline",
789 "pos": [
790 1496.9,
791 148
792 ],
793 "size": [
794 440,
795 180
796 ],
797 "flags": {},
798 "order": 9,
799 "mode": 0,
800 "showAdvanced": null,
801 "inputs": [
802 {
803 "color_off": null,
804 "color_on": null,
805 "dir": null,
806 "label": null,
807 "localized_name": "value",
808 "locked": null,
809 "name": "value",
810 "nameLocked": null,
811 "removable": null,
812 "shape": null,
813 "type": "STRING",
814 "widget": {
815 "name": "value"
816 },
817 "link": null
818 }
819 ],
820 "outputs": [
821 {
822 "color_off": null,
823 "color_on": null,
824 "dir": null,
825 "label": null,
826 "localized_name": "STRING",
827 "locked": null,
828 "name": "STRING",
829 "nameLocked": null,
830 "removable": null,
831 "shape": null,
832 "type": "STRING",
833 "pos": null,
834 "slot_index": null,
835 "links": [
836 9
837 ]
838 }
839 ],
840 "title": "PE system prompt (official Qwen-Image-2.1 T2I rewriter)",
841 "properties": {
842 "Node name for S&R": "PrimitiveStringMultiline"
843 },
844 "widgets_values": [
845 "# 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>\"}"
846 ],
847 "widgets_values_named": {
848 "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>\"}"
849 }
850 },
851 {
852 "id": 11,
853 "type": "StringFormat",
854 "pos": [
855 1496.9,
856 418
857 ],
858 "size": [
859 320,
860 148
861 ],
862 "flags": {},
863 "order": 10,
864 "mode": 0,
865 "showAdvanced": null,
866 "inputs": [
867 {
868 "color_off": null,
869 "color_on": null,
870 "dir": null,
871 "label": null,
872 "localized_name": "a",
873 "locked": null,
874 "name": "values.a",
875 "nameLocked": null,
876 "removable": null,
877 "shape": 7,
878 "type": "*",
879 "pos": null,
880 "link": 8
881 },
882 {
883 "color_off": null,
884 "color_on": null,
885 "dir": null,
886 "label": null,
887 "localized_name": "b",
888 "locked": null,
889 "name": "values.b",
890 "nameLocked": null,
891 "removable": null,
892 "shape": 7,
893 "type": "*",
894 "pos": null,
895 "link": 29
896 },
897 {
898 "color_off": null,
899 "color_on": null,
900 "dir": null,
901 "label": null,
902 "localized_name": "c",
903 "locked": null,
904 "name": "values.c",
905 "nameLocked": null,
906 "removable": null,
907 "shape": 7,
908 "type": "*",
909 "pos": null,
910 "link": 30
911 },
912 {
913 "color_off": null,
914 "color_on": null,
915 "dir": null,
916 "label": null,
917 "localized_name": "d",
918 "locked": null,
919 "name": "values.d",
920 "nameLocked": null,
921 "removable": null,
922 "shape": 7,
923 "type": "*",
924 "pos": null,
925 "link": null
926 },
927 {
928 "color_off": null,
929 "color_on": null,
930 "dir": null,
931 "label": null,
932 "localized_name": "f_string",
933 "locked": null,
934 "name": "f_string",
935 "nameLocked": null,
936 "removable": null,
937 "shape": null,
938 "type": "STRING",
939 "widget": {
940 "name": "f_string"
941 },
942 "link": null
943 }
944 ],
945 "outputs": [
946 {
947 "color_off": null,
948 "color_on": null,
949 "dir": null,
950 "label": null,
951 "localized_name": "STRING",
952 "locked": null,
953 "name": "STRING",
954 "nameLocked": null,
955 "removable": null,
956 "shape": null,
957 "type": "STRING",
958 "pos": null,
959 "slot_index": null,
960 "links": [
961 10
962 ]
963 }
964 ],
965 "title": "PE request",
966 "properties": {
967 "Node name for S&R": "StringFormat"
968 },
969 "widgets_values": [
970 "{a}\nAspect ratio: {b}:{c}"
971 ],
972 "widgets_values_named": {
973 "f_string": "{a}\nAspect ratio: {b}:{c}"
974 }
975 },
976 {
977 "id": 12,
978 "type": "TextGenerate",
979 "pos": [
980 2016.9,
981 0
982 ],
983 "size": [
984 320,
985 288
986 ],
987 "flags": {},
988 "order": 11,
989 "mode": 0,
990 "showAdvanced": null,
991 "inputs": [
992 {
993 "color_off": null,
994 "color_on": null,
995 "dir": null,
996 "label": null,
997 "localized_name": "clip",
998 "locked": null,
999 "name": "clip",
1000 "nameLocked": null,
1001 "removable": null,
1002 "shape": null,
1003 "type": "CLIP",
1004 "pos": null,
1005 "link": 3
1006 },
1007 {
1008 "color_off": null,
1009 "color_on": null,
1010 "dir": null,
1011 "label": null,
1012 "localized_name": "image",
1013 "locked": null,
1014 "name": "image",
1015 "nameLocked": null,
1016 "removable": null,
1017 "shape": 7,
1018 "type": "IMAGE",
1019 "pos": null,
1020 "link": null
1021 },
1022 {
1023 "color_off": null,
1024 "color_on": null,
1025 "dir": null,
1026 "label": null,
1027 "localized_name": "video",
1028 "locked": null,
1029 "name": "video",
1030 "nameLocked": null,
1031 "removable": null,
1032 "shape": 7,
1033 "type": "IMAGE",
1034 "pos": null,
1035 "link": null
1036 },
1037 {
1038 "color_off": null,
1039 "color_on": null,
1040 "dir": null,
1041 "label": null,
1042 "localized_name": "audio",
1043 "locked": null,
1044 "name": "audio",
1045 "nameLocked": null,
1046 "removable": null,
1047 "shape": 7,
1048 "type": "AUDIO",
1049 "pos": null,
1050 "link": null
1051 },
1052 {
1053 "color_off": null,
1054 "color_on": null,
1055 "dir": null,
1056 "label": null,
1057 "localized_name": "system_prompt",
1058 "locked": null,
1059 "name": "system_prompt",
1060 "nameLocked": null,
1061 "removable": null,
1062 "shape": 7,
1063 "type": "STRING",
1064 "pos": null,
1065 "link": 9
1066 },
1067 {
1068 "color_off": null,
1069 "color_on": null,
1070 "dir": null,
1071 "label": null,
1072 "localized_name": "prompt",
1073 "locked": null,
1074 "name": "prompt",
1075 "nameLocked": null,
1076 "removable": null,
1077 "shape": null,
1078 "type": "STRING",
1079 "widget": {
1080 "name": "prompt"
1081 },
1082 "link": 10
1083 },
1084 {
1085 "color_off": null,
1086 "color_on": null,
1087 "dir": null,
1088 "label": null,
1089 "localized_name": "max_length",
1090 "locked": null,
1091 "name": "max_length",
1092 "nameLocked": null,
1093 "removable": null,
1094 "shape": null,
1095 "type": "INT",
1096 "widget": {
1097 "name": "max_length"
1098 },
1099 "link": null
1100 },
1101 {
1102 "color_off": null,
1103 "color_on": null,
1104 "dir": null,
1105 "label": null,
1106 "localized_name": "Sampling Mode",
1107 "locked": null,
1108 "name": "sampling_mode",
1109 "nameLocked": null,
1110 "removable": null,
1111 "shape": null,
1112 "type": "COMFY_DYNAMICCOMBO_V3",
1113 "widget": {
1114 "name": "sampling_mode"
1115 },
1116 "link": null
1117 },
1118 {
1119 "color_off": null,
1120 "color_on": null,
1121 "dir": null,
1122 "label": null,
1123 "localized_name": "thinking",
1124 "locked": null,
1125 "name": "thinking",
1126 "nameLocked": null,
1127 "removable": null,
1128 "shape": 7,
1129 "type": "BOOLEAN",
1130 "widget": {
1131 "name": "thinking"
1132 },
1133 "link": null
1134 },
1135 {
1136 "color_off": null,
1137 "color_on": null,
1138 "dir": null,
1139 "label": null,
1140 "localized_name": "use_default_template",
1141 "locked": null,
1142 "name": "use_default_template",
1143 "nameLocked": null,
1144 "removable": null,
1145 "shape": 7,
1146 "type": "BOOLEAN",
1147 "widget": {
1148 "name": "use_default_template"
1149 },
1150 "link": null
1151 },
1152 {
1153 "color_off": null,
1154 "color_on": null,
1155 "dir": null,
1156 "label": null,
1157 "localized_name": "mtp",
1158 "locked": null,
1159 "name": "mtp",
1160 "nameLocked": null,
1161 "removable": null,
1162 "shape": 7,
1163 "type": "COMBO",
1164 "widget": {
1165 "name": "mtp"
1166 },
1167 "link": null
1168 }
1169 ],
1170 "outputs": [
1171 {
1172 "color_off": null,
1173 "color_on": null,
1174 "dir": null,
1175 "label": null,
1176 "localized_name": "generated_text",
1177 "locked": null,
1178 "name": "generated_text",
1179 "nameLocked": null,
1180 "removable": null,
1181 "shape": null,
1182 "type": "STRING",
1183 "pos": null,
1184 "slot_index": null,
1185 "links": [
1186 11
1187 ]
1188 },
1189 {
1190 "color_off": null,
1191 "color_on": null,
1192 "dir": null,
1193 "label": null,
1194 "localized_name": "thinking",
1195 "locked": null,
1196 "name": "thinking",
1197 "nameLocked": null,
1198 "removable": null,
1199 "shape": null,
1200 "type": "STRING",
1201 "pos": null,
1202 "slot_index": null,
1203 "links": null
1204 }
1205 ],
1206 "title": "Rewrite prompt (Qwen3-VL text encoder)",
1207 "properties": {
1208 "Node name for S&R": "TextGenerate"
1209 },
1210 "widgets_values": [
1211 "",
1212 512,
1213 "off",
1214 true,
1215 true,
1216 "auto"
1217 ],
1218 "widgets_values_named": {
1219 "prompt": "",
1220 "max_length": 512,
1221 "sampling_mode": "off",
1222 "thinking": true,
1223 "use_default_template": true,
1224 "mtp": "auto"
1225 }
1226 },
1227 {
1228 "id": 13,
1229 "type": "JsonExtractString",
1230 "pos": [
1231 2016.9,
1232 378
1233 ],
1234 "size": [
1235 320,
1236 112
1237 ],
1238 "flags": {},
1239 "order": 12,
1240 "mode": 0,
1241 "showAdvanced": null,
1242 "inputs": [
1243 {
1244 "color_off": null,
1245 "color_on": null,
1246 "dir": null,
1247 "label": null,
1248 "localized_name": "json_string",
1249 "locked": null,
1250 "name": "json_string",
1251 "nameLocked": null,
1252 "removable": null,
1253 "shape": null,
1254 "type": "STRING",
1255 "widget": {
1256 "name": "json_string"
1257 },
1258 "link": 11
1259 },
1260 {
1261 "color_off": null,
1262 "color_on": null,
1263 "dir": null,
1264 "label": null,
1265 "localized_name": "key",
1266 "locked": null,
1267 "name": "key",
1268 "nameLocked": null,
1269 "removable": null,
1270 "shape": null,
1271 "type": "STRING",
1272 "widget": {
1273 "name": "key"
1274 },
1275 "link": null
1276 }
1277 ],
1278 "outputs": [
1279 {
1280 "color_off": null,
1281 "color_on": null,
1282 "dir": null,
1283 "label": null,
1284 "localized_name": "STRING",
1285 "locked": null,
1286 "name": "STRING",
1287 "nameLocked": null,
1288 "removable": null,
1289 "shape": null,
1290 "type": "STRING",
1291 "pos": null,
1292 "slot_index": null,
1293 "links": [
1294 12,
1295 13
1296 ]
1297 }
1298 ],
1299 "properties": {
1300 "Node name for S&R": "JsonExtractString"
1301 },
1302 "widgets_values": [
1303 "",
1304 "rewritten_prompt"
1305 ],
1306 "widgets_values_named": {
1307 "json_string": "",
1308 "key": "rewritten_prompt"
1309 }
1310 },
1311 {
1312 "id": 14,
1313 "type": "StringCompare",
1314 "pos": [
1315 2016.9,
1316 580
1317 ],
1318 "size": [
1319 320,
1320 190
1321 ],
1322 "flags": {},
1323 "order": 13,
1324 "mode": 0,
1325 "showAdvanced": null,
1326 "inputs": [
1327 {
1328 "color_off": null,
1329 "color_on": null,
1330 "dir": null,
1331 "label": null,
1332 "localized_name": "string_a",
1333 "locked": null,
1334 "name": "string_a",
1335 "nameLocked": null,
1336 "removable": null,
1337 "shape": null,
1338 "type": "STRING",
1339 "widget": {
1340 "name": "string_a"
1341 },
1342 "link": 12
1343 },
1344 {
1345 "color_off": null,
1346 "color_on": null,
1347 "dir": null,
1348 "label": null,
1349 "localized_name": "string_b",
1350 "locked": null,
1351 "name": "string_b",
1352 "nameLocked": null,
1353 "removable": null,
1354 "shape": null,
1355 "type": "STRING",
1356 "widget": {
1357 "name": "string_b"
1358 },
1359 "link": null
1360 },
1361 {
1362 "color_off": null,
1363 "color_on": null,
1364 "dir": null,
1365 "label": null,
1366 "localized_name": "mode",
1367 "locked": null,
1368 "name": "mode",
1369 "nameLocked": null,
1370 "removable": null,
1371 "shape": null,
1372 "type": "COMBO",
1373 "widget": {
1374 "name": "mode"
1375 },
1376 "link": null
1377 },
1378 {
1379 "color_off": null,
1380 "color_on": null,
1381 "dir": null,
1382 "label": null,
1383 "localized_name": "case_sensitive",
1384 "locked": null,
1385 "name": "case_sensitive",
1386 "nameLocked": null,
1387 "removable": null,
1388 "shape": null,
1389 "type": "BOOLEAN",
1390 "widget": {
1391 "name": "case_sensitive"
1392 },
1393 "link": null
1394 }
1395 ],
1396 "outputs": [
1397 {
1398 "color_off": null,
1399 "color_on": null,
1400 "dir": null,
1401 "label": null,
1402 "localized_name": "BOOLEAN",
1403 "locked": null,
1404 "name": "BOOLEAN",
1405 "nameLocked": null,
1406 "removable": null,
1407 "shape": null,
1408 "type": "BOOLEAN",
1409 "pos": null,
1410 "slot_index": null,
1411 "links": [
1412 15
1413 ]
1414 }
1415 ],
1416 "title": "Rewrite failed?",
1417 "properties": {
1418 "Node name for S&R": "StringCompare"
1419 },
1420 "widgets_values": [
1421 "",
1422 "",
1423 "Equal",
1424 true
1425 ],
1426 "widgets_values_named": {
1427 "string_a": "",
1428 "string_b": "",
1429 "mode": "Equal",
1430 "case_sensitive": true
1431 }
1432 },
1433 {
1434 "id": 15,
1435 "type": "ComfySwitchNode",
1436 "pos": [
1437 2416.9,
1438 0
1439 ],
1440 "size": [
1441 320,
1442 78
1443 ],
1444 "flags": {},
1445 "order": 14,
1446 "mode": 0,
1447 "showAdvanced": null,
1448 "inputs": [
1449 {
1450 "color_off": null,
1451 "color_on": null,
1452 "dir": null,
1453 "label": null,
1454 "localized_name": "on_false",
1455 "locked": null,
1456 "name": "on_false",
1457 "nameLocked": null,
1458 "removable": null,
1459 "shape": 7,
1460 "type": "STRING",
1461 "pos": null,
1462 "link": 13
1463 },
1464 {
1465 "color_off": null,
1466 "color_on": null,
1467 "dir": null,
1468 "label": null,
1469 "localized_name": "on_true",
1470 "locked": null,
1471 "name": "on_true",
1472 "nameLocked": null,
1473 "removable": null,
1474 "shape": 7,
1475 "type": "STRING",
1476 "pos": null,
1477 "link": 14
1478 },
1479 {
1480 "color_off": null,
1481 "color_on": null,
1482 "dir": null,
1483 "label": null,
1484 "localized_name": "switch",
1485 "locked": null,
1486 "name": "switch",
1487 "nameLocked": null,
1488 "removable": null,
1489 "shape": null,
1490 "type": "BOOLEAN",
1491 "widget": {
1492 "name": "switch"
1493 },
1494 "link": 15
1495 }
1496 ],
1497 "outputs": [
1498 {
1499 "color_off": null,
1500 "color_on": null,
1501 "dir": null,
1502 "label": null,
1503 "localized_name": "output",
1504 "locked": null,
1505 "name": "output",
1506 "nameLocked": null,
1507 "removable": null,
1508 "shape": null,
1509 "type": "STRING",
1510 "pos": null,
1511 "slot_index": null,
1512 "links": [
1513 17
1514 ]
1515 }
1516 ],
1517 "title": "Fall back to the original prompt",
1518 "properties": {
1519 "Node name for S&R": "ComfySwitchNode"
1520 },
1521 "widgets_values": [
1522 false
1523 ],
1524 "widgets_values_named": {
1525 "switch": false
1526 }
1527 },
1528 {
1529 "id": 16,
1530 "type": "ComfySwitchNode",
1531 "pos": [
1532 2416.9,
1533 168
1534 ],
1535 "size": [
1536 320,
1537 78
1538 ],
1539 "flags": {},
1540 "order": 15,
1541 "mode": 0,
1542 "showAdvanced": null,
1543 "inputs": [
1544 {
1545 "color_off": null,
1546 "color_on": null,
1547 "dir": null,
1548 "label": null,
1549 "localized_name": "on_false",
1550 "locked": null,
1551 "name": "on_false",
1552 "nameLocked": null,
1553 "removable": null,
1554 "shape": 7,
1555 "type": "STRING",
1556 "pos": null,
1557 "link": 16
1558 },
1559 {
1560 "color_off": null,
1561 "color_on": null,
1562 "dir": null,
1563 "label": null,
1564 "localized_name": "on_true",
1565 "locked": null,
1566 "name": "on_true",
1567 "nameLocked": null,
1568 "removable": null,
1569 "shape": 7,
1570 "type": "STRING",
1571 "pos": null,
1572 "link": 17
1573 },
1574 {
1575 "color_off": null,
1576 "color_on": null,
1577 "dir": null,
1578 "label": null,
1579 "localized_name": "switch",
1580 "locked": null,
1581 "name": "switch",
1582 "nameLocked": null,
1583 "removable": null,
1584 "shape": null,
1585 "type": "BOOLEAN",
1586 "widget": {
1587 "name": "switch"
1588 },
1589 "link": 18
1590 }
1591 ],
1592 "outputs": [
1593 {
1594 "color_off": null,
1595 "color_on": null,
1596 "dir": null,
1597 "label": null,
1598 "localized_name": "output",
1599 "locked": null,
1600 "name": "output",
1601 "nameLocked": null,
1602 "removable": null,
1603 "shape": null,
1604 "type": "STRING",
1605 "pos": null,
1606 "slot_index": null,
1607 "links": [
1608 19,
1609 20
1610 ]
1611 }
1612 ],
1613 "title": "Enhanced or original",
1614 "properties": {
1615 "Node name for S&R": "ComfySwitchNode"
1616 },
1617 "widgets_values": [
1618 false
1619 ],
1620 "widgets_values_named": {
1621 "switch": false
1622 }
1623 },
1624 {
1625 "id": 17,
1626 "type": "PreviewAny",
1627 "pos": [
1628 2416.9,
1629 336
1630 ],
1631 "size": [
1632 440,
1633 260
1634 ],
1635 "flags": {},
1636 "order": 16,
1637 "mode": 0,
1638 "showAdvanced": null,
1639 "inputs": [
1640 {
1641 "color_off": null,
1642 "color_on": null,
1643 "dir": null,
1644 "label": null,
1645 "localized_name": "source",
1646 "locked": null,
1647 "name": "source",
1648 "nameLocked": null,
1649 "removable": null,
1650 "shape": null,
1651 "type": "*",
1652 "pos": null,
1653 "link": 19
1654 }
1655 ],
1656 "outputs": [
1657 {
1658 "color_off": null,
1659 "color_on": null,
1660 "dir": null,
1661 "label": null,
1662 "localized_name": "STRING",
1663 "locked": null,
1664 "name": "STRING",
1665 "nameLocked": null,
1666 "removable": null,
1667 "shape": null,
1668 "type": "STRING",
1669 "pos": null,
1670 "slot_index": null,
1671 "links": null
1672 }
1673 ],
1674 "title": "Prompt used",
1675 "properties": {
1676 "Node name for S&R": "PreviewAny"
1677 },
1678 "widgets_values": [],
1679 "widgets_values_named": {}
1680 },
1681 {
1682 "id": 18,
1683 "type": "TextEncodeQwenImage21",
1684 "pos": [
1685 2936.9,
1686 0
1687 ],
1688 "size": [
1689 320,
1690 206
1691 ],
1692 "flags": {},
1693 "order": 17,
1694 "mode": 0,
1695 "showAdvanced": null,
1696 "inputs": [
1697 {
1698 "color_off": null,
1699 "color_on": null,
1700 "dir": null,
1701 "label": null,
1702 "localized_name": "clip",
1703 "locked": null,
1704 "name": "clip",
1705 "nameLocked": null,
1706 "removable": null,
1707 "shape": null,
1708 "type": "CLIP",
1709 "pos": null,
1710 "link": 2
1711 },
1712 {
1713 "color_off": null,
1714 "color_on": null,
1715 "dir": null,
1716 "label": null,
1717 "localized_name": "image_1",
1718 "locked": null,
1719 "name": "images.image_1",
1720 "nameLocked": null,
1721 "removable": null,
1722 "shape": 7,
1723 "type": "IMAGE",
1724 "pos": null,
1725 "link": null
1726 },
1727 {
1728 "color_off": null,
1729 "color_on": null,
1730 "dir": null,
1731 "label": null,
1732 "localized_name": "vae",
1733 "locked": null,
1734 "name": "vae",
1735 "nameLocked": null,
1736 "removable": null,
1737 "shape": 7,
1738 "type": "VAE",
1739 "pos": null,
1740 "link": 4
1741 },
1742 {
1743 "color_off": null,
1744 "color_on": null,
1745 "dir": null,
1746 "label": null,
1747 "localized_name": "prompt",
1748 "locked": null,
1749 "name": "prompt",
1750 "nameLocked": null,
1751 "removable": null,
1752 "shape": null,
1753 "type": "STRING",
1754 "widget": {
1755 "name": "prompt"
1756 },
1757 "link": 20
1758 },
1759 {
1760 "color_off": null,
1761 "color_on": null,
1762 "dir": null,
1763 "label": null,
1764 "localized_name": "negative_prompt",
1765 "locked": null,
1766 "name": "negative_prompt",
1767 "nameLocked": null,
1768 "removable": null,
1769 "shape": null,
1770 "type": "STRING",
1771 "widget": {
1772 "name": "negative_prompt"
1773 },
1774 "link": null
1775 },
1776 {
1777 "color_off": null,
1778 "color_on": null,
1779 "dir": null,
1780 "label": null,
1781 "localized_name": "resolution",
1782 "locked": null,
1783 "name": "resolution",
1784 "nameLocked": null,
1785 "removable": null,
1786 "shape": null,
1787 "type": "INT",
1788 "widget": {
1789 "name": "resolution"
1790 },
1791 "link": null
1792 }
1793 ],
1794 "outputs": [
1795 {
1796 "color_off": null,
1797 "color_on": null,
1798 "dir": null,
1799 "label": null,
1800 "localized_name": "positive",
1801 "locked": null,
1802 "name": "positive",
1803 "nameLocked": null,
1804 "removable": null,
1805 "shape": null,
1806 "type": "CONDITIONING",
1807 "pos": null,
1808 "slot_index": null,
1809 "links": [
1810 21
1811 ]
1812 },
1813 {
1814 "color_off": null,
1815 "color_on": null,
1816 "dir": null,
1817 "label": null,
1818 "localized_name": "negative",
1819 "locked": null,
1820 "name": "negative",
1821 "nameLocked": null,
1822 "removable": null,
1823 "shape": null,
1824 "type": "CONDITIONING",
1825 "pos": null,
1826 "slot_index": null,
1827 "links": null
1828 },
1829 {
1830 "color_off": null,
1831 "color_on": null,
1832 "dir": null,
1833 "label": null,
1834 "localized_name": "latent",
1835 "locked": null,
1836 "name": "latent",
1837 "nameLocked": null,
1838 "removable": null,
1839 "shape": null,
1840 "type": "LATENT",
1841 "pos": null,
1842 "slot_index": null,
1843 "links": null
1844 }
1845 ],
1846 "properties": {
1847 "Node name for S&R": "TextEncodeQwenImage21"
1848 },
1849 "widgets_values": [
1850 "",
1851 "",
1852 1024
1853 ],
1854 "widgets_values_named": {
1855 "prompt": "",
1856 "negative_prompt": "",
1857 "resolution": 1024
1858 }
1859 },
1860 {
1861 "id": 19,
1862 "type": "BasicGuider",
1863 "pos": [
1864 2936.9,
1865 296
1866 ],
1867 "size": [
1868 320,
1869 46
1870 ],
1871 "flags": {},
1872 "order": 18,
1873 "mode": 0,
1874 "showAdvanced": null,
1875 "inputs": [
1876 {
1877 "color_off": null,
1878 "color_on": null,
1879 "dir": null,
1880 "label": null,
1881 "localized_name": "model",
1882 "locked": null,
1883 "name": "model",
1884 "nameLocked": null,
1885 "removable": null,
1886 "shape": null,
1887 "type": "MODEL",
1888 "pos": null,
1889 "link": 28
1890 },
1891 {
1892 "color_off": null,
1893 "color_on": null,
1894 "dir": null,
1895 "label": null,
1896 "localized_name": "conditioning",
1897 "locked": null,
1898 "name": "conditioning",
1899 "nameLocked": null,
1900 "removable": null,
1901 "shape": null,
1902 "type": "CONDITIONING",
1903 "pos": null,
1904 "link": 21
1905 }
1906 ],
1907 "outputs": [
1908 {
1909 "color_off": null,
1910 "color_on": null,
1911 "dir": null,
1912 "label": null,
1913 "localized_name": "GUIDER",
1914 "locked": null,
1915 "name": "GUIDER",
1916 "nameLocked": null,
1917 "removable": null,
1918 "shape": null,
1919 "type": "GUIDER",
1920 "pos": null,
1921 "slot_index": null,
1922 "links": [
1923 23
1924 ]
1925 }
1926 ],
1927 "title": "BasicGuider (CFG off)",
1928 "properties": {
1929 "Node name for S&R": "BasicGuider"
1930 }
1931 },
1932 {
1933 "id": 20,
1934 "type": "RandomNoise",
1935 "pos": [
1936 2936.9,
1937 432
1938 ],
1939 "size": [
1940 320,
1941 82
1942 ],
1943 "flags": {},
1944 "order": 19,
1945 "mode": 0,
1946 "showAdvanced": null,
1947 "inputs": [
1948 {
1949 "color_off": null,
1950 "color_on": null,
1951 "dir": null,
1952 "label": null,
1953 "localized_name": "noise_seed",
1954 "locked": null,
1955 "name": "noise_seed",
1956 "nameLocked": null,
1957 "removable": null,
1958 "shape": null,
1959 "type": "INT",
1960 "widget": {
1961 "name": "noise_seed"
1962 },
1963 "link": null
1964 }
1965 ],
1966 "outputs": [
1967 {
1968 "color_off": null,
1969 "color_on": null,
1970 "dir": null,
1971 "label": null,
1972 "localized_name": "NOISE",
1973 "locked": null,
1974 "name": "NOISE",
1975 "nameLocked": null,
1976 "removable": null,
1977 "shape": null,
1978 "type": "NOISE",
1979 "pos": null,
1980 "slot_index": null,
1981 "links": [
1982 22
1983 ]
1984 }
1985 ],
1986 "properties": {
1987 "Node name for S&R": "RandomNoise"
1988 },
1989 "widgets_values": [
1990 0,
1991 "randomize"
1992 ],
1993 "widgets_values_named": {
1994 "noise_seed": 0,
1995 "control_after_generate": "randomize"
1996 }
1997 },
1998 {
1999 "id": 21,
2000 "type": "KSamplerSelect",
2001 "pos": [
2002 2936.9,
2003 604
2004 ],
2005 "size": [
2006 320,
2007 58
2008 ],
2009 "flags": {},
2010 "order": 20,
2011 "mode": 0,
2012 "showAdvanced": null,
2013 "inputs": [
2014 {
2015 "color_off": null,
2016 "color_on": null,
2017 "dir": null,
2018 "label": null,
2019 "localized_name": "sampler_name",
2020 "locked": null,
2021 "name": "sampler_name",
2022 "nameLocked": null,
2023 "removable": null,
2024 "shape": null,
2025 "type": "COMBO",
2026 "widget": {
2027 "name": "sampler_name"
2028 },
2029 "link": null
2030 }
2031 ],
2032 "outputs": [
2033 {
2034 "color_off": null,
2035 "color_on": null,
2036 "dir": null,
2037 "label": null,
2038 "localized_name": "SAMPLER",
2039 "locked": null,
2040 "name": "SAMPLER",
2041 "nameLocked": null,
2042 "removable": null,
2043 "shape": null,
2044 "type": "SAMPLER",
2045 "pos": null,
2046 "slot_index": null,
2047 "links": [
2048 24
2049 ]
2050 }
2051 ],
2052 "properties": {
2053 "Node name for S&R": "KSamplerSelect"
2054 },
2055 "widgets_values": [
2056 "euler"
2057 ],
2058 "widgets_values_named": {
2059 "sampler_name": "euler"
2060 }
2061 },
2062 {
2063 "id": 22,
2064 "type": "ViggleTurboSigmas",
2065 "pos": [
2066 2936.9,
2067 752
2068 ],
2069 "size": [
2070 320,
2071 58
2072 ],
2073 "flags": {},
2074 "order": 21,
2075 "mode": 0,
2076 "showAdvanced": null,
2077 "inputs": [
2078 {
2079 "color_off": null,
2080 "color_on": null,
2081 "dir": null,
2082 "label": null,
2083 "localized_name": "latent",
2084 "locked": null,
2085 "name": "latent",
2086 "nameLocked": null,
2087 "removable": null,
2088 "shape": null,
2089 "type": "LATENT",
2090 "pos": null,
2091 "link": 31
2092 },
2093 {
2094 "color_off": null,
2095 "color_on": null,
2096 "dir": null,
2097 "label": null,
2098 "localized_name": "nodes",
2099 "locked": null,
2100 "name": "nodes",
2101 "nameLocked": null,
2102 "removable": null,
2103 "shape": null,
2104 "type": "STRING",
2105 "widget": {
2106 "name": "nodes"
2107 },
2108 "link": null
2109 }
2110 ],
2111 "outputs": [
2112 {
2113 "color_off": null,
2114 "color_on": null,
2115 "dir": null,
2116 "label": null,
2117 "localized_name": "SIGMAS",
2118 "locked": null,
2119 "name": "SIGMAS",
2120 "nameLocked": null,
2121 "removable": null,
2122 "shape": null,
2123 "type": "SIGMAS",
2124 "pos": null,
2125 "slot_index": null,
2126 "links": [
2127 25
2128 ]
2129 }
2130 ],
2131 "properties": {
2132 "Node name for S&R": "ViggleTurboSigmas"
2133 },
2134 "widgets_values": [
2135 "1.0, 0.9375, 0.875, 0.75, 0.5, 0.25"
2136 ],
2137 "widgets_values_named": {
2138 "nodes": "1.0, 0.9375, 0.875, 0.75, 0.5, 0.25"
2139 }
2140 },
2141 {
2142 "id": 23,
2143 "type": "SamplerCustomAdvanced",
2144 "pos": [
2145 3336.9,
2146 0
2147 ],
2148 "size": [
2149 320,
2150 106
2151 ],
2152 "flags": {},
2153 "order": 22,
2154 "mode": 0,
2155 "showAdvanced": null,
2156 "inputs": [
2157 {
2158 "color_off": null,
2159 "color_on": null,
2160 "dir": null,
2161 "label": null,
2162 "localized_name": "noise",
2163 "locked": null,
2164 "name": "noise",
2165 "nameLocked": null,
2166 "removable": null,
2167 "shape": null,
2168 "type": "NOISE",
2169 "pos": null,
2170 "link": 22
2171 },
2172 {
2173 "color_off": null,
2174 "color_on": null,
2175 "dir": null,
2176 "label": null,
2177 "localized_name": "guider",
2178 "locked": null,
2179 "name": "guider",
2180 "nameLocked": null,
2181 "removable": null,
2182 "shape": null,
2183 "type": "GUIDER",
2184 "pos": null,
2185 "link": 23
2186 },
2187 {
2188 "color_off": null,
2189 "color_on": null,
2190 "dir": null,
2191 "label": null,
2192 "localized_name": "sampler",
2193 "locked": null,
2194 "name": "sampler",
2195 "nameLocked": null,
2196 "removable": null,
2197 "shape": null,
2198 "type": "SAMPLER",
2199 "pos": null,
2200 "link": 24
2201 },
2202 {
2203 "color_off": null,
2204 "color_on": null,
2205 "dir": null,
2206 "label": null,
2207 "localized_name": "sigmas",
2208 "locked": null,
2209 "name": "sigmas",
2210 "nameLocked": null,
2211 "removable": null,
2212 "shape": null,
2213 "type": "SIGMAS",
2214 "pos": null,
2215 "link": 25
2216 },
2217 {
2218 "color_off": null,
2219 "color_on": null,
2220 "dir": null,
2221 "label": null,
2222 "localized_name": "latent_image",
2223 "locked": null,
2224 "name": "latent_image",
2225 "nameLocked": null,
2226 "removable": null,
2227 "shape": null,
2228 "type": "LATENT",
2229 "pos": null,
2230 "link": 32
2231 }
2232 ],
2233 "outputs": [
2234 {
2235 "color_off": null,
2236 "color_on": null,
2237 "dir": null,
2238 "label": null,
2239 "localized_name": "output",
2240 "locked": null,
2241 "name": "output",
2242 "nameLocked": null,
2243 "removable": null,
2244 "shape": null,
2245 "type": "LATENT",
2246 "pos": null,
2247 "slot_index": null,
2248 "links": [
2249 26
2250 ]
2251 },
2252 {
2253 "color_off": null,
2254 "color_on": null,
2255 "dir": null,
2256 "label": null,
2257 "localized_name": "denoised_output",
2258 "locked": null,
2259 "name": "denoised_output",
2260 "nameLocked": null,
2261 "removable": null,
2262 "shape": null,
2263 "type": "LATENT",
2264 "pos": null,
2265 "slot_index": null,
2266 "links": null
2267 }
2268 ],
2269 "properties": {
2270 "Node name for S&R": "SamplerCustomAdvanced"
2271 }
2272 },
2273 {
2274 "id": 24,
2275 "type": "VAEDecode",
2276 "pos": [
2277 3336.9,
2278 196
2279 ],
2280 "size": [
2281 320,
2282 46
2283 ],
2284 "flags": {},
2285 "order": 23,
2286 "mode": 0,
2287 "showAdvanced": null,
2288 "inputs": [
2289 {
2290 "color_off": null,
2291 "color_on": null,
2292 "dir": null,
2293 "label": null,
2294 "localized_name": "samples",
2295 "locked": null,
2296 "name": "samples",
2297 "nameLocked": null,
2298 "removable": null,
2299 "shape": null,
2300 "type": "LATENT",
2301 "pos": null,
2302 "link": 26
2303 },
2304 {
2305 "color_off": null,
2306 "color_on": null,
2307 "dir": null,
2308 "label": null,
2309 "localized_name": "vae",
2310 "locked": null,
2311 "name": "vae",
2312 "nameLocked": null,
2313 "removable": null,
2314 "shape": null,
2315 "type": "VAE",
2316 "pos": null,
2317 "link": 5
2318 }
2319 ],
2320 "outputs": [
2321 {
2322 "color_off": null,
2323 "color_on": null,
2324 "dir": null,
2325 "label": null,
2326 "localized_name": "IMAGE",
2327 "locked": null,
2328 "name": "IMAGE",
2329 "nameLocked": null,
2330 "removable": null,
2331 "shape": null,
2332 "type": "IMAGE",
2333 "pos": null,
2334 "slot_index": null,
2335 "links": [
2336 27
2337 ]
2338 }
2339 ],
2340 "properties": {
2341 "Node name for S&R": "VAEDecode"
2342 }
2343 },
2344 {
2345 "id": 25,
2346 "type": "SaveImage",
2347 "pos": [
2348 3336.9,
2349 332
2350 ],
2351 "size": [
2352 520,
2353 560
2354 ],
2355 "flags": {},
2356 "order": 24,
2357 "mode": 0,
2358 "showAdvanced": null,
2359 "inputs": [
2360 {
2361 "color_off": null,
2362 "color_on": null,
2363 "dir": null,
2364 "label": null,
2365 "localized_name": "images",
2366 "locked": null,
2367 "name": "images",
2368 "nameLocked": null,
2369 "removable": null,
2370 "shape": null,
2371 "type": "IMAGE",
2372 "pos": null,
2373 "link": 27
2374 },
2375 {
2376 "color_off": null,
2377 "color_on": null,
2378 "dir": null,
2379 "label": null,
2380 "localized_name": "filename_prefix",
2381 "locked": null,
2382 "name": "filename_prefix",
2383 "nameLocked": null,
2384 "removable": null,
2385 "shape": null,
2386 "type": "STRING",
2387 "widget": {
2388 "name": "filename_prefix"
2389 },
2390 "link": null
2391 }
2392 ],
2393 "outputs": [
2394 {
2395 "color_off": null,
2396 "color_on": null,
2397 "dir": null,
2398 "label": null,
2399 "localized_name": "images",
2400 "locked": null,
2401 "name": "images",
2402 "nameLocked": null,
2403 "removable": null,
2404 "shape": null,
2405 "type": "IMAGE",
2406 "pos": null,
2407 "slot_index": null,
2408 "links": null
2409 }
2410 ],
2411 "properties": {},
2412 "widgets_values": [
2413 "viggle_turbo/t2i"
2414 ],
2415 "widgets_values_named": {
2416 "filename_prefix": "viggle_turbo/t2i"
2417 }
2418 }
2419 ],
2420 "links": [
2421 [
2422 1,
2423 2,
2424 0,
2425 3,
2426 0,
2427 "MODEL"
2428 ],
2429 [
2430 2,
2431 4,
2432 0,
2433 18,
2434 0,
2435 "CLIP"
2436 ],
2437 [
2438 4,
2439 5,
2440 0,
2441 18,
2442 2,
2443 "VAE"
2444 ],
2445 [
2446 5,
2447 5,
2448 0,
2449 24,
2450 1,
2451 "VAE"
2452 ],
2453 [
2454 6,
2455 7,
2456 0,
2457 8,
2458 0,
2459 "INT"
2460 ],
2461 [
2462 7,
2463 7,
2464 1,
2465 8,
2466 1,
2467 "INT"
2468 ],
2469 [
2470 11,
2471 12,
2472 0,
2473 13,
2474 0,
2475 "STRING"
2476 ],
2477 [
2478 12,
2479 13,
2480 0,
2481 14,
2482 0,
2483 "STRING"
2484 ],
2485 [
2486 13,
2487 13,
2488 0,
2489 15,
2490 0,
2491 "STRING"
2492 ],
2493 [
2494 14,
2495 6,
2496 0,
2497 15,
2498 1,
2499 "STRING"
2500 ],
2501 [
2502 15,
2503 14,
2504 0,
2505 15,
2506 2,
2507 "BOOLEAN"
2508 ],
2509 [
2510 16,
2511 6,
2512 0,
2513 16,
2514 0,
2515 "STRING"
2516 ],
2517 [
2518 17,
2519 15,
2520 0,
2521 16,
2522 1,
2523 "STRING"
2524 ],
2525 [
2526 18,
2527 9,
2528 0,
2529 16,
2530 2,
2531 "BOOLEAN"
2532 ],
2533 [
2534 19,
2535 16,
2536 0,
2537 17,
2538 0,
2539 "STRING"
2540 ],
2541 [
2542 20,
2543 16,
2544 0,
2545 18,
2546 3,
2547 "STRING"
2548 ],
2549 [
2550 21,
2551 18,
2552 0,
2553 19,
2554 1,
2555 "CONDITIONING"
2556 ],
2557 [
2558 22,
2559 20,
2560 0,
2561 23,
2562 0,
2563 "NOISE"
2564 ],
2565 [
2566 23,
2567 19,
2568 0,
2569 23,
2570 1,
2571 "GUIDER"
2572 ],
2573 [
2574 24,
2575 21,
2576 0,
2577 23,
2578 2,
2579 "SAMPLER"
2580 ],
2581 [
2582 25,
2583 22,
2584 0,
2585 23,
2586 3,
2587 "SIGMAS"
2588 ],
2589 [
2590 26,
2591 23,
2592 0,
2593 24,
2594 0,
2595 "LATENT"
2596 ],
2597 [
2598 27,
2599 24,
2600 0,
2601 25,
2602 0,
2603 "IMAGE"
2604 ],
2605 [
2606 28,
2607 3,
2608 0,
2609 19,
2610 0,
2611 "MODEL"
2612 ],
2613 [
2614 8,
2615 6,
2616 0,
2617 11,
2618 0,
2619 "STRING"
2620 ],
2621 [
2622 29,
2623 7,
2624 0,
2625 11,
2626 1,
2627 "INT"
2628 ],
2629 [
2630 30,
2631 7,
2632 1,
2633 11,
2634 2,
2635 "INT"
2636 ],
2637 [
2638 31,
2639 8,
2640 0,
2641 22,
2642 0,
2643 "LATENT"
2644 ],
2645 [
2646 32,
2647 8,
2648 0,
2649 23,
2650 4,
2651 "LATENT"
2652 ],
2653 [
2654 3,
2655 4,
2656 0,
2657 12,
2658 0,
2659 "CLIP"
2660 ],
2661 [
2662 9,
2663 10,
2664 0,
2665 12,
2666 4,
2667 "STRING"
2668 ],
2669 [
2670 10,
2671 11,
2672 0,
2673 12,
2674 5,
2675 "STRING"
2676 ]
2677 ],
2678 "floatingLinks": null,
2679 "groups": [
2680 {
2681 "id": 1,
2682 "title": "1. Models",
2683 "bounding": [
2684 520,
2685 -90,
2686 396.9,
2687 708
2688 ],
2689 "color": "#3f789e",
2690 "flags": {}
2691 },
2692 {
2693 "id": 2,
2694 "title": "2. Prompt & size",
2695 "bounding": [
2696 956.9,
2697 -90,
2698 480.0000000000001,
2699 766
2700 ],
2701 "color": "#b58b2a",
2702 "flags": {}
2703 },
2704 {
2705 "id": 3,
2706 "title": "3. Prompt enhancer (optional)",
2707 "bounding": [
2708 1476.9,
2709 -90,
2710 1400,
2711 880
2712 ],
2713 "color": "#a1309b",
2714 "flags": {}
2715 },
2716 {
2717 "id": 4,
2718 "title": "4. Sample: 6 steps, CFG off",
2719 "bounding": [
2720 2916.9,
2721 -90,
2722 960,
2723 1002
2724 ],
2725 "color": "#444",
2726 "flags": {}
2727 }
2728 ],
2729 "definitions": null,
2730 "config": {},
2731 "extra": {
2732 "ds": {
2733 "scale": 0.5,
2734 "offset": [
2735 60,
2736 160
2737 ]
2738 },
2739 "reroutes": null
2740 },
2741 "version": 0.4
2742 }