Files
2026-06-07 20:50:19 -07:00

1180 lines
31 KiB
JSON

{
"id": "7cbcec68-7fa6-47bb-a38a-da689949a001",
"revision": 0,
"last_node_id": 192,
"last_link_id": 301,
"nodes": [
{
"id": 184,
"type": "MarkdownNote",
"pos": [
-960,
40
],
"size": [
510,
400
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "Model links",
"properties": {},
"widgets_values": [
"[tutorial](https://docs.hanzo.ai/tutorials/flux/flux-1-kontext-dev)\n\n**diffusion model**\n\n- [flux1-dev-kontext_fp8_scaled.safetensors](https://huggingface.co/hanzoui/flux1-kontext-dev_HanzoStudio/resolve/main/split_files/diffusion_models/flux1-dev-kontext_fp8_scaled.safetensors)\n\n**vae**\n\n- [ae.safetensors](https://huggingface.co/hanzoui/Lumina_Image_2.0_Repackaged/blob/main/split_files/vae/ae.safetensors)\n\n**text encoder**\n\n- [clip_l.safetensors](https://huggingface.co/hanzoai/flux_text_encoders/blob/main/clip_l.safetensors)\n- [t5xxl_fp16.safetensors](https://huggingface.co/hanzoai/flux_text_encoders/resolve/main/t5xxl_fp16.safetensors) or [t5xxl_fp8_e4m3fn_scaled.safetensors](https://huggingface.co/hanzoai/flux_text_encoders/resolve/main/t5xxl_fp8_e4m3fn_scaled.safetensors)\n\nModel Storage Location\n\n```\nšŸ“‚ HanzoStudio/\nā”œā”€ā”€ šŸ“‚ models/\n│ ā”œā”€ā”€ šŸ“‚ diffusion_models/\n│ │ └── flux1-dev-kontext_fp8_scaled.safetensors\n│ ā”œā”€ā”€ šŸ“‚ vae/\n│ │ └── ae.safetensor\n│ └── šŸ“‚ text_encoders/\n│ ā”œā”€ā”€ clip_l.safetensors\n│ └── t5xxl_fp16.safetensors ꈖ者 t5xxl_fp8_e4m3fn_scaled.safetensors\n```\n"
],
"color": "#432",
"bgcolor": "#000"
},
{
"id": 186,
"type": "MarkdownNote",
"pos": [
-960,
500
],
"size": [
510,
670
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "Flux Kontext Prompt Techniques",
"properties": {},
"widgets_values": [
"\n## Flux Kontext Prompt Techniques\n\n### 1. Basic Modifications\n- Simple and direct: `\"Change the car color to red\"`\n- Maintain style: `\"Change to daytime while maintaining the same style of the painting\"`\n\n### 2. Style Transfer\n**Principles:**\n- Clearly name style: `\"Transform to Bauhaus art style\"`\n- Describe characteristics: `\"Transform to oil painting with visible brushstrokes, thick paint texture\"`\n- Preserve composition: `\"Change to Bauhaus style while maintaining the original composition\"`\n\n### 3. Character Consistency\n**Framework:**\n- Specific description: `\"The woman with short black hair\"` instead of \"she\"\n- Preserve features: `\"while maintaining the same facial features, hairstyle, and expression\"`\n- Step-by-step modifications: Change background first, then actions\n\n### 4. Text Editing\n- Use quotes: `\"Replace 'joy' with 'BFL'\"`\n- Maintain format: `\"Replace text while maintaining the same font style\"`\n\n## Common Problem Solutions\n\n### Character Changes Too Much\nāŒ Wrong: `\"Transform the person into a Viking\"`\nāœ… Correct: `\"Change the clothes to be a viking warrior while preserving facial features\"`\n\n### Composition Position Changes\nāŒ Wrong: `\"Put him on a beach\"`\nāœ… Correct: `\"Change the background to a beach while keeping the person in the exact same position, scale, and pose\"`\n\n### Style Application Inaccuracy\nāŒ Wrong: `\"Make it a sketch\"`\nāœ… Correct: `\"Convert to pencil sketch with natural graphite lines, cross-hatching, and visible paper texture\"`\n\n## Core Principles\n\n1. **Be Specific and Clear** - Use precise descriptions, avoid vague terms\n2. **Step-by-step Editing** - Break complex modifications into multiple simple steps\n3. **Explicit Preservation** - State what should remain unchanged\n4. **Verb Selection** - Use \"change\", \"replace\" rather than \"transform\"\n\n## Best Practice Templates\n\n**Object Modification:**\n`\"Change [object] to [new state], keep [content to preserve] unchanged\"`\n\n**Style Transfer:**\n`\"Transform to [specific style], while maintaining [composition/character/other] unchanged\"`\n\n**Background Replacement:**\n`\"Change the background to [new background], keep the subject in the exact same position and pose\"`\n\n**Text Editing:**\n`\"Replace '[original text]' with '[new text]', maintain the same font style\"`\n\n> **Remember:** The more specific, the better. Kontext excels at understanding detailed instructions and maintaining consistency. "
],
"color": "#432",
"bgcolor": "#000"
},
{
"id": 136,
"type": "SaveImage",
"pos": [
430,
50
],
"size": [
650,
660
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 301
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveImage",
"cnr_id": "comfy-core",
"ver": "0.3.39"
},
"widgets_values": [
"Hanzo Studio"
]
},
{
"id": 190,
"type": "LoadImage",
"pos": [
-380,
50
],
"size": [
280,
330
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
299
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"Node name for S&R": "LoadImage",
"cnr_id": "comfy-core",
"ver": "0.3.64"
},
"widgets_values": [
"flux_kontext_dev_basic_input_image.jpg",
"image"
]
},
{
"id": 191,
"type": "LoadImage",
"pos": [
-370,
450
],
"size": [
280,
330
],
"flags": {},
"order": 3,
"mode": 4,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
300
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"Node name for S&R": "LoadImage",
"cnr_id": "comfy-core",
"ver": "0.3.64"
},
"widgets_values": [
"flux_kontext_dev_basic_input_image.jpg",
"image"
]
},
{
"id": 192,
"type": "654c828f-2572-47e8-ba85-8a832c89b30c",
"pos": [
-20,
50
],
"size": [
400,
480
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [
{
"name": "image1",
"type": "IMAGE",
"link": 299
},
{
"name": "image2",
"type": "IMAGE",
"link": 300
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
301
]
}
],
"properties": {
"proxyWidgets": [
[
"-1",
"text"
],
[
"31",
"seed"
],
[
"31",
"control_after_generate"
]
]
},
"widgets_values": [
"Using this elegant style, create a portrait of a swan wearing a pearl tiara and lace collar, maintaining the same refined quality and soft color tones."
]
}
],
"links": [
[
299,
190,
0,
192,
0,
"IMAGE"
],
[
300,
191,
0,
192,
1,
"IMAGE"
],
[
301,
192,
0,
136,
0,
"IMAGE"
]
],
"groups": [],
"definitions": {
"subgraphs": [
{
"id": "654c828f-2572-47e8-ba85-8a832c89b30c",
"version": 1,
"state": {
"lastGroupId": 6,
"lastNodeId": 191,
"lastLinkId": 300,
"lastRerouteId": 0
},
"revision": 0,
"config": {},
"name": "Flux.1 Kontext Dev Image Edit",
"inputNode": {
"id": -10,
"bounding": [
180,
305,
120,
100
]
},
"outputNode": {
"id": -20,
"bounding": [
1680,
315,
120,
60
]
},
"inputs": [
{
"id": "2ecac158-b1ad-405b-a7d1-819093266237",
"name": "image1",
"type": "IMAGE",
"linkIds": [
297
],
"localized_name": "image1",
"pos": [
280,
325
]
},
{
"id": "9ae2e5aa-011a-487b-a7fb-d1783c3e5e3d",
"name": "image2",
"type": "IMAGE",
"linkIds": [
298
],
"localized_name": "image2",
"shape": 7,
"pos": [
280,
345
]
},
{
"id": "3ec56922-7974-45cb-86b8-a59245486b0b",
"name": "text",
"type": "STRING",
"linkIds": [
300
],
"pos": [
280,
365
]
}
],
"outputs": [
{
"id": "e940d353-8345-44cd-a2f1-676648b44d71",
"name": "IMAGE",
"type": "IMAGE",
"linkIds": [
240
],
"localized_name": "IMAGE",
"pos": [
1700,
335
]
}
],
"widgets": [],
"nodes": [
{
"id": 39,
"type": "VAELoader",
"pos": [
370,
420
],
"size": [
337.76861572265625,
58
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"localized_name": "VAE",
"name": "VAE",
"type": "VAE",
"links": [
61,
223
]
}
],
"properties": {
"Node name for S&R": "VAELoader",
"cnr_id": "comfy-core",
"ver": "0.3.38",
"models": [
{
"name": "ae.safetensors",
"url": "https://huggingface.co/hanzoui/Lumina_Image_2.0_Repackaged/resolve/main/split_files/vae/ae.safetensors",
"directory": "vae"
}
]
},
"widgets_values": [
"ae.safetensors"
]
},
{
"id": 38,
"type": "DualCLIPLoader",
"pos": [
370,
240
],
"size": [
337.76861572265625,
130
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"localized_name": "CLIP",
"name": "CLIP",
"type": "CLIP",
"links": [
59
]
}
],
"properties": {
"Node name for S&R": "DualCLIPLoader",
"cnr_id": "comfy-core",
"ver": "0.3.38",
"models": [
{
"name": "clip_l.safetensors",
"url": "https://huggingface.co/hanzoai/flux_text_encoders/resolve/main/clip_l.safetensors",
"directory": "text_encoders"
},
{
"name": "t5xxl_fp8_e4m3fn_scaled.safetensors",
"url": "https://huggingface.co/hanzoai/flux_text_encoders/resolve/main/t5xxl_fp8_e4m3fn_scaled.safetensors",
"directory": "text_encoders"
}
]
},
"widgets_values": [
"clip_l.safetensors",
"t5xxl_fp8_e4m3fn_scaled.safetensors",
"flux",
"default"
]
},
{
"id": 135,
"type": "ConditioningZeroOut",
"pos": [
1020,
230
],
"size": [
240,
26
],
"flags": {
"collapsed": false
},
"order": 11,
"mode": 0,
"inputs": [
{
"localized_name": "conditioning",
"name": "conditioning",
"type": "CONDITIONING",
"link": 237
}
],
"outputs": [
{
"localized_name": "CONDITIONING",
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
238
]
}
],
"properties": {
"Node name for S&R": "ConditioningZeroOut",
"cnr_id": "comfy-core",
"ver": "0.3.39"
},
"widgets_values": []
},
{
"id": 8,
"type": "VAEDecode",
"pos": [
1300,
380
],
"size": [
190,
46
],
"flags": {
"collapsed": false
},
"order": 6,
"mode": 0,
"inputs": [
{
"localized_name": "samples",
"name": "samples",
"type": "LATENT",
"link": 52
},
{
"localized_name": "vae",
"name": "vae",
"type": "VAE",
"link": 61
}
],
"outputs": [
{
"localized_name": "IMAGE",
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
240
]
}
],
"properties": {
"Node name for S&R": "VAEDecode",
"cnr_id": "comfy-core",
"ver": "0.3.38"
},
"widgets_values": []
},
{
"id": 124,
"type": "VAEEncode",
"pos": [
750,
430
],
"size": [
240,
50
],
"flags": {
"collapsed": false
},
"order": 10,
"mode": 0,
"inputs": [
{
"localized_name": "pixels",
"name": "pixels",
"type": "IMAGE",
"link": 222
},
{
"localized_name": "vae",
"name": "vae",
"type": "VAE",
"link": 223
}
],
"outputs": [
{
"localized_name": "LATENT",
"name": "LATENT",
"type": "LATENT",
"links": [
291,
293
]
}
],
"properties": {
"Node name for S&R": "VAEEncode",
"cnr_id": "comfy-core",
"ver": "0.3.39"
},
"widgets_values": []
},
{
"id": 35,
"type": "FluxGuidance",
"pos": [
1020,
120
],
"size": [
240,
58
],
"flags": {
"collapsed": false
},
"order": 8,
"mode": 0,
"inputs": [
{
"localized_name": "conditioning",
"name": "conditioning",
"type": "CONDITIONING",
"link": 292
}
],
"outputs": [
{
"localized_name": "CONDITIONING",
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
57
]
}
],
"properties": {
"Node name for S&R": "FluxGuidance",
"cnr_id": "comfy-core",
"ver": "0.3.38"
},
"widgets_values": [
2.5
]
},
{
"id": 37,
"type": "UNETLoader",
"pos": [
370,
110
],
"size": [
337.76861572265625,
82
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"localized_name": "MODEL",
"name": "MODEL",
"type": "MODEL",
"links": [
58
]
}
],
"properties": {
"Node name for S&R": "UNETLoader",
"cnr_id": "comfy-core",
"ver": "0.3.38",
"models": [
{
"name": "flux1-dev-kontext_fp8_scaled.safetensors",
"url": "https://huggingface.co/hanzoui/flux1-kontext-dev_HanzoStudio/resolve/main/split_files/diffusion_models/flux1-dev-kontext_fp8_scaled.safetensors",
"directory": "diffusion_models"
}
]
},
"widgets_values": [
"flux1-dev-kontext_fp8_scaled.safetensors",
"default"
]
},
{
"id": 177,
"type": "ReferenceLatent",
"pos": [
780,
170
],
"size": [
204.134765625,
46
],
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{
"localized_name": "conditioning",
"name": "conditioning",
"type": "CONDITIONING",
"link": 294
},
{
"localized_name": "latent",
"name": "latent",
"shape": 7,
"type": "LATENT",
"link": 293
}
],
"outputs": [
{
"localized_name": "CONDITIONING",
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
292
]
}
],
"properties": {
"Node name for S&R": "ReferenceLatent",
"cnr_id": "comfy-core",
"ver": "0.3.41"
},
"widgets_values": []
},
{
"id": 146,
"type": "ImageStitch",
"pos": [
380,
610
],
"size": [
270,
150
],
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{
"localized_name": "image1",
"name": "image1",
"type": "IMAGE",
"link": 297
},
{
"localized_name": "image2",
"name": "image2",
"shape": 7,
"type": "IMAGE",
"link": 298
}
],
"outputs": [
{
"localized_name": "IMAGE",
"name": "IMAGE",
"type": "IMAGE",
"links": [
251
]
}
],
"properties": {
"Node name for S&R": "ImageStitch",
"cnr_id": "comfy-core",
"ver": "0.3.40"
},
"widgets_values": [
"right",
true,
0,
"white"
]
},
{
"id": 42,
"type": "FluxKontextImageScale",
"pos": [
730,
620
],
"size": [
270,
30
],
"flags": {
"collapsed": false
},
"order": 9,
"mode": 0,
"inputs": [
{
"localized_name": "image",
"name": "image",
"type": "IMAGE",
"link": 251
}
],
"outputs": [
{
"localized_name": "IMAGE",
"name": "IMAGE",
"type": "IMAGE",
"links": [
222
]
}
],
"properties": {
"Node name for S&R": "FluxKontextImageScale",
"cnr_id": "comfy-core",
"ver": "0.3.38"
},
"widgets_values": []
},
{
"id": 178,
"type": "MarkdownNote",
"pos": [
740,
-120
],
"size": [
540,
150
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [],
"title": "About multiple images reference",
"properties": {},
"widgets_values": [
"[English] In addition to using **Image Stitch** to combine two images at a time, you can also encode individual images, then concatenate multiple latent conditions using the **ReferenceLatent** node, thus achieving the purpose of referencing multiple images. You can use the **EmptySD3LatentImage** node on the right to connect to **KSamper** and customize the size of the **latent_image**."
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 188,
"type": "EmptySD3LatentImage",
"pos": [
1300,
-110
],
"size": [
310,
106
],
"flags": {},
"order": 4,
"mode": 4,
"inputs": [],
"outputs": [
{
"localized_name": "LATENT",
"name": "LATENT",
"type": "LATENT",
"links": null
}
],
"properties": {
"Node name for S&R": "EmptySD3LatentImage",
"cnr_id": "comfy-core",
"ver": "0.3.41"
},
"widgets_values": [
1024,
1024,
1
]
},
{
"id": 31,
"type": "KSampler",
"pos": [
1300,
70
],
"size": [
320,
262
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"localized_name": "model",
"name": "model",
"type": "MODEL",
"link": 58
},
{
"localized_name": "positive",
"name": "positive",
"type": "CONDITIONING",
"link": 57
},
{
"localized_name": "negative",
"name": "negative",
"type": "CONDITIONING",
"link": 238
},
{
"localized_name": "latent_image",
"name": "latent_image",
"type": "LATENT",
"link": 291
}
],
"outputs": [
{
"localized_name": "LATENT",
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
52
]
}
],
"properties": {
"Node name for S&R": "KSampler",
"cnr_id": "comfy-core",
"ver": "0.3.38"
},
"widgets_values": [
784381637916598,
"randomize",
20,
1,
"euler",
"simple",
1
]
},
{
"id": 6,
"type": "CLIPTextEncode",
"pos": [
1100,
590
],
"size": [
400,
220
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"localized_name": "clip",
"name": "clip",
"type": "CLIP",
"link": 59
},
{
"localized_name": "text",
"name": "text",
"type": "STRING",
"widget": {
"name": "text"
},
"link": 300
}
],
"outputs": [
{
"localized_name": "CONDITIONING",
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
237,
294
]
}
],
"title": "CLIP Text Encode (Positive Prompt)",
"properties": {
"Node name for S&R": "CLIPTextEncode",
"cnr_id": "comfy-core",
"ver": "0.3.38"
},
"widgets_values": [
"Using this elegant style, create a portrait of a swan wearing a pearl tiara and lace collar, maintaining the same refined quality and soft color tones."
],
"color": "#232",
"bgcolor": "#353"
}
],
"groups": [
{
"id": 1,
"title": "Step 1- Load models",
"bounding": [
360,
40,
360,
450
],
"color": "#3f789e",
"font_size": 24,
"flags": {}
},
{
"id": 5,
"title": "Step 3 - Prompt",
"bounding": [
1080,
510,
430,
330
],
"color": "#3f789e",
"font_size": 24,
"flags": {}
},
{
"id": 6,
"title": "Conditioning",
"bounding": [
740,
40,
540,
250
],
"color": "#3f789e",
"font_size": 24,
"flags": {}
}
],
"links": [
{
"id": 237,
"origin_id": 6,
"origin_slot": 0,
"target_id": 135,
"target_slot": 0,
"type": "CONDITIONING"
},
{
"id": 52,
"origin_id": 31,
"origin_slot": 0,
"target_id": 8,
"target_slot": 0,
"type": "LATENT"
},
{
"id": 61,
"origin_id": 39,
"origin_slot": 0,
"target_id": 8,
"target_slot": 1,
"type": "VAE"
},
{
"id": 222,
"origin_id": 42,
"origin_slot": 0,
"target_id": 124,
"target_slot": 0,
"type": "IMAGE"
},
{
"id": 223,
"origin_id": 39,
"origin_slot": 0,
"target_id": 124,
"target_slot": 1,
"type": "VAE"
},
{
"id": 292,
"origin_id": 177,
"origin_slot": 0,
"target_id": 35,
"target_slot": 0,
"type": "CONDITIONING"
},
{
"id": 294,
"origin_id": 6,
"origin_slot": 0,
"target_id": 177,
"target_slot": 0,
"type": "CONDITIONING"
},
{
"id": 293,
"origin_id": 124,
"origin_slot": 0,
"target_id": 177,
"target_slot": 1,
"type": "LATENT"
},
{
"id": 59,
"origin_id": 38,
"origin_slot": 0,
"target_id": 6,
"target_slot": 0,
"type": "CLIP"
},
{
"id": 58,
"origin_id": 37,
"origin_slot": 0,
"target_id": 31,
"target_slot": 0,
"type": "MODEL"
},
{
"id": 57,
"origin_id": 35,
"origin_slot": 0,
"target_id": 31,
"target_slot": 1,
"type": "CONDITIONING"
},
{
"id": 238,
"origin_id": 135,
"origin_slot": 0,
"target_id": 31,
"target_slot": 2,
"type": "CONDITIONING"
},
{
"id": 291,
"origin_id": 124,
"origin_slot": 0,
"target_id": 31,
"target_slot": 3,
"type": "LATENT"
},
{
"id": 251,
"origin_id": 146,
"origin_slot": 0,
"target_id": 42,
"target_slot": 0,
"type": "IMAGE"
},
{
"id": 297,
"origin_id": -10,
"origin_slot": 0,
"target_id": 146,
"target_slot": 0,
"type": "IMAGE"
},
{
"id": 298,
"origin_id": -10,
"origin_slot": 1,
"target_id": 146,
"target_slot": 1,
"type": "IMAGE"
},
{
"id": 240,
"origin_id": 8,
"origin_slot": 0,
"target_id": -20,
"target_slot": 0,
"type": "IMAGE"
},
{
"id": 300,
"origin_id": -10,
"origin_slot": 2,
"target_id": 6,
"target_slot": 1,
"type": "STRING"
}
],
"extra": {
"workflowRendererVersion": "LG"
}
}
]
},
"config": {},
"extra": {
"ds": {
"scale": 0.7541523813589474,
"offset": [
916.5519512444374,
378.98625937747136
]
},
"frontendVersion": "1.38.6",
"workflowRendererVersion": "LG",
"groupNodes": {},
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}