{"id": "f7a8c1b3-6d9e-4b5f-9c3a-gmanski-flowimage", "revision": 0, "last_node_id": 20, "last_link_id": 19, "nodes": [{"id": 1, "type": "MarkdownNote", "pos": [-1500, -420], "size": [560, 760], "flags": {}, "order": 0, "mode": 0, "inputs": [], "outputs": [], "properties": {"Node name for S&R": "MarkdownNote"}, "widgets_values": ["## Gmanski Flow (Image)\n\n**A still photo out of a video model.** MiniMax H3 has no image-only mode — this template generates the shortest clip that still looks fully-formed (22 frames, under a second) and keeps one frame. Uses a community LoRA (JonXL, Civitai) trained specifically to push this checkpoint toward photorealistic stills.\n\n### Run it\n1. Keep `ph0t0r34l` somewhere in the **prompt** — it's the LoRA's trigger word; removing it loses most of the effect.\n2. Optionally connect **First frame** / **Last frame** (same as Gmanski Flow Simple) for image-to-image style edits instead of pure text-to-image.\n3. Pick a resolution with **Resolution Selector**.\n4. Queue. Find the result under `output/Gmanski/gmanski_flow_image_00001.png`.\n\n### Why this isn't the \"no LoRA training\" answer for a specific person\nThis LoRA improves general photorealism — it has no idea who's in the picture. For generating new photos of one specific, already-known person without training anything, see **Character Portrait H3 (Gmanski)**, which uses H3's *reference-to-video* identity-lock (a photo, not a LoRA) instead.\n\n### Cost — read this before queueing\n- **Download**: ~22 GB (`minimax-h3-image` pack). Shares its 21.5 GB base with the other H3 templates if already installed.\n- **VRAM**: 48 GB+ recommended.\n- **Time**: a 22-frame clip at the base model's 20 steps, then one frame is kept — noticeably slower than a dedicated still-image model (Z-Image, Krea 2), since you're still paying for a short video generation.\n\n### Safety\nThis produces a local file only. Review it yourself before sharing it anywhere.\n\n### Models\n`gmanski-packs install minimax-h3-image`.\n"], "title": "Read me: Gmanski Flow (Image)", "color": "#432", "bgcolor": "#653"}, {"id": 2, "type": "LoadImage", "pos": [-900, -420], "size": [320, 314], "flags": {}, "order": 1, "mode": 0, "inputs": [], "outputs": [{"name": "IMAGE", "type": "IMAGE", "links": []}, {"name": "MASK", "type": "MASK", "links": []}], "properties": {"Node name for S&R": "LoadImage"}, "widgets_values": ["example.png", "image"], "title": "First frame (optional — image-to-image instead of text-to-image)"}, {"id": 3, "type": "LoadImage", "pos": [-900, -60], "size": [320, 314], "flags": {}, "order": 2, "mode": 0, "inputs": [], "outputs": [{"name": "IMAGE", "type": "IMAGE", "links": []}, {"name": "MASK", "type": "MASK", "links": []}], "properties": {"Node name for S&R": "LoadImage"}, "widgets_values": ["example.png", "image"], "title": "Last frame (optional — rarely useful for a single still)"}, {"id": 4, "type": "ResolutionSelector", "pos": [-900, 300], "size": [300, 170], "flags": {}, "order": 3, "mode": 0, "inputs": [], "outputs": [{"name": "width", "type": "INT", "links": [7]}, {"name": "height", "type": "INT", "links": [8]}], "properties": {"Node name for S&R": "ResolutionSelector"}, "widgets_values": ["3:2 (Photo)", 1.5, 32], "title": "Resolution Selector"}, {"id": 5, "type": "UNETLoader", "pos": [500, 900], "size": [440, 90], "flags": {}, "order": 4, "mode": 0, "inputs": [{"name": "unet_name", "type": "COMBO", "link": null, "widget": {"name": "unet_name"}}, {"name": "weight_dtype", "type": "COMBO", "link": null, "widget": {"name": "weight_dtype"}}], "outputs": [{"name": "MODEL", "type": "MODEL", "links": [1]}], "properties": {"Node name for S&R": "UNETLoader", "models": [{"name": "minimax_h3_fl2va_pruned_int8_convrot.safetensors", "url": "https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/diffusion_models/minimax_h3_fl2va_pruned_int8_convrot.safetensors", "directory": "diffusion_models"}]}, "widgets_values": ["minimax_h3_fl2va_pruned_int8_convrot.safetensors", "default"], "title": "MiniMax H3 flow checkpoint"}, {"id": 6, "type": "LoraLoaderModelOnly", "pos": [500, 1020], "size": [440, 90], "flags": {}, "order": 5, "mode": 4, "inputs": [{"name": "model", "type": "MODEL", "link": 1}, {"name": "lora_name", "type": "COMBO", "link": null, "widget": {"name": "lora_name"}}, {"name": "strength_model", "type": "FLOAT", "link": null, "widget": {"name": "strength_model"}}], "outputs": [{"name": "MODEL", "type": "MODEL", "links": [2]}], "properties": {"Node name for S&R": "LoraLoaderModelOnly", "models": [{"name": "minimax_h3_fl2v_turbo_8step_v1.0_comfyui_bf16.safetensors", "url": "https://huggingface.co/lightx2v/Minimax-h3-Turbo/resolve/main/minimax_h3_fl2v_turbo_8step_v1.0_comfyui_bf16.safetensors", "directory": "loras"}]}, "widgets_values": ["minimax_h3_fl2v_turbo_8step_v1.0_comfyui_bf16.safetensors", 1.0], "title": "Turbo LoRA — bypassed by default, see readme"}, {"id": 7, "type": "LoraLoaderModelOnly", "pos": [500, 1110], "size": [440, 90], "flags": {}, "order": 6, "mode": 0, "inputs": [{"name": "model", "type": "MODEL", "link": 2}, {"name": "lora_name", "type": "COMBO", "link": null, "widget": {"name": "lora_name"}}, {"name": "strength_model", "type": "FLOAT", "link": null, "widget": {"name": "strength_model"}}], "outputs": [{"name": "MODEL", "type": "MODEL", "links": [3]}], "properties": {"Node name for S&R": "LoraLoaderModelOnly"}, "widgets_values": ["h3_photoreal_ph0t0r34l_1024-step00003780.safetensors", 1.0], "title": "LoRA: h3_photoreal_ph0t0r34l_1024-step00003780.safetensors"}, {"id": 8, "type": "MiniMaxH3SigmaShift", "pos": [500, 1140], "size": [300, 110], "flags": {}, "order": 7, "mode": 0, "inputs": [{"name": "model", "type": "MODEL", "link": 3}, {"name": "shift_video", "type": "FLOAT", "link": null, "widget": {"name": "shift_video"}}, {"name": "shift_audio", "type": "FLOAT", "link": null, "widget": {"name": "shift_audio"}}], "outputs": [{"name": "MODEL", "type": "MODEL", "links": [4, 9]}], "properties": {"Node name for S&R": "MiniMaxH3SigmaShift"}, "widgets_values": [6, 3], "title": "Sigma shift"}, {"id": 9, "type": "CLIPLoader", "pos": [500, 1280], "size": [440, 110], "flags": {}, "order": 8, "mode": 0, "inputs": [{"name": "clip_name", "type": "COMBO", "link": null, "widget": {"name": "clip_name"}}, {"name": "type", "type": "COMBO", "link": null, "widget": {"name": "type"}}, {"name": "device", "type": "COMBO", "link": null, "widget": {"name": "device"}}], "outputs": [{"name": "CLIP", "type": "CLIP", "links": [5]}], "properties": {"Node name for S&R": "CLIPLoader", "models": [{"name": "qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors", "url": "https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/text_encoders/qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors", "directory": "text_encoders"}]}, "widgets_values": ["qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors", "minimax", "default"], "title": "MiniMax H3 text encoder"}, {"id": 10, "type": "VAELoader", "pos": [500, 1420], "size": [440, 60], "flags": {}, "order": 9, "mode": 0, "inputs": [{"name": "vae_name", "type": "COMBO", "link": null, "widget": {"name": "vae_name"}}], "outputs": [{"name": "VAE", "type": "VAE", "links": [6, 17]}], "properties": {"Node name for S&R": "VAELoader", "models": [{"name": "minimax_h3_video_vae_fp16.safetensors", "url": "https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/vae/minimax_h3_video_vae_fp16.safetensors", "directory": "vae"}]}, "widgets_values": ["minimax_h3_video_vae_fp16.safetensors"], "title": "MiniMax H3 video VAE"}, {"id": 11, "type": "VAELoader", "pos": [500, 1510], "size": [440, 60], "flags": {}, "order": 10, "mode": 0, "inputs": [{"name": "vae_name", "type": "COMBO", "link": null, "widget": {"name": "vae_name"}}], "outputs": [{"name": "VAE", "type": "VAE", "links": []}], "properties": {"Node name for S&R": "VAELoader", "models": [{"name": "minimax_h3_audio_vae_fp32.safetensors", "url": "https://huggingface.co/Comfy-Org/MiniMax-H3/resolve/main/vae/minimax_h3_audio_vae_fp32.safetensors", "directory": "vae"}]}, "widgets_values": ["minimax_h3_audio_vae_fp32.safetensors"], "title": "MiniMax H3 audio VAE"}, {"id": 12, "type": "KSamplerSelect", "pos": [500, 1600], "size": [300, 60], "flags": {}, "order": 11, "mode": 0, "inputs": [{"name": "sampler_name", "type": "COMBO", "link": null, "widget": {"name": "sampler_name"}}], "outputs": [{"name": "SAMPLER", "type": "SAMPLER", "links": [13]}], "properties": {"Node name for S&R": "KSamplerSelect"}, "widgets_values": ["res_multistep"], "title": "Sampler (shared)"}, {"id": 13, "type": "BasicScheduler", "pos": [500, 1680], "size": [300, 130], "flags": {}, "order": 12, "mode": 0, "inputs": [{"name": "model", "type": "MODEL", "link": 4}, {"name": "scheduler", "type": "COMBO", "link": null, "widget": {"name": "scheduler"}}, {"name": "steps", "type": "INT", "link": null, "widget": {"name": "steps"}}, {"name": "denoise", "type": "FLOAT", "link": null, "widget": {"name": "denoise"}}], "outputs": [{"name": "SIGMAS", "type": "SIGMAS", "links": [14]}], "properties": {"Node name for S&R": "BasicScheduler"}, "widgets_values": ["simple", 20, 1.0], "title": "Scheduler (20 steps — 8 if turbo LoRA enabled)"}, {"id": 14, "type": "MiniMaxH3ImageToVideo", "pos": [0, -420], "size": [520, 320], "flags": {}, "order": 13, "mode": 0, "inputs": [{"name": "clip", "type": "CLIP", "link": 5}, {"name": "vae", "type": "VAE", "link": 6}, {"name": "first_frame", "type": "IMAGE", "link": null}, {"name": "last_frame", "type": "IMAGE", "link": null}, {"name": "prompt", "type": "STRING", "link": null, "widget": {"name": "prompt"}}, {"name": "width", "type": "INT", "link": 7, "widget": {"name": "width"}}, {"name": "height", "type": "INT", "link": 8, "widget": {"name": "height"}}, {"name": "length", "type": "INT", "link": null, "widget": {"name": "length"}}], "outputs": [{"name": "positive", "type": "CONDITIONING", "links": [10]}, {"name": "LATENT", "type": "LATENT", "links": [15]}], "properties": {"Node name for S&R": "MiniMaxH3ImageToVideo"}, "widgets_values": ["ph0t0r34l, photorealistic style. A close-up portrait of a woman with freckles and green eyes, natural window light, shallow depth of field, sharp focus on the eyes, neutral background. Plain, unbranded clothing and objects: no logos, emblems, brand names, text or watermarks. Camera: static shot.", 1152, 768, 5], "title": "H3 node — prompt and (optionally wired) keyframes"}, {"id": 15, "type": "RandomNoise", "pos": [600, -420], "size": [290, 82], "flags": {}, "order": 14, "mode": 0, "inputs": [{"name": "noise_seed", "type": "INT", "link": null, "widget": {"name": "noise_seed"}}], "outputs": [{"name": "NOISE", "type": "NOISE", "links": [11]}], "properties": {"Node name for S&R": "RandomNoise"}, "widgets_values": [12345, "randomize"], "title": "Seed"}, {"id": 16, "type": "BasicGuider", "pos": [600, -300], "size": [290, 46], "flags": {}, "order": 15, "mode": 0, "inputs": [{"name": "model", "type": "MODEL", "link": 9}, {"name": "conditioning", "type": "CONDITIONING", "link": 10}], "outputs": [{"name": "GUIDER", "type": "GUIDER", "links": [12]}], "properties": {"Node name for S&R": "BasicGuider"}, "widgets_values": [], "title": "Guider"}, {"id": 17, "type": "SamplerCustomAdvanced", "pos": [960, -420], "size": [300, 200], "flags": {}, "order": 16, "mode": 0, "inputs": [{"name": "noise", "type": "NOISE", "link": 11}, {"name": "guider", "type": "GUIDER", "link": 12}, {"name": "sampler", "type": "SAMPLER", "link": 13}, {"name": "sigmas", "type": "SIGMAS", "link": 14}, {"name": "latent_image", "type": "LATENT", "link": 15}], "outputs": [{"name": "LATENT", "type": "LATENT", "links": [16]}], "properties": {"Node name for S&R": "SamplerCustomAdvanced"}, "widgets_values": [], "title": "Sample"}, {"id": 18, "type": "VAEDecode", "pos": [1320, -420], "size": [300, 46], "flags": {}, "order": 17, "mode": 0, "inputs": [{"name": "samples", "type": "LATENT", "link": 16}, {"name": "vae", "type": "VAE", "link": 17}], "outputs": [{"name": "IMAGE", "type": "IMAGE", "links": [18]}], "properties": {"Node name for S&R": "VAEDecode"}, "widgets_values": [], "title": "Decode picture (22-frame clip)"}, {"id": 19, "type": "ImageFromBatch", "pos": [1680, -420], "size": [300, 90], "flags": {}, "order": 18, "mode": 0, "inputs": [{"name": "image", "type": "IMAGE", "link": 18}, {"name": "batch_index", "type": "INT", "link": null, "widget": {"name": "batch_index"}}, {"name": "length", "type": "INT", "link": null, "widget": {"name": "length"}}], "outputs": [{"name": "IMAGE", "type": "IMAGE", "links": [19]}], "properties": {"Node name for S&R": "ImageFromBatch"}, "widgets_values": [2, 1], "title": "Keep frame 2 (middle, not the first)"}, {"id": 20, "type": "SaveImage", "pos": [2020, -420], "size": [280, 60], "flags": {}, "order": 19, "mode": 0, "inputs": [{"name": "images", "type": "IMAGE", "link": 19}, {"name": "filename_prefix", "type": "STRING", "link": null, "widget": {"name": "filename_prefix"}}], "outputs": [], "properties": {"Node name for S&R": "SaveImage"}, "widgets_values": ["Gmanski/gmanski_flow_image"], "title": "Save"}], "links": [[1, 5, 0, 6, 0, "MODEL"], [2, 6, 0, 7, 0, "MODEL"], [3, 7, 0, 8, 0, "MODEL"], [4, 8, 0, 13, 0, "MODEL"], [5, 9, 0, 14, 0, "CLIP"], [6, 10, 0, 14, 1, "VAE"], [7, 4, 0, 14, 5, "INT"], [8, 4, 1, 14, 6, "INT"], [9, 8, 0, 16, 0, "MODEL"], [10, 14, 0, 16, 1, "CONDITIONING"], [11, 15, 0, 17, 0, "NOISE"], [12, 16, 0, 17, 1, "GUIDER"], [13, 12, 0, 17, 2, "SAMPLER"], [14, 13, 0, 17, 3, "SIGMAS"], [15, 14, 1, 17, 4, "LATENT"], [16, 17, 0, 18, 0, "LATENT"], [17, 10, 0, 18, 1, "VAE"], [18, 18, 0, 19, 0, "IMAGE"], [19, 19, 0, 20, 0, "IMAGE"]], "groups": [], "config": {}, "extra": {"ds": {"scale": 0.62, "offset": [1480, 420]}, "gmanski_template": "flow-image", "generator": "scripts/build_gmanski_flow_image_workflow.py", "source": "https://gmanski.com/workflows/flow-image"}, "version": 0.4}