{
  "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-435913-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-435913-picture_2-59f963f7-29f1-47f4-810e-de3635c79b3c.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-435913-picture_3-c51c3cf0-b54c-4252-afb3-1db0cc055cbc-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 his face, his hair and his body — change nothing about his 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 low wooden shoe rack and a small round mirror 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 in pocket, 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: white dress shirt, business casual; charcoal slacks, grey, business casual, pants worn front view, the SAME garments worn back view, then brown leather dress shoes, formal shoes, then navy blazer, business casual, suit jacket, then glasses, business.\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.\nHe starts dressed in white dress shirt, business casual, charcoal slacks, grey, business casual, pants from <Picture 3>.\nON HIM: glasses, business — all exactly as shown in <Picture 3>.\nHe wears navy blazer, business casual, suit jacket from <Picture 3> as HIS coat.\nno grey mannequin, no headless figure, no dress form, 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": 635162624
    }
  },
  "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_j435913"
    }
  }
}