{
  "1": {
    "class_type": "UNETLoader",
    "_comment": "Hybrid FL2VA+REF2VA int8. NOTE: pack README specifies band b25-49; this repo already had b30-49 on disk and we start there to avoid a redundant 21GB fetch. If output is unusable, fetch b25-49 and re-test.",
    "inputs": {
      "unet_name": "minimax_h3_hybrid_fl2va_ref2va_b30-49-int8.safetensors",
      "weight_dtype": "default"
    }
  },
  "2": {
    "class_type": "CLIPLoader",
    "inputs": {
      "clip_name": "qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors",
      "type": "minimax",
      "device": "default"
    }
  },
  "3": {
    "class_type": "VAELoader",
    "_comment": "EXPERIMENTAL one-frame image VAE. NOT the video VAE - the one-frame path needs a dedicated image VAE (video VAE stays for multi-frame workflows).",
    "inputs": {
      "vae_name": "minimax_h3_t1_image_vae_step1597.safetensors"
    }
  },
  "15": {
    "class_type": "LoraLoaderModelOnly",
    "_comment": "Turbo adapter required by the 'hybrid single image | ER-SDE 8 steps' profile. Byte-identical to this repo's older minimax_h3_fl2v_lightx2v_turbo_8step_v1.0_comfy.safetensors (same sha256); the pack's name is used here.",
    "inputs": {
      "model": [
        "1",
        0
      ],
      "lora_name": "minimax_h3_fl2v_turbo_8step_v1.0_comfyui_bf16.safetensors",
      "strength_model": 0.75
    }
  },
  "16": {
    "class_type": "LoraLoaderModelOnly",
    "_comment": "Detail adapter, deliberately 0.5. Pack docs: 1.0 over-preserved Picture 1 and SUPPRESSED the requested pose; 0.5 kept identity while letting Picture 2's pose transfer. This is the identity<->scene-change knob.",
    "inputs": {
      "model": [
        "15",
        0
      ],
      "lora_name": "MaxiMin-HHH-R2V-ThisIsFine_LoRA_V0_1.safetensors",
      "strength_model": 0.5
    }
  },
  "101": {
    "class_type": "LoadImage",
    "_comment": "<Picture 1> reference. ONE image per socket - an IMAGE batch would collapse to its first frame and break <Picture N> numbering.",
    "inputs": {
      "image": "dockaiq-input-435909-input_image-ref-3shot.webp",
      "upload": "image"
    }
  },
  "102": {
    "class_type": "LoadImage",
    "_comment": "<Picture 2> reference. ONE image per socket - an IMAGE batch would collapse to its first frame and break <Picture N> numbering.",
    "inputs": {
      "image": "dockaiq-input-435909-picture_2-9d727168-f4fe-45a7-bd89-3831b38cebfe.webp",
      "upload": "image"
    }
  },
  "103": {
    "class_type": "LoadImage",
    "_comment": "<Picture 3> reference. ONE image per socket - an IMAGE batch would collapse to its first frame and break <Picture N> numbering.",
    "inputs": {
      "image": "dockaiq-input-435909-picture_3-39085a49-f091-4413-9616-c9aeea653396-outer.webp",
      "upload": "image"
    }
  },
  "ow": {
    "class_type": "PrimitiveInt",
    "inputs": {
      "value": 768
    },
    "_meta": {
      "title": "출력 폭 — ★러너가 제출값을 여기 넣는다(registry width)"
    }
  },
  "oh": {
    "class_type": "PrimitiveInt",
    "inputs": {
      "value": 1344
    },
    "_meta": {
      "title": "출력 높이 — ★러너가 제출값을 여기 넣는다(registry height)"
    }
  },
  "ux": {
    "class_type": "PrimitiveFloat",
    "inputs": {
      "value": 2.0
    },
    "_meta": {
      "title": "내부 배율 — ★붕괴하면 여기 하나만 낮춘다(registry `canvas_scale` 로도 잡별 지정 가능)"
    }
  },
  "cw": {
    "class_type": "ComfyMathExpression",
    "inputs": {
      "expression": "round(a * b / 32) * 32",
      "values.a": [
        "ow",
        0
      ],
      "values.b": [
        "ux",
        0
      ]
    },
    "_meta": {
      "title": "캔버스 폭 = 출력값 × 배율 → **32 격자로 스냅**(노드 step=32)"
    }
  },
  "ch": {
    "class_type": "ComfyMathExpression",
    "inputs": {
      "expression": "round(a * b / 32) * 32",
      "values.a": [
        "oh",
        0
      ],
      "values.b": [
        "ux",
        0
      ]
    },
    "_meta": {
      "title": "캔버스 높이 = 출력값 × 배율 → **32 격자로 스냅**(노드 step=32)"
    }
  },
  "5": {
    "class_type": "H3ReferenceEditPrepare",
    "_comment": "Vertical 768x1344 by default - yusti's still spec. The pack's examples use 1344x768 (landscape); copying that verbatim would lay the subject down. width/height are opened as top-level runner inputs, never baked.",
    "inputs": {
      "clip": [
        "2",
        0
      ],
      "vae": [
        "3",
        0
      ],
      "source_image": [
        "101",
        0
      ],
      "reference_image_2": [
        "102",
        0
      ],
      "reference_image_3": [
        "103",
        0
      ],
      "edit_instruction": "<Picture 1> is 한서린, the only person in the frame. Follow <Picture 1> exactly for her face, her hair and her body — change nothing about her appearance. 한서린 is framed from head to mid-thigh, legs cropped below the thighs, subject fills the frame, face in sharp focus with crisp skin and eye detail. Place 한서린 inside the 사무실 shown in <Picture 2>, with a series of sit-stand desks and a glass-walled meeting room visible behind 한서린, matching its lighting, background and depth. This is a single still photograph: hold one motionless pose, framed as described below. Do not render a full-length shot: the frame ends at mid-thigh and the face is large and sharp — no small distant face, no visible feet or shoes.\n\ncowboy shot, straight-on, standing, hand on hip, cropped legs, closed-mouth smile\n\n[OUTFIT REFERENCE SHEETS]\nHOW TO READ <Picture 3>: it is a product reference sheet divided into separate panels on a plain studio backdrop. Any grey headless mannequin form in it is only a display stand — copy the garments and jewellery, NEVER the grey mannequin, and never put a grey body in the video.\n<Picture 3> shows, from left to right: black tailored blazer, structured shoulders, single button, matte wool gabardine, slim long sleeves; ivory silk satin high neck blouse, stand collar, chest darts, slim fit; black high-waist tailored long straight pants, thin leather belt, full length to the instep, straight leg silhouette worn front view, the SAME garments worn back view, then black pointed toe stiletto heels, 9cm heel, smooth leather, then an intentionally empty panel, then black rectangular metal frame glasses, thick acetate rim, angular shape, silver bar choker, thin chain, under collarbone, silver slim watch, black leather strap, wristwatch.\nFRAMING OVERRIDES THE SHEET: the sheet shows the whole outfit, but this photograph is cropped at mid-thigh — feet and shoes are outside the frame. Within that head-to-mid-thigh frame, WHAT 한서린 WEARS.\nShe starts dressed in black tailored blazer, structured shoulders, single button, matte wool gabardine, slim long sleeves, ivory silk satin high neck blouse, stand collar, chest darts, slim fit, black high-waist tailored long straight pants, thin leather belt, full length to the instep, straight leg silhouette from <Picture 3>.\nON HER: black rectangular metal frame glasses, thick acetate rim, angular shape, silver bar choker, thin chain, under collarbone, silver slim watch, black leather strap, wristwatch — all exactly as shown in <Picture 3>.\nShe does NOT wear any coat. The coat panel in <Picture 3> is intentionally empty — ignore that panel completely.\nno grey mannequin, no headless figure, no dress form, no coat, no visible underwear, no exposed lingerie, no cropped or lifted outer clothing, no fully nude body, no exposed nipples, no exposed genitals.\nThis is a single still image, not a scene: the underwear is worn but COMPLETELY COVERED by the outer clothing and NOT VISIBLE anywhere in the image.",
      "width": [
        "cw",
        1
      ],
      "height": [
        "ch",
        1
      ],
      "quality_profile": "single image | 1 frame (image VAE)",
      "source_fidelity": 0.6,
      "source_fit": "crop_center",
      "reference_detail": "max_identity_2048",
      "optimize_for_still": true
    }
  },
  "6": {
    "class_type": "RandomNoise",
    "inputs": {
      "noise_seed": 634009316
    }
  },
  "8": {
    "class_type": "H3ImageSamplingPreset",
    "inputs": {
      "model": [
        "16",
        0
      ],
      "sampling_profile": "custom | use controls below",
      "custom_sampler": "er_sde",
      "custom_scheduler": "sgm_uniform",
      "custom_steps": 8,
      "custom_denoise": 1.0,
      "custom_shift_video": 12.0,
      "custom_shift_audio": 3.0
    }
  },
  "7": {
    "class_type": "BasicGuider",
    "inputs": {
      "model": [
        "8",
        0
      ],
      "conditioning": [
        "5",
        0
      ]
    }
  },
  "10": {
    "class_type": "SamplerCustomAdvanced",
    "inputs": {
      "noise": [
        "6",
        0
      ],
      "guider": [
        "7",
        0
      ],
      "sampler": [
        "8",
        1
      ],
      "sigmas": [
        "8",
        2
      ],
      "latent_image": [
        "5",
        1
      ]
    }
  },
  "11": {
    "class_type": "H3ImageDecode",
    "inputs": {
      "samples": [
        "10",
        0
      ],
      "vae": [
        "3",
        0
      ]
    }
  },
  "12": {
    "class_type": "H3ImageFrameSelector",
    "inputs": {
      "frames": [
        "11",
        0
      ],
      "source_image": [
        "5",
        2
      ],
      "recommended_index": [
        "11",
        3
      ],
      "strategy": "decode_recommended",
      "manual_index": 0,
      "skip_first_frames": 0,
      "candidate_start": 0.0,
      "candidate_end": 1.0,
      "similarity_weight": 0.35,
      "top_k": 1
    }
  },
  "dn": {
    "class_type": "ImageScale",
    "inputs": {
      "image": [
        "12",
        0
      ],
      "upscale_method": "lanczos",
      "width": [
        "ow",
        0
      ],
      "height": [
        "oh",
        0
      ],
      "crop": "disabled"
    },
    "_meta": {
      "title": "최종 축소 — ★lanczos(축소용) · 목표는 제출값 그대로"
    }
  },
  "13": {
    "class_type": "SaveImage",
    "inputs": {
      "images": [
        "dn",
        0
      ],
      "filename_prefix": "i2i-minimax-h3-refsingle-5090-1_j435909"
    }
  }
}