{
  "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-435916-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-435916-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-435916-picture_3-924a95d7-fcc7-4b65-9600-363346274df0-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 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 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: grey purple oversized crew neck sweatshirt; grey purple wide leg sweatpants worn front view, the SAME garments worn back view, then ivory crew socks; pink slippers, then an intentionally empty panel, then silver chain necklace.\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 grey purple oversized crew neck sweatshirt, grey purple wide leg sweatpants from <Picture 3>.\nON HER: silver chain necklace — 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": 595613944
    }
  },
  "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_j435916"
    }
  }
}