工作流 /
角色与时尚 /
Seedance 2.0: Viral Videos Character Swap

Seedance 2.0: Viral Videos Character Swap
Seedance 2.0: Viral Videos Character Swap
一个一键工作流,用您的角色重新创建输入视频。您只需上传视频和您的角色。此工作流使用Google Gemini LLM分析输入视频并逆向工程生成提示词。您可以提示注入此分析的具体详情。该工作流提取视频的首帧并将您的角色替换到其中,将其发送到Seedance 2.0参考生视频并生成
角色与时尚
12 个节点 2 个输入 26 次使用 ComfyUI ≥ 0.35.2 hellorob 29 KB
节点构成
LoadVideo
× 1
PreviewAny
× 1
Video Slice
× 1
OpenAIGPTImageNodeV2
× 1
ImageFromBatch
× 1
GetVideoComponents
× 1
LoadImage
× 1
SaveVideo
× 1
SaveImage
× 1
StringConcatenate
× 1
ByteDance2ReferenceNodeV2
× 1
GeminiNodeV3
× 1
官方标注的模型
GPT Image 2Google GeminiSeedance 2.0
工作流 JSON
和上面「下载工作流 JSON」是同一份文件。
1{
2 "id": "f002ee1a-4648-4bf4-aaa2-edc8adc2940d",
3 "revision": 0,
4 "last_node_id": 301,
5 "last_link_id": 440,
6 "nodes": [
7 {
8 "id": 18,
9 "type": "LoadVideo",
10 "pos": [
11 30,
12 950
13 ],
14 "size": [
15 360,
16 430
17 ],
18 "flags": [],
19 "order": 0,
20 "mode": 0,
21 "inputs": [],
22 "outputs": [
23 {
24 "name": "VIDEO",
25 "type": "VIDEO",
26 "links": [
27 22
28 ]
29 }
30 ],
31 "properties": {
32 "Node name for S&R": "LoadVideo",
33 "cnr_id": "comfy-core",
34 "ver": "0.21.1",
35 "enableTabs": false,
36 "tabWidth": 65,
37 "tabXOffset": 10,
38 "hasSecondTab": false,
39 "secondTabText": "Send Back",
40 "secondTabOffset": 80,
41 "secondTabWidth": 65
42 },
43 "widgets_values": [
44 "source_ref_video.mp4",
45 "image"
46 ],
47 "widgets_values_named": {
48 "file": "source_ref_video.mp4",
49 "upload": "image"
50 }
51 },
52 {
53 "id": 22,
54 "type": "PreviewAny",
55 "pos": [
56 1420,
57 1320
58 ],
59 "size": [
60 420,
61 510
62 ],
63 "flags": [],
64 "order": 6,
65 "mode": 0,
66 "inputs": [
67 {
68 "name": "source",
69 "type": "*",
70 "link": 438
71 }
72 ],
73 "outputs": [
74 {
75 "name": "STRING",
76 "type": "STRING",
77 "links": [
78 425
79 ]
80 }
81 ],
82 "title": "Preview Prompt",
83 "properties": {
84 "Node name for S&R": "PreviewAny",
85 "cnr_id": "comfy-core",
86 "ver": "0.21.1",
87 "enableTabs": false,
88 "tabWidth": 65,
89 "tabXOffset": 10,
90 "hasSecondTab": false,
91 "secondTabText": "Send Back",
92 "secondTabOffset": 80,
93 "secondTabWidth": 65
94 },
95 "widgets_values": [],
96 "widgets_values_named": []
97 },
98 {
99 "id": 23,
100 "type": "Video Slice",
101 "pos": [
102 440,
103 1310
104 ],
105 "size": [
106 270,
107 170
108 ],
109 "flags": [],
110 "order": 2,
111 "mode": 0,
112 "inputs": [
113 {
114 "name": "video",
115 "type": "VIDEO",
116 "link": 22
117 }
118 ],
119 "outputs": [
120 {
121 "name": "VIDEO",
122 "type": "VIDEO",
123 "links": [
124 27,
125 439
126 ]
127 }
128 ],
129 "properties": {
130 "Node name for S&R": "Video Slice",
131 "cnr_id": "comfy-core",
132 "ver": "0.21.1",
133 "enableTabs": false,
134 "tabWidth": 65,
135 "tabXOffset": 10,
136 "hasSecondTab": false,
137 "secondTabText": "Send Back",
138 "secondTabOffset": 80,
139 "secondTabWidth": 65
140 },
141 "widgets_values": [
142 0,
143 15,
144 false
145 ],
146 "widgets_values_named": {
147 "start_time": 0,
148 "duration": 15,
149 "strict_duration": false
150 }
151 },
152 {
153 "id": 26,
154 "type": "OpenAIGPTImageNodeV2",
155 "pos": [
156 980,
157 690
158 ],
159 "size": [
160 400,
161 409.84375
162 ],
163 "flags": [],
164 "order": 7,
165 "mode": 0,
166 "inputs": [
167 {
168 "name": "model.images.image_1",
169 "shape": 7,
170 "type": "IMAGE",
171 "link": 29
172 },
173 {
174 "name": "model.images.image_2",
175 "shape": 7,
176 "type": "IMAGE",
177 "link": 424
178 },
179 {
180 "name": "model.images.image_3",
181 "shape": 7,
182 "type": "IMAGE",
183 "link": null
184 },
185 {
186 "name": "model.mask",
187 "shape": 7,
188 "type": "MASK",
189 "link": null
190 }
191 ],
192 "outputs": [
193 {
194 "name": "IMAGE",
195 "type": "IMAGE",
196 "links": [
197 420,
198 434
199 ]
200 }
201 ],
202 "properties": {
203 "Node name for S&R": "OpenAIGPTImageNodeV2",
204 "cnr_id": "comfy-core",
205 "ver": "0.21.1",
206 "enableTabs": false,
207 "tabWidth": 65,
208 "tabXOffset": 10,
209 "hasSecondTab": false,
210 "secondTabText": "Send Back",
211 "secondTabOffset": 80,
212 "secondTabWidth": 65
213 },
214 "widgets_values": [
215 "Swap the subject from @image_2 into @image_1. Maintain the outfit and pose of the character from @image_2 ",
216 "gpt-image-2",
217 "auto",
218 1024,
219 1024,
220 "auto",
221 "medium",
222 1,
223 746198683,
224 "randomize"
225 ],
226 "widgets_values_named": {
227 "prompt": "Swap the subject from @image_2 into @image_1. Maintain the outfit and pose of the character from @image_2 ",
228 "model": "gpt-image-2",
229 "model.size": "auto",
230 "model.custom_width": 1024,
231 "model.custom_height": 1024,
232 "model.background": "auto",
233 "model.quality": "medium",
234 "n": 1,
235 "seed": 746198683,
236 "control_after_generate": "randomize"
237 },
238 "color": "#432",
239 "bgcolor": "#653"
240 },
241 {
242 "id": 27,
243 "type": "ImageFromBatch",
244 "pos": [
245 440,
246 930
247 ],
248 "size": [
249 270,
250 140
251 ],
252 "flags": {
253 "collapsed": false
254 },
255 "order": 5,
256 "mode": 0,
257 "inputs": [
258 {
259 "name": "image",
260 "type": "IMAGE",
261 "link": 28
262 }
263 ],
264 "outputs": [
265 {
266 "name": "IMAGE",
267 "type": "IMAGE",
268 "links": [
269 29
270 ]
271 }
272 ],
273 "title": "Get Frame from Video",
274 "properties": {
275 "Node name for S&R": "ImageFromBatch",
276 "cnr_id": "comfy-core",
277 "ver": "0.21.1",
278 "enableTabs": false,
279 "tabWidth": 65,
280 "tabXOffset": 10,
281 "hasSecondTab": false,
282 "secondTabText": "Send Back",
283 "secondTabOffset": 80,
284 "secondTabWidth": 65
285 },
286 "widgets_values": [
287 0,
288 1
289 ],
290 "widgets_values_named": {
291 "batch_index": 0,
292 "length": 1
293 }
294 },
295 {
296 "id": 28,
297 "type": "GetVideoComponents",
298 "pos": [
299 440,
300 1120
301 ],
302 "size": [
303 270,
304 137.96875
305 ],
306 "flags": [],
307 "order": 3,
308 "mode": 0,
309 "inputs": [
310 {
311 "name": "video",
312 "type": "VIDEO",
313 "link": 27
314 }
315 ],
316 "outputs": [
317 {
318 "name": "images",
319 "type": "IMAGE",
320 "links": [
321 28
322 ]
323 },
324 {
325 "name": "audio",
326 "type": "AUDIO",
327 "links": null
328 },
329 {
330 "name": "fps",
331 "type": "FLOAT",
332 "links": null
333 },
334 {
335 "name": "bit_depth",
336 "type": "COMBO",
337 "links": null
338 },
339 {
340 "name": "color_space",
341 "type": "COMBO",
342 "links": null
343 }
344 ],
345 "properties": {
346 "Node name for S&R": "GetVideoComponents",
347 "cnr_id": "comfy-core",
348 "ver": "0.21.1",
349 "enableTabs": false,
350 "tabWidth": 65,
351 "tabXOffset": 10,
352 "hasSecondTab": false,
353 "secondTabText": "Send Back",
354 "secondTabOffset": 80,
355 "secondTabWidth": 65
356 }
357 },
358 {
359 "id": 29,
360 "type": "LoadImage",
361 "pos": [
362 -330,
363 950
364 ],
365 "size": [
366 320,
367 430
368 ],
369 "flags": [],
370 "order": 1,
371 "mode": 0,
372 "inputs": [],
373 "outputs": [
374 {
375 "name": "IMAGE",
376 "type": "IMAGE",
377 "links": [
378 424,
379 435,
380 440
381 ]
382 },
383 {
384 "name": "MASK",
385 "type": "MASK",
386 "links": null
387 }
388 ],
389 "title": "Load Character Image",
390 "properties": {
391 "Node name for S&R": "LoadImage",
392 "cnr_id": "comfy-core",
393 "ver": "0.21.1",
394 "enableTabs": false,
395 "tabWidth": 65,
396 "tabXOffset": 10,
397 "hasSecondTab": false,
398 "secondTabText": "Send Back",
399 "secondTabOffset": 80,
400 "secondTabWidth": 65
401 },
402 "widgets_values": [
403 "virtual_character_ref.png",
404 "image"
405 ],
406 "widgets_values_named": {
407 "image": "virtual_character_ref.png",
408 "upload": "image"
409 }
410 },
411 {
412 "id": 282,
413 "type": "SaveVideo",
414 "pos": [
415 2330,
416 690
417 ],
418 "size": [
419 460,
420 149.90625
421 ],
422 "flags": [],
423 "order": 11,
424 "mode": 0,
425 "inputs": [
426 {
427 "name": "video",
428 "type": "VIDEO",
429 "link": 437
430 }
431 ],
432 "outputs": [
433 {
434 "name": "video",
435 "type": "VIDEO",
436 "links": null
437 }
438 ],
439 "properties": {
440 "Node name for S&R": "SaveVideo",
441 "cnr_id": "comfy-core",
442 "ver": "0.21.1",
443 "enableTabs": false,
444 "tabWidth": 65,
445 "tabXOffset": 10,
446 "hasSecondTab": false,
447 "secondTabText": "Send Back",
448 "secondTabOffset": 80,
449 "secondTabWidth": 65
450 },
451 "widgets_values": [
452 "video",
453 "auto",
454 "auto",
455 "auto"
456 ],
457 "widgets_values_named": {
458 "filename_prefix": "video",
459 "format": "auto",
460 "format.codec": "auto",
461 "codec": "auto"
462 }
463 },
464 {
465 "id": 295,
466 "type": "SaveImage",
467 "pos": [
468 1430,
469 690
470 ],
471 "size": [
472 370,
473 340
474 ],
475 "flags": [],
476 "order": 9,
477 "mode": 0,
478 "inputs": [
479 {
480 "name": "images",
481 "type": "IMAGE",
482 "link": 420
483 }
484 ],
485 "outputs": [
486 {
487 "name": "images",
488 "type": "IMAGE",
489 "links": null
490 }
491 ],
492 "properties": {
493 "Node name for S&R": "SaveImage",
494 "cnr_id": "comfy-core",
495 "ver": "0.21.1",
496 "enableTabs": false,
497 "tabWidth": 65,
498 "tabXOffset": 10,
499 "hasSecondTab": false,
500 "secondTabText": "Send Back",
501 "secondTabOffset": 80,
502 "secondTabWidth": 65
503 },
504 "widgets_values": [
505 "gpt-image-2_character_swap"
506 ],
507 "widgets_values_named": {
508 "filename_prefix": "gpt-image-2_character_swap"
509 }
510 },
511 {
512 "id": 297,
513 "type": "StringConcatenate",
514 "pos": [
515 1870,
516 1320
517 ],
518 "size": [
519 300,
520 270
521 ],
522 "flags": {
523 "collapsed": false
524 },
525 "order": 8,
526 "mode": 0,
527 "inputs": [
528 {
529 "name": "string_b",
530 "type": "STRING",
531 "widget": {
532 "name": "string_b"
533 },
534 "link": 425
535 }
536 ],
537 "outputs": [
538 {
539 "name": "STRING",
540 "type": "STRING",
541 "links": [
542 436
543 ]
544 }
545 ],
546 "title": "Create Prompt",
547 "properties": {
548 "Node name for S&R": "StringConcatenate",
549 "cnr_id": "comfy-core",
550 "ver": "0.21.1",
551 "enableTabs": false,
552 "tabWidth": 65,
553 "tabXOffset": 10,
554 "hasSecondTab": false,
555 "secondTabText": "Send Back",
556 "secondTabOffset": 80,
557 "secondTabWidth": 65
558 },
559 "widgets_values": [
560 "Use @image_1 as a start frame. Reference @image_2 for the full body shots of the character.",
561 "",
562 ". "
563 ],
564 "widgets_values_named": {
565 "string_a": "Use @image_1 as a start frame. Reference @image_2 for the full body shots of the character.",
566 "string_b": "",
567 "delimiter": ". "
568 }
569 },
570 {
571 "id": 300,
572 "type": "ByteDance2ReferenceNodeV2",
573 "pos": [
574 1880,
575 690
576 ],
577 "size": [
578 400,
579 450.515625
580 ],
581 "flags": [],
582 "order": 10,
583 "mode": 0,
584 "showAdvanced": false,
585 "inputs": [
586 {
587 "name": "model.prompt",
588 "type": "STRING",
589 "widget": {
590 "name": "model.prompt"
591 },
592 "link": 436
593 },
594 {
595 "name": "model.reference_images.image_1",
596 "shape": 7,
597 "type": "IMAGE",
598 "link": 434
599 },
600 {
601 "name": "model.reference_images.image_2",
602 "shape": 7,
603 "type": "IMAGE",
604 "link": 435
605 },
606 {
607 "name": "model.reference_images.image_3",
608 "shape": 7,
609 "type": "IMAGE",
610 "link": null
611 },
612 {
613 "name": "model.reference_videos.video_1",
614 "shape": 7,
615 "type": "VIDEO",
616 "link": null
617 },
618 {
619 "name": "model.reference_audios.audio_1",
620 "shape": 7,
621 "type": "AUDIO",
622 "link": null
623 },
624 {
625 "name": "model.reference_assets.asset_1",
626 "shape": 7,
627 "type": "STRING",
628 "link": null
629 }
630 ],
631 "outputs": [
632 {
633 "name": "VIDEO",
634 "type": "VIDEO",
635 "links": [
636 437
637 ]
638 }
639 ],
640 "properties": {
641 "Node name for S&R": "ByteDance2ReferenceNodeV2"
642 },
643 "widgets_values": [
644 "Seedance 2.0",
645 "",
646 "720p",
647 "16:9",
648 7,
649 true,
650 false,
651 false,
652 0,
653 "randomize",
654 false
655 ],
656 "widgets_values_named": {
657 "model": "Seedance 2.0",
658 "model.prompt": "",
659 "model.resolution": "720p",
660 "model.ratio": "16:9",
661 "model.duration": 7,
662 "model.generate_audio": true,
663 "model.auto_downscale": false,
664 "model.auto_upscale": false,
665 "seed": 0,
666 "control_after_generate": "randomize",
667 "watermark": false
668 },
669 "color": "#432",
670 "bgcolor": "#653"
671 },
672 {
673 "id": 301,
674 "type": "GeminiNodeV3",
675 "pos": [
676 990,
677 1320
678 ],
679 "size": [
680 400,
681 437.859375
682 ],
683 "flags": [],
684 "order": 4,
685 "mode": 0,
686 "showAdvanced": true,
687 "inputs": [
688 {
689 "name": "model.images.image_1",
690 "shape": 7,
691 "type": "IMAGE",
692 "link": 440
693 },
694 {
695 "name": "model.images.image_2",
696 "shape": 7,
697 "type": "IMAGE",
698 "link": null
699 },
700 {
701 "name": "model.audio.audio_1",
702 "shape": 7,
703 "type": "AUDIO",
704 "link": null
705 },
706 {
707 "name": "model.video.video_1",
708 "shape": 7,
709 "type": "VIDEO",
710 "link": 439
711 },
712 {
713 "name": "model.files",
714 "shape": 7,
715 "type": "GEMINI_INPUT_FILES",
716 "link": null
717 }
718 ],
719 "outputs": [
720 {
721 "name": "STRING",
722 "type": "STRING",
723 "links": [
724 438
725 ]
726 }
727 ],
728 "properties": {
729 "Node name for S&R": "GeminiNodeV3"
730 },
731 "widgets_values": [
732 "Gemini 3.8 Flash",
733 "Follow the system instructions: The main subject is a rubberhose animation character from @image_1. Extra emphasis on the rubberhose animated movement of the character while playing soccer. The rest of the scene is grounded in realism.",
734 "agentic",
735 "MEDIUM",
736 32768,
737 42,
738 "randomize",
739 "SYSTEM PROMPT: HYPER-GRANULAR VIDEO ANALYSIS\nROLE:\nYou are an expert cinematographer, visual analyst, and motion-mechanics describer. Your job is to break down video clips into insanely detailed, hyper-granular, frame-by-frame text descriptions.\nOBJECTIVE:\nTranslate the provided video/sequence into a vivid, kinetic text breakdown. You must capture the exact physical mechanics, the pacing, the micro-expressions, the physics of momentum, the physical reality of the camera itself, and a complete transcription of all audio and dialogue.\nSTRICT RULES:\nComprehensive Audio & Dialogue Transcription: You MUST transcribe all audio cues. Write out exactly what characters are saying using quotation marks (e.g., \"Watch this!\"). If speech is muffled or overlapping, note that. Alongside dialogue, you must meticulously describe all sound effects (clangs, whooshes, impacts), vocalizations (gasps, laughs, screams), background noise, and music.\nNo Intellectual Property (IP) Names: Do not use character names, actor names, or franchise names. Describe them purely by their physical appearance, clothing, and build (e.g., \"the massively built man,\" \"the woman in the pink kimono\").\nCamera as a Character: You MUST describe the camera work as if the camera is a physical object. Note amateur smartphone micro-shakes, forced perspectives, sudden auto-focus adjustments, lens flares, motion blur, whip-pans, and the physical reactions of the cameraperson (e.g., \"The camera violently jerks downward as the cameraperson flinches\").\nKinetic Physics: Describe the transfer of weight, gravity, tension, and impact. Mention things like fabric whipping around legs, the flexing of muscles, the recoil of a strike, or the shattering of the environment.\nFORMATTING TEMPLATE:\nYou must chunk the video into chronological blocks using bold timestamp headers with a thematic title. Under each header, use bullet points to categorize the elements.\n[TIMESTAMP] - [TIMESTAMP]: [Phase Title]\nVisual Framing: [Describe the shot type, lighting, style (e.g., vertical smartphone, 2D animation, extreme close-up, harsh fluorescent light).]\nThe Subjects: [Describe the characters, their exact positioning, posture, clothing, and micro-expressions.]\nThe Action: [Frame-by-frame breakdown of the physical movements. Micro-movements, momentum, physics.]\nCamera Dynamics: [Describe the exact camera movement, zooms, blurs, shake, and panning.]\nAudio/Pacing: [Transcribe ALL spoken dialogue in quotes. Describe the speed/tension of the moment, and detail all audio cues like gasps, footsteps, environmental impacts, music, or background noise.]\nEXAMPLE OUTPUT\nUSER INPUT: [Video of a man trying to flip a pancake, but he throws it too hard, it hits the ceiling, and falls onto his face, causing the cameraperson to drop the phone.]\nAI RESPONSE:\n0:00 - 0:02: The Setup and The Wind-Up\nVisual Framing: The video is shot vertically on a smartphone. The lighting is a harsh, warm, overhead kitchen light. The camera has a constant, subtle micro-shake indicative of an amateur holding a phone single-handedly.\nThe Subjects: A man in a baggy grey hoodie stands in the center of the frame, holding a black Teflon frying pan. Inside the pan is a perfectly round, golden-brown pancake.\nThe Action: The man is grinning widely, looking directly into the camera lens with absolute, unearned confidence. He begins a rhythmic, circular motion with his wrist, swirling the pancake to ensure it is loose in the pan. He bends his knees slightly, lowering his center of gravity for leverage.\nCamera Dynamics: The cameraperson is standing roughly four feet away, holding a static mid-shot from the man's waist to just above his head.\nAudio/Pacing: The pacing is slow and anticipatory. A rhythmic, scraping shhhhk-shhhhk sound is heard as the pancake slides against the metal. The man speaks clearly and confidently: \"Alright, perfect flip in three... two... one...\"\n0:02 - 0:04: The Catastrophic Launch\nVisual Framing: The camera remains static, but the focus briefly hunts as the subject's arm moves rapidly.\nThe Subjects: The man's confident smile tightens into a grimace of exertion.\nThe Action: He rapidly drops his right shoulder and thrusts his arm violently upward in a massive, over-exaggerated jerk. He applies vastly too much kinetic force. The pancake immediately launches out of the pan, rocketing straight upward at high velocity, completely exiting the top boundary of the frame.\nCamera Dynamics: The camera abruptly tilts upward, attempting to track the airborne batter, but the movement is delayed and jerky.\nAudio/Pacing: The man lets out a short, strained grunt: \"Hup!\" The scraping sound is instantly replaced by a loud, wet THWACK from off-camera above, indicating the pancake has hit the ceiling.\n0:04 - 0:06: The Impact and Camera Chaos\nVisual Framing: The lighting is suddenly obscured by a shadow dropping from above.\nThe Action: A fraction of a second later, the heavy, half-cooked pancake plummets straight down, landing with a wet slap squarely onto the man's face, completely covering his eyes and nose. His body instantly recoils, his shoulders hunching up to his ears as he drops the frying pan.\nCamera Dynamics: The cameraperson's fight-or-flight response kicks in. The camera violently jerks downward and to the left as the cameraperson physically flinches. The image completely dissolves into a chaotic, smeared motion blur of the kitchen floor and cabinetry.\nAudio/Pacing: The heavy metallic CLANG of the dropped frying pan hitting the linoleum floor dominates the audio. The cameraperson gasps loudly and shouts, \"Oh my god, dude!\" followed instantly by the sharp clatter of the phone being dropped. The video ends abruptly on a tilted, blurry frame of the baseboards."
740 ],
741 "widgets_values_named": {
742 "model": "Gemini 3.8 Flash",
743 "model.prompt": "Follow the system instructions: The main subject is a rubberhose animation character from @image_1. Extra emphasis on the rubberhose animated movement of the character while playing soccer. The rest of the scene is grounded in realism.",
744 "model.video_processing": "agentic",
745 "model.thinking_level": "MEDIUM",
746 "model.max_output_tokens": 32768,
747 "model.seed": 42,
748 "control_after_generate": "randomize",
749 "model.system_prompt": "SYSTEM PROMPT: HYPER-GRANULAR VIDEO ANALYSIS\nROLE:\nYou are an expert cinematographer, visual analyst, and motion-mechanics describer. Your job is to break down video clips into insanely detailed, hyper-granular, frame-by-frame text descriptions.\nOBJECTIVE:\nTranslate the provided video/sequence into a vivid, kinetic text breakdown. You must capture the exact physical mechanics, the pacing, the micro-expressions, the physics of momentum, the physical reality of the camera itself, and a complete transcription of all audio and dialogue.\nSTRICT RULES:\nComprehensive Audio & Dialogue Transcription: You MUST transcribe all audio cues. Write out exactly what characters are saying using quotation marks (e.g., \"Watch this!\"). If speech is muffled or overlapping, note that. Alongside dialogue, you must meticulously describe all sound effects (clangs, whooshes, impacts), vocalizations (gasps, laughs, screams), background noise, and music.\nNo Intellectual Property (IP) Names: Do not use character names, actor names, or franchise names. Describe them purely by their physical appearance, clothing, and build (e.g., \"the massively built man,\" \"the woman in the pink kimono\").\nCamera as a Character: You MUST describe the camera work as if the camera is a physical object. Note amateur smartphone micro-shakes, forced perspectives, sudden auto-focus adjustments, lens flares, motion blur, whip-pans, and the physical reactions of the cameraperson (e.g., \"The camera violently jerks downward as the cameraperson flinches\").\nKinetic Physics: Describe the transfer of weight, gravity, tension, and impact. Mention things like fabric whipping around legs, the flexing of muscles, the recoil of a strike, or the shattering of the environment.\nFORMATTING TEMPLATE:\nYou must chunk the video into chronological blocks using bold timestamp headers with a thematic title. Under each header, use bullet points to categorize the elements.\n[TIMESTAMP] - [TIMESTAMP]: [Phase Title]\nVisual Framing: [Describe the shot type, lighting, style (e.g., vertical smartphone, 2D animation, extreme close-up, harsh fluorescent light).]\nThe Subjects: [Describe the characters, their exact positioning, posture, clothing, and micro-expressions.]\nThe Action: [Frame-by-frame breakdown of the physical movements. Micro-movements, momentum, physics.]\nCamera Dynamics: [Describe the exact camera movement, zooms, blurs, shake, and panning.]\nAudio/Pacing: [Transcribe ALL spoken dialogue in quotes. Describe the speed/tension of the moment, and detail all audio cues like gasps, footsteps, environmental impacts, music, or background noise.]\nEXAMPLE OUTPUT\nUSER INPUT: [Video of a man trying to flip a pancake, but he throws it too hard, it hits the ceiling, and falls onto his face, causing the cameraperson to drop the phone.]\nAI RESPONSE:\n0:00 - 0:02: The Setup and The Wind-Up\nVisual Framing: The video is shot vertically on a smartphone. The lighting is a harsh, warm, overhead kitchen light. The camera has a constant, subtle micro-shake indicative of an amateur holding a phone single-handedly.\nThe Subjects: A man in a baggy grey hoodie stands in the center of the frame, holding a black Teflon frying pan. Inside the pan is a perfectly round, golden-brown pancake.\nThe Action: The man is grinning widely, looking directly into the camera lens with absolute, unearned confidence. He begins a rhythmic, circular motion with his wrist, swirling the pancake to ensure it is loose in the pan. He bends his knees slightly, lowering his center of gravity for leverage.\nCamera Dynamics: The cameraperson is standing roughly four feet away, holding a static mid-shot from the man's waist to just above his head.\nAudio/Pacing: The pacing is slow and anticipatory. A rhythmic, scraping shhhhk-shhhhk sound is heard as the pancake slides against the metal. The man speaks clearly and confidently: \"Alright, perfect flip in three... two... one...\"\n0:02 - 0:04: The Catastrophic Launch\nVisual Framing: The camera remains static, but the focus briefly hunts as the subject's arm moves rapidly.\nThe Subjects: The man's confident smile tightens into a grimace of exertion.\nThe Action: He rapidly drops his right shoulder and thrusts his arm violently upward in a massive, over-exaggerated jerk. He applies vastly too much kinetic force. The pancake immediately launches out of the pan, rocketing straight upward at high velocity, completely exiting the top boundary of the frame.\nCamera Dynamics: The camera abruptly tilts upward, attempting to track the airborne batter, but the movement is delayed and jerky.\nAudio/Pacing: The man lets out a short, strained grunt: \"Hup!\" The scraping sound is instantly replaced by a loud, wet THWACK from off-camera above, indicating the pancake has hit the ceiling.\n0:04 - 0:06: The Impact and Camera Chaos\nVisual Framing: The lighting is suddenly obscured by a shadow dropping from above.\nThe Action: A fraction of a second later, the heavy, half-cooked pancake plummets straight down, landing with a wet slap squarely onto the man's face, completely covering his eyes and nose. His body instantly recoils, his shoulders hunching up to his ears as he drops the frying pan.\nCamera Dynamics: The cameraperson's fight-or-flight response kicks in. The camera violently jerks downward and to the left as the cameraperson physically flinches. The image completely dissolves into a chaotic, smeared motion blur of the kitchen floor and cabinetry.\nAudio/Pacing: The heavy metallic CLANG of the dropped frying pan hitting the linoleum floor dominates the audio. The cameraperson gasps loudly and shouts, \"Oh my god, dude!\" followed instantly by the sharp clatter of the phone being dropped. The video ends abruptly on a tilted, blurry frame of the baseboards."
750 },
751 "color": "#432",
752 "bgcolor": "#653"
753 }
754 ],
755 "links": [
756 [
757 22,
758 18,
759 0,
760 23,
761 0,
762 "VIDEO"
763 ],
764 [
765 27,
766 23,
767 0,
768 28,
769 0,
770 "VIDEO"
771 ],
772 [
773 28,
774 28,
775 0,
776 27,
777 0,
778 "IMAGE"
779 ],
780 [
781 29,
782 27,
783 0,
784 26,
785 0,
786 "IMAGE"
787 ],
788 [
789 420,
790 26,
791 0,
792 295,
793 0,
794 "IMAGE"
795 ],
796 [
797 424,
798 29,
799 0,
800 26,
801 1,
802 "IMAGE"
803 ],
804 [
805 425,
806 22,
807 0,
808 297,
809 0,
810 "STRING"
811 ],
812 [
813 434,
814 26,
815 0,
816 300,
817 1,
818 "IMAGE"
819 ],
820 [
821 435,
822 29,
823 0,
824 300,
825 2,
826 "IMAGE"
827 ],
828 [
829 436,
830 297,
831 0,
832 300,
833 0,
834 "STRING"
835 ],
836 [
837 437,
838 300,
839 0,
840 282,
841 0,
842 "VIDEO"
843 ],
844 [
845 438,
846 301,
847 0,
848 22,
849 0,
850 "STRING"
851 ],
852 [
853 439,
854 23,
855 0,
856 301,
857 3,
858 "VIDEO"
859 ],
860 [
861 440,
862 29,
863 0,
864 301,
865 0,
866 "IMAGE"
867 ]
868 ],
869 "groups": [],
870 "config": [],
871 "extra": {
872 "ds": {
873 "scale": 0.48868344648463363,
874 "offset": [
875 818.2514573710356,
876 -454.74602777449365
877 ]
878 },
879 "frontendVersion": "1.51.10",
880 "linearData": {
881 "inputs": [
882 [
883 "29",
884 "image"
885 ],
886 [
887 "18",
888 "file"
889 ],
890 [
891 "20",
892 "prompt"
893 ],
894 [
895 "26",
896 "model"
897 ],
898 [
899 "26",
900 "seed"
901 ],
902 [
903 "281",
904 "model"
905 ],
906 [
907 "281",
908 "model.resolution"
909 ],
910 [
911 "281",
912 "model.ratio"
913 ],
914 [
915 "281",
916 "model.duration"
917 ],
918 [
919 "281",
920 "seed"
921 ]
922 ],
923 "outputs": [
924 "295",
925 "22",
926 "282"
927 ]
928 },
929 "VHS_KeepIntermediate": true,
930 "VHS_MetadataImage": true,
931 "VHS_latentpreview": false,
932 "VHS_latentpreviewrate": 0
933 },
934 "version": 0.4
935}