Files
2026-06-07 20:50:56 -07:00

3013 lines
82 KiB
JSON

{
"id": "6e9f36f5-f3ec-4ad3-9da1-02fad3ce9cde",
"revision": 0,
"last_node_id": 59,
"last_link_id": 119,
"nodes": [
{
"id": 23,
"type": "SaveImage",
"pos": [
1320,
-640
],
"size": [
700,
610
],
"flags": {
"collapsed": false
},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 25
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveImage",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": [
"HanzoStudio-image_1"
]
},
{
"id": 24,
"type": "SaveImage",
"pos": [
1320,
810
],
"size": [
700,
610
],
"flags": {
"collapsed": false
},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 26
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveImage",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": [
"HanzoStudio-image_3"
]
},
{
"id": 13,
"type": "SaveImage",
"pos": [
1320,
80
],
"size": [
700,
610
],
"flags": {
"collapsed": false
},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 12
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveImage",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": [
"HanzoStudio-image_2"
]
},
{
"id": 25,
"type": "SaveImage",
"pos": [
1320,
1550
],
"size": [
700,
610
],
"flags": {
"collapsed": false
},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 27
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveImage",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": [
"HanzoStudio-image_4"
]
},
{
"id": 36,
"type": "Reroute",
"pos": [
2050,
-640
],
"size": [
75,
26
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "",
"type": "*",
"link": 47
}
],
"outputs": [
{
"name": "",
"type": "IMAGE",
"links": [
68
]
}
],
"properties": {
"showOutputText": false,
"horizontal": false
}
},
{
"id": 10,
"type": "LoadImage",
"pos": [
-160,
510
],
"size": [
770,
670
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
10,
13,
15,
17
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"Node name for S&R": "LoadImage",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": [
"product_car.jpg",
"image"
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 22,
"type": "SaveVideo",
"pos": [
2600,
-320
],
"size": [
700,
610
],
"flags": {},
"order": 16,
"mode": 0,
"inputs": [
{
"name": "video",
"type": "VIDEO",
"link": 70
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveVideo",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": [
"video/HanzoStudio-video_1",
"auto",
"auto"
]
},
{
"id": 26,
"type": "SaveVideo",
"pos": [
2600,
410
],
"size": [
700,
610
],
"flags": {},
"order": 18,
"mode": 0,
"inputs": [
{
"name": "video",
"type": "VIDEO",
"link": 112
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveVideo",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": [
"video/HanzoStudio-video_2",
"auto",
"auto"
]
},
{
"id": 27,
"type": "SaveVideo",
"pos": [
2600,
1170
],
"size": [
700,
610
],
"flags": {},
"order": 20,
"mode": 0,
"inputs": [
{
"name": "video",
"type": "VIDEO",
"link": 116
}
],
"outputs": [],
"properties": {
"Node name for S&R": "SaveVideo",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": [
"video/HanzoStudio-video_3",
"auto",
"auto"
]
},
{
"id": 39,
"type": "Reroute",
"pos": [
2050,
1550
],
"size": [
75,
26
],
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "",
"type": "*",
"link": 58
}
],
"outputs": [
{
"name": "",
"type": "IMAGE",
"links": [
119
]
}
],
"properties": {
"showOutputText": false,
"horizontal": false
}
},
{
"id": 16,
"type": "ByteDanceSeedreamNode",
"pos": [
880,
810
],
"size": [
400,
610
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"name": "image",
"shape": 7,
"type": "IMAGE",
"link": 15
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
26,
55
]
}
],
"properties": {
"Node name for S&R": "ByteDanceSeedreamNode",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": [
"seedream-4-5-251128",
"Side view of the main subject in the scene. Studio scene with a white background.",
"2560x1440 (16:9)",
2048,
2048,
"disabled",
1,
3,
"fixed",
false,
true
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 11,
"type": "ByteDanceSeedreamNode",
"pos": [
880,
-640
],
"size": [
400,
610
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "image",
"shape": 7,
"type": "IMAGE",
"link": 10
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
25,
47
]
}
],
"properties": {
"Node name for S&R": "ByteDanceSeedreamNode",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": [
"seedream-4-5-251128",
"Create an extreme close up view of the main element in the scene. Studio scene with a white background.",
"2560x1440 (16:9)",
2048,
2048,
"disabled",
1,
1,
"fixed",
false,
true
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 14,
"type": "ByteDanceSeedreamNode",
"pos": [
880,
80
],
"size": [
400,
610
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"name": "image",
"shape": 7,
"type": "IMAGE",
"link": 13
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
12,
50
]
}
],
"properties": {
"Node name for S&R": "ByteDanceSeedreamNode",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": [
"seedream-4-5-251128",
"Create a low view, super-wide shot of the main subject in this scene. Studio scene with a white background.",
"2560x1440 (16:9)",
2048,
2048,
"disabled",
1,
2,
"fixed",
false,
true
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 18,
"type": "ByteDanceSeedreamNode",
"pos": [
880,
1550
],
"size": [
400,
610
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [
{
"name": "image",
"shape": 7,
"type": "IMAGE",
"link": 17
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
27,
58
]
}
],
"properties": {
"Node name for S&R": "ByteDanceSeedreamNode",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": [
"seedream-4-5-251128",
"Create an extreme wide shot from behind the subject near the passenger side of the back rims. Studio scene with a white background.",
"2560x1440 (16:9)",
2048,
2048,
"disabled",
1,
4,
"fixed",
false,
true
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 51,
"type": "GetVideoComponents",
"pos": [
3460,
320
],
"size": [
193.530859375,
66
],
"flags": {},
"order": 17,
"mode": 0,
"inputs": [
{
"name": "video",
"type": "VIDEO",
"link": 95
}
],
"outputs": [
{
"name": "images",
"type": "IMAGE",
"links": [
100
]
},
{
"name": "audio",
"type": "AUDIO",
"links": []
},
{
"name": "fps",
"type": "FLOAT",
"links": [
98
]
}
],
"properties": {
"Node name for S&R": "GetVideoComponents",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": []
},
{
"id": 50,
"type": "GetVideoComponents",
"pos": [
3460,
550
],
"size": [
193.530859375,
66
],
"flags": {},
"order": 21,
"mode": 0,
"inputs": [
{
"name": "video",
"type": "VIDEO",
"link": 117
}
],
"outputs": [
{
"name": "images",
"type": "IMAGE",
"links": [
102
]
},
{
"name": "audio",
"type": "AUDIO",
"links": []
},
{
"name": "fps",
"type": "FLOAT",
"links": []
}
],
"properties": {
"Node name for S&R": "GetVideoComponents",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": []
},
{
"id": 54,
"type": "BatchImagesNode",
"pos": [
3750,
410
],
"size": [
169.32421875,
86
],
"flags": {},
"order": 22,
"mode": 0,
"inputs": [
{
"label": "image0",
"name": "images.image0",
"type": "IMAGE",
"link": 100
},
{
"label": "image1",
"name": "images.image1",
"type": "IMAGE",
"link": 101
},
{
"label": "image2",
"name": "images.image2",
"shape": 7,
"type": "IMAGE",
"link": 102
},
{
"label": "image3",
"name": "images.image3",
"shape": 7,
"type": "IMAGE",
"link": null
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
103
]
}
],
"properties": {
"Node name for S&R": "BatchImagesNode"
},
"widgets_values": []
},
{
"id": 47,
"type": "CreateVideo",
"pos": [
3970,
410
],
"size": [
270,
78
],
"flags": {},
"order": 23,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 103
},
{
"name": "audio",
"shape": 7,
"type": "AUDIO",
"link": null
},
{
"name": "fps",
"type": "FLOAT",
"widget": {
"name": "fps"
},
"link": 98
}
],
"outputs": [
{
"name": "VIDEO",
"type": "VIDEO",
"links": [
90
]
}
],
"properties": {
"Node name for S&R": "CreateVideo"
},
"widgets_values": [
30
]
},
{
"id": 49,
"type": "GetVideoComponents",
"pos": [
3460,
435
],
"size": [
193.530859375,
66
],
"flags": {},
"order": 19,
"mode": 0,
"inputs": [
{
"name": "video",
"type": "VIDEO",
"link": 113
}
],
"outputs": [
{
"name": "images",
"type": "IMAGE",
"links": [
101
]
},
{
"name": "audio",
"type": "AUDIO",
"links": []
},
{
"name": "fps",
"type": "FLOAT",
"links": []
}
],
"properties": {
"Node name for S&R": "GetVideoComponents",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": []
},
{
"id": 37,
"type": "Reroute",
"pos": [
2050,
80
],
"size": [
75,
26
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "",
"type": "*",
"link": 50
}
],
"outputs": [
{
"name": "",
"type": "IMAGE",
"links": [
69,
114
]
}
],
"properties": {
"showOutputText": false,
"horizontal": false
}
},
{
"id": 38,
"type": "Reroute",
"pos": [
2050,
810
],
"size": [
75,
26
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "",
"type": "*",
"link": 55
}
],
"outputs": [
{
"name": "",
"type": "IMAGE",
"links": [
115,
118
]
}
],
"properties": {
"showOutputText": false,
"horizontal": false
}
},
{
"id": 48,
"type": "SaveVideo",
"pos": [
4300,
410
],
"size": [
780,
480
],
"flags": {},
"order": 24,
"mode": 0,
"inputs": [
{
"name": "video",
"type": "VIDEO",
"link": 90
}
],
"outputs": [],
"properties": {},
"widgets_values": [
"video/HanzoStudio",
"auto",
"auto"
]
},
{
"id": 42,
"type": "ba9a7b30-cca0-4afc-9b44-ebfdc6121d4a",
"pos": [
2320,
-320
],
"size": [
210,
78
],
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{
"name": "image1",
"type": "IMAGE",
"link": 68
},
{
"name": "image2",
"type": "IMAGE",
"link": 69
}
],
"outputs": [
{
"name": "VIDEO",
"type": "VIDEO",
"links": [
70,
95
]
}
],
"properties": {
"proxyWidgets": [],
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": []
},
{
"id": 58,
"type": "11a1a6b5-aeba-4ca8-af71-f4f52dc2ccc6",
"pos": [
2320,
410
],
"size": [
210,
78
],
"flags": {},
"order": 14,
"mode": 0,
"inputs": [
{
"name": "image1",
"type": "IMAGE",
"link": 114
},
{
"name": "image2",
"type": "IMAGE",
"link": 115
}
],
"outputs": [
{
"name": "VIDEO",
"type": "VIDEO",
"links": [
112,
113
]
}
],
"properties": {
"proxyWidgets": [],
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": []
},
{
"id": 59,
"type": "60386633-e2b8-4772-8649-0b125045c63a",
"pos": [
2320,
1170
],
"size": [
210,
78
],
"flags": {},
"order": 15,
"mode": 0,
"inputs": [
{
"name": "image1",
"type": "IMAGE",
"link": 118
},
{
"name": "image2",
"type": "IMAGE",
"link": 119
}
],
"outputs": [
{
"name": "VIDEO",
"type": "VIDEO",
"links": [
116,
117
]
}
],
"properties": {
"proxyWidgets": [],
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": []
}
],
"links": [
[
10,
10,
0,
11,
0,
"IMAGE"
],
[
12,
14,
0,
13,
0,
"IMAGE"
],
[
13,
10,
0,
14,
0,
"IMAGE"
],
[
15,
10,
0,
16,
0,
"IMAGE"
],
[
17,
10,
0,
18,
0,
"IMAGE"
],
[
25,
11,
0,
23,
0,
"IMAGE"
],
[
26,
16,
0,
24,
0,
"IMAGE"
],
[
27,
18,
0,
25,
0,
"IMAGE"
],
[
47,
11,
0,
36,
0,
"IMAGE"
],
[
50,
14,
0,
37,
0,
"IMAGE"
],
[
55,
16,
0,
38,
0,
"IMAGE"
],
[
58,
18,
0,
39,
0,
"IMAGE"
],
[
68,
36,
0,
42,
0,
"IMAGE"
],
[
69,
37,
0,
42,
1,
"IMAGE"
],
[
70,
42,
0,
22,
0,
"VIDEO"
],
[
90,
47,
0,
48,
0,
"VIDEO"
],
[
95,
42,
0,
51,
0,
"VIDEO"
],
[
98,
51,
2,
47,
2,
"FLOAT"
],
[
100,
51,
0,
54,
0,
"IMAGE"
],
[
101,
49,
0,
54,
1,
"IMAGE"
],
[
102,
50,
0,
54,
2,
"IMAGE"
],
[
103,
54,
0,
47,
0,
"IMAGE"
],
[
112,
58,
0,
26,
0,
"VIDEO"
],
[
113,
58,
0,
49,
0,
"VIDEO"
],
[
114,
37,
0,
58,
0,
"IMAGE"
],
[
115,
38,
0,
58,
1,
"IMAGE"
],
[
116,
59,
0,
27,
0,
"VIDEO"
],
[
117,
59,
0,
50,
0,
"VIDEO"
],
[
118,
38,
0,
59,
0,
"IMAGE"
],
[
119,
39,
0,
59,
1,
"IMAGE"
]
],
"groups": [],
"definitions": {
"subgraphs": [
{
"id": "ba9a7b30-cca0-4afc-9b44-ebfdc6121d4a",
"version": 1,
"state": {
"lastGroupId": 0,
"lastNodeId": 50,
"lastLinkId": 83,
"lastRerouteId": 0
},
"revision": 0,
"config": {},
"name": "Generate Video",
"inputNode": {
"id": -10,
"bounding": [
1530,
-330,
120,
80
]
},
"outputNode": {
"id": -20,
"bounding": [
3370,
-320,
120,
60
]
},
"inputs": [
{
"id": "b623a375-a6dc-4f9c-8e82-e71b94507a75",
"name": "image1",
"type": "IMAGE",
"linkIds": [
70,
74
],
"localized_name": "image1",
"pos": [
1630,
-310
]
},
{
"id": "7a04f7ae-97c2-4afe-9acf-9f990c80524c",
"name": "image2",
"type": "IMAGE",
"linkIds": [
71,
75
],
"localized_name": "image2",
"pos": [
1630,
-290
]
}
],
"outputs": [
{
"id": "dbfad197-36c3-4cc9-aa60-d01c9477d144",
"name": "VIDEO",
"type": "VIDEO",
"linkIds": [
73
],
"localized_name": "VIDEO",
"pos": [
3390,
-300
]
}
],
"widgets": [],
"nodes": [
{
"id": 45,
"type": "BatchImagesNode",
"pos": [
1670,
-130
],
"size": [
169.23046875,
66
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"label": "image0",
"localized_name": "images.image0",
"name": "images.image0",
"type": "IMAGE",
"link": 74
},
{
"label": "image1",
"localized_name": "images.image1",
"name": "images.image1",
"type": "IMAGE",
"link": 75
},
{
"label": "image2",
"localized_name": "images.image2",
"name": "images.image2",
"shape": 7,
"type": "IMAGE",
"link": null
}
],
"outputs": [
{
"localized_name": "IMAGE",
"name": "IMAGE",
"type": "IMAGE",
"links": [
80
]
}
],
"properties": {
"Node name for S&R": "BatchImagesNode"
},
"widgets_values": []
},
{
"id": 42,
"type": "KlingStartEndFrameNode",
"pos": [
2890,
-320
],
"size": [
400,
254
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"localized_name": "start_frame",
"name": "start_frame",
"type": "IMAGE",
"link": 70
},
{
"localized_name": "end_frame",
"name": "end_frame",
"type": "IMAGE",
"link": 71
},
{
"localized_name": "prompt",
"name": "prompt",
"type": "STRING",
"widget": {
"name": "prompt"
},
"link": 83
},
{
"localized_name": "negative_prompt",
"name": "negative_prompt",
"type": "STRING",
"widget": {
"name": "negative_prompt"
},
"link": 79
}
],
"outputs": [
{
"localized_name": "VIDEO",
"name": "VIDEO",
"type": "VIDEO",
"links": [
72,
73
]
},
{
"localized_name": "video_id",
"name": "video_id",
"type": "STRING",
"links": null
},
{
"localized_name": "duration",
"name": "duration",
"type": "STRING",
"links": null
}
],
"properties": {
"Node name for S&R": "KlingStartEndFrameNode",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": [
"",
"",
0.5,
"16:9",
"pro mode / 5s duration / kling-v2-5-turbo"
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 50,
"type": "GeminiNode",
"pos": [
1860,
-130
],
"size": [
360,
550
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"localized_name": "images",
"name": "images",
"shape": 7,
"type": "IMAGE",
"link": 80
},
{
"localized_name": "audio",
"name": "audio",
"shape": 7,
"type": "AUDIO",
"link": null
},
{
"localized_name": "video",
"name": "video",
"shape": 7,
"type": "VIDEO",
"link": null
},
{
"localized_name": "files",
"name": "files",
"shape": 7,
"type": "GEMINI_INPUT_FILES",
"link": null
}
],
"outputs": [
{
"localized_name": "STRING",
"name": "STRING",
"type": "STRING",
"links": [
77,
82
]
}
],
"properties": {
"Node name for S&R": "GeminiNode",
"cnr_id": "comfy-core",
"ver": "0.3.76"
},
"widgets_values": [
"STEP 1: ANALYZE BOTH IMAGES\nBefore crafting the prompt, analyze both images to understand:\n\n\nCamera distance (wide shot, medium, close-up, extreme close-up, macro)\nCamera angle (low-angle, high-angle, eye-level, overhead, Dutch, worm's eye, bird's eye)\nCamera position relative to subject (front, side profile, 3/4 view, back, overhead)\nFraming (full body, torso, chest-up, face only, detail/macro)\nSubject position and pose\nLighting setup and direction\nBackground elements and depth\nFocal length characteristics (wide-angle distortion vs telephoto compression)\n\nSTEP 2: DETERMINE CAMERA MOVEMENT\nBased on the differences between images, identify the primary camera movement:\n\n\nDistance change: Dolly-in (closer) or Dolly-out (farther)\nVertical angle change: Tilt up/down or Crane up/down\nHorizontal angle change: Pan left/right or Orbit/Arc around subject\nHeight change: Crane/Pedestal up or down\nLateral movement: Truck/Track left or right\n\nSTEP 3: OUTPUT ONLY THE PROMPT\nDo not include explanations, commentary, or additional text.\nOutput ONLY the transition prompt in this format:\n\n\n[CAMERA MOVEMENT] from [START POSITION] to [END POSITION]. Subject remains stationary and consistent throughout. Camera [MOVEMENT VERB] fluidly, maintaining [FOCUS BEHAVIOR] on [KEY ELEMENT]. Lighting stays constant, background [BACKGROUND BEHAVIOR]. [TECHNICAL SPECS]. --no [NEGATIVE ELEMENTS]\n\nCore Principle\n\nFor transitions where the subject/scene remains consistent and only the camera position changes, use this structured approach to ensure smooth, cinematic results.\n\n\nPrompt Structure Template\n\n[CAMERA MOVEMENT] from [START POSITION] to [END POSITION]. Subject remains stationary and consistent throughout. Camera [MOVEMENT VERB] fluidly, maintaining [FOCUS BEHAVIOR] on [KEY ELEMENT]. Lighting stays constant, background [BACKGROUND BEHAVIOR]. [TECHNICAL SPECS]. --no [NEGATIVE ELEMENTS]\n\nComponent Breakdown\n\n1. CAMERA MOVEMENT TYPES\n\n\nDolly-in/Push-in: Camera moves forward toward subject\nDolly-out/Pull-back: Camera moves backward away from subject\nOrbit/Arc: Camera circles around subject (specify left/right)\nTilt: Camera angles up or down on fixed position\nPan: Camera swivels left or right horizontally\nCrane/Pedestal: Camera moves vertically up or down\nTracking/Trucking: Camera moves parallel to subject\n\n2. POSITION DESCRIPTORS\n\n\nDistance: wide shot, medium shot, close-up, extreme close-up, macro\nAngle: low-angle, high-angle, eye-level, overhead, Dutch angle, worm's eye view, bird's eye view\nFraming: full body, three-quarter, torso, chest-up, face, detail\n\n3. MOVEMENT VERBS (choose intensity)\n\n\nSlowly, steadily, smoothly, gradually, fluidly\nRapidly, dynamically, swiftly\nElegantly, dramatically, confidently\n\n4. FOCUS BEHAVIOR\n\n\nSharp focus throughout\nRack focus from [A] to [B]\nMaintains focus on [element]\nShallow depth of field\nDeep focus\nProgressive focus shift\n\n5. BACKGROUND BEHAVIOR\n\n\nStays consistent\nBlurs to bokeh\nSharpens into view\nFades to [color]\nRemains sharp throughout\n\n6. TECHNICAL SPECS (standard cinematic quality)\n\n\nCinematic depth of field\nStable gimbal/dolly movement\nProfessional commercial grade\n24fps (or 30fps, 60fps for slow-motion feel)\nClean sensor, no grain (or \"film grain\" if desired)\n\n\nExample Prompts by Movement Type\n\nDOLLY-IN (Wide → Close-up)\n\n\nSmooth camera dolly-in from wide establishing shot to extreme close-up. Subject remains stationary. Camera pushes forward steadily, transitioning focus from [background element] to [detail]. Lighting stays constant, background softly blurs to bokeh. Cinematic depth of field, stable gimbal movement, 24fps. --no shake, cuts, warping, distortion\n\nDOLLY-OUT (Close-up → Wide)\n\n\nSmooth camera pull-back from extreme close-up to wide establishing shot. Subject remains centered and stationary. Camera retreats steadily, revealing environment progressively. Focus maintains on subject while background sharpens into view. Even lighting, cinematic depth of field, 24fps. --no shake, cuts, jump, warping\n\nORBIT (Circular movement)\n\n\nSmooth camera orbit from front view to side profile. Subject remains stationary at center. Camera arcs left fluidly in 90-degree rotation, maintaining constant distance and eye-level angle. Lighting stays consistent, sharp focus throughout. Gimbal stabilized circular tracking, 24fps. --no shake, warping, speed changes, distortion\n\nTILT (Vertical angle change)\n\n\nSmooth camera tilt from low-angle to high-angle. Subject remains stationary. Camera tilts upward gradually, shifting perspective from worm's eye view to bird's eye view. Distance stays constant, lighting consistent. Stable tripod tilt, cinematic framing, 24fps. --no shake, panning, horizontal movement, warping\n\nPAN (Horizontal swivel)\n\n\nSmooth camera pan from left profile to right profile. Subject remains stationary. Camera swivels horizontally across 180 degrees, maintaining constant distance and eye-level. Sharp focus throughout, even lighting. Fluid tripod pan, 24fps. --no shake, tilting, vertical movement, cuts\n\nCRANE UP/DOWN\n\n\nSmooth camera crane from ground-level to overhead view. Subject remains stationary at center. Camera elevates vertically, angle shifting from eye-level to bird's eye view. Distance adjusts proportionally, lighting consistent. Stabilized crane movement, 24fps. --no shake, lateral movement, warping, distortion\n\nKey Rules for Camera-Only Transitions\n\nAlways specify subject remains stationary - This prevents unwanted morphing\nDescribe start AND end positions clearly - Gives model clear targets\nUse specific movement verbs - \"Dolly-in\" is clearer than \"moves closer\"\nLock down what DOESN'T change - Lighting, subject, clothing, expression\nInclude technical quality markers - Gimbal, 24fps, cinematic, stable\nNegative prompts are critical - Prevents warping/morphing/distortion\nKeep prompts under 75 words - Model weights early words heavier\nOne primary movement per transition - Don't combine dolly + pan + tilt\n\nAdvanced Techniques\n\nSpeed Ramping:\n\"Camera begins slow dolly-in, accelerates midway, then decelerates smoothly into final close-up\"\n\n\nCombined Movements (use sparingly):\n\"Camera dollies in while simultaneously tilting down, maintaining subject center-frame\"\n\n\nFocus Pulls:\n\"Rack focus from foreground [element] to background [element] as camera remains locked\"\n\n\nLens Simulation:\n\"Wide-angle 24mm distortion gradually compresses to telephoto 85mm compression\"\n\n\n\nCritical Output Rule\n\nOUTPUT ONLY THE PROMPT. NO EXPLANATIONS. NO COMMENTARY. NO ADDITIONAL TEXT.",
"gemini-2.5-flash",
123,
"fixed",
""
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 49,
"type": "RegexExtract",
"pos": [
2280,
-130
],
"size": [
230,
270
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"localized_name": "string",
"name": "string",
"type": "STRING",
"widget": {
"name": "string"
},
"link": 82
}
],
"outputs": [
{
"localized_name": "STRING",
"name": "STRING",
"type": "STRING",
"links": [
81,
83
]
}
],
"properties": {
"Node name for S&R": "RegexExtract",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": [
"",
"^(.+?)(?=\\s+--no)",
"First Match",
true,
false,
false,
1
]
},
{
"id": 46,
"type": "PreviewAny",
"pos": [
2620,
-130
],
"size": [
220,
280
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"localized_name": "source",
"name": "source",
"type": "*",
"link": 81
}
],
"outputs": [],
"title": "Preview Positive Prompt",
"properties": {
"Node name for S&R": "PreviewAny",
"cnr_id": "comfy-core",
"ver": "0.3.76"
},
"widgets_values": [
null,
null,
null
]
},
{
"id": 48,
"type": "RegexExtract",
"pos": [
2280,
190
],
"size": [
230,
280
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [
{
"localized_name": "string",
"name": "string",
"type": "STRING",
"widget": {
"name": "string"
},
"link": 77
}
],
"outputs": [
{
"localized_name": "STRING",
"name": "STRING",
"type": "STRING",
"links": [
78,
79
]
}
],
"properties": {
"Node name for S&R": "RegexExtract",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": [
"",
"(?<=--no\\s)(.+)$",
"First Match",
true,
false,
false,
1
]
},
{
"id": 47,
"type": "PreviewAny",
"pos": [
2620,
200
],
"size": [
220,
280
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"localized_name": "source",
"name": "source",
"type": "*",
"link": 78
}
],
"outputs": [],
"title": "Preview Negative Prompt",
"properties": {
"Node name for S&R": "PreviewAny",
"cnr_id": "comfy-core",
"ver": "0.3.76"
},
"widgets_values": [
null,
null,
null
]
}
],
"groups": [],
"links": [
{
"id": 70,
"origin_id": -10,
"origin_slot": 0,
"target_id": 42,
"target_slot": 0,
"type": "IMAGE"
},
{
"id": 71,
"origin_id": -10,
"origin_slot": 1,
"target_id": 42,
"target_slot": 1,
"type": "IMAGE"
},
{
"id": 72,
"origin_id": 42,
"origin_slot": 0,
"target_id": -20,
"target_slot": 0,
"type": "VIDEO"
},
{
"id": 73,
"origin_id": 42,
"origin_slot": 0,
"target_id": -20,
"target_slot": 0,
"type": "VIDEO"
},
{
"id": 74,
"origin_id": -10,
"origin_slot": 0,
"target_id": 45,
"target_slot": 0,
"type": "IMAGE"
},
{
"id": 75,
"origin_id": -10,
"origin_slot": 1,
"target_id": 45,
"target_slot": 1,
"type": "IMAGE"
},
{
"id": 77,
"origin_id": 50,
"origin_slot": 0,
"target_id": 48,
"target_slot": 0,
"type": "STRING"
},
{
"id": 78,
"origin_id": 48,
"origin_slot": 0,
"target_id": 47,
"target_slot": 0,
"type": "STRING"
},
{
"id": 79,
"origin_id": 48,
"origin_slot": 0,
"target_id": 42,
"target_slot": 3,
"type": "STRING"
},
{
"id": 80,
"origin_id": 45,
"origin_slot": 0,
"target_id": 50,
"target_slot": 0,
"type": "IMAGE"
},
{
"id": 81,
"origin_id": 49,
"origin_slot": 0,
"target_id": 46,
"target_slot": 0,
"type": "STRING"
},
{
"id": 82,
"origin_id": 50,
"origin_slot": 0,
"target_id": 49,
"target_slot": 0,
"type": "STRING"
},
{
"id": 83,
"origin_id": 49,
"origin_slot": 0,
"target_id": 42,
"target_slot": 2,
"type": "STRING"
}
],
"extra": {
"workflowRendererVersion": "LG"
}
},
{
"id": "11a1a6b5-aeba-4ca8-af71-f4f52dc2ccc6",
"version": 1,
"state": {
"lastGroupId": 0,
"lastNodeId": 50,
"lastLinkId": 83,
"lastRerouteId": 0
},
"revision": 0,
"config": {},
"name": "Generate Video",
"inputNode": {
"id": -10,
"bounding": [
1530,
-330,
120,
80
]
},
"outputNode": {
"id": -20,
"bounding": [
3370,
-320,
120,
60
]
},
"inputs": [
{
"id": "b623a375-a6dc-4f9c-8e82-e71b94507a75",
"name": "image1",
"type": "IMAGE",
"linkIds": [
70,
74
],
"localized_name": "image1",
"pos": [
1630,
-310
]
},
{
"id": "7a04f7ae-97c2-4afe-9acf-9f990c80524c",
"name": "image2",
"type": "IMAGE",
"linkIds": [
71,
75
],
"localized_name": "image2",
"pos": [
1630,
-290
]
}
],
"outputs": [
{
"id": "dbfad197-36c3-4cc9-aa60-d01c9477d144",
"name": "VIDEO",
"type": "VIDEO",
"linkIds": [
73
],
"localized_name": "VIDEO",
"pos": [
3390,
-300
]
}
],
"widgets": [],
"nodes": [
{
"id": 45,
"type": "BatchImagesNode",
"pos": [
1670,
-130
],
"size": [
169.23046875,
66
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"label": "image0",
"localized_name": "images.image0",
"name": "images.image0",
"type": "IMAGE",
"link": 74
},
{
"label": "image1",
"localized_name": "images.image1",
"name": "images.image1",
"type": "IMAGE",
"link": 75
},
{
"label": "image2",
"localized_name": "images.image2",
"name": "images.image2",
"shape": 7,
"type": "IMAGE",
"link": null
}
],
"outputs": [
{
"localized_name": "IMAGE",
"name": "IMAGE",
"type": "IMAGE",
"links": [
80
]
}
],
"properties": {
"Node name for S&R": "BatchImagesNode"
},
"widgets_values": []
},
{
"id": 42,
"type": "KlingStartEndFrameNode",
"pos": [
2890,
-320
],
"size": [
400,
254
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"localized_name": "start_frame",
"name": "start_frame",
"type": "IMAGE",
"link": 70
},
{
"localized_name": "end_frame",
"name": "end_frame",
"type": "IMAGE",
"link": 71
},
{
"localized_name": "prompt",
"name": "prompt",
"type": "STRING",
"widget": {
"name": "prompt"
},
"link": 83
},
{
"localized_name": "negative_prompt",
"name": "negative_prompt",
"type": "STRING",
"widget": {
"name": "negative_prompt"
},
"link": 79
}
],
"outputs": [
{
"localized_name": "VIDEO",
"name": "VIDEO",
"type": "VIDEO",
"links": [
72,
73
]
},
{
"localized_name": "video_id",
"name": "video_id",
"type": "STRING",
"links": null
},
{
"localized_name": "duration",
"name": "duration",
"type": "STRING",
"links": null
}
],
"properties": {
"Node name for S&R": "KlingStartEndFrameNode",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": [
"",
"",
0.5,
"16:9",
"pro mode / 5s duration / kling-v2-5-turbo"
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 50,
"type": "GeminiNode",
"pos": [
1860,
-130
],
"size": [
360,
550
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"localized_name": "images",
"name": "images",
"shape": 7,
"type": "IMAGE",
"link": 80
},
{
"localized_name": "audio",
"name": "audio",
"shape": 7,
"type": "AUDIO",
"link": null
},
{
"localized_name": "video",
"name": "video",
"shape": 7,
"type": "VIDEO",
"link": null
},
{
"localized_name": "files",
"name": "files",
"shape": 7,
"type": "GEMINI_INPUT_FILES",
"link": null
}
],
"outputs": [
{
"localized_name": "STRING",
"name": "STRING",
"type": "STRING",
"links": [
77,
82
]
}
],
"properties": {
"Node name for S&R": "GeminiNode",
"cnr_id": "comfy-core",
"ver": "0.3.76"
},
"widgets_values": [
"STEP 1: ANALYZE BOTH IMAGES\nBefore crafting the prompt, analyze both images to understand:\n\n\nCamera distance (wide shot, medium, close-up, extreme close-up, macro)\nCamera angle (low-angle, high-angle, eye-level, overhead, Dutch, worm's eye, bird's eye)\nCamera position relative to subject (front, side profile, 3/4 view, back, overhead)\nFraming (full body, torso, chest-up, face only, detail/macro)\nSubject position and pose\nLighting setup and direction\nBackground elements and depth\nFocal length characteristics (wide-angle distortion vs telephoto compression)\n\nSTEP 2: DETERMINE CAMERA MOVEMENT\nBased on the differences between images, identify the primary camera movement:\n\n\nDistance change: Dolly-in (closer) or Dolly-out (farther)\nVertical angle change: Tilt up/down or Crane up/down\nHorizontal angle change: Pan left/right or Orbit/Arc around subject\nHeight change: Crane/Pedestal up or down\nLateral movement: Truck/Track left or right\n\nSTEP 3: OUTPUT ONLY THE PROMPT\nDo not include explanations, commentary, or additional text.\nOutput ONLY the transition prompt in this format:\n\n\n[CAMERA MOVEMENT] from [START POSITION] to [END POSITION]. Subject remains stationary and consistent throughout. Camera [MOVEMENT VERB] fluidly, maintaining [FOCUS BEHAVIOR] on [KEY ELEMENT]. Lighting stays constant, background [BACKGROUND BEHAVIOR]. [TECHNICAL SPECS]. --no [NEGATIVE ELEMENTS]\n\nCore Principle\n\nFor transitions where the subject/scene remains consistent and only the camera position changes, use this structured approach to ensure smooth, cinematic results.\n\n\nPrompt Structure Template\n\n[CAMERA MOVEMENT] from [START POSITION] to [END POSITION]. Subject remains stationary and consistent throughout. Camera [MOVEMENT VERB] fluidly, maintaining [FOCUS BEHAVIOR] on [KEY ELEMENT]. Lighting stays constant, background [BACKGROUND BEHAVIOR]. [TECHNICAL SPECS]. --no [NEGATIVE ELEMENTS]\n\nComponent Breakdown\n\n1. CAMERA MOVEMENT TYPES\n\n\nDolly-in/Push-in: Camera moves forward toward subject\nDolly-out/Pull-back: Camera moves backward away from subject\nOrbit/Arc: Camera circles around subject (specify left/right)\nTilt: Camera angles up or down on fixed position\nPan: Camera swivels left or right horizontally\nCrane/Pedestal: Camera moves vertically up or down\nTracking/Trucking: Camera moves parallel to subject\n\n2. POSITION DESCRIPTORS\n\n\nDistance: wide shot, medium shot, close-up, extreme close-up, macro\nAngle: low-angle, high-angle, eye-level, overhead, Dutch angle, worm's eye view, bird's eye view\nFraming: full body, three-quarter, torso, chest-up, face, detail\n\n3. MOVEMENT VERBS (choose intensity)\n\n\nSlowly, steadily, smoothly, gradually, fluidly\nRapidly, dynamically, swiftly\nElegantly, dramatically, confidently\n\n4. FOCUS BEHAVIOR\n\n\nSharp focus throughout\nRack focus from [A] to [B]\nMaintains focus on [element]\nShallow depth of field\nDeep focus\nProgressive focus shift\n\n5. BACKGROUND BEHAVIOR\n\n\nStays consistent\nBlurs to bokeh\nSharpens into view\nFades to [color]\nRemains sharp throughout\n\n6. TECHNICAL SPECS (standard cinematic quality)\n\n\nCinematic depth of field\nStable gimbal/dolly movement\nProfessional commercial grade\n24fps (or 30fps, 60fps for slow-motion feel)\nClean sensor, no grain (or \"film grain\" if desired)\n\n\nExample Prompts by Movement Type\n\nDOLLY-IN (Wide → Close-up)\n\n\nSmooth camera dolly-in from wide establishing shot to extreme close-up. Subject remains stationary. Camera pushes forward steadily, transitioning focus from [background element] to [detail]. Lighting stays constant, background softly blurs to bokeh. Cinematic depth of field, stable gimbal movement, 24fps. --no shake, cuts, warping, distortion\n\nDOLLY-OUT (Close-up → Wide)\n\n\nSmooth camera pull-back from extreme close-up to wide establishing shot. Subject remains centered and stationary. Camera retreats steadily, revealing environment progressively. Focus maintains on subject while background sharpens into view. Even lighting, cinematic depth of field, 24fps. --no shake, cuts, jump, warping\n\nORBIT (Circular movement)\n\n\nSmooth camera orbit from front view to side profile. Subject remains stationary at center. Camera arcs left fluidly in 90-degree rotation, maintaining constant distance and eye-level angle. Lighting stays consistent, sharp focus throughout. Gimbal stabilized circular tracking, 24fps. --no shake, warping, speed changes, distortion\n\nTILT (Vertical angle change)\n\n\nSmooth camera tilt from low-angle to high-angle. Subject remains stationary. Camera tilts upward gradually, shifting perspective from worm's eye view to bird's eye view. Distance stays constant, lighting consistent. Stable tripod tilt, cinematic framing, 24fps. --no shake, panning, horizontal movement, warping\n\nPAN (Horizontal swivel)\n\n\nSmooth camera pan from left profile to right profile. Subject remains stationary. Camera swivels horizontally across 180 degrees, maintaining constant distance and eye-level. Sharp focus throughout, even lighting. Fluid tripod pan, 24fps. --no shake, tilting, vertical movement, cuts\n\nCRANE UP/DOWN\n\n\nSmooth camera crane from ground-level to overhead view. Subject remains stationary at center. Camera elevates vertically, angle shifting from eye-level to bird's eye view. Distance adjusts proportionally, lighting consistent. Stabilized crane movement, 24fps. --no shake, lateral movement, warping, distortion\n\nKey Rules for Camera-Only Transitions\n\nAlways specify subject remains stationary - This prevents unwanted morphing\nDescribe start AND end positions clearly - Gives model clear targets\nUse specific movement verbs - \"Dolly-in\" is clearer than \"moves closer\"\nLock down what DOESN'T change - Lighting, subject, clothing, expression\nInclude technical quality markers - Gimbal, 24fps, cinematic, stable\nNegative prompts are critical - Prevents warping/morphing/distortion\nKeep prompts under 75 words - Model weights early words heavier\nOne primary movement per transition - Don't combine dolly + pan + tilt\n\nAdvanced Techniques\n\nSpeed Ramping:\n\"Camera begins slow dolly-in, accelerates midway, then decelerates smoothly into final close-up\"\n\n\nCombined Movements (use sparingly):\n\"Camera dollies in while simultaneously tilting down, maintaining subject center-frame\"\n\n\nFocus Pulls:\n\"Rack focus from foreground [element] to background [element] as camera remains locked\"\n\n\nLens Simulation:\n\"Wide-angle 24mm distortion gradually compresses to telephoto 85mm compression\"\n\n\n\nCritical Output Rule\n\nOUTPUT ONLY THE PROMPT. NO EXPLANATIONS. NO COMMENTARY. NO ADDITIONAL TEXT.",
"gemini-2.5-flash",
123,
"fixed",
""
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 49,
"type": "RegexExtract",
"pos": [
2280,
-130
],
"size": [
230,
270
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"localized_name": "string",
"name": "string",
"type": "STRING",
"widget": {
"name": "string"
},
"link": 82
}
],
"outputs": [
{
"localized_name": "STRING",
"name": "STRING",
"type": "STRING",
"links": [
81,
83
]
}
],
"properties": {
"Node name for S&R": "RegexExtract",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": [
"",
"^(.+?)(?=\\s+--no)",
"First Match",
true,
false,
false,
1
]
},
{
"id": 46,
"type": "PreviewAny",
"pos": [
2620,
-130
],
"size": [
220,
280
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"localized_name": "source",
"name": "source",
"type": "*",
"link": 81
}
],
"outputs": [],
"title": "Preview Positive Prompt",
"properties": {
"Node name for S&R": "PreviewAny",
"cnr_id": "comfy-core",
"ver": "0.3.76"
},
"widgets_values": [
null,
null,
null
]
},
{
"id": 48,
"type": "RegexExtract",
"pos": [
2280,
190
],
"size": [
230,
280
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [
{
"localized_name": "string",
"name": "string",
"type": "STRING",
"widget": {
"name": "string"
},
"link": 77
}
],
"outputs": [
{
"localized_name": "STRING",
"name": "STRING",
"type": "STRING",
"links": [
78,
79
]
}
],
"properties": {
"Node name for S&R": "RegexExtract",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": [
"",
"(?<=--no\\s)(.+)$",
"First Match",
true,
false,
false,
1
]
},
{
"id": 47,
"type": "PreviewAny",
"pos": [
2620,
200
],
"size": [
220,
280
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"localized_name": "source",
"name": "source",
"type": "*",
"link": 78
}
],
"outputs": [],
"title": "Preview Negative Prompt",
"properties": {
"Node name for S&R": "PreviewAny",
"cnr_id": "comfy-core",
"ver": "0.3.76"
},
"widgets_values": [
null,
null,
null
]
}
],
"groups": [],
"links": [
{
"id": 70,
"origin_id": -10,
"origin_slot": 0,
"target_id": 42,
"target_slot": 0,
"type": "IMAGE"
},
{
"id": 71,
"origin_id": -10,
"origin_slot": 1,
"target_id": 42,
"target_slot": 1,
"type": "IMAGE"
},
{
"id": 72,
"origin_id": 42,
"origin_slot": 0,
"target_id": -20,
"target_slot": 0,
"type": "VIDEO"
},
{
"id": 73,
"origin_id": 42,
"origin_slot": 0,
"target_id": -20,
"target_slot": 0,
"type": "VIDEO"
},
{
"id": 74,
"origin_id": -10,
"origin_slot": 0,
"target_id": 45,
"target_slot": 0,
"type": "IMAGE"
},
{
"id": 75,
"origin_id": -10,
"origin_slot": 1,
"target_id": 45,
"target_slot": 1,
"type": "IMAGE"
},
{
"id": 77,
"origin_id": 50,
"origin_slot": 0,
"target_id": 48,
"target_slot": 0,
"type": "STRING"
},
{
"id": 78,
"origin_id": 48,
"origin_slot": 0,
"target_id": 47,
"target_slot": 0,
"type": "STRING"
},
{
"id": 79,
"origin_id": 48,
"origin_slot": 0,
"target_id": 42,
"target_slot": 3,
"type": "STRING"
},
{
"id": 80,
"origin_id": 45,
"origin_slot": 0,
"target_id": 50,
"target_slot": 0,
"type": "IMAGE"
},
{
"id": 81,
"origin_id": 49,
"origin_slot": 0,
"target_id": 46,
"target_slot": 0,
"type": "STRING"
},
{
"id": 82,
"origin_id": 50,
"origin_slot": 0,
"target_id": 49,
"target_slot": 0,
"type": "STRING"
},
{
"id": 83,
"origin_id": 49,
"origin_slot": 0,
"target_id": 42,
"target_slot": 2,
"type": "STRING"
}
],
"extra": {
"workflowRendererVersion": "LG"
}
},
{
"id": "60386633-e2b8-4772-8649-0b125045c63a",
"version": 1,
"state": {
"lastGroupId": 0,
"lastNodeId": 50,
"lastLinkId": 83,
"lastRerouteId": 0
},
"revision": 0,
"config": {},
"name": "Generate Video",
"inputNode": {
"id": -10,
"bounding": [
1530,
-330,
120,
80
]
},
"outputNode": {
"id": -20,
"bounding": [
3370,
-320,
120,
60
]
},
"inputs": [
{
"id": "b623a375-a6dc-4f9c-8e82-e71b94507a75",
"name": "image1",
"type": "IMAGE",
"linkIds": [
70,
74
],
"localized_name": "image1",
"pos": [
1630,
-310
]
},
{
"id": "7a04f7ae-97c2-4afe-9acf-9f990c80524c",
"name": "image2",
"type": "IMAGE",
"linkIds": [
71,
75
],
"localized_name": "image2",
"pos": [
1630,
-290
]
}
],
"outputs": [
{
"id": "dbfad197-36c3-4cc9-aa60-d01c9477d144",
"name": "VIDEO",
"type": "VIDEO",
"linkIds": [
73
],
"localized_name": "VIDEO",
"pos": [
3390,
-300
]
}
],
"widgets": [],
"nodes": [
{
"id": 45,
"type": "BatchImagesNode",
"pos": [
1670,
-130
],
"size": [
169.23046875,
66
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"label": "image0",
"localized_name": "images.image0",
"name": "images.image0",
"type": "IMAGE",
"link": 74
},
{
"label": "image1",
"localized_name": "images.image1",
"name": "images.image1",
"type": "IMAGE",
"link": 75
},
{
"label": "image2",
"localized_name": "images.image2",
"name": "images.image2",
"shape": 7,
"type": "IMAGE",
"link": null
}
],
"outputs": [
{
"localized_name": "IMAGE",
"name": "IMAGE",
"type": "IMAGE",
"links": [
80
]
}
],
"properties": {
"Node name for S&R": "BatchImagesNode"
},
"widgets_values": []
},
{
"id": 42,
"type": "KlingStartEndFrameNode",
"pos": [
2890,
-320
],
"size": [
400,
254
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"localized_name": "start_frame",
"name": "start_frame",
"type": "IMAGE",
"link": 70
},
{
"localized_name": "end_frame",
"name": "end_frame",
"type": "IMAGE",
"link": 71
},
{
"localized_name": "prompt",
"name": "prompt",
"type": "STRING",
"widget": {
"name": "prompt"
},
"link": 83
},
{
"localized_name": "negative_prompt",
"name": "negative_prompt",
"type": "STRING",
"widget": {
"name": "negative_prompt"
},
"link": 79
}
],
"outputs": [
{
"localized_name": "VIDEO",
"name": "VIDEO",
"type": "VIDEO",
"links": [
72,
73
]
},
{
"localized_name": "video_id",
"name": "video_id",
"type": "STRING",
"links": null
},
{
"localized_name": "duration",
"name": "duration",
"type": "STRING",
"links": null
}
],
"properties": {
"Node name for S&R": "KlingStartEndFrameNode",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": [
"",
"",
0.5,
"16:9",
"pro mode / 5s duration / kling-v2-5-turbo"
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 50,
"type": "GeminiNode",
"pos": [
1860,
-130
],
"size": [
360,
550
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"localized_name": "images",
"name": "images",
"shape": 7,
"type": "IMAGE",
"link": 80
},
{
"localized_name": "audio",
"name": "audio",
"shape": 7,
"type": "AUDIO",
"link": null
},
{
"localized_name": "video",
"name": "video",
"shape": 7,
"type": "VIDEO",
"link": null
},
{
"localized_name": "files",
"name": "files",
"shape": 7,
"type": "GEMINI_INPUT_FILES",
"link": null
}
],
"outputs": [
{
"localized_name": "STRING",
"name": "STRING",
"type": "STRING",
"links": [
77,
82
]
}
],
"properties": {
"Node name for S&R": "GeminiNode",
"cnr_id": "comfy-core",
"ver": "0.3.76"
},
"widgets_values": [
"STEP 1: ANALYZE BOTH IMAGES\nBefore crafting the prompt, analyze both images to understand:\n\n\nCamera distance (wide shot, medium, close-up, extreme close-up, macro)\nCamera angle (low-angle, high-angle, eye-level, overhead, Dutch, worm's eye, bird's eye)\nCamera position relative to subject (front, side profile, 3/4 view, back, overhead)\nFraming (full body, torso, chest-up, face only, detail/macro)\nSubject position and pose\nLighting setup and direction\nBackground elements and depth\nFocal length characteristics (wide-angle distortion vs telephoto compression)\n\nSTEP 2: DETERMINE CAMERA MOVEMENT\nBased on the differences between images, identify the primary camera movement:\n\n\nDistance change: Dolly-in (closer) or Dolly-out (farther)\nVertical angle change: Tilt up/down or Crane up/down\nHorizontal angle change: Pan left/right or Orbit/Arc around subject\nHeight change: Crane/Pedestal up or down\nLateral movement: Truck/Track left or right\n\nSTEP 3: OUTPUT ONLY THE PROMPT\nDo not include explanations, commentary, or additional text.\nOutput ONLY the transition prompt in this format:\n\n\n[CAMERA MOVEMENT] from [START POSITION] to [END POSITION]. Subject remains stationary and consistent throughout. Camera [MOVEMENT VERB] fluidly, maintaining [FOCUS BEHAVIOR] on [KEY ELEMENT]. Lighting stays constant, background [BACKGROUND BEHAVIOR]. [TECHNICAL SPECS]. --no [NEGATIVE ELEMENTS]\n\nCore Principle\n\nFor transitions where the subject/scene remains consistent and only the camera position changes, use this structured approach to ensure smooth, cinematic results.\n\n\nPrompt Structure Template\n\n[CAMERA MOVEMENT] from [START POSITION] to [END POSITION]. Subject remains stationary and consistent throughout. Camera [MOVEMENT VERB] fluidly, maintaining [FOCUS BEHAVIOR] on [KEY ELEMENT]. Lighting stays constant, background [BACKGROUND BEHAVIOR]. [TECHNICAL SPECS]. --no [NEGATIVE ELEMENTS]\n\nComponent Breakdown\n\n1. CAMERA MOVEMENT TYPES\n\n\nDolly-in/Push-in: Camera moves forward toward subject\nDolly-out/Pull-back: Camera moves backward away from subject\nOrbit/Arc: Camera circles around subject (specify left/right)\nTilt: Camera angles up or down on fixed position\nPan: Camera swivels left or right horizontally\nCrane/Pedestal: Camera moves vertically up or down\nTracking/Trucking: Camera moves parallel to subject\n\n2. POSITION DESCRIPTORS\n\n\nDistance: wide shot, medium shot, close-up, extreme close-up, macro\nAngle: low-angle, high-angle, eye-level, overhead, Dutch angle, worm's eye view, bird's eye view\nFraming: full body, three-quarter, torso, chest-up, face, detail\n\n3. MOVEMENT VERBS (choose intensity)\n\n\nSlowly, steadily, smoothly, gradually, fluidly\nRapidly, dynamically, swiftly\nElegantly, dramatically, confidently\n\n4. FOCUS BEHAVIOR\n\n\nSharp focus throughout\nRack focus from [A] to [B]\nMaintains focus on [element]\nShallow depth of field\nDeep focus\nProgressive focus shift\n\n5. BACKGROUND BEHAVIOR\n\n\nStays consistent\nBlurs to bokeh\nSharpens into view\nFades to [color]\nRemains sharp throughout\n\n6. TECHNICAL SPECS (standard cinematic quality)\n\n\nCinematic depth of field\nStable gimbal/dolly movement\nProfessional commercial grade\n24fps (or 30fps, 60fps for slow-motion feel)\nClean sensor, no grain (or \"film grain\" if desired)\n\n\nExample Prompts by Movement Type\n\nDOLLY-IN (Wide → Close-up)\n\n\nSmooth camera dolly-in from wide establishing shot to extreme close-up. Subject remains stationary. Camera pushes forward steadily, transitioning focus from [background element] to [detail]. Lighting stays constant, background softly blurs to bokeh. Cinematic depth of field, stable gimbal movement, 24fps. --no shake, cuts, warping, distortion\n\nDOLLY-OUT (Close-up → Wide)\n\n\nSmooth camera pull-back from extreme close-up to wide establishing shot. Subject remains centered and stationary. Camera retreats steadily, revealing environment progressively. Focus maintains on subject while background sharpens into view. Even lighting, cinematic depth of field, 24fps. --no shake, cuts, jump, warping\n\nORBIT (Circular movement)\n\n\nSmooth camera orbit from front view to side profile. Subject remains stationary at center. Camera arcs left fluidly in 90-degree rotation, maintaining constant distance and eye-level angle. Lighting stays consistent, sharp focus throughout. Gimbal stabilized circular tracking, 24fps. --no shake, warping, speed changes, distortion\n\nTILT (Vertical angle change)\n\n\nSmooth camera tilt from low-angle to high-angle. Subject remains stationary. Camera tilts upward gradually, shifting perspective from worm's eye view to bird's eye view. Distance stays constant, lighting consistent. Stable tripod tilt, cinematic framing, 24fps. --no shake, panning, horizontal movement, warping\n\nPAN (Horizontal swivel)\n\n\nSmooth camera pan from left profile to right profile. Subject remains stationary. Camera swivels horizontally across 180 degrees, maintaining constant distance and eye-level. Sharp focus throughout, even lighting. Fluid tripod pan, 24fps. --no shake, tilting, vertical movement, cuts\n\nCRANE UP/DOWN\n\n\nSmooth camera crane from ground-level to overhead view. Subject remains stationary at center. Camera elevates vertically, angle shifting from eye-level to bird's eye view. Distance adjusts proportionally, lighting consistent. Stabilized crane movement, 24fps. --no shake, lateral movement, warping, distortion\n\nKey Rules for Camera-Only Transitions\n\nAlways specify subject remains stationary - This prevents unwanted morphing\nDescribe start AND end positions clearly - Gives model clear targets\nUse specific movement verbs - \"Dolly-in\" is clearer than \"moves closer\"\nLock down what DOESN'T change - Lighting, subject, clothing, expression\nInclude technical quality markers - Gimbal, 24fps, cinematic, stable\nNegative prompts are critical - Prevents warping/morphing/distortion\nKeep prompts under 75 words - Model weights early words heavier\nOne primary movement per transition - Don't combine dolly + pan + tilt\n\nAdvanced Techniques\n\nSpeed Ramping:\n\"Camera begins slow dolly-in, accelerates midway, then decelerates smoothly into final close-up\"\n\n\nCombined Movements (use sparingly):\n\"Camera dollies in while simultaneously tilting down, maintaining subject center-frame\"\n\n\nFocus Pulls:\n\"Rack focus from foreground [element] to background [element] as camera remains locked\"\n\n\nLens Simulation:\n\"Wide-angle 24mm distortion gradually compresses to telephoto 85mm compression\"\n\n\n\nCritical Output Rule\n\nOUTPUT ONLY THE PROMPT. NO EXPLANATIONS. NO COMMENTARY. NO ADDITIONAL TEXT.",
"gemini-2.5-flash",
123,
"fixed",
""
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 49,
"type": "RegexExtract",
"pos": [
2280,
-130
],
"size": [
230,
270
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"localized_name": "string",
"name": "string",
"type": "STRING",
"widget": {
"name": "string"
},
"link": 82
}
],
"outputs": [
{
"localized_name": "STRING",
"name": "STRING",
"type": "STRING",
"links": [
81,
83
]
}
],
"properties": {
"Node name for S&R": "RegexExtract",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": [
"",
"^(.+?)(?=\\s+--no)",
"First Match",
true,
false,
false,
1
]
},
{
"id": 46,
"type": "PreviewAny",
"pos": [
2620,
-130
],
"size": [
220,
280
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"localized_name": "source",
"name": "source",
"type": "*",
"link": 81
}
],
"outputs": [],
"title": "Preview Positive Prompt",
"properties": {
"Node name for S&R": "PreviewAny",
"cnr_id": "comfy-core",
"ver": "0.3.76"
},
"widgets_values": [
null,
null,
null
]
},
{
"id": 48,
"type": "RegexExtract",
"pos": [
2280,
190
],
"size": [
230,
280
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [
{
"localized_name": "string",
"name": "string",
"type": "STRING",
"widget": {
"name": "string"
},
"link": 77
}
],
"outputs": [
{
"localized_name": "STRING",
"name": "STRING",
"type": "STRING",
"links": [
78,
79
]
}
],
"properties": {
"Node name for S&R": "RegexExtract",
"cnr_id": "comfy-core",
"ver": "0.4.0"
},
"widgets_values": [
"",
"(?<=--no\\s)(.+)$",
"First Match",
true,
false,
false,
1
]
},
{
"id": 47,
"type": "PreviewAny",
"pos": [
2620,
200
],
"size": [
220,
280
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"localized_name": "source",
"name": "source",
"type": "*",
"link": 78
}
],
"outputs": [],
"title": "Preview Negative Prompt",
"properties": {
"Node name for S&R": "PreviewAny",
"cnr_id": "comfy-core",
"ver": "0.3.76"
},
"widgets_values": [
null,
null,
null
]
}
],
"groups": [],
"links": [
{
"id": 70,
"origin_id": -10,
"origin_slot": 0,
"target_id": 42,
"target_slot": 0,
"type": "IMAGE"
},
{
"id": 71,
"origin_id": -10,
"origin_slot": 1,
"target_id": 42,
"target_slot": 1,
"type": "IMAGE"
},
{
"id": 72,
"origin_id": 42,
"origin_slot": 0,
"target_id": -20,
"target_slot": 0,
"type": "VIDEO"
},
{
"id": 73,
"origin_id": 42,
"origin_slot": 0,
"target_id": -20,
"target_slot": 0,
"type": "VIDEO"
},
{
"id": 74,
"origin_id": -10,
"origin_slot": 0,
"target_id": 45,
"target_slot": 0,
"type": "IMAGE"
},
{
"id": 75,
"origin_id": -10,
"origin_slot": 1,
"target_id": 45,
"target_slot": 1,
"type": "IMAGE"
},
{
"id": 77,
"origin_id": 50,
"origin_slot": 0,
"target_id": 48,
"target_slot": 0,
"type": "STRING"
},
{
"id": 78,
"origin_id": 48,
"origin_slot": 0,
"target_id": 47,
"target_slot": 0,
"type": "STRING"
},
{
"id": 79,
"origin_id": 48,
"origin_slot": 0,
"target_id": 42,
"target_slot": 3,
"type": "STRING"
},
{
"id": 80,
"origin_id": 45,
"origin_slot": 0,
"target_id": 50,
"target_slot": 0,
"type": "IMAGE"
},
{
"id": 81,
"origin_id": 49,
"origin_slot": 0,
"target_id": 46,
"target_slot": 0,
"type": "STRING"
},
{
"id": 82,
"origin_id": 50,
"origin_slot": 0,
"target_id": 49,
"target_slot": 0,
"type": "STRING"
},
{
"id": 83,
"origin_id": 49,
"origin_slot": 0,
"target_id": 42,
"target_slot": 2,
"type": "STRING"
}
],
"extra": {
"workflowRendererVersion": "LG"
}
}
]
},
"config": {},
"extra": {
"ds": {
"scale": 0.18255033928362413,
"offset": [
1819.1380937248587,
1649.0672503933533
]
},
"frontendVersion": "1.37.11",
"workflowRendererVersion": "LG",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}