"""Submit a matched Comfy FL2VA first/last-frame reference workflow.""" import argparse import json from urllib.request import Request, urlopen parser = argparse.ArgumentParser() parser.add_argument("--url", default="http://localhost:8188") parser.add_argument("--first", default="fl2va_key_first.png") parser.add_argument("--last", default="fl2va_key_last.png") parser.add_argument("--prefix", default="fl2va-comfy-keyframes-seed440207") args = parser.parse_args() prompt = { "1": {"class_type": "UNETLoader", "inputs": {"unet_name": "minimax_h3_fl2va_pruned_nvfp4.safetensors", "weight_dtype": "default"}}, "3": {"class_type": "CLIPLoader", "inputs": {"clip_name": "qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors", "type": "minimax"}}, "4": {"class_type": "VAELoader", "inputs": {"vae_name": "minimax_h3_video_vae_fp16.safetensors"}}, "5": {"class_type": "LoadImage", "inputs": {"image": args.first}}, "6": {"class_type": "LoadImage", "inputs": {"image": args.last}}, "8": {"class_type": "MiniMaxH3ImageToVideo", "inputs": { "clip": ["3", 0], "vae": ["4", 0], "prompt": "A studio time-lapse of the same pink peony bud opening into the same fully bloomed pink peony, fixed camera, cream background.", "width": 384, "height": 384, "length": 22, "first_frame": ["5", 0], "last_frame": ["6", 0], }}, "9": {"class_type": "BasicGuider", "inputs": {"model": ["1", 0], "conditioning": ["8", 0]}}, "10": {"class_type": "RandomNoise", "inputs": {"noise_seed": 440207}}, "11": {"class_type": "KSamplerSelect", "inputs": {"sampler_name": "res_multistep"}}, "12": {"class_type": "BasicScheduler", "inputs": {"model": ["1", 0], "scheduler": "beta", "steps": 12, "denoise": 1.0}}, "13": {"class_type": "SamplerCustomAdvanced", "inputs": {"noise": ["10", 0], "guider": ["9", 0], "sampler": ["11", 0], "sigmas": ["12", 0], "latent_image": ["8", 1]}}, "14": {"class_type": "VAEDecode", "inputs": {"samples": ["13", 0], "vae": ["4", 0]}}, "15": {"class_type": "SaveImage", "inputs": {"images": ["14", 0], "filename_prefix": args.prefix}}, } request = Request( args.url.rstrip("/") + "/prompt", data=json.dumps({"prompt": prompt}).encode(), headers={"Content-Type": "application/json"}, ) with urlopen(request) as response: print(response.read().decode())