Add proper inputs/outputs to IP-Adapter workflow nodes

Fixed node structure for both workflows by adding:
- Input connections for each node that receives data
- Output connections with link references
- Proper link arrays matching the node connections

This ensures workflows load correctly in ComfyUI with complete graph connectivity.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-23 00:24:04 +01:00
parent 74844842cf
commit 44d113f846
2 changed files with 816 additions and 61 deletions

View File

@@ -22,7 +22,37 @@
"size": {
"0": 350,
"1": 100
}
},
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
1,
3
],
"slot_index": 0
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
2,
4,
12,
13
],
"slot_index": 1
},
{
"name": "VAE",
"type": "VAE",
"links": [
19
],
"slot_index": 2
}
]
},
{
"id": 2,
@@ -45,7 +75,23 @@
"size": {
"0": 350,
"1": 100
}
},
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
5
],
"slot_index": 0
},
{
"name": "MASK",
"type": "MASK",
"links": [],
"slot_index": 1
}
]
},
{
"id": 3,
@@ -68,7 +114,23 @@
"size": {
"0": 350,
"1": 100
}
},
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
8
],
"slot_index": 0
},
{
"name": "MASK",
"type": "MASK",
"links": [],
"slot_index": 1
}
]
},
{
"id": 4,
@@ -90,7 +152,37 @@
"size": {
"0": 350,
"1": 100
}
},
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 1
},
{
"name": "clip",
"type": "CLIP",
"link": 2
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
6
],
"slot_index": 0
},
{
"name": "IPADAPTER",
"type": "IPADAPTER",
"links": [
7
],
"slot_index": 1
}
]
},
{
"id": 5,
@@ -112,7 +204,37 @@
"size": {
"0": 350,
"1": 100
}
},
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 3
},
{
"name": "clip",
"type": "CLIP",
"link": 4
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
9
],
"slot_index": 0
},
{
"name": "IPADAPTER",
"type": "IPADAPTER",
"links": [
10
],
"slot_index": 1
}
]
},
{
"id": 6,
@@ -136,7 +258,34 @@
"size": {
"0": 315,
"1": 100
}
},
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 6
},
{
"name": "ipadapter",
"type": "IPADAPTER",
"link": 7
},
{
"name": "image",
"type": "IMAGE",
"link": 5
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
11
],
"slot_index": 0
}
]
},
{
"id": 7,
@@ -160,7 +309,34 @@
"size": {
"0": 315,
"1": 100
}
},
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 11
},
{
"name": "ipadapter",
"type": "IPADAPTER",
"link": 10
},
{
"name": "image",
"type": "IMAGE",
"link": 8
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
14
],
"slot_index": 0
}
]
},
{
"id": 8,
@@ -182,7 +358,24 @@
"size": {
"0": 400,
"1": 200
}
},
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 12
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
15
],
"slot_index": 0
}
]
},
{
"id": 9,
@@ -204,7 +397,24 @@
"size": {
"0": 400,
"1": 200
}
},
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 13
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
16
],
"slot_index": 0
}
]
},
{
"id": 10,
@@ -228,7 +438,17 @@
"size": {
"0": 315,
"1": 100
}
},
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
17
],
"slot_index": 0
}
]
},
{
"id": 11,
@@ -256,7 +476,39 @@
"size": {
"0": 315,
"1": 474
}
},
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 14
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 15
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 16
},
{
"name": "latent_image",
"type": "LATENT",
"link": 17
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
18
],
"slot_index": 0
}
]
},
{
"id": 12,
@@ -275,7 +527,30 @@
"size": {
"0": 315,
"1": 100
}
},
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 18
},
{
"name": "vae",
"type": "VAE",
"link": 19
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
20,
21
],
"slot_index": 0
}
]
},
{
"id": 13,
@@ -294,7 +569,14 @@
"size": {
"0": 315,
"1": 100
}
},
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 20
}
]
},
{
"id": 14,
@@ -316,31 +598,185 @@
"size": {
"0": 315,
"1": 100
}
},
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 21
}
]
}
],
"links": [
[1, 1, 0, 4, 0, "MODEL"],
[2, 1, 1, 4, 1, "CLIP"],
[3, 1, 0, 5, 0, "MODEL"],
[4, 1, 1, 5, 1, "CLIP"],
[5, 2, 0, 6, 2, "IMAGE"],
[6, 4, 0, 6, 0, "MODEL"],
[7, 4, 1, 6, 1, "IPADAPTER"],
[8, 3, 0, 7, 2, "IMAGE"],
[9, 5, 0, 7, 0, "MODEL"],
[10, 5, 1, 7, 1, "IPADAPTER"],
[11, 6, 0, 7, 0, "MODEL"],
[12, 1, 1, 8, 0, "CLIP"],
[13, 1, 1, 9, 0, "CLIP"],
[14, 7, 0, 11, 0, "MODEL"],
[15, 8, 0, 11, 1, "CONDITIONING"],
[16, 9, 0, 11, 2, "CONDITIONING"],
[17, 10, 0, 11, 3, "LATENT"],
[18, 11, 0, 12, 0, "LATENT"],
[19, 1, 2, 12, 1, "VAE"],
[20, 12, 0, 13, 0, "IMAGE"],
[21, 12, 0, 14, 0, "IMAGE"]
[
1,
1,
0,
4,
0,
"MODEL"
],
[
2,
1,
1,
4,
1,
"CLIP"
],
[
3,
1,
0,
5,
0,
"MODEL"
],
[
4,
1,
1,
5,
1,
"CLIP"
],
[
5,
2,
0,
6,
2,
"IMAGE"
],
[
6,
4,
0,
6,
0,
"MODEL"
],
[
7,
4,
1,
6,
1,
"IPADAPTER"
],
[
8,
3,
0,
7,
2,
"IMAGE"
],
[
9,
5,
0,
7,
0,
"MODEL"
],
[
10,
5,
1,
7,
1,
"IPADAPTER"
],
[
11,
6,
0,
7,
0,
"MODEL"
],
[
12,
1,
1,
8,
0,
"CLIP"
],
[
13,
1,
1,
9,
0,
"CLIP"
],
[
14,
7,
0,
11,
0,
"MODEL"
],
[
15,
8,
0,
11,
1,
"CONDITIONING"
],
[
16,
9,
0,
11,
2,
"CONDITIONING"
],
[
17,
10,
0,
11,
3,
"LATENT"
],
[
18,
11,
0,
12,
0,
"LATENT"
],
[
19,
1,
2,
12,
1,
"VAE"
],
[
20,
12,
0,
13,
0,
"IMAGE"
],
[
21,
12,
0,
14,
0,
"IMAGE"
]
],
"extra": {
"workflow_info": {

View File

@@ -22,7 +22,35 @@
"mode": 0,
"properties": {
"Node name for S&R": "CheckpointLoaderSimple"
}
},
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
1
],
"slot_index": 0
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
2,
6,
7
],
"slot_index": 1
},
{
"name": "VAE",
"type": "VAE",
"links": [
13
],
"slot_index": 2
}
]
},
{
"id": 2,
@@ -45,7 +73,23 @@
"mode": 0,
"properties": {
"Node name for S&R": "LoadImage"
}
},
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
3
],
"slot_index": 0
},
{
"name": "MASK",
"type": "MASK",
"links": [],
"slot_index": 1
}
]
},
{
"id": 3,
@@ -67,7 +111,37 @@
"mode": 0,
"properties": {
"Node name for S&R": "IPAdapterUnifiedLoader"
}
},
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 1
},
{
"name": "clip",
"type": "CLIP",
"link": 2
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
4
],
"slot_index": 0
},
{
"name": "IPADAPTER",
"type": "IPADAPTER",
"links": [
5
],
"slot_index": 1
}
]
},
{
"id": 4,
@@ -94,7 +168,34 @@
"mode": 0,
"properties": {
"Node name for S&R": "IPAdapterFaceID"
}
},
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 4
},
{
"name": "ipadapter",
"type": "IPADAPTER",
"link": 5
},
{
"name": "image",
"type": "IMAGE",
"link": 3
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
8
],
"slot_index": 0
}
]
},
{
"id": 5,
@@ -116,7 +217,24 @@
"mode": 0,
"properties": {
"Node name for S&R": "CLIPTextEncode"
}
},
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 6
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
9
],
"slot_index": 0
}
]
},
{
"id": 6,
@@ -138,7 +256,24 @@
"mode": 0,
"properties": {
"Node name for S&R": "CLIPTextEncode"
}
},
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 7
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
10
],
"slot_index": 0
}
]
},
{
"id": 7,
@@ -162,7 +297,17 @@
"mode": 0,
"properties": {
"Node name for S&R": "EmptyLatentImage"
}
},
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
11
],
"slot_index": 0
}
]
},
{
"id": 8,
@@ -190,7 +335,39 @@
"mode": 0,
"properties": {
"Node name for S&R": "KSampler"
}
},
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 8
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 9
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 10
},
{
"name": "latent_image",
"type": "LATENT",
"link": 11
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
12
],
"slot_index": 0
}
]
},
{
"id": 9,
@@ -209,7 +386,30 @@
"mode": 0,
"properties": {
"Node name for S&R": "VAEDecode"
}
},
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 12
},
{
"name": "vae",
"type": "VAE",
"link": 13
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
14,
15
],
"slot_index": 0
}
]
},
{
"id": 10,
@@ -228,7 +428,14 @@
"mode": 0,
"properties": {
"Node name for S&R": "PreviewImage"
}
},
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 14
}
]
},
{
"id": 11,
@@ -250,25 +457,137 @@
"mode": 0,
"properties": {
"Node name for S&R": "SaveImage"
}
},
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 15
}
]
}
],
"links": [
[1, 1, 0, 3, 0, "MODEL"],
[2, 1, 1, 3, 1, "CLIP"],
[3, 2, 0, 4, 2, "IMAGE"],
[4, 3, 0, 4, 0, "MODEL"],
[5, 3, 1, 4, 1, "IPADAPTER"],
[6, 1, 1, 5, 0, "CLIP"],
[7, 1, 1, 6, 0, "CLIP"],
[8, 4, 0, 8, 0, "MODEL"],
[9, 5, 0, 8, 1, "CONDITIONING"],
[10, 6, 0, 8, 2, "CONDITIONING"],
[11, 7, 0, 8, 3, "LATENT"],
[12, 8, 0, 9, 0, "LATENT"],
[13, 1, 2, 9, 1, "VAE"],
[14, 9, 0, 10, 0, "IMAGE"],
[15, 9, 0, 11, 0, "IMAGE"]
[
1,
1,
0,
3,
0,
"MODEL"
],
[
2,
1,
1,
3,
1,
"CLIP"
],
[
3,
2,
0,
4,
2,
"IMAGE"
],
[
4,
3,
0,
4,
0,
"MODEL"
],
[
5,
3,
1,
4,
1,
"IPADAPTER"
],
[
6,
1,
1,
5,
0,
"CLIP"
],
[
7,
1,
1,
6,
0,
"CLIP"
],
[
8,
4,
0,
8,
0,
"MODEL"
],
[
9,
5,
0,
8,
1,
"CONDITIONING"
],
[
10,
6,
0,
8,
2,
"CONDITIONING"
],
[
11,
7,
0,
8,
3,
"LATENT"
],
[
12,
8,
0,
9,
0,
"LATENT"
],
[
13,
1,
2,
9,
1,
"VAE"
],
[
14,
9,
0,
10,
0,
"IMAGE"
],
[
15,
9,
0,
11,
0,
"IMAGE"
]
],
"extra": {
"workflow_info": {