工作流 /
图像 /
MOSS-Image:版式控制生图

MOSS-Image:版式控制生图
MOSS-Image: Layout-Guided Text to Image
在「创建边界框」中绘制的版式基础上,结合文本提示生成图像。每个框带有独立说明,文字框也会渲染其中的文字,因此 MOSS-Image 会将各元素放在您指定的位置。适用于海报、包装展示图以及任何对排版有要求的构图。
图像
10 个节点 159 次使用 ComfyUI ≥ 0.42.0 ComfyUI 91 KB
需要的权重
这个工作流引用了 3 个权重文件,其中 3 个能在本站模型库里找到。
flux2-vae_small.safetensors
在模型库查看
moss_image_sft_int8_convrot.safetensors
在模型库查看
qwen3.5_9b_w4a8_gptq.safetensors
在模型库查看
节点构成
MarkdownNote
× 4
SaveImage
× 1
3301b744-2960-415a-83b0-fe8a89d99fdb
× 1
ResolutionSelector
× 1
CreateBoundingBoxes
× 1
PreviewAny
× 1
MOSSImageLayoutPrompt
× 1
官方标注的模型
MOSS-Image
工作流 JSON
和上面「下载工作流 JSON」是同一份文件。
1{
2 "id": "e8f30439-267f-45de-b260-db0d114b2c85",
3 "revision": 0,
4 "last_node_id": 33,
5 "last_link_id": 68,
6 "nodes": [
7 {
8 "id": 9,
9 "type": "SaveImage",
10 "pos": [
11 1260,
12 -40
13 ],
14 "size": [
15 570,
16 700
17 ],
18 "flags": [],
19 "order": 9,
20 "mode": 0,
21 "inputs": [
22 {
23 "name": "images",
24 "type": "IMAGE",
25 "link": 22
26 }
27 ],
28 "outputs": [
29 {
30 "name": "images",
31 "type": "IMAGE",
32 "links": null
33 }
34 ],
35 "properties": {
36 "Node name for S&R": "SaveImage"
37 },
38 "widgets_values": [
39 "moss_image_bboxes"
40 ],
41 "widgets_values_named": {
42 "filename_prefix": "moss_image_bboxes"
43 }
44 },
45 {
46 "id": 18,
47 "type": "3301b744-2960-415a-83b0-fe8a89d99fdb",
48 "pos": [
49 740,
50 -40
51 ],
52 "size": [
53 430,
54 680
55 ],
56 "flags": [],
57 "order": 8,
58 "mode": 0,
59 "inputs": [
60 {
61 "label": "positive_prompt",
62 "name": "value",
63 "type": "STRING",
64 "widget": {
65 "name": "value"
66 },
67 "link": 67
68 },
69 {
70 "label": "enable_prompt_enhancer",
71 "name": "switch",
72 "type": "BOOLEAN",
73 "widget": {
74 "name": "switch"
75 },
76 "link": null
77 },
78 {
79 "label": "negative_prompt",
80 "name": "text",
81 "type": "STRING",
82 "widget": {
83 "name": "text"
84 },
85 "link": null
86 },
87 {
88 "name": "width",
89 "type": "INT",
90 "widget": {
91 "name": "width"
92 },
93 "link": 40
94 },
95 {
96 "name": "height",
97 "type": "INT",
98 "widget": {
99 "name": "height"
100 },
101 "link": 41
102 },
103 {
104 "label": "SLG",
105 "name": "switch_1",
106 "type": "BOOLEAN",
107 "widget": {
108 "name": "switch_1"
109 },
110 "link": null
111 },
112 {
113 "label": "unet_model",
114 "name": "unet_name",
115 "type": "COMBO",
116 "widget": {
117 "name": "unet_name"
118 },
119 "link": null
120 },
121 {
122 "label": "clip_model",
123 "name": "clip_name",
124 "type": "COMBO",
125 "widget": {
126 "name": "clip_name"
127 },
128 "link": null
129 },
130 {
131 "label": "vae_model",
132 "name": "vae_name",
133 "type": "COMBO",
134 "widget": {
135 "name": "vae_name"
136 },
137 "link": null
138 },
139 {
140 "label": "ref_image (for llm)",
141 "name": "video",
142 "shape": 7,
143 "type": "IMAGE",
144 "link": null
145 }
146 ],
147 "outputs": [
148 {
149 "name": "IMAGE",
150 "type": "IMAGE",
151 "links": [
152 22
153 ]
154 }
155 ],
156 "properties": {
157 "previewExposures": []
158 },
159 "widgets_values": [
160 "",
161 false,
162 "nsfw, worst quality, bad anatomy, watermark, jpeg artifact",
163 1024,
164 1024,
165 571710880652220,
166 25,
167 2.5,
168 true,
169 "er_sde",
170 "simple",
171 "moss_image_sft_int8_convrot.safetensors",
172 "qwen3.5_9b_w4a8_gptq.safetensors",
173 "flux2-vae_small.safetensors"
174 ],
175 "widgets_values_named": {
176 "value": "",
177 "switch": false,
178 "text": "nsfw, worst quality, bad anatomy, watermark, jpeg artifact",
179 "width": 1024,
180 "height": 1024,
181 "seed": 571710880652220,
182 "steps": 25,
183 "cfg": 2.5,
184 "switch_1": true,
185 "sampler_name": "er_sde",
186 "scheduler": "simple",
187 "unet_name": "moss_image_sft_int8_convrot.safetensors",
188 "clip_name": "qwen3.5_9b_w4a8_gptq.safetensors",
189 "vae_name": "flux2-vae_small.safetensors"
190 }
191 },
192 {
193 "id": 19,
194 "type": "ResolutionSelector",
195 "pos": [
196 -1190,
197 -30
198 ],
199 "size": [
200 280,
201 190
202 ],
203 "flags": [],
204 "order": 0,
205 "mode": 0,
206 "showAdvanced": true,
207 "inputs": [],
208 "outputs": [
209 {
210 "name": "width",
211 "type": "INT",
212 "links": [
213 40,
214 49,
215 51
216 ]
217 },
218 {
219 "name": "height",
220 "type": "INT",
221 "links": [
222 41,
223 50,
224 52
225 ]
226 }
227 ],
228 "properties": {
229 "Node name for S&R": "ResolutionSelector"
230 },
231 "widgets_values": [
232 "1:1 (Square)",
233 1,
234 16
235 ],
236 "widgets_values_named": {
237 "aspect_ratio": "1:1 (Square)",
238 "megapixels": 1,
239 "multiple": 16
240 }
241 },
242 {
243 "id": 20,
244 "type": "MarkdownNote",
245 "pos": [
246 -2360,
247 -70
248 ],
249 "size": [
250 580,
251 630
252 ],
253 "flags": [],
254 "order": 1,
255 "mode": 0,
256 "inputs": [],
257 "outputs": [],
258 "properties": [],
259 "widgets_values": [
260 "Guide: [Subgraph](https://docs.comfy.org/interface/features/subgraph)\n\n## Model Links\n\n- [Hugging Face:Comfy-Org/MOSS-Image](https://huggingface.co/Comfy-Org/MOSS-Image)\n- [ModelScope:Comfy-Org/MOSS-Image](https://modelscope.cn/models/Comfy-Org/MOSS-Image)\n\n**diffusion_models**\n\n- [moss_image_sft_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/MOSS-Image/resolve/main/diffusion_models/moss_image_sft_int8_convrot.safetensors) (5.04 GB)\n\n**text_encoders**\n\n- [qwen3.5_9b_w4a8_gptq.safetensors](https://huggingface.co/Comfy-Org/MOSS-Image/resolve/main/text_encoders/qwen3.5_9b_w4a8_gptq.safetensors) (9.08 GB)\n\n**vae**\n\n- [flux2-vae_small.safetensors](https://huggingface.co/Comfy-Org/MOSS-Image/resolve/main/vae/flux2-vae_small.safetensors) (249.5 MB)\n\n\n## Model Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 diffusion_models/\n│ │ └── moss_image_sft_int8_convrot.safetensors\n│ ├── 📂 text_encoders/\n│ │ └── qwen3.5_9b_w4a8_gptq.safetensors\n│ └── 📂 vae/\n│ └── flux2-vae_small.safetensors\n```\n\n## Report Issue\n\nNote: Please update ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)) and prepare required models. Desktop/Cloud updates follow stable releases, so some nightly-supported models may not be available yet.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n"
261 ],
262 "widgets_values_named": {
263 "text": "Guide: [Subgraph](https://docs.comfy.org/interface/features/subgraph)\n\n## Model Links\n\n- [Hugging Face:Comfy-Org/MOSS-Image](https://huggingface.co/Comfy-Org/MOSS-Image)\n- [ModelScope:Comfy-Org/MOSS-Image](https://modelscope.cn/models/Comfy-Org/MOSS-Image)\n\n**diffusion_models**\n\n- [moss_image_sft_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/MOSS-Image/resolve/main/diffusion_models/moss_image_sft_int8_convrot.safetensors) (5.04 GB)\n\n**text_encoders**\n\n- [qwen3.5_9b_w4a8_gptq.safetensors](https://huggingface.co/Comfy-Org/MOSS-Image/resolve/main/text_encoders/qwen3.5_9b_w4a8_gptq.safetensors) (9.08 GB)\n\n**vae**\n\n- [flux2-vae_small.safetensors](https://huggingface.co/Comfy-Org/MOSS-Image/resolve/main/vae/flux2-vae_small.safetensors) (249.5 MB)\n\n\n## Model Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 diffusion_models/\n│ │ └── moss_image_sft_int8_convrot.safetensors\n│ ├── 📂 text_encoders/\n│ │ └── qwen3.5_9b_w4a8_gptq.safetensors\n│ └── 📂 vae/\n│ └── flux2-vae_small.safetensors\n```\n\n## Report Issue\n\nNote: Please update ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)) and prepare required models. Desktop/Cloud updates follow stable releases, so some nightly-supported models may not be available yet.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n"
264 },
265 "color": "#222",
266 "bgcolor": "#000"
267 },
268 {
269 "id": 24,
270 "type": "MarkdownNote",
271 "pos": [
272 -240,
273 390
274 ],
275 "size": [
276 420,
277 240
278 ],
279 "flags": [],
280 "order": 2,
281 "mode": 0,
282 "inputs": [],
283 "outputs": [],
284 "properties": [],
285 "widgets_values": [
286 "## Layout / bounding-box flow\n\n`CreateBoundingBoxes` is where the layout is drawn: it outputs the boxes as `BOUNDING_BOX` plus an element list → `MOSS-Image Layout Prompt` turns those elements into the Layout prompt → that `prompt` is wired into `positive_prompt` of the **Text to Image (MOSS-Image)** subgraph. Remove the link to fall back to a plain text prompt.\n\nPrompt upsampler is **on** in this template, so it can rewrite the prompt and drop the layout — set `enable_prompt_upsampler` to `false` (inside the subgraph) when the boxes must survive verbatim."
287 ],
288 "widgets_values_named": {
289 "text": "## Layout / bounding-box flow\n\n`CreateBoundingBoxes` is where the layout is drawn: it outputs the boxes as `BOUNDING_BOX` plus an element list → `MOSS-Image Layout Prompt` turns those elements into the Layout prompt → that `prompt` is wired into `positive_prompt` of the **Text to Image (MOSS-Image)** subgraph. Remove the link to fall back to a plain text prompt.\n\nPrompt upsampler is **on** in this template, so it can rewrite the prompt and drop the layout — set `enable_prompt_upsampler` to `false` (inside the subgraph) when the boxes must survive verbatim."
290 },
291 "color": "#222",
292 "bgcolor": "#000"
293 },
294 {
295 "id": 25,
296 "type": "CreateBoundingBoxes",
297 "pos": [
298 -740,
299 0
300 ],
301 "size": [
302 440,
303 680
304 ],
305 "flags": [],
306 "order": 5,
307 "mode": 0,
308 "inputs": [
309 {
310 "name": "background",
311 "shape": 7,
312 "type": "IMAGE",
313 "link": null
314 },
315 {
316 "name": "bboxes",
317 "shape": 7,
318 "type": "BOUNDING_BOX,ARRAY,STRING",
319 "link": null
320 },
321 {
322 "name": "width",
323 "type": "INT",
324 "widget": {
325 "name": "width"
326 },
327 "link": 49
328 },
329 {
330 "name": "height",
331 "type": "INT",
332 "widget": {
333 "name": "height"
334 },
335 "link": 50
336 }
337 ],
338 "outputs": [
339 {
340 "name": "preview",
341 "type": "IMAGE",
342 "links": []
343 },
344 {
345 "name": "bboxes",
346 "type": "BOUNDING_BOX",
347 "links": []
348 },
349 {
350 "name": "elements",
351 "type": "ARRAY",
352 "links": [
353 47
354 ]
355 }
356 ],
357 "properties": {
358 "Node name for S&R": "CreateBoundingBoxes"
359 },
360 "widgets_values": [
361 1024,
362 1024,
363 [
364 {
365 "x": 0,
366 "y": 56,
367 "width": 1024,
368 "height": 333,
369 "metadata": {
370 "type": "text",
371 "text": "MOSS",
372 "desc": "Across the top of the poster, enormous cream serif capitals spell , with oversized high-contrast letterforms cropped by both the left and right edges so the word extends beyond the composition. The typography is flat, bold, and sharply defined against a dark background",
373 "palette": []
374 }
375 },
376 {
377 "x": 143,
378 "y": 184,
379 "width": 778,
380 "height": 840,
381 "metadata": {
382 "type": "obj",
383 "text": "",
384 "desc": "A knight in moss-covered steel plate armour strikes a heroic kneeling pose: one knee planted on the ground, the other leg bent forward with the foot braced, torso upright and chest pushed forward, shoulders back, head lifted and facing straight ahead, one gauntleted hand gripping the hilt of a massive greatsword planted point-down beside him, the other forearm resting on his raised knee, the broad blade weathered and rust-streaked, a dense bouquet of white daisies and pink roses bursting from the open helmet instead of a face, ivy, ferns and tumbled stonework behind him",
385 "palette": []
386 }
387 },
388 {
389 "x": 31,
390 "y": 26,
391 "width": 205,
392 "height": 67,
393 "metadata": {
394 "type": "text",
395 "text": "MOSS IMAGE\nPROJECT",
396 "desc": "In the top-left corner, two lines of tiny cream uppercase sans-serif type read , set in a compact left-aligned block with tight line spacing. The surrounding area remains dark and unobstructed",
397 "palette": []
398 }
399 },
400 {
401 "x": 61,
402 "y": 655,
403 "width": 276,
404 "height": 143,
405 "metadata": {
406 "type": "text",
407 "text": "\"ALL THAT FADES\nWAS NEVER MEANT\nTO REMAIN\"",
408 "desc": "A compact three-line text block in the upper-left portion of the specified region, reading in small cream-colored uppercase serif lettering. The words are enclosed by thin cream quotation marks at the beginning and end, with centered line alignment, tight line spacing, and a subtle dark shadow for legibility against the underlying background",
409 "palette": []
410 }
411 },
412 {
413 "x": 666,
414 "y": 440,
415 "width": 358,
416 "height": 174,
417 "metadata": {
418 "type": "text",
419 "text": "EVEN THE ARMOUR CANNOT CARRY EVERYTHING.\nWHAT HAS NO GROUND READS THE DEEPEST.",
420 "desc": "A compact paragraph of tiny cream uppercase serif lettering on the right, arranged across two tightly spaced lines and reading The text sits against a dark background with restrained line spacing and clean margins",
421 "palette": []
422 }
423 },
424 {
425 "x": 492,
426 "y": 768,
427 "width": 543,
428 "height": 225,
429 "metadata": {
430 "type": "text",
431 "text": "\"WITHIN THE HOLLOW,\nSOMETHING ALWAYS\nTAKES ROOT.\"",
432 "desc": "Large cream serif capitals reading are arranged as three centered lines at the bottom right, with generous line spacing and a thin dark quotation mark enclosing the text block",
433 "palette": []
434 }
435 }
436 ],
437 [
438 {
439 "x": 0,
440 "y": 56,
441 "width": 1024,
442 "height": 333,
443 "metadata": {
444 "type": "text",
445 "text": "MOSS",
446 "desc": "Across the top of the poster, enormous cream serif capitals spell , with oversized high-contrast letterforms cropped by both the left and right edges so the word extends beyond the composition. The typography is flat, bold, and sharply defined against a dark background",
447 "palette": []
448 }
449 },
450 {
451 "x": 143,
452 "y": 184,
453 "width": 778,
454 "height": 840,
455 "metadata": {
456 "type": "obj",
457 "text": "",
458 "desc": "A knight in moss-covered steel plate armour strikes a heroic kneeling pose: one knee planted on the ground, the other leg bent forward with the foot braced, torso upright and chest pushed forward, shoulders back, head lifted and facing straight ahead, one gauntleted hand gripping the hilt of a massive greatsword planted point-down beside him, the other forearm resting on his raised knee, the broad blade weathered and rust-streaked, a dense bouquet of white daisies and pink roses bursting from the open helmet instead of a face, ivy, ferns and tumbled stonework behind him",
459 "palette": []
460 }
461 },
462 {
463 "x": 31,
464 "y": 26,
465 "width": 205,
466 "height": 67,
467 "metadata": {
468 "type": "text",
469 "text": "MOSS IMAGE\nPROJECT",
470 "desc": "In the top-left corner, two lines of tiny cream uppercase sans-serif type read , set in a compact left-aligned block with tight line spacing. The surrounding area remains dark and unobstructed",
471 "palette": []
472 }
473 },
474 {
475 "x": 61,
476 "y": 655,
477 "width": 276,
478 "height": 143,
479 "metadata": {
480 "type": "text",
481 "text": "\"ALL THAT FADES\nWAS NEVER MEANT\nTO REMAIN\"",
482 "desc": "A compact three-line text block in the upper-left portion of the specified region, reading in small cream-colored uppercase serif lettering. The words are enclosed by thin cream quotation marks at the beginning and end, with centered line alignment, tight line spacing, and a subtle dark shadow for legibility against the underlying background",
483 "palette": []
484 }
485 },
486 {
487 "x": 666,
488 "y": 440,
489 "width": 358,
490 "height": 174,
491 "metadata": {
492 "type": "text",
493 "text": "EVEN THE ARMOUR CANNOT CARRY EVERYTHING.\nWHAT HAS NO GROUND READS THE DEEPEST.",
494 "desc": "A compact paragraph of tiny cream uppercase serif lettering on the right, arranged across two tightly spaced lines and reading The text sits against a dark background with restrained line spacing and clean margins",
495 "palette": []
496 }
497 },
498 {
499 "x": 492,
500 "y": 768,
501 "width": 543,
502 "height": 225,
503 "metadata": {
504 "type": "text",
505 "text": "\"WITHIN THE HOLLOW,\nSOMETHING ALWAYS\nTAKES ROOT.\"",
506 "desc": "Large cream serif capitals reading are arranged as three centered lines at the bottom right, with generous line spacing and a thin dark quotation mark enclosing the text block",
507 "palette": []
508 }
509 }
510 ]
511 ],
512 "widgets_values_named": {
513 "width": 1024,
514 "height": 1024,
515 "editor_state": [
516 {
517 "x": 0,
518 "y": 56,
519 "width": 1024,
520 "height": 333,
521 "metadata": {
522 "type": "text",
523 "text": "MOSS",
524 "desc": "Across the top of the poster, enormous cream serif capitals spell , with oversized high-contrast letterforms cropped by both the left and right edges so the word extends beyond the composition. The typography is flat, bold, and sharply defined against a dark background",
525 "palette": []
526 }
527 },
528 {
529 "x": 143,
530 "y": 184,
531 "width": 778,
532 "height": 840,
533 "metadata": {
534 "type": "obj",
535 "text": "",
536 "desc": "A knight in moss-covered steel plate armour strikes a heroic kneeling pose: one knee planted on the ground, the other leg bent forward with the foot braced, torso upright and chest pushed forward, shoulders back, head lifted and facing straight ahead, one gauntleted hand gripping the hilt of a massive greatsword planted point-down beside him, the other forearm resting on his raised knee, the broad blade weathered and rust-streaked, a dense bouquet of white daisies and pink roses bursting from the open helmet instead of a face, ivy, ferns and tumbled stonework behind him",
537 "palette": []
538 }
539 },
540 {
541 "x": 31,
542 "y": 26,
543 "width": 205,
544 "height": 67,
545 "metadata": {
546 "type": "text",
547 "text": "MOSS IMAGE\nPROJECT",
548 "desc": "In the top-left corner, two lines of tiny cream uppercase sans-serif type read , set in a compact left-aligned block with tight line spacing. The surrounding area remains dark and unobstructed",
549 "palette": []
550 }
551 },
552 {
553 "x": 61,
554 "y": 655,
555 "width": 276,
556 "height": 143,
557 "metadata": {
558 "type": "text",
559 "text": "\"ALL THAT FADES\nWAS NEVER MEANT\nTO REMAIN\"",
560 "desc": "A compact three-line text block in the upper-left portion of the specified region, reading in small cream-colored uppercase serif lettering. The words are enclosed by thin cream quotation marks at the beginning and end, with centered line alignment, tight line spacing, and a subtle dark shadow for legibility against the underlying background",
561 "palette": []
562 }
563 },
564 {
565 "x": 666,
566 "y": 440,
567 "width": 358,
568 "height": 174,
569 "metadata": {
570 "type": "text",
571 "text": "EVEN THE ARMOUR CANNOT CARRY EVERYTHING.\nWHAT HAS NO GROUND READS THE DEEPEST.",
572 "desc": "A compact paragraph of tiny cream uppercase serif lettering on the right, arranged across two tightly spaced lines and reading The text sits against a dark background with restrained line spacing and clean margins",
573 "palette": []
574 }
575 },
576 {
577 "x": 492,
578 "y": 768,
579 "width": 543,
580 "height": 225,
581 "metadata": {
582 "type": "text",
583 "text": "\"WITHIN THE HOLLOW,\nSOMETHING ALWAYS\nTAKES ROOT.\"",
584 "desc": "Large cream serif capitals reading are arranged as three centered lines at the bottom right, with generous line spacing and a thin dark quotation mark enclosing the text block",
585 "palette": []
586 }
587 }
588 ],
589 "last_incoming": [
590 {
591 "x": 0,
592 "y": 56,
593 "width": 1024,
594 "height": 333,
595 "metadata": {
596 "type": "text",
597 "text": "MOSS",
598 "desc": "Across the top of the poster, enormous cream serif capitals spell , with oversized high-contrast letterforms cropped by both the left and right edges so the word extends beyond the composition. The typography is flat, bold, and sharply defined against a dark background",
599 "palette": []
600 }
601 },
602 {
603 "x": 143,
604 "y": 184,
605 "width": 778,
606 "height": 840,
607 "metadata": {
608 "type": "obj",
609 "text": "",
610 "desc": "A knight in moss-covered steel plate armour strikes a heroic kneeling pose: one knee planted on the ground, the other leg bent forward with the foot braced, torso upright and chest pushed forward, shoulders back, head lifted and facing straight ahead, one gauntleted hand gripping the hilt of a massive greatsword planted point-down beside him, the other forearm resting on his raised knee, the broad blade weathered and rust-streaked, a dense bouquet of white daisies and pink roses bursting from the open helmet instead of a face, ivy, ferns and tumbled stonework behind him",
611 "palette": []
612 }
613 },
614 {
615 "x": 31,
616 "y": 26,
617 "width": 205,
618 "height": 67,
619 "metadata": {
620 "type": "text",
621 "text": "MOSS IMAGE\nPROJECT",
622 "desc": "In the top-left corner, two lines of tiny cream uppercase sans-serif type read , set in a compact left-aligned block with tight line spacing. The surrounding area remains dark and unobstructed",
623 "palette": []
624 }
625 },
626 {
627 "x": 61,
628 "y": 655,
629 "width": 276,
630 "height": 143,
631 "metadata": {
632 "type": "text",
633 "text": "\"ALL THAT FADES\nWAS NEVER MEANT\nTO REMAIN\"",
634 "desc": "A compact three-line text block in the upper-left portion of the specified region, reading in small cream-colored uppercase serif lettering. The words are enclosed by thin cream quotation marks at the beginning and end, with centered line alignment, tight line spacing, and a subtle dark shadow for legibility against the underlying background",
635 "palette": []
636 }
637 },
638 {
639 "x": 666,
640 "y": 440,
641 "width": 358,
642 "height": 174,
643 "metadata": {
644 "type": "text",
645 "text": "EVEN THE ARMOUR CANNOT CARRY EVERYTHING.\nWHAT HAS NO GROUND READS THE DEEPEST.",
646 "desc": "A compact paragraph of tiny cream uppercase serif lettering on the right, arranged across two tightly spaced lines and reading The text sits against a dark background with restrained line spacing and clean margins",
647 "palette": []
648 }
649 },
650 {
651 "x": 492,
652 "y": 768,
653 "width": 543,
654 "height": 225,
655 "metadata": {
656 "type": "text",
657 "text": "\"WITHIN THE HOLLOW,\nSOMETHING ALWAYS\nTAKES ROOT.\"",
658 "desc": "Large cream serif capitals reading are arranged as three centered lines at the bottom right, with generous line spacing and a thin dark quotation mark enclosing the text block",
659 "palette": []
660 }
661 }
662 ]
663 }
664 },
665 {
666 "id": 26,
667 "type": "PreviewAny",
668 "pos": [
669 240,
670 20
671 ],
672 "size": [
673 400,
674 260
675 ],
676 "flags": [],
677 "order": 7,
678 "mode": 0,
679 "inputs": [
680 {
681 "name": "source",
682 "type": "*",
683 "link": 46
684 }
685 ],
686 "outputs": [
687 {
688 "name": "STRING",
689 "type": "STRING",
690 "links": [
691 67
692 ]
693 }
694 ],
695 "properties": {
696 "Node name for S&R": "PreviewAny"
697 },
698 "widgets_values": [],
699 "widgets_values_named": []
700 },
701 {
702 "id": 27,
703 "type": "MOSSImageLayoutPrompt",
704 "pos": [
705 -240,
706 0
707 ],
708 "size": [
709 420,
710 340
711 ],
712 "flags": [],
713 "order": 6,
714 "mode": 0,
715 "inputs": [
716 {
717 "name": "element",
718 "type": "ARRAY",
719 "link": 47
720 },
721 {
722 "name": "width",
723 "type": "INT",
724 "widget": {
725 "name": "width"
726 },
727 "link": 51
728 },
729 {
730 "name": "height",
731 "type": "INT",
732 "widget": {
733 "name": "height"
734 },
735 "link": 52
736 }
737 ],
738 "outputs": [
739 {
740 "name": "prompt",
741 "type": "STRING",
742 "links": [
743 46
744 ]
745 }
746 ],
747 "properties": {
748 "Node name for S&R": "MOSSImageLayoutPrompt"
749 },
750 "widgets_values": [
751 "Dark fantasy editorial poster in a lush overgrown ruin: a knight in moss-covered plate armour in a heroic kneeling pose, torso upright and head lifted, one hand gripping a massive greatsword planted point-down beside him, the other forearm on his raised knee, a dense bouquet of daisies and pink roses growing out of the open helmet instead of a face, ivy and crumbling columns behind, petals drifting in the air, soft volumetric light from above, deep green and moss palette with muted cream type.",
752 1024,
753 1024,
754 "2"
755 ],
756 "widgets_values_named": {
757 "prompt": "Dark fantasy editorial poster in a lush overgrown ruin: a knight in moss-covered plate armour in a heroic kneeling pose, torso upright and head lifted, one hand gripping a massive greatsword planted point-down beside him, the other forearm on his raised knee, a dense bouquet of daisies and pink roses growing out of the open helmet instead of a face, ivy and crumbling columns behind, petals drifting in the air, soft volumetric light from above, deep green and moss palette with muted cream type.",
758 "width": 1024,
759 "height": 1024,
760 "character_boxes": "2"
761 }
762 },
763 {
764 "id": 29,
765 "type": "MarkdownNote",
766 "pos": [
767 -1750,
768 -70
769 ],
770 "size": [
771 520,
772 1200
773 ],
774 "flags": [],
775 "order": 3,
776 "mode": 0,
777 "inputs": [],
778 "outputs": [],
779 "properties": [],
780 "widgets_values": [
781 "## MOSS-Image capabilities and limits\n\nSources: [USERGUIDE](https://github.com/OpenMOSS/MOSS-Image/blob/main/USERGUIDE.md), README, HF Base/SFT cards; cross-checked against community benchmark notes.\n\n### Resolution\n\n| Item | Official |\n|------|----------|\n| Recommended total pixels | **1M, 1.5M, or 2M** |\n| Extrapolation range | **0.25M (512×512) to 4M (~2K)** |\n| Aspect ratio | Arbitrary; width/height must be positive multiples of **16** |\n| This template default | 1024×1024 (~1M) |\n\n### Strengths\n\n- ~**5B** single-stream DiT (Muon); FLUX.2 small VAE; Qwen-family text encoder.\n- Strong bilingual English and Chinese text rendering and auto layout; JSON Layout control for text/objects; long prompts (~**4K** tokens); anime and photorealistic.\n- **SFT** clearer text grouping/layouts; **Base** has no post-training / CFG distillation (better for community LoRAs).\n- Inputs: natural language, tag sequences, JSON layout (layout is experimental). Prefer English (most training data); Chinese supported.\n\n### Limits / notes\n\n- Auto line breaks may not match intent — use `\\n` or real newlines for precise text.\n- Turning off SLG looks more realistic but can collapse details; official negative-branch skip layer **22** (24/26 also help). kijai notes SLG can overblow anime styles.\n- Recommended negative prompt: `nsfw, worst quality, bad anatomy, watermark, jpeg artifact`\n- If VRAM is tight, lower resolution or use Sequential / CPU offload.\n- When training LoRA yourself, **freeze the text encoder**.\n- License: Apache 2.0.\n\n---\n\n## Sampling settings vs. official defaults\n\n| Setting | This template | OpenMOSS official |\n|---------|---------------|-------------------|\n| Steps | 25 | 50 |\n| CFG | 2.5 | 3 |\n| Sampler | er_sde | Euler |\n| Scheduler | simple | default |\n| Denoise | 1 | 1 |\n| Shift | 5 (model default) | 5 (same) |\n\nThis template follows the faster settings from kijai's ComfyUI MOSS-Image PR [#17095](https://github.com/comfyanonymous/ComfyUI/pull/17095). That is a speed trade-off, not a bug. For results closer to the official ones, try 50 steps and CFG 3.\n\n### Community notes\n\n- **Skip layer guidance:** can overblow anime styles; no alternative values were suggested (template keeps official layer 22). You can check the detail settings inside the subgraph\n- **Shift:** adjust with ModelSamplingAuraFlow or ModelSamplingFlux — ModelSamplingSD3 uses a completely different scale. You can enter the subgraph to adjust it\n- **SFT banding:** experimental LoRA at about −0.5 strength: [moss_image_sft_lora_blocks_21_to_49…](https://huggingface.co/Kijai/MOSS-image_experimental/blob/main/loras/moss_image_sft_lora_blocks_21_to_49_rank_512_bf16.safetensors)\n\n\n## Prompt skill\n\nThe system prompt driving the upsampler is written from the official [MOSS-Image Prompt Enhancer skill](https://github.com/OpenMOSS/MOSS-Image/blob/main/skills/moss-image-prompt-enhancer/SKILL.md). The same skill turns an idea into a caption or a Layout prompt outside ComfyUI, and it is the reference for the caption style this model was trained on."
782 ],
783 "widgets_values_named": {
784 "text": "## MOSS-Image capabilities and limits\n\nSources: [USERGUIDE](https://github.com/OpenMOSS/MOSS-Image/blob/main/USERGUIDE.md), README, HF Base/SFT cards; cross-checked against community benchmark notes.\n\n### Resolution\n\n| Item | Official |\n|------|----------|\n| Recommended total pixels | **1M, 1.5M, or 2M** |\n| Extrapolation range | **0.25M (512×512) to 4M (~2K)** |\n| Aspect ratio | Arbitrary; width/height must be positive multiples of **16** |\n| This template default | 1024×1024 (~1M) |\n\n### Strengths\n\n- ~**5B** single-stream DiT (Muon); FLUX.2 small VAE; Qwen-family text encoder.\n- Strong bilingual English and Chinese text rendering and auto layout; JSON Layout control for text/objects; long prompts (~**4K** tokens); anime and photorealistic.\n- **SFT** clearer text grouping/layouts; **Base** has no post-training / CFG distillation (better for community LoRAs).\n- Inputs: natural language, tag sequences, JSON layout (layout is experimental). Prefer English (most training data); Chinese supported.\n\n### Limits / notes\n\n- Auto line breaks may not match intent — use `\\n` or real newlines for precise text.\n- Turning off SLG looks more realistic but can collapse details; official negative-branch skip layer **22** (24/26 also help). kijai notes SLG can overblow anime styles.\n- Recommended negative prompt: `nsfw, worst quality, bad anatomy, watermark, jpeg artifact`\n- If VRAM is tight, lower resolution or use Sequential / CPU offload.\n- When training LoRA yourself, **freeze the text encoder**.\n- License: Apache 2.0.\n\n---\n\n## Sampling settings vs. official defaults\n\n| Setting | This template | OpenMOSS official |\n|---------|---------------|-------------------|\n| Steps | 25 | 50 |\n| CFG | 2.5 | 3 |\n| Sampler | er_sde | Euler |\n| Scheduler | simple | default |\n| Denoise | 1 | 1 |\n| Shift | 5 (model default) | 5 (same) |\n\nThis template follows the faster settings from kijai's ComfyUI MOSS-Image PR [#17095](https://github.com/comfyanonymous/ComfyUI/pull/17095). That is a speed trade-off, not a bug. For results closer to the official ones, try 50 steps and CFG 3.\n\n### Community notes\n\n- **Skip layer guidance:** can overblow anime styles; no alternative values were suggested (template keeps official layer 22). You can check the detail settings inside the subgraph\n- **Shift:** adjust with ModelSamplingAuraFlow or ModelSamplingFlux — ModelSamplingSD3 uses a completely different scale. You can enter the subgraph to adjust it\n- **SFT banding:** experimental LoRA at about −0.5 strength: [moss_image_sft_lora_blocks_21_to_49…](https://huggingface.co/Kijai/MOSS-image_experimental/blob/main/loras/moss_image_sft_lora_blocks_21_to_49_rank_512_bf16.safetensors)\n\n\n## Prompt skill\n\nThe system prompt driving the upsampler is written from the official [MOSS-Image Prompt Enhancer skill](https://github.com/OpenMOSS/MOSS-Image/blob/main/skills/moss-image-prompt-enhancer/SKILL.md). The same skill turns an idea into a caption or a Layout prompt outside ComfyUI, and it is the reference for the caption style this model was trained on."
785 },
786 "color": "#222",
787 "bgcolor": "#000"
788 },
789 {
790 "id": 33,
791 "type": "MarkdownNote",
792 "pos": [
793 740,
794 -210
795 ],
796 "size": [
797 420,
798 110
799 ],
800 "flags": [],
801 "order": 4,
802 "mode": 0,
803 "inputs": [],
804 "outputs": [],
805 "title": "Note: ref_image and PE",
806 "properties": [],
807 "widgets_values": [
808 "The `ref_image` is fed to the LLM only for prompt enhancement and cannot be used directly by the model. Enable the prompt enhancer if you wish to use it. The model itself doesn't support `ref_image`.\n\nWhen using the bboxes, enabling PE will rewrite the json input totally, so it's disabled by default in the current workflow."
809 ],
810 "widgets_values_named": {
811 "text": "The `ref_image` is fed to the LLM only for prompt enhancement and cannot be used directly by the model. Enable the prompt enhancer if you wish to use it. The model itself doesn't support `ref_image`.\n\nWhen using the bboxes, enabling PE will rewrite the json input totally, so it's disabled by default in the current workflow."
812 },
813 "color": "#222",
814 "bgcolor": "#000"
815 }
816 ],
817 "links": [
818 [
819 22,
820 18,
821 0,
822 9,
823 0,
824 "IMAGE"
825 ],
826 [
827 40,
828 19,
829 0,
830 18,
831 3,
832 "INT"
833 ],
834 [
835 41,
836 19,
837 1,
838 18,
839 4,
840 "INT"
841 ],
842 [
843 46,
844 27,
845 0,
846 26,
847 0,
848 "STRING"
849 ],
850 [
851 47,
852 25,
853 2,
854 27,
855 0,
856 "ARRAY"
857 ],
858 [
859 49,
860 19,
861 0,
862 25,
863 2,
864 "INT"
865 ],
866 [
867 50,
868 19,
869 1,
870 25,
871 3,
872 "INT"
873 ],
874 [
875 67,
876 26,
877 0,
878 18,
879 0,
880 "STRING"
881 ],
882 [
883 51,
884 19,
885 0,
886 27,
887 1,
888 "INT"
889 ],
890 [
891 52,
892 19,
893 1,
894 27,
895 2,
896 "INT"
897 ]
898 ],
899 "groups": [
900 {
901 "id": 5,
902 "title": "Create bounding boxes for precise control",
903 "bounding": [
904 -790,
905 -100,
906 1490,
907 1080
908 ],
909 "color": "#444",
910 "flags": []
911 }
912 ],
913 "definitions": {
914 "subgraphs": [
915 {
916 "id": "3301b744-2960-415a-83b0-fe8a89d99fdb",
917 "version": 1,
918 "state": {
919 "lastGroupId": 5,
920 "lastNodeId": 33,
921 "lastLinkId": 68,
922 "lastRerouteId": 0
923 },
924 "revision": 0,
925 "config": [],
926 "name": "Text to Image (MOSS-Image)",
927 "inputNode": {
928 "id": -10,
929 "bounding": [
930 -1020,
931 -120,
932 191.44921875,
933 348
934 ]
935 },
936 "outputNode": {
937 "id": -20,
938 "bounding": [
939 1790,
940 30,
941 128,
942 68
943 ]
944 },
945 "inputs": [
946 {
947 "id": "35437e31-565b-4d42-bc06-d95c5929e7d8",
948 "name": "value",
949 "type": "STRING",
950 "linkIds": [
951 25
952 ],
953 "label": "positive_prompt",
954 "pos": [
955 -852.55078125,
956 -96
957 ]
958 },
959 {
960 "id": "853a4192-ebce-42de-bdff-77c36b59cc1a",
961 "name": "switch",
962 "type": "BOOLEAN",
963 "linkIds": [
964 26
965 ],
966 "label": "enable_prompt_enhancer",
967 "pos": [
968 -852.55078125,
969 -76
970 ]
971 },
972 {
973 "id": "c11f1876-7b42-4679-a736-8deaa8f21fd7",
974 "name": "text",
975 "type": "STRING",
976 "linkIds": [
977 43
978 ],
979 "label": "negative_prompt",
980 "pos": [
981 -852.55078125,
982 -56
983 ]
984 },
985 {
986 "id": "1514590b-7a78-450b-82b4-cfbe7820a9db",
987 "name": "width",
988 "type": "INT",
989 "linkIds": [
990 27
991 ],
992 "pos": [
993 -852.55078125,
994 -36
995 ]
996 },
997 {
998 "id": "f2e18bfe-65b0-4d24-9c78-bec0b9573e97",
999 "name": "height",
1000 "type": "INT",
1001 "linkIds": [
1002 28
1003 ],
1004 "pos": [
1005 -852.55078125,
1006 -16
1007 ]
1008 },
1009 {
1010 "id": "32c26da2-7e60-44bf-851a-72690937b4b4",
1011 "name": "seed",
1012 "type": "INT",
1013 "linkIds": [
1014 30
1015 ],
1016 "pos": [
1017 -852.55078125,
1018 4
1019 ]
1020 },
1021 {
1022 "id": "dae5d571-ced0-46d6-8a0a-5a71b8ca945a",
1023 "name": "steps",
1024 "type": "INT",
1025 "linkIds": [
1026 42
1027 ],
1028 "pos": [
1029 -852.55078125,
1030 24
1031 ]
1032 },
1033 {
1034 "id": "6c064d6f-9925-4808-83cc-7e3409190ca7",
1035 "name": "cfg",
1036 "type": "FLOAT",
1037 "linkIds": [
1038 44
1039 ],
1040 "pos": [
1041 -852.55078125,
1042 44
1043 ]
1044 },
1045 {
1046 "id": "e3037e0e-7d1a-43ce-9585-b255c7017615",
1047 "name": "switch_1",
1048 "type": "BOOLEAN",
1049 "linkIds": [
1050 64
1051 ],
1052 "label": "SLG",
1053 "pos": [
1054 -852.55078125,
1055 64
1056 ]
1057 },
1058 {
1059 "id": "46e71c72-9f95-4c32-89d2-2dab4b63b284",
1060 "name": "sampler_name",
1061 "type": "COMBO",
1062 "linkIds": [
1063 33
1064 ],
1065 "pos": [
1066 -852.55078125,
1067 84
1068 ]
1069 },
1070 {
1071 "id": "8ba10fc2-8e73-4ece-8f77-27515bbe2698",
1072 "name": "scheduler",
1073 "type": "COMBO",
1074 "linkIds": [
1075 34
1076 ],
1077 "pos": [
1078 -852.55078125,
1079 104
1080 ]
1081 },
1082 {
1083 "id": "bc8e2627-1b51-4333-9d88-0cb6307f7545",
1084 "name": "unet_name",
1085 "type": "COMBO",
1086 "linkIds": [
1087 35
1088 ],
1089 "label": "unet_model",
1090 "pos": [
1091 -852.55078125,
1092 124
1093 ]
1094 },
1095 {
1096 "id": "fe422dee-acbe-4c34-898b-62bb878ddb83",
1097 "name": "clip_name",
1098 "type": "COMBO",
1099 "linkIds": [
1100 36
1101 ],
1102 "label": "clip_model",
1103 "pos": [
1104 -852.55078125,
1105 144
1106 ]
1107 },
1108 {
1109 "id": "29a73fdf-7b55-4612-8966-bba0b4cab854",
1110 "name": "vae_name",
1111 "type": "COMBO",
1112 "linkIds": [
1113 37
1114 ],
1115 "label": "vae_model",
1116 "pos": [
1117 -852.55078125,
1118 164
1119 ]
1120 },
1121 {
1122 "id": "85c66e1d-6e18-4e80-a271-8e4f0a44575c",
1123 "name": "video",
1124 "type": "IMAGE",
1125 "linkIds": [
1126 68
1127 ],
1128 "label": "ref_image (for llm)",
1129 "pos": [
1130 -852.55078125,
1131 184
1132 ]
1133 }
1134 ],
1135 "outputs": [
1136 {
1137 "id": "fa9fefe4-677e-4f8b-aba5-35459b097c37",
1138 "name": "IMAGE",
1139 "type": "IMAGE",
1140 "linkIds": [
1141 6
1142 ],
1143 "localized_name": "IMAGE",
1144 "pos": [
1145 1814,
1146 54
1147 ]
1148 }
1149 ],
1150 "widgets": [],
1151 "nodes": [
1152 {
1153 "id": 17,
1154 "type": "PrimitiveStringMultiline",
1155 "pos": [
1156 -130,
1157 -780
1158 ],
1159 "size": [
1160 490,
1161 280
1162 ],
1163 "flags": [],
1164 "order": 13,
1165 "mode": 0,
1166 "inputs": [
1167 {
1168 "localized_name": "value",
1169 "name": "value",
1170 "type": "STRING",
1171 "widget": {
1172 "name": "value"
1173 },
1174 "link": 25
1175 }
1176 ],
1177 "outputs": [
1178 {
1179 "localized_name": "STRING",
1180 "name": "STRING",
1181 "type": "STRING",
1182 "links": [
1183 15,
1184 17
1185 ]
1186 }
1187 ],
1188 "properties": {
1189 "Node name for S&R": "PrimitiveStringMultiline"
1190 },
1191 "widgets_values": [
1192 "Dark fantasy editorial poster in a lush overgrown ruin: a knight in moss-covered plate armour in a heroic kneeling pose, torso upright and head lifted, one hand gripping a massive greatsword planted point-down beside him, the other forearm on his raised knee, a dense bouquet of daisies and pink roses growing out of the open helmet instead of a face, ivy and crumbling columns behind, petals drifting in the air, soft volumetric light from above, deep green and moss palette with muted cream type."
1193 ],
1194 "widgets_values_named": {
1195 "value": "Dark fantasy editorial poster in a lush overgrown ruin: a knight in moss-covered plate armour in a heroic kneeling pose, torso upright and head lifted, one hand gripping a massive greatsword planted point-down beside him, the other forearm on his raised knee, a dense bouquet of daisies and pink roses growing out of the open helmet instead of a face, ivy and crumbling columns behind, petals drifting in the air, soft volumetric light from above, deep green and moss palette with muted cream type."
1196 }
1197 },
1198 {
1199 "id": 14,
1200 "type": "PrimitiveStringMultiline",
1201 "pos": [
1202 -130,
1203 -430
1204 ],
1205 "size": [
1206 470,
1207 270
1208 ],
1209 "flags": [],
1210 "order": 0,
1211 "mode": 0,
1212 "inputs": [],
1213 "outputs": [
1214 {
1215 "localized_name": "STRING",
1216 "name": "STRING",
1217 "type": "STRING",
1218 "links": [
1219 13
1220 ]
1221 }
1222 ],
1223 "title": "Text (System prompt)",
1224 "properties": {
1225 "Node name for S&R": "PrimitiveStringMultiline"
1226 },
1227 "widgets_values": [
1228 "You are a prompt engineer for an image generation model. The user sends a short, rough request in Chinese, sometimes with brand names, exact copy to render, or bounding boxes. Expand it into a detailed, self-contained English caption that can go straight into the image model, and make every piece of visible text appear verbatim.\n\nOutput only the caption. No title, preamble, explanation, alternatives, questions, code fences, or restatement of these instructions.\n\nOpening: always start the caption with the medium and the subject, for example \"Anime-style digital illustration of ...\", \"Studio photograph of ...\", \"Mixed-media poster of ...\". Never start with a verb. If the request is an edit, work out the final scene and open on it directly.\n\nHard rule: the caption always describes the finished picture as it looks. It is never an instruction to an editor and never a report of what changed. Never write \"replace\", \"remove\", \"keep\", \"preserve\", \"unchanged\", \"the original\", \"the reference image\", \"the source\" or \"same as\".\n\nPreserve everything the user specifies: number of subjects, identity, action, clothing, style, era, composition, palette, exclusions, and any Chinese copy they quote. Add only plausible visual detail the user left open. Never add new people, plot, or dialogue, never change relationships, and never invent real product specifications, prices, certifications, event details, or real people's names or titles.\n\nBuild the caption from these eight facets. Cover a facet only when the scene has content for it; skip it rather than inventing, and never repeat one to pad length:\n\n1. Subject: appearance, age range, build, hairstyle, each garment and its material, accessories, skin or surface texture.\n2. Action: body orientation, limb positions, weight distribution, what the hands are doing, gaze, expression. The pose must hold in a single frame and never contradict itself.\n3. Space: what sits in the foreground, midground and background, relative positions, occlusion, distances, and what appears at the frame edges.\n4. Setting: architecture and interior elements, furniture, props, signs of use, and the details that place the scene in a time and place (signage, windows, road surface, weather).\n5. Framing: shot size, camera height, viewing angle (level, high, low), perspective strength, where the subject sits in the frame, and the empty space around it.\n6. Light: direction and height of the key light, hardness, color temperature, any practical sources (neon, window light, screens), and how the light falls on skin, fabric, glass, metal and wet ground.\n7. Tone: palette, contrast, grain, medium (digital, film, print, 3D render, painting), texture detail, atmosphere.\n8. Text: see the next section. This is the most common failure point.\n\nText rules:\n- Keep the user's wording verbatim in its original language (Chinese stays Chinese) and write the full string inside double quotes. Never rewrite, translate, shorten, or paste the same copy twice.\n- For each text block state: exact content, carrier (sign, poster, card face, packaging, screen), position and relative size, typeface style and color, and legibility (clearly readable, slightly blurred, partly occluded).\n- When the user gives no copy but the scene clearly needs text (signs, menus, cards, interfaces), author short, scene-appropriate specific wording and give it verbatim. Never write placeholders such as \"headline here\" or \"some text\".\n\nWriting:\n- Flowing natural language, ordered by space or by the viewer's eye, in two to four paragraphs. No tag soup, no \"masterpiece, 8k, best quality\", no empty quality words.\n- Every sentence must add new visible information. Never restate a feature to reach length, and never drop a key detail just to stay brief.\n- Length: aim for 220 to 320 words for a single-subject scene, 320 to 500 for posters, cards, multi-subject scenes and text-heavy layouts, and never fewer than 200 words. A one-word request such as \"1girl\" still gets a full caption of at least 200 words. Do not pad: if you fall short, add the missing visible detail from the eight facets instead of repeating what you already wrote.\n- Describe only what is visible. No tool steps, generation parameters, or coordinate arithmetic.\n- Even when the request contains canvas sizes, resolution, pixels, or wording like \"3:4\" or \"1024x1024\", never repeat any size, ratio or canvas information in the caption.\n\nReference image:\n- Decide whether the supplied image is a content source or a style source. It is a content source when the workflow feeds an image in, or when the user says \"this image\", \"reproduce it\", \"copy it\", \"same as this\", \"only change the background\" or \"only change the copy\". Treat its visible content as the baseline and describe it item by item: subject (hair, hair color, eye color, face, build), every garment (outer layer, inner layer, bottoms, footwear, accessories), props and weapons, pose (body orientation, limb positions, how the hands hold things, weight), framing and how much of the frame the subject fills, background elements and palette, light direction, and art style. Change only what the user asks to change and keep the rest.\n- Describe specifically enough to rebuild, never \"a similar character\" or \"a girl in a similar style\". Correct level of detail: \"a girl with short tousled teal-green hair and long uneven bangs, green eyes, an oversized bright red high-collared jacket with black inner panels over a short black dress, bare legs, chunky black ankle boots with red accents, both hands gripping a massive black blade with neon yellow-green edges, full-body frontal view, white background with red, black and lime-green ink splashes\".\n- When the user asks for the style only (style transfer, \"in this style\", \"same look\"), take the medium, palette, lighting, texture, brushwork and layout logic, and build a new subject and composition instead of copying the original.\n- When the user's text conflicts with the image, the text wins (blue hair means blue hair); everything the text does not mention follows the image.\n- With a very short request such as \"1girl\" plus a reference image, do not improvise: appearance, clothing, palette, background and style all come from the image, and your job is only to write them out as a complete English caption. Do not add accessories, weapons, props or scenery the image does not show.\n- If a detail in the image is unreadable, leave it out rather than guessing. Never guess brands, identities or real names.\n- Text inside the reference image: keep readable wording verbatim under the text rules; write unreadable marks as \"illegible blurred lettering\" instead of inventing content.\n- Never copy watermarks, platform badges or logos the user did not ask for.\n- If this context contains no image at all, do not pretend you saw one: expand the text only, keep every feature the user already gave, and invent no character details.\n- A reference is evidence, not the deliverable. Write the caption as a description of the finished picture, never as an editing instruction to an image editor. Ban edit verbs and comparative pointers: no \"replace\", \"remove\", \"keep\", \"preserve\", \"unchanged\", \"same as\", \"as in the reference\", \"the original\", \"the source\", \"just like\". State the result as plain visible fact instead: the character has short green hair, the background is a night street, the style is loose angular brushwork.\n- Keep the number of subjects consistent with what the user asks for. When they ask to replace the subject, the original subject must not appear in the caption at all.\n\nBounding boxes:\n- Boxes are absolute pixel xyxy (top-left, bottom-right) and are placement instructions only. Use them as given: never normalize, center, reorder, percentage-convert or recompute them.\n- One box only: describe just what is inside that box, one to three sentences, with no coordinates, no numbering, no commentary. Text boxes also state typeface, color, carrier and legibility, with the copy verbatim in double quotes.\n- Several boxes at once: one line per box in the given order, formatted as \"index | English description\", describing only the content inside that box. No coordinates, no JSON, no prose paragraphs.\n- A box marks a placement, not a border, panel, divider or sticker to draw. Overlap and natural occlusion are allowed.\n- With no boxes, write a normal caption and never invent coordinates.\n"
1229 ],
1230 "widgets_values_named": {
1231 "value": "You are a prompt engineer for an image generation model. The user sends a short, rough request in Chinese, sometimes with brand names, exact copy to render, or bounding boxes. Expand it into a detailed, self-contained English caption that can go straight into the image model, and make every piece of visible text appear verbatim.\n\nOutput only the caption. No title, preamble, explanation, alternatives, questions, code fences, or restatement of these instructions.\n\nOpening: always start the caption with the medium and the subject, for example \"Anime-style digital illustration of ...\", \"Studio photograph of ...\", \"Mixed-media poster of ...\". Never start with a verb. If the request is an edit, work out the final scene and open on it directly.\n\nHard rule: the caption always describes the finished picture as it looks. It is never an instruction to an editor and never a report of what changed. Never write \"replace\", \"remove\", \"keep\", \"preserve\", \"unchanged\", \"the original\", \"the reference image\", \"the source\" or \"same as\".\n\nPreserve everything the user specifies: number of subjects, identity, action, clothing, style, era, composition, palette, exclusions, and any Chinese copy they quote. Add only plausible visual detail the user left open. Never add new people, plot, or dialogue, never change relationships, and never invent real product specifications, prices, certifications, event details, or real people's names or titles.\n\nBuild the caption from these eight facets. Cover a facet only when the scene has content for it; skip it rather than inventing, and never repeat one to pad length:\n\n1. Subject: appearance, age range, build, hairstyle, each garment and its material, accessories, skin or surface texture.\n2. Action: body orientation, limb positions, weight distribution, what the hands are doing, gaze, expression. The pose must hold in a single frame and never contradict itself.\n3. Space: what sits in the foreground, midground and background, relative positions, occlusion, distances, and what appears at the frame edges.\n4. Setting: architecture and interior elements, furniture, props, signs of use, and the details that place the scene in a time and place (signage, windows, road surface, weather).\n5. Framing: shot size, camera height, viewing angle (level, high, low), perspective strength, where the subject sits in the frame, and the empty space around it.\n6. Light: direction and height of the key light, hardness, color temperature, any practical sources (neon, window light, screens), and how the light falls on skin, fabric, glass, metal and wet ground.\n7. Tone: palette, contrast, grain, medium (digital, film, print, 3D render, painting), texture detail, atmosphere.\n8. Text: see the next section. This is the most common failure point.\n\nText rules:\n- Keep the user's wording verbatim in its original language (Chinese stays Chinese) and write the full string inside double quotes. Never rewrite, translate, shorten, or paste the same copy twice.\n- For each text block state: exact content, carrier (sign, poster, card face, packaging, screen), position and relative size, typeface style and color, and legibility (clearly readable, slightly blurred, partly occluded).\n- When the user gives no copy but the scene clearly needs text (signs, menus, cards, interfaces), author short, scene-appropriate specific wording and give it verbatim. Never write placeholders such as \"headline here\" or \"some text\".\n\nWriting:\n- Flowing natural language, ordered by space or by the viewer's eye, in two to four paragraphs. No tag soup, no \"masterpiece, 8k, best quality\", no empty quality words.\n- Every sentence must add new visible information. Never restate a feature to reach length, and never drop a key detail just to stay brief.\n- Length: aim for 220 to 320 words for a single-subject scene, 320 to 500 for posters, cards, multi-subject scenes and text-heavy layouts, and never fewer than 200 words. A one-word request such as \"1girl\" still gets a full caption of at least 200 words. Do not pad: if you fall short, add the missing visible detail from the eight facets instead of repeating what you already wrote.\n- Describe only what is visible. No tool steps, generation parameters, or coordinate arithmetic.\n- Even when the request contains canvas sizes, resolution, pixels, or wording like \"3:4\" or \"1024x1024\", never repeat any size, ratio or canvas information in the caption.\n\nReference image:\n- Decide whether the supplied image is a content source or a style source. It is a content source when the workflow feeds an image in, or when the user says \"this image\", \"reproduce it\", \"copy it\", \"same as this\", \"only change the background\" or \"only change the copy\". Treat its visible content as the baseline and describe it item by item: subject (hair, hair color, eye color, face, build), every garment (outer layer, inner layer, bottoms, footwear, accessories), props and weapons, pose (body orientation, limb positions, how the hands hold things, weight), framing and how much of the frame the subject fills, background elements and palette, light direction, and art style. Change only what the user asks to change and keep the rest.\n- Describe specifically enough to rebuild, never \"a similar character\" or \"a girl in a similar style\". Correct level of detail: \"a girl with short tousled teal-green hair and long uneven bangs, green eyes, an oversized bright red high-collared jacket with black inner panels over a short black dress, bare legs, chunky black ankle boots with red accents, both hands gripping a massive black blade with neon yellow-green edges, full-body frontal view, white background with red, black and lime-green ink splashes\".\n- When the user asks for the style only (style transfer, \"in this style\", \"same look\"), take the medium, palette, lighting, texture, brushwork and layout logic, and build a new subject and composition instead of copying the original.\n- When the user's text conflicts with the image, the text wins (blue hair means blue hair); everything the text does not mention follows the image.\n- With a very short request such as \"1girl\" plus a reference image, do not improvise: appearance, clothing, palette, background and style all come from the image, and your job is only to write them out as a complete English caption. Do not add accessories, weapons, props or scenery the image does not show.\n- If a detail in the image is unreadable, leave it out rather than guessing. Never guess brands, identities or real names.\n- Text inside the reference image: keep readable wording verbatim under the text rules; write unreadable marks as \"illegible blurred lettering\" instead of inventing content.\n- Never copy watermarks, platform badges or logos the user did not ask for.\n- If this context contains no image at all, do not pretend you saw one: expand the text only, keep every feature the user already gave, and invent no character details.\n- A reference is evidence, not the deliverable. Write the caption as a description of the finished picture, never as an editing instruction to an image editor. Ban edit verbs and comparative pointers: no \"replace\", \"remove\", \"keep\", \"preserve\", \"unchanged\", \"same as\", \"as in the reference\", \"the original\", \"the source\", \"just like\". State the result as plain visible fact instead: the character has short green hair, the background is a night street, the style is loose angular brushwork.\n- Keep the number of subjects consistent with what the user asks for. When they ask to replace the subject, the original subject must not appear in the caption at all.\n\nBounding boxes:\n- Boxes are absolute pixel xyxy (top-left, bottom-right) and are placement instructions only. Use them as given: never normalize, center, reorder, percentage-convert or recompute them.\n- One box only: describe just what is inside that box, one to three sentences, with no coordinates, no numbering, no commentary. Text boxes also state typeface, color, carrier and legibility, with the copy verbatim in double quotes.\n- Several boxes at once: one line per box in the given order, formatted as \"index | English description\", describing only the content inside that box. No coordinates, no JSON, no prose paragraphs.\n- A box marks a placement, not a border, panel, divider or sticker to draw. Overlap and natural occlusion are allowed.\n- With no boxes, write a normal caption and never invent coordinates.\n"
1232 }
1233 },
1234 {
1235 "id": 11,
1236 "type": "TextGenerate",
1237 "pos": [
1238 470,
1239 -780
1240 ],
1241 "size": [
1242 400,
1243 550
1244 ],
1245 "flags": [],
1246 "order": 9,
1247 "mode": 0,
1248 "inputs": [
1249 {
1250 "localized_name": "clip",
1251 "name": "clip",
1252 "type": "CLIP",
1253 "link": 10
1254 },
1255 {
1256 "localized_name": "image",
1257 "name": "image",
1258 "shape": 7,
1259 "type": "IMAGE",
1260 "link": null
1261 },
1262 {
1263 "localized_name": "video",
1264 "name": "video",
1265 "shape": 7,
1266 "type": "IMAGE",
1267 "link": 68
1268 },
1269 {
1270 "localized_name": "audio",
1271 "name": "audio",
1272 "shape": 7,
1273 "type": "AUDIO",
1274 "link": null
1275 },
1276 {
1277 "localized_name": "system_prompt",
1278 "name": "system_prompt",
1279 "shape": 7,
1280 "type": "STRING",
1281 "link": 13
1282 },
1283 {
1284 "localized_name": "prompt",
1285 "name": "prompt",
1286 "type": "STRING",
1287 "widget": {
1288 "name": "prompt"
1289 },
1290 "link": 17
1291 }
1292 ],
1293 "outputs": [
1294 {
1295 "localized_name": "generated_text",
1296 "name": "generated_text",
1297 "type": "STRING",
1298 "links": [
1299 19
1300 ]
1301 },
1302 {
1303 "localized_name": "thinking",
1304 "name": "thinking",
1305 "type": "STRING",
1306 "links": null
1307 }
1308 ],
1309 "properties": {
1310 "Node name for S&R": "TextGenerate"
1311 },
1312 "widgets_values": [
1313 "",
1314 4096,
1315 "on",
1316 0.7,
1317 64,
1318 0.95,
1319 0.05,
1320 1,
1321 0,
1322 0,
1323 false,
1324 true,
1325 "auto"
1326 ],
1327 "widgets_values_named": {
1328 "prompt": "",
1329 "max_length": 4096,
1330 "sampling_mode": "on",
1331 "sampling_mode.temperature": 0.7,
1332 "sampling_mode.top_k": 64,
1333 "sampling_mode.top_p": 0.95,
1334 "sampling_mode.min_p": 0.05,
1335 "sampling_mode.repetition_penalty": 1,
1336 "sampling_mode.seed": 0,
1337 "sampling_mode.presence_penalty": 0,
1338 "thinking": false,
1339 "use_default_template": true,
1340 "mtp": "auto"
1341 }
1342 },
1343 {
1344 "id": 1,
1345 "type": "UNETLoader",
1346 "pos": [
1347 -150,
1348 80
1349 ],
1350 "size": [
1351 350,
1352 90
1353 ],
1354 "flags": [],
1355 "order": 1,
1356 "mode": 0,
1357 "inputs": [
1358 {
1359 "localized_name": "unet_name",
1360 "name": "unet_name",
1361 "type": "COMBO",
1362 "widget": {
1363 "name": "unet_name"
1364 },
1365 "link": 35
1366 }
1367 ],
1368 "outputs": [
1369 {
1370 "localized_name": "MODEL",
1371 "name": "MODEL",
1372 "type": "MODEL",
1373 "slot_index": 0,
1374 "links": [
1375 1,
1376 63
1377 ]
1378 }
1379 ],
1380 "properties": {
1381 "Node name for S&R": "UNETLoader",
1382 "models": [
1383 {
1384 "name": "moss_image_sft_int8_convrot.safetensors",
1385 "url": "https://huggingface.co/Comfy-Org/MOSS-Image/resolve/main/diffusion_models/moss_image_sft_int8_convrot.safetensors",
1386 "directory": "diffusion_models"
1387 }
1388 ]
1389 },
1390 "widgets_values": [
1391 "moss_image_sft_int8_convrot.safetensors",
1392 "default"
1393 ],
1394 "widgets_values_named": {
1395 "unet_name": "moss_image_sft_int8_convrot.safetensors",
1396 "weight_dtype": "default"
1397 },
1398 "color": "#223",
1399 "bgcolor": "#335"
1400 },
1401 {
1402 "id": 4,
1403 "type": "CLIPTextEncode",
1404 "pos": [
1405 380,
1406 80
1407 ],
1408 "size": [
1409 450,
1410 520
1411 ],
1412 "flags": [],
1413 "order": 4,
1414 "mode": 0,
1415 "inputs": [
1416 {
1417 "localized_name": "clip",
1418 "name": "clip",
1419 "type": "CLIP",
1420 "link": 2
1421 },
1422 {
1423 "localized_name": "text",
1424 "name": "text",
1425 "type": "STRING",
1426 "widget": {
1427 "name": "text"
1428 },
1429 "link": 20
1430 }
1431 ],
1432 "outputs": [
1433 {
1434 "localized_name": "CONDITIONING",
1435 "name": "CONDITIONING",
1436 "type": "CONDITIONING",
1437 "slot_index": 0,
1438 "links": [
1439 8
1440 ]
1441 }
1442 ],
1443 "title": "Positive Prompt",
1444 "properties": {
1445 "Node name for S&R": "CLIPTextEncode"
1446 },
1447 "widgets_values": [
1448 "Editorial studio photograph of a model in a structured ivory wool coat standing against a seamless warm grey backdrop, single softbox from the left carving sculpted shadows, 85mm lens, muted cream and charcoal palette, subtle film grain"
1449 ],
1450 "widgets_values_named": {
1451 "text": "Editorial studio photograph of a model in a structured ivory wool coat standing against a seamless warm grey backdrop, single softbox from the left carving sculpted shadows, 85mm lens, muted cream and charcoal palette, subtle film grain"
1452 },
1453 "color": "#232",
1454 "bgcolor": "#353"
1455 },
1456 {
1457 "id": 2,
1458 "type": "CLIPLoader",
1459 "pos": [
1460 -150,
1461 690
1462 ],
1463 "size": [
1464 350,
1465 140
1466 ],
1467 "flags": [],
1468 "order": 2,
1469 "mode": 0,
1470 "inputs": [
1471 {
1472 "localized_name": "clip_name",
1473 "name": "clip_name",
1474 "type": "COMBO",
1475 "widget": {
1476 "name": "clip_name"
1477 },
1478 "link": 36
1479 }
1480 ],
1481 "outputs": [
1482 {
1483 "localized_name": "CLIP",
1484 "name": "CLIP",
1485 "type": "CLIP",
1486 "slot_index": 0,
1487 "links": [
1488 2,
1489 3,
1490 10
1491 ]
1492 }
1493 ],
1494 "properties": {
1495 "Node name for S&R": "CLIPLoader",
1496 "models": [
1497 {
1498 "name": "qwen3.5_9b_w4a8_gptq.safetensors",
1499 "url": "https://huggingface.co/Comfy-Org/MOSS-Image/resolve/main/text_encoders/qwen3.5_9b_w4a8_gptq.safetensors",
1500 "directory": "text_encoders"
1501 }
1502 ]
1503 },
1504 "widgets_values": [
1505 "qwen3.5_9b_w4a8_gptq.safetensors",
1506 "moss_image",
1507 "default"
1508 ],
1509 "widgets_values_named": {
1510 "clip_name": "qwen3.5_9b_w4a8_gptq.safetensors",
1511 "type": "moss_image",
1512 "device": "default"
1513 },
1514 "color": "#432",
1515 "bgcolor": "#653"
1516 },
1517 {
1518 "id": 7,
1519 "type": "KSampler",
1520 "pos": [
1521 930,
1522 50
1523 ],
1524 "size": [
1525 290,
1526 290
1527 ],
1528 "flags": [],
1529 "order": 7,
1530 "mode": 0,
1531 "inputs": [
1532 {
1533 "localized_name": "model",
1534 "name": "model",
1535 "type": "MODEL",
1536 "link": 61
1537 },
1538 {
1539 "localized_name": "positive",
1540 "name": "positive",
1541 "type": "CONDITIONING",
1542 "link": 8
1543 },
1544 {
1545 "localized_name": "negative",
1546 "name": "negative",
1547 "type": "CONDITIONING",
1548 "link": 9
1549 },
1550 {
1551 "localized_name": "latent_image",
1552 "name": "latent_image",
1553 "type": "LATENT",
1554 "link": 39
1555 },
1556 {
1557 "localized_name": "seed",
1558 "name": "seed",
1559 "type": "INT",
1560 "widget": {
1561 "name": "seed"
1562 },
1563 "link": 30
1564 },
1565 {
1566 "localized_name": "steps",
1567 "name": "steps",
1568 "type": "INT",
1569 "widget": {
1570 "name": "steps"
1571 },
1572 "link": 42
1573 },
1574 {
1575 "localized_name": "cfg",
1576 "name": "cfg",
1577 "type": "FLOAT",
1578 "widget": {
1579 "name": "cfg"
1580 },
1581 "link": 44
1582 },
1583 {
1584 "localized_name": "sampler_name",
1585 "name": "sampler_name",
1586 "type": "COMBO",
1587 "widget": {
1588 "name": "sampler_name"
1589 },
1590 "link": 33
1591 },
1592 {
1593 "localized_name": "scheduler",
1594 "name": "scheduler",
1595 "type": "COMBO",
1596 "widget": {
1597 "name": "scheduler"
1598 },
1599 "link": 34
1600 }
1601 ],
1602 "outputs": [
1603 {
1604 "localized_name": "LATENT",
1605 "name": "LATENT",
1606 "type": "LATENT",
1607 "slot_index": 0,
1608 "links": [
1609 4
1610 ]
1611 }
1612 ],
1613 "properties": {
1614 "Node name for S&R": "KSampler"
1615 },
1616 "widgets_values": [
1617 0,
1618 "randomize",
1619 25,
1620 2.5,
1621 "er_sde",
1622 "simple",
1623 1
1624 ],
1625 "widgets_values_named": {
1626 "seed": 0,
1627 "control_after_generate": "randomize",
1628 "steps": 25,
1629 "cfg": 2.5,
1630 "sampler_name": "er_sde",
1631 "scheduler": "simple",
1632 "denoise": 1
1633 }
1634 },
1635 {
1636 "id": 3,
1637 "type": "VAELoader",
1638 "pos": [
1639 -150,
1640 910
1641 ],
1642 "size": [
1643 350,
1644 60
1645 ],
1646 "flags": [],
1647 "order": 3,
1648 "mode": 0,
1649 "inputs": [
1650 {
1651 "localized_name": "vae_name",
1652 "name": "vae_name",
1653 "type": "COMBO",
1654 "widget": {
1655 "name": "vae_name"
1656 },
1657 "link": 37
1658 }
1659 ],
1660 "outputs": [
1661 {
1662 "localized_name": "VAE",
1663 "name": "VAE",
1664 "type": "VAE",
1665 "slot_index": 0,
1666 "links": [
1667 5
1668 ]
1669 }
1670 ],
1671 "properties": {
1672 "Node name for S&R": "VAELoader",
1673 "models": [
1674 {
1675 "name": "flux2-vae_small.safetensors",
1676 "url": "https://huggingface.co/Comfy-Org/MOSS-Image/resolve/main/vae/flux2-vae_small.safetensors",
1677 "directory": "vae"
1678 }
1679 ]
1680 },
1681 "widgets_values": [
1682 "flux2-vae_small.safetensors"
1683 ],
1684 "widgets_values_named": {
1685 "vae_name": "flux2-vae_small.safetensors"
1686 },
1687 "color": "#323",
1688 "bgcolor": "#535"
1689 },
1690 {
1691 "id": 13,
1692 "type": "PreviewAny",
1693 "pos": [
1694 1270,
1695 -780
1696 ],
1697 "size": [
1698 350,
1699 600
1700 ],
1701 "flags": [],
1702 "order": 10,
1703 "mode": 0,
1704 "inputs": [
1705 {
1706 "localized_name": "source",
1707 "name": "source",
1708 "type": "*",
1709 "link": 21
1710 }
1711 ],
1712 "outputs": [
1713 {
1714 "localized_name": "STRING",
1715 "name": "STRING",
1716 "type": "STRING",
1717 "links": [
1718 20
1719 ]
1720 }
1721 ],
1722 "properties": {
1723 "Node name for S&R": "PreviewAny"
1724 },
1725 "widgets_values": [],
1726 "widgets_values_named": []
1727 },
1728 {
1729 "id": 16,
1730 "type": "ComfySwitchNode",
1731 "pos": [
1732 930,
1733 -780
1734 ],
1735 "size": [
1736 280,
1737 110
1738 ],
1739 "flags": [],
1740 "order": 12,
1741 "mode": 0,
1742 "inputs": [
1743 {
1744 "localized_name": "on_false",
1745 "name": "on_false",
1746 "shape": 7,
1747 "type": "STRING",
1748 "link": 15
1749 },
1750 {
1751 "localized_name": "on_true",
1752 "name": "on_true",
1753 "shape": 7,
1754 "type": "STRING",
1755 "link": 19
1756 },
1757 {
1758 "localized_name": "switch",
1759 "name": "switch",
1760 "type": "BOOLEAN",
1761 "widget": {
1762 "name": "switch"
1763 },
1764 "link": 26
1765 }
1766 ],
1767 "outputs": [
1768 {
1769 "localized_name": "output",
1770 "name": "output",
1771 "type": "STRING",
1772 "links": [
1773 21
1774 ]
1775 }
1776 ],
1777 "properties": {
1778 "Node name for S&R": "ComfySwitchNode"
1779 },
1780 "widgets_values": [
1781 true
1782 ],
1783 "widgets_values_named": {
1784 "switch": true
1785 }
1786 },
1787 {
1788 "id": 6,
1789 "type": "EmptyFlux2LatentImage",
1790 "pos": [
1791 -140,
1792 1140
1793 ],
1794 "size": [
1795 300,
1796 120
1797 ],
1798 "flags": [],
1799 "order": 6,
1800 "mode": 0,
1801 "inputs": [
1802 {
1803 "localized_name": "width",
1804 "name": "width",
1805 "type": "INT",
1806 "widget": {
1807 "name": "width"
1808 },
1809 "link": 27
1810 },
1811 {
1812 "localized_name": "height",
1813 "name": "height",
1814 "type": "INT",
1815 "widget": {
1816 "name": "height"
1817 },
1818 "link": 28
1819 }
1820 ],
1821 "outputs": [
1822 {
1823 "localized_name": "LATENT",
1824 "name": "LATENT",
1825 "type": "LATENT",
1826 "slot_index": 0,
1827 "links": [
1828 39
1829 ]
1830 }
1831 ],
1832 "properties": {
1833 "Node name for S&R": "EmptyFlux2LatentImage"
1834 },
1835 "widgets_values": [
1836 1024,
1837 1024,
1838 1
1839 ],
1840 "widgets_values_named": {
1841 "width": 1024,
1842 "height": 1024,
1843 "batch_size": 1
1844 },
1845 "color": "#323",
1846 "bgcolor": "#535"
1847 },
1848 {
1849 "id": 5,
1850 "type": "CLIPTextEncode",
1851 "pos": [
1852 380,
1853 660
1854 ],
1855 "size": [
1856 460,
1857 180
1858 ],
1859 "flags": [],
1860 "order": 5,
1861 "mode": 0,
1862 "inputs": [
1863 {
1864 "localized_name": "clip",
1865 "name": "clip",
1866 "type": "CLIP",
1867 "link": 3
1868 },
1869 {
1870 "localized_name": "text",
1871 "name": "text",
1872 "type": "STRING",
1873 "widget": {
1874 "name": "text"
1875 },
1876 "link": 43
1877 }
1878 ],
1879 "outputs": [
1880 {
1881 "localized_name": "CONDITIONING",
1882 "name": "CONDITIONING",
1883 "type": "CONDITIONING",
1884 "slot_index": 0,
1885 "links": [
1886 9
1887 ]
1888 }
1889 ],
1890 "title": "Negative Prompt (empty = reference default)",
1891 "properties": {
1892 "Node name for S&R": "CLIPTextEncode"
1893 },
1894 "widgets_values": [
1895 ""
1896 ],
1897 "widgets_values_named": {
1898 "text": ""
1899 },
1900 "color": "#223",
1901 "bgcolor": "#335"
1902 },
1903 {
1904 "id": 8,
1905 "type": "VAEDecode",
1906 "pos": [
1907 1270,
1908 50
1909 ],
1910 "size": [
1911 230,
1912 70
1913 ],
1914 "flags": [],
1915 "order": 8,
1916 "mode": 0,
1917 "inputs": [
1918 {
1919 "localized_name": "samples",
1920 "name": "samples",
1921 "type": "LATENT",
1922 "link": 4
1923 },
1924 {
1925 "localized_name": "vae",
1926 "name": "vae",
1927 "type": "VAE",
1928 "link": 5
1929 }
1930 ],
1931 "outputs": [
1932 {
1933 "localized_name": "IMAGE",
1934 "name": "IMAGE",
1935 "type": "IMAGE",
1936 "slot_index": 0,
1937 "links": [
1938 6
1939 ]
1940 }
1941 ],
1942 "properties": {
1943 "Node name for S&R": "VAEDecode"
1944 }
1945 },
1946 {
1947 "id": 15,
1948 "type": "SkipLayerGuidanceDiTSimple",
1949 "pos": [
1950 -160,
1951 230
1952 ],
1953 "size": [
1954 350,
1955 210
1956 ],
1957 "flags": [],
1958 "order": 11,
1959 "mode": 0,
1960 "showAdvanced": true,
1961 "inputs": [
1962 {
1963 "localized_name": "model",
1964 "name": "model",
1965 "type": "MODEL",
1966 "link": 1
1967 }
1968 ],
1969 "outputs": [
1970 {
1971 "localized_name": "MODEL",
1972 "name": "MODEL",
1973 "type": "MODEL",
1974 "links": [
1975 62
1976 ]
1977 }
1978 ],
1979 "properties": {
1980 "Node name for S&R": "SkipLayerGuidanceDiTSimple"
1981 },
1982 "widgets_values": [
1983 "",
1984 "22",
1985 0,
1986 0.5
1987 ],
1988 "widgets_values_named": {
1989 "double_layers": "",
1990 "single_layers": "22",
1991 "start_percent": 0,
1992 "end_percent": 0.5
1993 }
1994 },
1995 {
1996 "id": 32,
1997 "type": "ComfySwitchNode",
1998 "pos": [
1999 -150,
2000 500
2001 ],
2002 "size": [
2003 340,
2004 110
2005 ],
2006 "flags": [],
2007 "order": 14,
2008 "mode": 0,
2009 "inputs": [
2010 {
2011 "localized_name": "on_false",
2012 "name": "on_false",
2013 "shape": 7,
2014 "type": "MODEL",
2015 "link": 63
2016 },
2017 {
2018 "localized_name": "on_true",
2019 "name": "on_true",
2020 "shape": 7,
2021 "type": "MODEL",
2022 "link": 62
2023 },
2024 {
2025 "localized_name": "switch",
2026 "name": "switch",
2027 "type": "BOOLEAN",
2028 "widget": {
2029 "name": "switch"
2030 },
2031 "link": 64
2032 }
2033 ],
2034 "outputs": [
2035 {
2036 "localized_name": "output",
2037 "name": "output",
2038 "type": "MODEL",
2039 "links": [
2040 61
2041 ]
2042 }
2043 ],
2044 "properties": {
2045 "Node name for S&R": "ComfySwitchNode"
2046 },
2047 "widgets_values": [
2048 false
2049 ],
2050 "widgets_values_named": {
2051 "switch": false
2052 }
2053 }
2054 ],
2055 "groups": [
2056 {
2057 "id": 1,
2058 "title": "Models",
2059 "bounding": [
2060 -210,
2061 -10,
2062 480,
2063 1010
2064 ],
2065 "color": "#3f789e",
2066 "flags": []
2067 },
2068 {
2069 "id": 2,
2070 "title": "Prompt",
2071 "bounding": [
2072 300,
2073 -10,
2074 580,
2075 880
2076 ],
2077 "color": "#3f789e",
2078 "flags": []
2079 },
2080 {
2081 "id": 3,
2082 "title": "Image Size",
2083 "bounding": [
2084 -220,
2085 1030,
2086 490,
2087 290
2088 ],
2089 "color": "#3f789e",
2090 "flags": []
2091 },
2092 {
2093 "id": 4,
2094 "title": "Prompt Enhancer",
2095 "bounding": [
2096 -210,
2097 -880,
2098 1900,
2099 840
2100 ],
2101 "color": "#444",
2102 "flags": []
2103 }
2104 ],
2105 "links": [
2106 {
2107 "id": 2,
2108 "origin_id": 2,
2109 "origin_slot": 0,
2110 "target_id": 4,
2111 "target_slot": 0,
2112 "type": "CLIP"
2113 },
2114 {
2115 "id": 20,
2116 "origin_id": 13,
2117 "origin_slot": 0,
2118 "target_id": 4,
2119 "target_slot": 1,
2120 "type": "STRING"
2121 },
2122 {
2123 "id": 1,
2124 "origin_id": 1,
2125 "origin_slot": 0,
2126 "target_id": 15,
2127 "target_slot": 0,
2128 "type": "MODEL"
2129 },
2130 {
2131 "id": 8,
2132 "origin_id": 4,
2133 "origin_slot": 0,
2134 "target_id": 7,
2135 "target_slot": 1,
2136 "type": "CONDITIONING"
2137 },
2138 {
2139 "id": 9,
2140 "origin_id": 5,
2141 "origin_slot": 0,
2142 "target_id": 7,
2143 "target_slot": 2,
2144 "type": "CONDITIONING"
2145 },
2146 {
2147 "id": 21,
2148 "origin_id": 16,
2149 "origin_slot": 0,
2150 "target_id": 13,
2151 "target_slot": 0,
2152 "type": "STRING"
2153 },
2154 {
2155 "id": 15,
2156 "origin_id": 17,
2157 "origin_slot": 0,
2158 "target_id": 16,
2159 "target_slot": 0,
2160 "type": "STRING"
2161 },
2162 {
2163 "id": 19,
2164 "origin_id": 11,
2165 "origin_slot": 0,
2166 "target_id": 16,
2167 "target_slot": 1,
2168 "type": "STRING"
2169 },
2170 {
2171 "id": 3,
2172 "origin_id": 2,
2173 "origin_slot": 0,
2174 "target_id": 5,
2175 "target_slot": 0,
2176 "type": "CLIP"
2177 },
2178 {
2179 "id": 4,
2180 "origin_id": 7,
2181 "origin_slot": 0,
2182 "target_id": 8,
2183 "target_slot": 0,
2184 "type": "LATENT"
2185 },
2186 {
2187 "id": 5,
2188 "origin_id": 3,
2189 "origin_slot": 0,
2190 "target_id": 8,
2191 "target_slot": 1,
2192 "type": "VAE"
2193 },
2194 {
2195 "id": 6,
2196 "origin_id": 8,
2197 "origin_slot": 0,
2198 "target_id": -20,
2199 "target_slot": 0,
2200 "type": "IMAGE"
2201 },
2202 {
2203 "id": 39,
2204 "origin_id": 6,
2205 "origin_slot": 0,
2206 "target_id": 7,
2207 "target_slot": 3,
2208 "type": "LATENT"
2209 },
2210 {
2211 "id": 61,
2212 "origin_id": 32,
2213 "origin_slot": 0,
2214 "target_id": 7,
2215 "target_slot": 0,
2216 "type": "MODEL"
2217 },
2218 {
2219 "id": 62,
2220 "origin_id": 15,
2221 "origin_slot": 0,
2222 "target_id": 32,
2223 "target_slot": 1,
2224 "type": "MODEL"
2225 },
2226 {
2227 "id": 63,
2228 "origin_id": 1,
2229 "origin_slot": 0,
2230 "target_id": 32,
2231 "target_slot": 0,
2232 "type": "MODEL"
2233 },
2234 {
2235 "id": 25,
2236 "origin_id": -10,
2237 "origin_slot": 0,
2238 "target_id": 17,
2239 "target_slot": 0,
2240 "type": "STRING"
2241 },
2242 {
2243 "id": 26,
2244 "origin_id": -10,
2245 "origin_slot": 1,
2246 "target_id": 16,
2247 "target_slot": 2,
2248 "type": "BOOLEAN"
2249 },
2250 {
2251 "id": 43,
2252 "origin_id": -10,
2253 "origin_slot": 2,
2254 "target_id": 5,
2255 "target_slot": 1,
2256 "type": "STRING"
2257 },
2258 {
2259 "id": 27,
2260 "origin_id": -10,
2261 "origin_slot": 3,
2262 "target_id": 6,
2263 "target_slot": 0,
2264 "type": "INT"
2265 },
2266 {
2267 "id": 28,
2268 "origin_id": -10,
2269 "origin_slot": 4,
2270 "target_id": 6,
2271 "target_slot": 1,
2272 "type": "INT"
2273 },
2274 {
2275 "id": 30,
2276 "origin_id": -10,
2277 "origin_slot": 5,
2278 "target_id": 7,
2279 "target_slot": 4,
2280 "type": "INT"
2281 },
2282 {
2283 "id": 42,
2284 "origin_id": -10,
2285 "origin_slot": 6,
2286 "target_id": 7,
2287 "target_slot": 5,
2288 "type": "INT"
2289 },
2290 {
2291 "id": 44,
2292 "origin_id": -10,
2293 "origin_slot": 7,
2294 "target_id": 7,
2295 "target_slot": 6,
2296 "type": "FLOAT"
2297 },
2298 {
2299 "id": 64,
2300 "origin_id": -10,
2301 "origin_slot": 8,
2302 "target_id": 32,
2303 "target_slot": 2,
2304 "type": "BOOLEAN"
2305 },
2306 {
2307 "id": 33,
2308 "origin_id": -10,
2309 "origin_slot": 9,
2310 "target_id": 7,
2311 "target_slot": 7,
2312 "type": "COMBO"
2313 },
2314 {
2315 "id": 34,
2316 "origin_id": -10,
2317 "origin_slot": 10,
2318 "target_id": 7,
2319 "target_slot": 8,
2320 "type": "COMBO"
2321 },
2322 {
2323 "id": 35,
2324 "origin_id": -10,
2325 "origin_slot": 11,
2326 "target_id": 1,
2327 "target_slot": 0,
2328 "type": "COMBO"
2329 },
2330 {
2331 "id": 36,
2332 "origin_id": -10,
2333 "origin_slot": 12,
2334 "target_id": 2,
2335 "target_slot": 0,
2336 "type": "COMBO"
2337 },
2338 {
2339 "id": 37,
2340 "origin_id": -10,
2341 "origin_slot": 13,
2342 "target_id": 3,
2343 "target_slot": 0,
2344 "type": "COMBO"
2345 },
2346 {
2347 "id": 10,
2348 "origin_id": 2,
2349 "origin_slot": 0,
2350 "target_id": 11,
2351 "target_slot": 0,
2352 "type": "CLIP"
2353 },
2354 {
2355 "id": 68,
2356 "origin_id": -10,
2357 "origin_slot": 14,
2358 "target_id": 11,
2359 "target_slot": 2,
2360 "type": "IMAGE"
2361 },
2362 {
2363 "id": 13,
2364 "origin_id": 14,
2365 "origin_slot": 0,
2366 "target_id": 11,
2367 "target_slot": 4,
2368 "type": "STRING"
2369 },
2370 {
2371 "id": 17,
2372 "origin_id": 17,
2373 "origin_slot": 0,
2374 "target_id": 11,
2375 "target_slot": 5,
2376 "type": "STRING"
2377 }
2378 ],
2379 "extra": []
2380 }
2381 ]
2382 },
2383 "config": [],
2384 "extra": {
2385 "ds": {
2386 "scale": 0.5093804840802216,
2387 "offset": [
2388 1029.5010484091372,
2389 698.715983204005
2390 ]
2391 },
2392 "frontendVersion": "1.55.18"
2393 },
2394 "version": 0.4
2395}