ComfyPilotComfyPilot
工作流 / 视频 / MiniMax H3 Max:FLF2V
MiniMax H3 Max:FLF2V

MiniMax H3 Max:FLF2V

MiniMax H3 Max: FLF2V

使用MiniMax H3 Max生成精致且忠实于提示词的视频,速度超越实时,该模型经过后训练,强化了提示词遵循能力和生动的电影级美学。此工作流支持文生视频、图生视频动画以及定向的首帧到末帧过渡,直接从模型输出干净的构图和连贯的灯光。非常适合快速概念探索、电影级动态图形和高吞吐量视频对比。

视频 16 个节点 2 个输入 34 次使用 ComfyUI ≥ 0.34.3 ComfyUI 20 KB

下载工作流 JSON 查看官方来源

下载后把文件拖进 ComfyUI 窗口即可打开。

节点构成

MarkdownNote × 3
SaveVideo × 2
ComfySwitchNode × 2
PrimitiveBoolean × 2
LoadImage × 2
MinimaxHailuo03ContextIRNode × 1
SaveText × 1
MinimaxHailuo03RegenerateNode × 1
PrimitiveStringMultiline × 1
MinimaxHailuo03FirstLastFrameNode × 1

官方标注的模型

MiniMax H3

工作流 JSON

和上面「下载工作流 JSON」是同一份文件。

