工作流 /
图像 /
MOSS-Image:文本生图

MOSS-Image:文本生图
MOSS-Image: Text to Image
使用 MOSS-Image 开放权重模型,根据文本提示生成图像。该模型读取完整场景描述并输出一张成品图。提示词增强器会先将简短请求扩展为详细描述,因此一行提示即可。适用于编辑摄影、产品图和概念艺术。
图像
6 个节点 5,456 次使用 ComfyUI ≥ 0.42.0 ComfyUI 74 KB
需要的权重
这个工作流引用了 3 个权重文件,其中 3 个能在本站模型库里找到。
flux2-vae_small.safetensors
在模型库查看
moss_image_sft_int8_convrot.safetensors
在模型库查看
qwen3.5_9b_w4a8_gptq.safetensors
在模型库查看
节点构成
MarkdownNote
× 3
SaveImage
× 1
3301b744-2960-415a-83b0-fe8a89d99fdb
× 1
ResolutionSelector
× 1
官方标注的模型
MOSS-Image
工作流 JSON
和上面「下载工作流 JSON」是同一份文件。
1{
2 "id": "e8f30439-267f-45de-b260-db0d114b2c85",
3 "revision": 0,
4 "last_node_id": 25,
5 "last_link_id": 55,
6 "nodes": [
7 {
8 "id": 9,
9 "type": "SaveImage",
10 "pos": [
11 840,
12 0
13 ],
14 "size": [
15 570,
16 700
17 ],
18 "flags": [],
19 "order": 5,
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_t2i"
40 ],
41 "widgets_values_named": {
42 "filename_prefix": "moss_image_t2i"
43 }
44 },
45 {
46 "id": 18,
47 "type": "3301b744-2960-415a-83b0-fe8a89d99fdb",
48 "pos": [
49 360,
50 0
51 ],
52 "size": [
53 430,
54 680
55 ],
56 "flags": [],
57 "order": 4,
58 "mode": 0,
59 "inputs": [
60 {
61 "label": "positive_prompt",
62 "name": "value",
63 "type": "STRING",
64 "widget": {
65 "name": "value"
66 },
67 "link": null
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": "prompt_enhancer_seed",
80 "name": "sampling_mode.seed",
81 "type": "INT",
82 "widget": {
83 "name": "sampling_mode.seed"
84 },
85 "link": null
86 },
87 {
88 "label": "negative_prompt",
89 "name": "text",
90 "type": "STRING",
91 "widget": {
92 "name": "text"
93 },
94 "link": null
95 },
96 {
97 "name": "width",
98 "type": "INT",
99 "widget": {
100 "name": "width"
101 },
102 "link": 40
103 },
104 {
105 "name": "height",
106 "type": "INT",
107 "widget": {
108 "name": "height"
109 },
110 "link": 41
111 },
112 {
113 "label": "SLG",
114 "name": "switch_1",
115 "type": "BOOLEAN",
116 "widget": {
117 "name": "switch_1"
118 },
119 "link": null
120 },
121 {
122 "label": "unet_model",
123 "name": "unet_name",
124 "type": "COMBO",
125 "widget": {
126 "name": "unet_name"
127 },
128 "link": null
129 },
130 {
131 "label": "clip_model",
132 "name": "clip_name",
133 "type": "COMBO",
134 "widget": {
135 "name": "clip_name"
136 },
137 "link": null
138 },
139 {
140 "label": "vae_model",
141 "name": "vae_name",
142 "type": "COMBO",
143 "widget": {
144 "name": "vae_name"
145 },
146 "link": null
147 },
148 {
149 "label": "ref_image (for llm)",
150 "name": "image",
151 "shape": 7,
152 "type": "IMAGE",
153 "link": null
154 }
155 ],
156 "outputs": [
157 {
158 "name": "IMAGE",
159 "type": "IMAGE",
160 "links": [
161 22
162 ]
163 }
164 ],
165 "properties": {
166 "previewExposures": []
167 },
168 "widgets_values": [
169 "Cinematic night street photograph: a model in an exaggerated balloon-sleeve white wool coat walking toward camera under a huge illuminated theatre marquee, the marquee bulbs spelling \"MOSS\" in tall capital letters, wet asphalt with long reflections, warm tungsten glow against cold blue night, 35mm film grain, low angle",
170 true,
171 0,
172 "nsfw, worst quality, bad anatomy, watermark, jpeg artifact",
173 1024,
174 1024,
175 438829726369282,
176 25,
177 2.5,
178 "er_sde",
179 "simple",
180 false,
181 "moss_image_sft_int8_convrot.safetensors",
182 "qwen3.5_9b_w4a8_gptq.safetensors",
183 "flux2-vae_small.safetensors"
184 ],
185 "widgets_values_named": {
186 "value": "Cinematic night street photograph: a model in an exaggerated balloon-sleeve white wool coat walking toward camera under a huge illuminated theatre marquee, the marquee bulbs spelling \"MOSS\" in tall capital letters, wet asphalt with long reflections, warm tungsten glow against cold blue night, 35mm film grain, low angle",
187 "switch": true,
188 "sampling_mode.seed": 0,
189 "text": "nsfw, worst quality, bad anatomy, watermark, jpeg artifact",
190 "width": 1024,
191 "height": 1024,
192 "seed": 438829726369282,
193 "steps": 25,
194 "cfg": 2.5,
195 "sampler_name": "er_sde",
196 "scheduler": "simple",
197 "switch_1": false,
198 "unet_name": "moss_image_sft_int8_convrot.safetensors",
199 "clip_name": "qwen3.5_9b_w4a8_gptq.safetensors",
200 "vae_name": "flux2-vae_small.safetensors"
201 }
202 },
203 {
204 "id": 19,
205 "type": "ResolutionSelector",
206 "pos": [
207 10,
208 350
209 ],
210 "size": [
211 280,
212 190
213 ],
214 "flags": [],
215 "order": 0,
216 "mode": 0,
217 "showAdvanced": true,
218 "inputs": [],
219 "outputs": [
220 {
221 "name": "width",
222 "type": "INT",
223 "links": [
224 40
225 ]
226 },
227 {
228 "name": "height",
229 "type": "INT",
230 "links": [
231 41
232 ]
233 }
234 ],
235 "properties": {
236 "Node name for S&R": "ResolutionSelector"
237 },
238 "widgets_values": [
239 "1:1 (Square)",
240 1,
241 16
242 ],
243 "widgets_values_named": {
244 "aspect_ratio": "1:1 (Square)",
245 "megapixels": 1,
246 "multiple": 16
247 }
248 },
249 {
250 "id": 21,
251 "type": "MarkdownNote",
252 "pos": [
253 -1210,
254 10
255 ],
256 "size": [
257 560,
258 1000
259 ],
260 "flags": [],
261 "order": 1,
262 "mode": 0,
263 "inputs": [],
264 "outputs": [],
265 "properties": [],
266 "widgets_values": [
267 "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)\n- [moss_image_sft_bf16.safetensors](https://huggingface.co/Comfy-Org/MOSS-Image/resolve/main/diffusion_models/moss_image_sft_bf16.safetensors)\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)\n\n**Checkpoint variants**: `moss_image_sft_*` is the instruction-tuned checkpoint used here; `moss_image_base_*` runs in the same graph.\n\n**vae**\n\n- [flux2-vae_small.safetensors](https://huggingface.co/Comfy-Org/MOSS-Image/resolve/main/vae/flux2-vae_small.safetensors)\n\n\n## Model Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 diffusion_models/\n│ │ ├── moss_image_sft_int8_convrot.safetensors\n│ │ └── moss_image_sft_bf16.safetensors\n│ ├── 📂 text_encoders/\n│ │ └── qwen3.5_9b_w4a8_gptq.safetensors\n│ └── 📂 vae/\n│ └── flux2-vae_small.safetensors\n```\n\n## Prompt upsampler\n\nThe `enable_prompt_upsampler` switch on the **Text to Image (MOSS-Image)** node is **true**, so a short prompt is rewritten into one full\nscene caption before it reaches the model. The upsampler runs on MOSS-Image's own text encoder\n(`qwen3.5_9b_w4a8_gptq.safetensors`, loaded with `type = moss_image`), the same file the model already needs — no second\ntext encoder to download. Set the switch to `false` to send the raw prompt; either way the caption actually used is shown in the\n`PreviewAny` node inside the subgraph.\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.\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"
268 ],
269 "widgets_values_named": {
270 "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)\n- [moss_image_sft_bf16.safetensors](https://huggingface.co/Comfy-Org/MOSS-Image/resolve/main/diffusion_models/moss_image_sft_bf16.safetensors)\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)\n\n**Checkpoint variants**: `moss_image_sft_*` is the instruction-tuned checkpoint used here; `moss_image_base_*` runs in the same graph.\n\n**vae**\n\n- [flux2-vae_small.safetensors](https://huggingface.co/Comfy-Org/MOSS-Image/resolve/main/vae/flux2-vae_small.safetensors)\n\n\n## Model Storage Location\n\n```\n📂 ComfyUI/\n├── 📂 models/\n│ ├── 📂 diffusion_models/\n│ │ ├── moss_image_sft_int8_convrot.safetensors\n│ │ └── moss_image_sft_bf16.safetensors\n│ ├── 📂 text_encoders/\n│ │ └── qwen3.5_9b_w4a8_gptq.safetensors\n│ └── 📂 vae/\n│ └── flux2-vae_small.safetensors\n```\n\n## Prompt upsampler\n\nThe `enable_prompt_upsampler` switch on the **Text to Image (MOSS-Image)** node is **true**, so a short prompt is rewritten into one full\nscene caption before it reaches the model. The upsampler runs on MOSS-Image's own text encoder\n(`qwen3.5_9b_w4a8_gptq.safetensors`, loaded with `type = moss_image`), the same file the model already needs — no second\ntext encoder to download. Set the switch to `false` to send the raw prompt; either way the caption actually used is shown in the\n`PreviewAny` node inside the subgraph.\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.\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"
271 },
272 "color": "#222",
273 "bgcolor": "#000"
274 },
275 {
276 "id": 23,
277 "type": "MarkdownNote",
278 "pos": [
279 -600,
280 10
281 ],
282 "size": [
283 520,
284 1200
285 ],
286 "flags": [],
287 "order": 2,
288 "mode": 0,
289 "inputs": [],
290 "outputs": [],
291 "properties": [],
292 "widgets_values": [
293 "## 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"
294 ],
295 "widgets_values_named": {
296 "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"
297 },
298 "color": "#222",
299 "bgcolor": "#000"
300 },
301 {
302 "id": 25,
303 "type": "MarkdownNote",
304 "pos": [
305 80,
306 10
307 ],
308 "size": [
309 210,
310 90
311 ],
312 "flags": [],
313 "order": 3,
314 "mode": 0,
315 "inputs": [],
316 "outputs": [],
317 "title": "Note: ref_image",
318 "properties": [],
319 "widgets_values": [
320 "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"
321 ],
322 "widgets_values_named": {
323 "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"
324 },
325 "color": "#222",
326 "bgcolor": "#000"
327 }
328 ],
329 "links": [
330 [
331 22,
332 18,
333 0,
334 9,
335 0,
336 "IMAGE"
337 ],
338 [
339 40,
340 19,
341 0,
342 18,
343 4,
344 "INT"
345 ],
346 [
347 41,
348 19,
349 1,
350 18,
351 5,
352 "INT"
353 ]
354 ],
355 "groups": [],
356 "definitions": {
357 "subgraphs": [
358 {
359 "id": "3301b744-2960-415a-83b0-fe8a89d99fdb",
360 "version": 1,
361 "state": {
362 "lastGroupId": 5,
363 "lastNodeId": 25,
364 "lastLinkId": 55,
365 "lastRerouteId": 0
366 },
367 "revision": 0,
368 "config": [],
369 "name": "Text to Image (MOSS-Image)",
370 "inputNode": {
371 "id": -10,
372 "bounding": [
373 -1060,
374 -160,
375 191.44921875,
376 368
377 ]
378 },
379 "outputNode": {
380 "id": -20,
381 "bounding": [
382 1630,
383 -10,
384 128,
385 68
386 ]
387 },
388 "inputs": [
389 {
390 "id": "35437e31-565b-4d42-bc06-d95c5929e7d8",
391 "name": "value",
392 "type": "STRING",
393 "linkIds": [
394 25
395 ],
396 "label": "positive_prompt",
397 "pos": [
398 -892.55078125,
399 -136
400 ]
401 },
402 {
403 "id": "853a4192-ebce-42de-bdff-77c36b59cc1a",
404 "name": "switch",
405 "type": "BOOLEAN",
406 "linkIds": [
407 26
408 ],
409 "label": "enable_prompt_enhancer",
410 "pos": [
411 -892.55078125,
412 -116
413 ]
414 },
415 {
416 "id": "cdc1cc70-bfa9-4ec2-84d7-a99f03c6ec6e",
417 "name": "sampling_mode.seed",
418 "type": "INT",
419 "linkIds": [
420 55
421 ],
422 "label": "prompt_enhancer_seed",
423 "pos": [
424 -892.55078125,
425 -96
426 ]
427 },
428 {
429 "id": "c11f1876-7b42-4679-a736-8deaa8f21fd7",
430 "name": "text",
431 "type": "STRING",
432 "linkIds": [
433 43
434 ],
435 "label": "negative_prompt",
436 "pos": [
437 -892.55078125,
438 -76
439 ]
440 },
441 {
442 "id": "1514590b-7a78-450b-82b4-cfbe7820a9db",
443 "name": "width",
444 "type": "INT",
445 "linkIds": [
446 27
447 ],
448 "pos": [
449 -892.55078125,
450 -56
451 ]
452 },
453 {
454 "id": "f2e18bfe-65b0-4d24-9c78-bec0b9573e97",
455 "name": "height",
456 "type": "INT",
457 "linkIds": [
458 28
459 ],
460 "pos": [
461 -892.55078125,
462 -36
463 ]
464 },
465 {
466 "id": "32c26da2-7e60-44bf-851a-72690937b4b4",
467 "name": "seed",
468 "type": "INT",
469 "linkIds": [
470 30
471 ],
472 "pos": [
473 -892.55078125,
474 -16
475 ]
476 },
477 {
478 "id": "dae5d571-ced0-46d6-8a0a-5a71b8ca945a",
479 "name": "steps",
480 "type": "INT",
481 "linkIds": [
482 42
483 ],
484 "pos": [
485 -892.55078125,
486 4
487 ]
488 },
489 {
490 "id": "6c064d6f-9925-4808-83cc-7e3409190ca7",
491 "name": "cfg",
492 "type": "FLOAT",
493 "linkIds": [
494 44
495 ],
496 "pos": [
497 -892.55078125,
498 24
499 ]
500 },
501 {
502 "id": "46e71c72-9f95-4c32-89d2-2dab4b63b284",
503 "name": "sampler_name",
504 "type": "COMBO",
505 "linkIds": [
506 33
507 ],
508 "pos": [
509 -892.55078125,
510 44
511 ]
512 },
513 {
514 "id": "8ba10fc2-8e73-4ece-8f77-27515bbe2698",
515 "name": "scheduler",
516 "type": "COMBO",
517 "linkIds": [
518 34
519 ],
520 "pos": [
521 -892.55078125,
522 64
523 ]
524 },
525 {
526 "id": "71ffd624-a04e-403f-ae06-300f5896f34c",
527 "name": "switch_1",
528 "type": "BOOLEAN",
529 "linkIds": [
530 52
531 ],
532 "label": "SLG",
533 "pos": [
534 -892.55078125,
535 84
536 ]
537 },
538 {
539 "id": "bc8e2627-1b51-4333-9d88-0cb6307f7545",
540 "name": "unet_name",
541 "type": "COMBO",
542 "linkIds": [
543 35
544 ],
545 "label": "unet_model",
546 "pos": [
547 -892.55078125,
548 104
549 ]
550 },
551 {
552 "id": "fe422dee-acbe-4c34-898b-62bb878ddb83",
553 "name": "clip_name",
554 "type": "COMBO",
555 "linkIds": [
556 36
557 ],
558 "label": "clip_model",
559 "pos": [
560 -892.55078125,
561 124
562 ]
563 },
564 {
565 "id": "29a73fdf-7b55-4612-8966-bba0b4cab854",
566 "name": "vae_name",
567 "type": "COMBO",
568 "linkIds": [
569 37
570 ],
571 "label": "vae_model",
572 "pos": [
573 -892.55078125,
574 144
575 ]
576 },
577 {
578 "id": "c8c5a578-f3c4-489e-8fdf-f1cde45fa7e7",
579 "name": "image",
580 "type": "IMAGE",
581 "linkIds": [
582 53
583 ],
584 "label": "ref_image (for llm)",
585 "pos": [
586 -892.55078125,
587 164
588 ]
589 }
590 ],
591 "outputs": [
592 {
593 "id": "fa9fefe4-677e-4f8b-aba5-35459b097c37",
594 "name": "IMAGE",
595 "type": "IMAGE",
596 "linkIds": [
597 6
598 ],
599 "localized_name": "IMAGE",
600 "pos": [
601 1654,
602 14
603 ]
604 }
605 ],
606 "widgets": [],
607 "nodes": [
608 {
609 "id": 17,
610 "type": "PrimitiveStringMultiline",
611 "pos": [
612 -140,
613 -780
614 ],
615 "size": [
616 490,
617 280
618 ],
619 "flags": [],
620 "order": 13,
621 "mode": 0,
622 "inputs": [
623 {
624 "localized_name": "value",
625 "name": "value",
626 "type": "STRING",
627 "widget": {
628 "name": "value"
629 },
630 "link": 25
631 }
632 ],
633 "outputs": [
634 {
635 "localized_name": "STRING",
636 "name": "STRING",
637 "type": "STRING",
638 "links": [
639 15,
640 17
641 ]
642 }
643 ],
644 "title": "Text (User Prompt)",
645 "properties": {
646 "Node name for S&R": "PrimitiveStringMultiline"
647 },
648 "widgets_values": [
649 "Cinematic night street photograph: a model in an exaggerated balloon-sleeve white wool coat walking toward camera under a huge illuminated theatre marquee, the marquee bulbs spelling \"MOSS\" in tall capital letters, wet asphalt with long reflections, warm tungsten glow against cold blue night, anamorphic flare, 35mm film grain, low angle"
650 ],
651 "widgets_values_named": {
652 "value": "Cinematic night street photograph: a model in an exaggerated balloon-sleeve white wool coat walking toward camera under a huge illuminated theatre marquee, the marquee bulbs spelling \"MOSS\" in tall capital letters, wet asphalt with long reflections, warm tungsten glow against cold blue night, anamorphic flare, 35mm film grain, low angle"
653 }
654 },
655 {
656 "id": 14,
657 "type": "PrimitiveStringMultiline",
658 "pos": [
659 -140,
660 -430
661 ],
662 "size": [
663 470,
664 270
665 ],
666 "flags": {
667 "collapsed": false
668 },
669 "order": 0,
670 "mode": 0,
671 "inputs": [],
672 "outputs": [
673 {
674 "localized_name": "STRING",
675 "name": "STRING",
676 "type": "STRING",
677 "links": [
678 13
679 ]
680 }
681 ],
682 "title": "Text (System prompt)",
683 "properties": {
684 "Node name for S&R": "PrimitiveStringMultiline"
685 },
686 "widgets_values": [
687 "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."
688 ],
689 "widgets_values_named": {
690 "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."
691 }
692 },
693 {
694 "id": 11,
695 "type": "TextGenerate",
696 "pos": [
697 460,
698 -780
699 ],
700 "size": [
701 400,
702 550
703 ],
704 "flags": [],
705 "order": 9,
706 "mode": 0,
707 "inputs": [
708 {
709 "localized_name": "clip",
710 "name": "clip",
711 "type": "CLIP",
712 "link": 48
713 },
714 {
715 "localized_name": "image",
716 "name": "image",
717 "shape": 7,
718 "type": "IMAGE",
719 "link": 53
720 },
721 {
722 "localized_name": "video",
723 "name": "video",
724 "shape": 7,
725 "type": "IMAGE",
726 "link": null
727 },
728 {
729 "localized_name": "audio",
730 "name": "audio",
731 "shape": 7,
732 "type": "AUDIO",
733 "link": null
734 },
735 {
736 "localized_name": "system_prompt",
737 "name": "system_prompt",
738 "shape": 7,
739 "type": "STRING",
740 "link": 13
741 },
742 {
743 "localized_name": "prompt",
744 "name": "prompt",
745 "type": "STRING",
746 "widget": {
747 "name": "prompt"
748 },
749 "link": 17
750 },
751 {
752 "localized_name": "seed",
753 "name": "sampling_mode.seed",
754 "type": "INT",
755 "widget": {
756 "name": "sampling_mode.seed"
757 },
758 "link": 55
759 }
760 ],
761 "outputs": [
762 {
763 "localized_name": "generated_text",
764 "name": "generated_text",
765 "type": "STRING",
766 "links": [
767 19
768 ]
769 },
770 {
771 "localized_name": "thinking",
772 "name": "thinking",
773 "type": "STRING",
774 "links": null
775 }
776 ],
777 "properties": {
778 "Node name for S&R": "TextGenerate"
779 },
780 "widgets_values": [
781 "",
782 4096,
783 "on",
784 0.7,
785 64,
786 0.95,
787 0.05,
788 1,
789 0,
790 0,
791 false,
792 true,
793 "auto"
794 ],
795 "widgets_values_named": {
796 "prompt": "",
797 "max_length": 4096,
798 "sampling_mode": "on",
799 "sampling_mode.temperature": 0.7,
800 "sampling_mode.top_k": 64,
801 "sampling_mode.top_p": 0.95,
802 "sampling_mode.min_p": 0.05,
803 "sampling_mode.repetition_penalty": 1,
804 "sampling_mode.seed": 0,
805 "sampling_mode.presence_penalty": 0,
806 "thinking": false,
807 "use_default_template": true,
808 "mtp": "auto"
809 }
810 },
811 {
812 "id": 1,
813 "type": "UNETLoader",
814 "pos": [
815 -150,
816 10
817 ],
818 "size": [
819 350,
820 90
821 ],
822 "flags": [],
823 "order": 1,
824 "mode": 0,
825 "inputs": [
826 {
827 "localized_name": "unet_name",
828 "name": "unet_name",
829 "type": "COMBO",
830 "widget": {
831 "name": "unet_name"
832 },
833 "link": 35
834 }
835 ],
836 "outputs": [
837 {
838 "localized_name": "MODEL",
839 "name": "MODEL",
840 "type": "MODEL",
841 "slot_index": 0,
842 "links": [
843 1,
844 51
845 ]
846 }
847 ],
848 "properties": {
849 "Node name for S&R": "UNETLoader",
850 "models": [
851 {
852 "name": "moss_image_sft_int8_convrot.safetensors",
853 "url": "https://huggingface.co/Comfy-Org/MOSS-Image/resolve/main/diffusion_models/moss_image_sft_int8_convrot.safetensors",
854 "directory": "diffusion_models"
855 }
856 ]
857 },
858 "widgets_values": [
859 "moss_image_sft_int8_convrot.safetensors",
860 "default"
861 ],
862 "widgets_values_named": {
863 "unet_name": "moss_image_sft_int8_convrot.safetensors",
864 "weight_dtype": "default"
865 },
866 "color": "#223",
867 "bgcolor": "#335"
868 },
869 {
870 "id": 4,
871 "type": "CLIPTextEncode",
872 "pos": [
873 370,
874 30
875 ],
876 "size": [
877 450,
878 520
879 ],
880 "flags": [],
881 "order": 4,
882 "mode": 0,
883 "inputs": [
884 {
885 "localized_name": "clip",
886 "name": "clip",
887 "type": "CLIP",
888 "link": 2
889 },
890 {
891 "localized_name": "text",
892 "name": "text",
893 "type": "STRING",
894 "widget": {
895 "name": "text"
896 },
897 "link": 20
898 }
899 ],
900 "outputs": [
901 {
902 "localized_name": "CONDITIONING",
903 "name": "CONDITIONING",
904 "type": "CONDITIONING",
905 "slot_index": 0,
906 "links": [
907 8
908 ]
909 }
910 ],
911 "title": "Positive Prompt",
912 "properties": {
913 "Node name for S&R": "CLIPTextEncode"
914 },
915 "widgets_values": [
916 "Cinematic night street photograph: a model in an exaggerated balloon-sleeve white wool coat walking toward camera under a huge illuminated theatre marquee, the marquee bulbs spelling \"MOSS\" in tall capital letters, wet asphalt with long reflections, warm tungsten glow against cold blue night, anamorphic flare, 35mm film grain, low angle"
917 ],
918 "widgets_values_named": {
919 "text": "Cinematic night street photograph: a model in an exaggerated balloon-sleeve white wool coat walking toward camera under a huge illuminated theatre marquee, the marquee bulbs spelling \"MOSS\" in tall capital letters, wet asphalt with long reflections, warm tungsten glow against cold blue night, anamorphic flare, 35mm film grain, low angle"
920 },
921 "color": "#232",
922 "bgcolor": "#353"
923 },
924 {
925 "id": 2,
926 "type": "CLIPLoader",
927 "pos": [
928 -150,
929 550
930 ],
931 "size": [
932 350,
933 140
934 ],
935 "flags": [],
936 "order": 2,
937 "mode": 0,
938 "showAdvanced": false,
939 "inputs": [
940 {
941 "localized_name": "clip_name",
942 "name": "clip_name",
943 "type": "COMBO",
944 "widget": {
945 "name": "clip_name"
946 },
947 "link": 36
948 }
949 ],
950 "outputs": [
951 {
952 "localized_name": "CLIP",
953 "name": "CLIP",
954 "type": "CLIP",
955 "slot_index": 0,
956 "links": [
957 2,
958 3,
959 48
960 ]
961 }
962 ],
963 "properties": {
964 "Node name for S&R": "CLIPLoader",
965 "models": [
966 {
967 "name": "qwen3.5_9b_w4a8_gptq.safetensors",
968 "url": "https://huggingface.co/Comfy-Org/MOSS-Image/resolve/main/text_encoders/qwen3.5_9b_w4a8_gptq.safetensors",
969 "directory": "text_encoders"
970 }
971 ]
972 },
973 "widgets_values": [
974 "qwen3.5_9b_w4a8_gptq.safetensors",
975 "moss_image",
976 "default"
977 ],
978 "widgets_values_named": {
979 "clip_name": "qwen3.5_9b_w4a8_gptq.safetensors",
980 "type": "moss_image",
981 "device": "default"
982 },
983 "color": "#432",
984 "bgcolor": "#653"
985 },
986 {
987 "id": 7,
988 "type": "KSampler",
989 "pos": [
990 930,
991 0
992 ],
993 "size": [
994 290,
995 290
996 ],
997 "flags": [],
998 "order": 7,
999 "mode": 0,
1000 "inputs": [
1001 {
1002 "localized_name": "model",
1003 "name": "model",
1004 "type": "MODEL",
1005 "link": 49
1006 },
1007 {
1008 "localized_name": "positive",
1009 "name": "positive",
1010 "type": "CONDITIONING",
1011 "link": 8
1012 },
1013 {
1014 "localized_name": "negative",
1015 "name": "negative",
1016 "type": "CONDITIONING",
1017 "link": 9
1018 },
1019 {
1020 "localized_name": "latent_image",
1021 "name": "latent_image",
1022 "type": "LATENT",
1023 "link": 39
1024 },
1025 {
1026 "localized_name": "seed",
1027 "name": "seed",
1028 "type": "INT",
1029 "widget": {
1030 "name": "seed"
1031 },
1032 "link": 30
1033 },
1034 {
1035 "localized_name": "steps",
1036 "name": "steps",
1037 "type": "INT",
1038 "widget": {
1039 "name": "steps"
1040 },
1041 "link": 42
1042 },
1043 {
1044 "localized_name": "cfg",
1045 "name": "cfg",
1046 "type": "FLOAT",
1047 "widget": {
1048 "name": "cfg"
1049 },
1050 "link": 44
1051 },
1052 {
1053 "localized_name": "sampler_name",
1054 "name": "sampler_name",
1055 "type": "COMBO",
1056 "widget": {
1057 "name": "sampler_name"
1058 },
1059 "link": 33
1060 },
1061 {
1062 "localized_name": "scheduler",
1063 "name": "scheduler",
1064 "type": "COMBO",
1065 "widget": {
1066 "name": "scheduler"
1067 },
1068 "link": 34
1069 }
1070 ],
1071 "outputs": [
1072 {
1073 "localized_name": "LATENT",
1074 "name": "LATENT",
1075 "type": "LATENT",
1076 "slot_index": 0,
1077 "links": [
1078 4
1079 ]
1080 }
1081 ],
1082 "properties": {
1083 "Node name for S&R": "KSampler"
1084 },
1085 "widgets_values": [
1086 0,
1087 "randomize",
1088 25,
1089 2.5,
1090 "er_sde",
1091 "simple",
1092 1
1093 ],
1094 "widgets_values_named": {
1095 "seed": 0,
1096 "control_after_generate": "randomize",
1097 "steps": 25,
1098 "cfg": 2.5,
1099 "sampler_name": "er_sde",
1100 "scheduler": "simple",
1101 "denoise": 1
1102 }
1103 },
1104 {
1105 "id": 3,
1106 "type": "VAELoader",
1107 "pos": [
1108 -150,
1109 740
1110 ],
1111 "size": [
1112 350,
1113 60
1114 ],
1115 "flags": [],
1116 "order": 3,
1117 "mode": 0,
1118 "inputs": [
1119 {
1120 "localized_name": "vae_name",
1121 "name": "vae_name",
1122 "type": "COMBO",
1123 "widget": {
1124 "name": "vae_name"
1125 },
1126 "link": 37
1127 }
1128 ],
1129 "outputs": [
1130 {
1131 "localized_name": "VAE",
1132 "name": "VAE",
1133 "type": "VAE",
1134 "slot_index": 0,
1135 "links": [
1136 5
1137 ]
1138 }
1139 ],
1140 "properties": {
1141 "Node name for S&R": "VAELoader",
1142 "models": [
1143 {
1144 "name": "flux2-vae_small.safetensors",
1145 "url": "https://huggingface.co/Comfy-Org/MOSS-Image/resolve/main/vae/flux2-vae_small.safetensors",
1146 "directory": "vae"
1147 }
1148 ]
1149 },
1150 "widgets_values": [
1151 "flux2-vae_small.safetensors"
1152 ],
1153 "widgets_values_named": {
1154 "vae_name": "flux2-vae_small.safetensors"
1155 },
1156 "color": "#323",
1157 "bgcolor": "#535"
1158 },
1159 {
1160 "id": 13,
1161 "type": "PreviewAny",
1162 "pos": [
1163 1260,
1164 -780
1165 ],
1166 "size": [
1167 350,
1168 600
1169 ],
1170 "flags": [],
1171 "order": 10,
1172 "mode": 0,
1173 "inputs": [
1174 {
1175 "localized_name": "source",
1176 "name": "source",
1177 "type": "*",
1178 "link": 21
1179 }
1180 ],
1181 "outputs": [
1182 {
1183 "localized_name": "STRING",
1184 "name": "STRING",
1185 "type": "STRING",
1186 "links": [
1187 20
1188 ]
1189 }
1190 ],
1191 "title": "Preview as Text (final prompt)",
1192 "properties": {
1193 "Node name for S&R": "PreviewAny"
1194 },
1195 "widgets_values": [],
1196 "widgets_values_named": []
1197 },
1198 {
1199 "id": 16,
1200 "type": "ComfySwitchNode",
1201 "pos": [
1202 920,
1203 -780
1204 ],
1205 "size": [
1206 280,
1207 110
1208 ],
1209 "flags": [],
1210 "order": 12,
1211 "mode": 0,
1212 "inputs": [
1213 {
1214 "localized_name": "on_false",
1215 "name": "on_false",
1216 "shape": 7,
1217 "type": "STRING",
1218 "link": 15
1219 },
1220 {
1221 "localized_name": "on_true",
1222 "name": "on_true",
1223 "shape": 7,
1224 "type": "STRING",
1225 "link": 19
1226 },
1227 {
1228 "localized_name": "switch",
1229 "name": "switch",
1230 "type": "BOOLEAN",
1231 "widget": {
1232 "name": "switch"
1233 },
1234 "link": 26
1235 }
1236 ],
1237 "outputs": [
1238 {
1239 "localized_name": "output",
1240 "name": "output",
1241 "type": "STRING",
1242 "links": [
1243 21
1244 ]
1245 }
1246 ],
1247 "properties": {
1248 "Node name for S&R": "ComfySwitchNode"
1249 },
1250 "widgets_values": [
1251 true
1252 ],
1253 "widgets_values_named": {
1254 "switch": true
1255 }
1256 },
1257 {
1258 "id": 6,
1259 "type": "EmptyFlux2LatentImage",
1260 "pos": [
1261 -130,
1262 960
1263 ],
1264 "size": [
1265 300,
1266 120
1267 ],
1268 "flags": [],
1269 "order": 6,
1270 "mode": 0,
1271 "inputs": [
1272 {
1273 "localized_name": "width",
1274 "name": "width",
1275 "type": "INT",
1276 "widget": {
1277 "name": "width"
1278 },
1279 "link": 27
1280 },
1281 {
1282 "localized_name": "height",
1283 "name": "height",
1284 "type": "INT",
1285 "widget": {
1286 "name": "height"
1287 },
1288 "link": 28
1289 }
1290 ],
1291 "outputs": [
1292 {
1293 "localized_name": "LATENT",
1294 "name": "LATENT",
1295 "type": "LATENT",
1296 "slot_index": 0,
1297 "links": [
1298 39
1299 ]
1300 }
1301 ],
1302 "properties": {
1303 "Node name for S&R": "EmptyFlux2LatentImage"
1304 },
1305 "widgets_values": [
1306 1024,
1307 1024,
1308 1
1309 ],
1310 "widgets_values_named": {
1311 "width": 1024,
1312 "height": 1024,
1313 "batch_size": 1
1314 },
1315 "color": "#323",
1316 "bgcolor": "#535"
1317 },
1318 {
1319 "id": 5,
1320 "type": "CLIPTextEncode",
1321 "pos": [
1322 370,
1323 610
1324 ],
1325 "size": [
1326 460,
1327 180
1328 ],
1329 "flags": [],
1330 "order": 5,
1331 "mode": 0,
1332 "inputs": [
1333 {
1334 "localized_name": "clip",
1335 "name": "clip",
1336 "type": "CLIP",
1337 "link": 3
1338 },
1339 {
1340 "localized_name": "text",
1341 "name": "text",
1342 "type": "STRING",
1343 "widget": {
1344 "name": "text"
1345 },
1346 "link": 43
1347 }
1348 ],
1349 "outputs": [
1350 {
1351 "localized_name": "CONDITIONING",
1352 "name": "CONDITIONING",
1353 "type": "CONDITIONING",
1354 "slot_index": 0,
1355 "links": [
1356 9
1357 ]
1358 }
1359 ],
1360 "title": "Negative Prompt (empty = reference default)",
1361 "properties": {
1362 "Node name for S&R": "CLIPTextEncode"
1363 },
1364 "widgets_values": [
1365 ""
1366 ],
1367 "widgets_values_named": {
1368 "text": ""
1369 },
1370 "color": "#223",
1371 "bgcolor": "#335"
1372 },
1373 {
1374 "id": 8,
1375 "type": "VAEDecode",
1376 "pos": [
1377 1270,
1378 0
1379 ],
1380 "size": [
1381 230,
1382 70
1383 ],
1384 "flags": [],
1385 "order": 8,
1386 "mode": 0,
1387 "inputs": [
1388 {
1389 "localized_name": "samples",
1390 "name": "samples",
1391 "type": "LATENT",
1392 "link": 4
1393 },
1394 {
1395 "localized_name": "vae",
1396 "name": "vae",
1397 "type": "VAE",
1398 "link": 5
1399 }
1400 ],
1401 "outputs": [
1402 {
1403 "localized_name": "IMAGE",
1404 "name": "IMAGE",
1405 "type": "IMAGE",
1406 "slot_index": 0,
1407 "links": [
1408 6
1409 ]
1410 }
1411 ],
1412 "properties": {
1413 "Node name for S&R": "VAEDecode"
1414 }
1415 },
1416 {
1417 "id": 15,
1418 "type": "SkipLayerGuidanceDiTSimple",
1419 "pos": [
1420 -150,
1421 280
1422 ],
1423 "size": [
1424 350,
1425 220
1426 ],
1427 "flags": [],
1428 "order": 11,
1429 "mode": 0,
1430 "showAdvanced": true,
1431 "inputs": [
1432 {
1433 "localized_name": "model",
1434 "name": "model",
1435 "type": "MODEL",
1436 "link": 1
1437 }
1438 ],
1439 "outputs": [
1440 {
1441 "localized_name": "MODEL",
1442 "name": "MODEL",
1443 "type": "MODEL",
1444 "links": [
1445 50
1446 ]
1447 }
1448 ],
1449 "properties": {
1450 "Node name for S&R": "SkipLayerGuidanceDiTSimple"
1451 },
1452 "widgets_values": [
1453 "",
1454 "22",
1455 0,
1456 0.5
1457 ],
1458 "widgets_values_named": {
1459 "double_layers": "",
1460 "single_layers": "22",
1461 "start_percent": 0,
1462 "end_percent": 0.5
1463 }
1464 },
1465 {
1466 "id": 24,
1467 "type": "ComfySwitchNode",
1468 "pos": [
1469 -110,
1470 140
1471 ],
1472 "size": [
1473 270,
1474 110
1475 ],
1476 "flags": [],
1477 "order": 14,
1478 "mode": 0,
1479 "inputs": [
1480 {
1481 "localized_name": "on_false",
1482 "name": "on_false",
1483 "shape": 7,
1484 "type": "MODEL",
1485 "link": 51
1486 },
1487 {
1488 "localized_name": "on_true",
1489 "name": "on_true",
1490 "shape": 7,
1491 "type": "MODEL",
1492 "link": 50
1493 },
1494 {
1495 "localized_name": "switch",
1496 "name": "switch",
1497 "type": "BOOLEAN",
1498 "widget": {
1499 "name": "switch"
1500 },
1501 "link": 52
1502 }
1503 ],
1504 "outputs": [
1505 {
1506 "localized_name": "output",
1507 "name": "output",
1508 "type": "MODEL",
1509 "links": [
1510 49
1511 ]
1512 }
1513 ],
1514 "properties": {
1515 "Node name for S&R": "ComfySwitchNode"
1516 },
1517 "widgets_values": [
1518 false
1519 ],
1520 "widgets_values_named": {
1521 "switch": false
1522 }
1523 }
1524 ],
1525 "groups": [
1526 {
1527 "id": 1,
1528 "title": "Models",
1529 "bounding": [
1530 -210,
1531 -60,
1532 460,
1533 880
1534 ],
1535 "color": "#3f789e",
1536 "flags": []
1537 },
1538 {
1539 "id": 2,
1540 "title": "Prompt",
1541 "bounding": [
1542 290,
1543 -60,
1544 580,
1545 880
1546 ],
1547 "color": "#3f789e",
1548 "flags": []
1549 },
1550 {
1551 "id": 3,
1552 "title": "Image Size",
1553 "bounding": [
1554 -210,
1555 850,
1556 460,
1557 300
1558 ],
1559 "color": "#3f789e",
1560 "flags": []
1561 },
1562 {
1563 "id": 4,
1564 "title": "Prompt Enhancer",
1565 "bounding": [
1566 -220,
1567 -880,
1568 1900,
1569 840
1570 ],
1571 "color": "#444",
1572 "flags": []
1573 }
1574 ],
1575 "links": [
1576 {
1577 "id": 2,
1578 "origin_id": 2,
1579 "origin_slot": 0,
1580 "target_id": 4,
1581 "target_slot": 0,
1582 "type": "CLIP"
1583 },
1584 {
1585 "id": 20,
1586 "origin_id": 13,
1587 "origin_slot": 0,
1588 "target_id": 4,
1589 "target_slot": 1,
1590 "type": "STRING"
1591 },
1592 {
1593 "id": 1,
1594 "origin_id": 1,
1595 "origin_slot": 0,
1596 "target_id": 15,
1597 "target_slot": 0,
1598 "type": "MODEL"
1599 },
1600 {
1601 "id": 8,
1602 "origin_id": 4,
1603 "origin_slot": 0,
1604 "target_id": 7,
1605 "target_slot": 1,
1606 "type": "CONDITIONING"
1607 },
1608 {
1609 "id": 9,
1610 "origin_id": 5,
1611 "origin_slot": 0,
1612 "target_id": 7,
1613 "target_slot": 2,
1614 "type": "CONDITIONING"
1615 },
1616 {
1617 "id": 21,
1618 "origin_id": 16,
1619 "origin_slot": 0,
1620 "target_id": 13,
1621 "target_slot": 0,
1622 "type": "STRING"
1623 },
1624 {
1625 "id": 15,
1626 "origin_id": 17,
1627 "origin_slot": 0,
1628 "target_id": 16,
1629 "target_slot": 0,
1630 "type": "STRING"
1631 },
1632 {
1633 "id": 19,
1634 "origin_id": 11,
1635 "origin_slot": 0,
1636 "target_id": 16,
1637 "target_slot": 1,
1638 "type": "STRING"
1639 },
1640 {
1641 "id": 3,
1642 "origin_id": 2,
1643 "origin_slot": 0,
1644 "target_id": 5,
1645 "target_slot": 0,
1646 "type": "CLIP"
1647 },
1648 {
1649 "id": 4,
1650 "origin_id": 7,
1651 "origin_slot": 0,
1652 "target_id": 8,
1653 "target_slot": 0,
1654 "type": "LATENT"
1655 },
1656 {
1657 "id": 5,
1658 "origin_id": 3,
1659 "origin_slot": 0,
1660 "target_id": 8,
1661 "target_slot": 1,
1662 "type": "VAE"
1663 },
1664 {
1665 "id": 6,
1666 "origin_id": 8,
1667 "origin_slot": 0,
1668 "target_id": -20,
1669 "target_slot": 0,
1670 "type": "IMAGE"
1671 },
1672 {
1673 "id": 39,
1674 "origin_id": 6,
1675 "origin_slot": 0,
1676 "target_id": 7,
1677 "target_slot": 3,
1678 "type": "LATENT"
1679 },
1680 {
1681 "id": 49,
1682 "origin_id": 24,
1683 "origin_slot": 0,
1684 "target_id": 7,
1685 "target_slot": 0,
1686 "type": "MODEL"
1687 },
1688 {
1689 "id": 50,
1690 "origin_id": 15,
1691 "origin_slot": 0,
1692 "target_id": 24,
1693 "target_slot": 1,
1694 "type": "MODEL"
1695 },
1696 {
1697 "id": 51,
1698 "origin_id": 1,
1699 "origin_slot": 0,
1700 "target_id": 24,
1701 "target_slot": 0,
1702 "type": "MODEL"
1703 },
1704 {
1705 "id": 25,
1706 "origin_id": -10,
1707 "origin_slot": 0,
1708 "target_id": 17,
1709 "target_slot": 0,
1710 "type": "STRING"
1711 },
1712 {
1713 "id": 26,
1714 "origin_id": -10,
1715 "origin_slot": 1,
1716 "target_id": 16,
1717 "target_slot": 2,
1718 "type": "BOOLEAN"
1719 },
1720 {
1721 "id": 43,
1722 "origin_id": -10,
1723 "origin_slot": 3,
1724 "target_id": 5,
1725 "target_slot": 1,
1726 "type": "STRING"
1727 },
1728 {
1729 "id": 27,
1730 "origin_id": -10,
1731 "origin_slot": 4,
1732 "target_id": 6,
1733 "target_slot": 0,
1734 "type": "INT"
1735 },
1736 {
1737 "id": 28,
1738 "origin_id": -10,
1739 "origin_slot": 5,
1740 "target_id": 6,
1741 "target_slot": 1,
1742 "type": "INT"
1743 },
1744 {
1745 "id": 30,
1746 "origin_id": -10,
1747 "origin_slot": 6,
1748 "target_id": 7,
1749 "target_slot": 4,
1750 "type": "INT"
1751 },
1752 {
1753 "id": 42,
1754 "origin_id": -10,
1755 "origin_slot": 7,
1756 "target_id": 7,
1757 "target_slot": 5,
1758 "type": "INT"
1759 },
1760 {
1761 "id": 44,
1762 "origin_id": -10,
1763 "origin_slot": 8,
1764 "target_id": 7,
1765 "target_slot": 6,
1766 "type": "FLOAT"
1767 },
1768 {
1769 "id": 33,
1770 "origin_id": -10,
1771 "origin_slot": 9,
1772 "target_id": 7,
1773 "target_slot": 7,
1774 "type": "COMBO"
1775 },
1776 {
1777 "id": 34,
1778 "origin_id": -10,
1779 "origin_slot": 10,
1780 "target_id": 7,
1781 "target_slot": 8,
1782 "type": "COMBO"
1783 },
1784 {
1785 "id": 52,
1786 "origin_id": -10,
1787 "origin_slot": 11,
1788 "target_id": 24,
1789 "target_slot": 2,
1790 "type": "BOOLEAN"
1791 },
1792 {
1793 "id": 35,
1794 "origin_id": -10,
1795 "origin_slot": 12,
1796 "target_id": 1,
1797 "target_slot": 0,
1798 "type": "COMBO"
1799 },
1800 {
1801 "id": 36,
1802 "origin_id": -10,
1803 "origin_slot": 13,
1804 "target_id": 2,
1805 "target_slot": 0,
1806 "type": "COMBO"
1807 },
1808 {
1809 "id": 37,
1810 "origin_id": -10,
1811 "origin_slot": 14,
1812 "target_id": 3,
1813 "target_slot": 0,
1814 "type": "COMBO"
1815 },
1816 {
1817 "id": 48,
1818 "origin_id": 2,
1819 "origin_slot": 0,
1820 "target_id": 11,
1821 "target_slot": 0,
1822 "type": "CLIP"
1823 },
1824 {
1825 "id": 53,
1826 "origin_id": -10,
1827 "origin_slot": 15,
1828 "target_id": 11,
1829 "target_slot": 1,
1830 "type": "IMAGE"
1831 },
1832 {
1833 "id": 13,
1834 "origin_id": 14,
1835 "origin_slot": 0,
1836 "target_id": 11,
1837 "target_slot": 4,
1838 "type": "STRING"
1839 },
1840 {
1841 "id": 17,
1842 "origin_id": 17,
1843 "origin_slot": 0,
1844 "target_id": 11,
1845 "target_slot": 5,
1846 "type": "STRING"
1847 },
1848 {
1849 "id": 55,
1850 "origin_id": -10,
1851 "origin_slot": 2,
1852 "target_id": 11,
1853 "target_slot": 6,
1854 "type": "INT"
1855 }
1856 ],
1857 "extra": []
1858 }
1859 ]
1860 },
1861 "config": [],
1862 "extra": {
1863 "ds": {
1864 "scale": 0.26442724019097386,
1865 "offset": [
1866 3711.2800949629896,
1867 1839.7684437047312
1868 ]
1869 },
1870 "frontendVersion": "1.55.18"
1871 },
1872 "version": 0.4
1873}