1{
2 "id": "c23969d8-7734-4984-ac92-ee71859d3c74",
3 "revision": 0,
4 "last_node_id": 30,
5 "last_link_id": 42,
6 "nodes": [
7 {
8 "id": 2,
9 "type": "SaveVideo",
10 "pos": [
11 -1720,
12 4140
13 ],
14 "size": [
15 740,
16 150
17 ],
18 "flags": {
19 "collapsed": false
20 },
21 "order": 12,
22 "mode": 0,
23 "inputs": [
24 {
25 "name": "video",
26 "type": "VIDEO",
27 "link": 40
28 }
29 ],
30 "outputs": [
31 {
32 "name": "video",
33 "type": "VIDEO",
34 "links": [
35 10
36 ]
37 }
38 ],
39 "properties": [],
40 "widgets_values": [
41 "video/video/MiniMax_H3_flf2v_768P",
42 "auto",
43 "auto",
44 "auto"
45 ]
46 },
47 {
48 "id": 7,
49 "type": "MinimaxHailuo03ContextIRNode",
50 "pos": [
51 -2170,
52 4830
53 ],
54 "size": [
55 400,
56 295
57 ],
58 "flags": [],
59 "order": 8,
60 "mode": 0,
61 "inputs": [
62 {
63 "name": "first_frame",
64 "shape": 7,
65 "type": "IMAGE",
66 "link": null
67 },
68 {
69 "name": "last_frame",
70 "shape": 7,
71 "type": "IMAGE",
72 "link": null
73 },
74 {
75 "name": "model.prompt",
76 "type": "STRING",
77 "widget": {
78 "name": "model.prompt"
79 },
80 "link": 22
81 },
82 {
83 "label": "image_1",
84 "name": "model.reference_images.image_1",
85 "shape": 7,
86 "type": "IMAGE",
87 "link": null
88 },
89 {
90 "label": "video_1",
91 "name": "model.reference_videos.video_1",
92 "shape": 7,
93 "type": "VIDEO",
94 "link": null
95 },
96 {
97 "label": "audio_1",
98 "name": "model.reference_audios.audio_1",
99 "shape": 7,
100 "type": "AUDIO",
101 "link": null
102 }
103 ],
104 "outputs": [
105 {
106 "name": "STRING",
107 "type": "STRING",
108 "links": [
109 17
110 ]
111 }
112 ],
113 "properties": {
114 "Node name for S&R": "MinimaxHailuo03ContextIRNode"
115 },
116 "widgets_values": [
117 "MiniMax H3",
118 "",
119 5,
120 "adaptive"
121 ],
122 "color": "#432",
123 "bgcolor": "#653"
124 },
125 {
126 "id": 8,
127 "type": "SaveText",
128 "pos": [
129 -1710,
130 4830
131 ],
132 "size": [
133 750,
134 650
135 ],
136 "flags": [],
137 "order": 10,
138 "mode": 0,
139 "inputs": [
140 {
141 "name": "text",
142 "type": "STRING",
143 "link": 23
144 }
145 ],
146 "outputs": [
147 {
148 "name": "text",
149 "type": "STRING",
150 "links": [
151 12
152 ]
153 }
154 ],
155 "properties": {
156 "Node name for S&R": "SaveText"
157 },
158 "widgets_values": [
159 "H3_prompt",
160 "txt"
161 ]
162 },
163 {
164 "id": 10,
165 "type": "MinimaxHailuo03RegenerateNode",
166 "pos": [
167 -830,
168 4570
169 ],
170 "size": [
171 400,
172 306
173 ],
174 "flags": [],
175 "order": 13,
176 "mode": 0,
177 "inputs": [
178 {
179 "name": "video",
180 "type": "VIDEO",
181 "link": 10
182 },
183 {
184 "name": "first_frame",
185 "shape": 7,
186 "type": "IMAGE",
187 "link": null
188 },
189 {
190 "name": "last_frame",
191 "shape": 7,
192 "type": "IMAGE",
193 "link": null
194 },
195 {
196 "name": "model.prompt",
197 "type": "STRING",
198 "widget": {
199 "name": "model.prompt"
200 },
201 "link": 12
202 },
203 {
204 "label": "image_1",
205 "name": "model.reference_images.image_1",
206 "shape": 7,
207 "type": "IMAGE",
208 "link": null
209 },
210 {
211 "label": "video_1",
212 "name": "model.reference_videos.video_1",
213 "shape": 7,
214 "type": "VIDEO",
215 "link": null
216 },
217 {
218 "label": "audio_1",
219 "name": "model.reference_audios.audio_1",
220 "shape": 7,
221 "type": "AUDIO",
222 "link": null
223 }
224 ],
225 "outputs": [
226 {
227 "name": "VIDEO",
228 "type": "VIDEO",
229 "links": [
230 18
231 ]
232 }
233 ],
234 "properties": {
235 "Node name for S&R": "MinimaxHailuo03RegenerateNode"
236 },
237 "widgets_values": [
238 "MiniMax H3",
239 "",
240 "2K",
241 false
242 ],
243 "color": "#432",
244 "bgcolor": "#653"
245 },
246 {
247 "id": 11,
248 "type": "SaveVideo",
249 "pos": [
250 -350,
251 4570
252 ],
253 "size": [
254 680,
255 150
256 ],
257 "flags": [],
258 "order": 15,
259 "mode": 0,
260 "inputs": [
261 {
262 "name": "video",
263 "type": "VIDEO",
264 "link": 20
265 }
266 ],
267 "outputs": [
268 {
269 "name": "video",
270 "type": "VIDEO",
271 "links": []
272 }
273 ],
274 "properties": [],
275 "widgets_values": [
276 "video/Minimax_h3_max",
277 "auto",
278 "auto",
279 "auto"
280 ]
281 },
282 {
283 "id": 12,
284 "type": "ComfySwitchNode",
285 "pos": [
286 -2100,
287 5340
288 ],
289 "size": [
290 270,
291 110
292 ],
293 "flags": [],
294 "order": 9,
295 "mode": 0,
296 "inputs": [
297 {
298 "name": "on_false",
299 "type": "STRING",
300 "link": 21
301 },
302 {
303 "name": "on_true",
304 "type": "STRING",
305 "link": 17
306 },
307 {
308 "name": "switch",
309 "type": "BOOLEAN",
310 "widget": {
311 "name": "switch"
312 },
313 "link": 26
314 }
315 ],
316 "outputs": [
317 {
318 "name": "output",
319 "type": "STRING",
320 "links": [
321 23,
322 42
323 ]
324 }
325 ],
326 "properties": {
327 "Node name for S&R": "ComfySwitchNode"
328 },
329 "widgets_values": [
330 false
331 ],
332 "color": "#322",
333 "bgcolor": "#533"
334 },
335 {
336 "id": 13,
337 "type": "ComfySwitchNode",
338 "pos": [
339 -750,
340 4990
341 ],
342 "size": [
343 270,
344 110
345 ],
346 "flags": [],
347 "order": 14,
348 "mode": 0,
349 "inputs": [
350 {
351 "name": "on_false",
352 "type": "VIDEO",
353 "link": 41
354 },
355 {
356 "name": "on_true",
357 "type": "VIDEO",
358 "link": 18
359 },
360 {
361 "name": "switch",
362 "type": "BOOLEAN",
363 "widget": {
364 "name": "switch"
365 },
366 "link": 25
367 }
368 ],
369 "outputs": [
370 {
371 "name": "output",
372 "type": "VIDEO",
373 "links": [
374 20
375 ]
376 }
377 ],
378 "properties": {
379 "Node name for S&R": "ComfySwitchNode"
380 },
381 "widgets_values": [
382 false
383 ],
384 "color": "#322",
385 "bgcolor": "#533"
386 },
387 {
388 "id": 14,
389 "type": "PrimitiveStringMultiline",
390 "pos": [
391 -2850,
392 4770
393 ],
394 "size": [
395 410,
396 380
397 ],
398 "flags": [],
399 "order": 0,
400 "mode": 0,
401 "inputs": [],
402 "outputs": [
403 {
404 "name": "STRING",
405 "type": "STRING",
406 "links": [
407 21,
408 22
409 ]
410 }
411 ],
412 "title": "Text (Prompt)",
413 "properties": {
414 "Node name for S&R": "PrimitiveStringMultiline"
415 },
416 "widgets_values": [
417 "[Segment 1]\nStyle: dream physics, deep-blue monochrome with a misty diffusion in the glow, shadows keeping faint layers instead of pure black, spatial scale distortion, photoreal texture.\nAction: [0s-1.5s] The projected face breathes with light shifts, dust drifting, his silhouette still; [1.5s-4s] The camera pulls back slowly and the giant face shrinks with it, revealing that this colossal face floats on the wall of a vast bedroom: a projection inside a dream-room, his silhouette standing at the bedside looking up; [4s-8s] The camera keeps pulling back past the room's boundary as the walls curl inward like paper, folding into the darkness of a second dream layer, the giant face shrinking with the curling walls into a floating glowing mask suspended in the void, the man motionless and looking up throughout, the frame ending with the mask hovering directly above him. No text. Camera: one continuous pull-back, slight warping as the space folds, no cuts. Audio: a low drone wrapped in an underwater-feeling muted reverb, paper-like stretching as the space curls, one distant bell.\n\n[Segment 2]\nStyle: same dreamy haze, the blue one shade darker, a deeper dream layer.\nAction: [0s-2s] The glowing mask rotates slowly above him; he raises a hand, and the instant his fingertips near it the whole space collapses in scale: the mask becomes a reflection inside a pupil, his body edge receding into silhouette; [2s-5s] The viewpoint reveals itself as his eye all along: the frame wavers slightly, we have been looking through his pupil, the blue iris texture rings into view at the frame's edge; [5s-8s] The giant face in the pupil breathes once with light, the dream begins to dissolve: the image tears slightly like a bad signal, the reflection flickers twice, locking finally on the extreme eye close-up, a deeper blue surfacing slowly in the depths of the iris. No text. Camera: an objective view snapping into pupil-POV, the switch made through a slight signal-tear, no cuts. Audio: a heartbeat approaching to become the main beat, one falling bass note as the mask shrinks, signal noise through the tear, every sound sucked away on the last beat leaving a faint ringing in the ears.\n\n[Shared]\nDreamy haze over the blue monochrome, faint layers in the shadows, photoreal texture, spatial scale distorting with each dream layer. Negative: no water ripples, no third-person frontal face, no color shift away from the blue monochrome, no text overlays, no subtitles, no dissolve transitions, no extra light sources, no logo."
418 ]
419 },
420 {
421 "id": 17,
422 "type": "MarkdownNote",
423 "pos": [
424 -3800,
425 4090
426 ],
427 "size": [
428 580,
429 1220
430 ],
431 "flags": [],
432 "order": 1,
433 "mode": 0,
434 "inputs": [],
435 "outputs": [],
436 "title": "Note: Guide",
437 "properties": [],
438 "widgets_values": [
439 "## How this graph is wired\n\nThis is a MiniMax H3 Max **first-last-frame to video** template. It has **one required path** and **two optional stages**. You choose whether to run the optional stages. Both start **off**.\n\nOn the canvas, two nodes are marked **red**. Those are **Switch** nodes. Each is the on/off gate for an optional stage, driven by a boolean in the **Feature Flags** group.\n\n### 1. Video generation (required)\n\n**MiniMax H3 First-Last-Frame to Video** is the core. It always runs. Feed it **Text (Prompt)**, **Load Image (First Frame)**, and **Load Image (Last Frame)**. The first **Save Video** is the first-pass output.\n\n### 2. Prompt enhance (optional)\n\n**Boolean (Prompt Enhance)** feeds the red **Switch** in **Prompt Enhancer (Optional)**.\n\n- Set it to `true` to rewrite the prompt with **MiniMax H3 Context IR (Prompt Enhancer)** before generation.\n- Leave it `false` to send your raw prompt straight to video generation.\n\n### 3. Video upscale (optional)\n\n**Boolean (Upscale to 2K)** feeds the red **Switch** in **Upscale Video to 2K (Optional)**.\n\n- Set it to `true` to run **MiniMax H3 Regenerate to 2K** on the first-pass video.\n- Leave it `false` to save the first-pass video as-is.\n\nUpscale **only accepts 768P** source video. If you turn this stage on, generate at **768P**. Other resolutions are not supported by **MiniMax H3 Regenerate to 2K**.\n\nYou can enable section 2, section 3, both, or neither.\n\n### Duration must match\n\nKeep **duration** the same on every MiniMax node you actually use (generation, prompt enhance, and upscale). The clip length must match across those stages. If one node is 5s and another is 6s, enhance or upscale will be out of sync with the generated video.\n\n### Extra inputs must be duplicated\n\nThe generate node, the prompt-enhance node, and the upscale node do **not** share extra context automatically.\n\n**Load Image (First Frame)** and **Load Image (Last Frame)** are already wired into generation. If you turn on prompt enhance or upscale, **also plug those same two images** (and any other extra inputs you add: another image, a reference video, audio) into:\n\n- **MiniMax H3 Context IR (Prompt Enhancer)**, so prompt enhance sees the same frames and references\n- **MiniMax H3 Regenerate to 2K**, so upscale sees the same frames and references\n\nIf you only wire extras into generation, enhance and upscale will run without that context and the result will drift."
440 ],
441 "color": "#222",
442 "bgcolor": "#000"
443 },
444 {
445 "id": 18,
446 "type": "PrimitiveBoolean",
447 "pos": [
448 -2790,
449 5270
450 ],
451 "size": [
452 270,
453 90
454 ],
455 "flags": [],
456 "order": 2,
457 "mode": 0,
458 "inputs": [],
459 "outputs": [
460 {
461 "name": "BOOLEAN",
462 "type": "BOOLEAN",
463 "links": [
464 26
465 ]
466 }
467 ],
468 "title": "Boolean (Prompt Enhance)",
469 "properties": {
470 "Node name for S&R": "PrimitiveBoolean"
471 },
472 "widgets_values": [
473 false
474 ]
475 },
476 {
477 "id": 19,
478 "type": "PrimitiveBoolean",
479 "pos": [
480 -2790,
481 5420
482 ],
483 "size": [
484 270,
485 90
486 ],
487 "flags": [],
488 "order": 3,
489 "mode": 0,
490 "inputs": [],
491 "outputs": [
492 {
493 "name": "BOOLEAN",
494 "type": "BOOLEAN",
495 "links": [
496 25
497 ]
498 }
499 ],
500 "title": "Boolean (Upscale to 2K)",
501 "properties": {
502 "Node name for S&R": "PrimitiveBoolean"
503 },
504 "widgets_values": [
505 false
506 ]
507 },
508 {
509 "id": 21,
510 "type": "MarkdownNote",
511 "pos": [
512 -3150,
513 5430
514 ],
515 "size": [
516 290,
517 120
518 ],
519 "flags": [],
520 "order": 4,
521 "mode": 0,
522 "inputs": [],
523 "outputs": [],
524 "title": "Note: Requirement for Video Upscale",
525 "properties": [],
526 "widgets_values": [
527 "Upscale only accepts **768P** source video. Generate at 768P if you turn on **Boolean (Upscale to 2K)**. Other resolutions are not supported."
528 ],
529 "color": "#222",
530 "bgcolor": "#000"
531 },
532 {
533 "id": 27,
534 "type": "MarkdownNote",
535 "pos": [
536 -4170,
537 4090
538 ],
539 "size": [
540 320,
541 370
542 ],
543 "flags": [],
544 "order": 5,
545 "mode": 0,
546 "inputs": [],
547 "outputs": [],
548 "properties": [],
549 "widgets_values": [
550 "## Input Assets\n\n- [dream_face_first.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/dream_face_first.png)\n- [dream_face_last.png](https://raw.githubusercontent.com/Comfy-Org/workflow_templates/refs/heads/main/input/dream_face_last.png)\n\n\n## Report Issue\n\nNote: Please update ComfyUI first ([guide](https://docs.comfy.org/installation/update_comfyui)) and prepare required models. Desktop/Cloud updates follow stable releases, so some nightly-supported models may not be available yet.\n\n- Cannot run / runtime errors: [ComfyUI/issues](https://github.com/comfyanonymous/ComfyUI/issues)\n- UI / frontend issues: [ComfyUI_frontend/issues](https://github.com/Comfy-Org/ComfyUI_frontend/issues)\n- Workflow issues: [workflow_templates/issues](https://github.com/Comfy-Org/workflow_templates/issues)\n"
551 ],
552 "color": "#222",
553 "bgcolor": "#000"
554 },
555 {
556 "id": 28,
557 "type": "LoadImage",
558 "pos": [
559 -3050,
560 4240
561 ],
562 "size": [
563 290,
564 380
565 ],
566 "flags": [],
567 "order": 6,
568 "mode": 0,
569 "inputs": [],
570 "outputs": [
571 {
572 "name": "IMAGE",
573 "type": "IMAGE",
574 "links": [
575 38
576 ]
577 },
578 {
579 "name": "MASK",
580 "type": "MASK",
581 "links": null
582 }
583 ],
584 "title": "Load Image (First Frame)",
585 "properties": {
586 "Node name for S&R": "LoadImage"
587 },
588 "widgets_values": [
589 "dream_face_first.png",
590 "image"
591 ]
592 },
593 {
594 "id": 29,
595 "type": "LoadImage",
596 "pos": [
597 -2670,
598 4240
599 ],
600 "size": [
601 290,
602 380
603 ],
604 "flags": [],
605 "order": 7,
606 "mode": 0,
607 "inputs": [],
608 "outputs": [
609 {
610 "name": "IMAGE",
611 "type": "IMAGE",
612 "links": [
613 39
614 ]
615 },
616 {
617 "name": "MASK",
618 "type": "MASK",
619 "links": null
620 }
621 ],
622 "title": "Load Image (Last Frame)",
623 "properties": {
624 "Node name for S&R": "LoadImage"
625 },
626 "widgets_values": [
627 "dream_face_last.png",
628 "image"
629 ]
630 },
631 {
632 "id": 30,
633 "type": "MinimaxHailuo03FirstLastFrameNode",
634 "pos": [
635 -2160,
636 4140
637 ],
638 "size": [
639 400,
640 315
641 ],
642 "flags": [],
643 "order": 11,
644 "mode": 0,
645 "inputs": [
646 {
647 "name": "first_frame",
648 "type": "IMAGE",
649 "link": 38
650 },
651 {
652 "name": "last_frame",
653 "shape": 7,
654 "type": "IMAGE",
655 "link": 39
656 },
657 {
658 "name": "model.prompt",
659 "type": "STRING",
660 "widget": {
661 "name": "model.prompt"
662 },
663 "link": 42
664 }
665 ],
666 "outputs": [
667 {
668 "name": "VIDEO",
669 "type": "VIDEO",
670 "links": [
671 40,
672 41
673 ]
674 }
675 ],
676 "properties": {
677 "Node name for S&R": "MinimaxHailuo03FirstLastFrameNode"
678 },
679 "widgets_values": [
680 "MiniMax H3 Max",
681 "",
682 "768P",
683 5,
684 "balanced",
685 4098290433,
686 "randomize",
687 false
688 ],
689 "color": "#432",
690 "bgcolor": "#653"
691 }
692 ],
693 "links": [
694 [
695 10,
696 2,
697 0,
698 10,
699 0,
700 "VIDEO"
701 ],
702 [
703 12,
704 8,
705 0,
706 10,
707 3,
708 "STRING"
709 ],
710 [
711 17,
712 7,
713 0,
714 12,
715 1,
716 "STRING"
717 ],
718 [
719 18,
720 10,
721 0,
722 13,
723 1,
724 "VIDEO"
725 ],
726 [
727 20,
728 13,
729 0,
730 11,
731 0,
732 "VIDEO"
733 ],
734 [
735 21,
736 14,
737 0,
738 12,
739 0,
740 "STRING"
741 ],
742 [
743 22,
744 14,
745 0,
746 7,
747 2,
748 "STRING"
749 ],
750 [
751 23,
752 12,
753 0,
754 8,
755 0,
756 "STRING"
757 ],
758 [
759 25,
760 19,
761 0,
762 13,
763 2,
764 "BOOLEAN"
765 ],
766 [
767 26,
768 18,
769 0,
770 12,
771 2,
772 "BOOLEAN"
773 ],
774 [
775 38,
776 28,
777 0,
778 30,
779 0,
780 "IMAGE"
781 ],
782 [
783 39,
784 29,
785 0,
786 30,
787 1,
788 "IMAGE"
789 ],
790 [
791 40,
792 30,
793 0,
794 2,
795 0,
796 "VIDEO"
797 ],
798 [
799 41,
800 30,
801 0,
802 13,
803 0,
804 "VIDEO"
805 ],
806 [
807 42,
808 12,
809 0,
810 30,
811 2,
812 "STRING"
813 ]
814 ],
815 "groups": [
816 {
817 "id": 1,
818 "title": "Prompt Enhancer (Optional)",
819 "bounding": [
820 -2200,
821 4750,
822 1270,
823 840
824 ],
825 "color": "#3f789e",
826 "flags": []
827 },
828 {
829 "id": 2,
830 "title": "User Inputs",
831 "bounding": [
832 -3160,
833 4060,
834 930,
835 1530
836 ],
837 "color": "#3f789e",
838 "flags": []
839 },
840 {
841 "id": 3,
842 "title": "Upscale Video to 2K (Optional)",
843 "bounding": [
844 -900,
845 4060,
846 1400,
847 1540
848 ],
849 "color": "#3f789e",
850 "flags": []
851 },
852 {
853 "id": 4,
854 "title": "Video Generation (Core)",
855 "bounding": [
856 -2200,
857 4060,
858 1270,
859 670
860 ],
861 "color": "#A88",
862 "flags": []
863 },
864 {
865 "id": 5,
866 "title": "Feature Flags",
867 "bounding": [
868 -2830,
869 5190,
870 350,
871 360
872 ],
873 "color": "#3f789e",
874 "flags": []
875 }
876 ],
877 "config": [],
878 "extra": {
879 "ds": {
880 "scale": 0.41796234378041897,
881 "offset": [
882 5039.365316545466,
883 -3387.185857562766
884 ]
885 },
886 "frontendVersion": "1.48.7"
887 },
888 "version": 0.4
889}