Handmade stage film: Molly Tea's Halloween drink in seven photos
0:18 · 9:16
Prompt
Turn our seven Halloween campaign photos into an 18-second brand film for TikTok: Halloween night, nothing on TV, a ghost climbs out of the screen and goes after her Magic Pretty Water (gardenia, berries, yogurt), and one sip later she's sitting on a giant witch's hat. End on the Molly Tea wordmark, the cup, "Halloween limited" and "Now in US · CA · UK · TH · AU".
Notes
Made by the Skill for an official collaboration with Molly Tea, from seven of the brand's own Halloween campaign photos: each still was extended to 9:16 with Nano Banana 2 and its original pixels laid back on top, five were brought to life with Kling 2.5 Turbo, and the ghost, stars, flower, berry, potion and cup were cut out of the photos as puppets (about $2.50 in model usage). The stepped stop-motion playback, puppets, captions, sound and last card were rendered with headless Chrome and FFmpeg.
Input file
{
"reel": "assets/stage-reel.mp4",
"shots": [
{
"from": 0,
"to": 0.583,
"speed": 0.5,
"hold": 0.5,
"captions": [
{
"text": "Halloween night.",
"at": 0.1,
"x": 540,
"y": 285,
"rot": -3
},
{
"text": "Nothing on.",
"at": 0.75,
"x": 300,
"y": 1180,
"rot": 3
}
],
"sounds": [
[
1.3,
"click"
]
]
},
{
"from": 0,
"to": 2.9,
"screen": {
"rect": [
108,
714,
307,
196
],
"off": 0.08,
"static": 0.42,
"plate": "assets/stage-plate.webp",
"plateAt": 1.85
},
"captions": [
{
"text": "…then something\ncame on.",
"at": 0.6,
"out": 1.8,
"x": 770,
"y": 470,
"rot": -2
}
],
"puppets": [
{
"image": "assets/stage-ghost.webp",
"sound": "pop",
"exit": true,
"path": [
[
1.85,
266,
811,
127,
0
],
[
2,
280,
720,
170,
-8
],
[
2.25,
500,
560,
260,
10
],
[
2.5,
760,
430,
300,
-6
],
[
2.9,
1260,
300,
320,
14
]
]
}
],
"sounds": [
[
0.45,
"ghost"
],
[
0.55,
"boing"
],
[
1.3,
"boing"
],
[
2,
"tap"
],
[
2.2,
"whoosh"
],
[
2.6,
"tap"
]
]
},
{
"from": 1.8,
"to": 4,
"captions": [
{
"text": "It wanted a sip.",
"at": 0.35,
"x": 770,
"y": 300,
"rot": 3
}
],
"puppets": [
{
"image": "assets/stage-ghost.webp",
"exit": true,
"path": [
[
0,
-180,
420,
240,
-14
],
[
0.35,
150,
430,
220,
8
],
[
0.6,
160,
440,
215,
-4
],
[
1.3,
150,
425,
215,
6
],
[
1.55,
300,
400,
240,
-6
],
[
2.2,
1280,
360,
280,
12
]
]
}
],
"sounds": [
[
0,
"whoosh"
],
[
0.6,
"ghost"
],
[
1.55,
"whoosh"
]
]
},
{
"from": 1,
"to": 3.8,
"captions": [
{
"text": "Gardenia. Berries. Yogurt.",
"at": 0.12,
"x": 540,
"y": 285,
"rot": -2,
"size": 60
}
],
"tags": [
{
"text": "berries!",
"at": 1.35,
"x": 905,
"y": 1075,
"to": [
735,
905
],
"ink": "dark",
"rot": -6
}
],
"puppets": [
{
"image": "assets/stage-ghost.webp",
"path": [
[
0,
170,
-220,
200,
0
],
[
0.3,
170,
860,
200,
-6
],
[
0.38,
170,
880,
200,
0
],
[
1.38,
170,
880,
200,
0
],
[
1.47,
150,
760,
210,
-14
],
[
1.62,
170,
880,
200,
6
]
]
},
{
"image": "assets/stage-berry.webp",
"exit": true,
"path": [
[
1.38,
720,
870,
40,
0
],
[
1.47,
770,
700,
100,
-20
],
[
1.72,
890,
560,
100,
40
],
[
2,
1000,
720,
90,
90
],
[
2.3,
1170,
1000,
80,
140
]
]
}
],
"sounds": [
[
0.38,
"land"
],
[
1.35,
"stab"
],
[
1.47,
"ghost"
]
]
},
{
"still": "assets/stage-macro.webp",
"len": 1.1,
"box": [
0,
0,
619
],
"captions": [
{
"text": "One sip…",
"at": 0.1,
"x": 540,
"y": 1450,
"rot": -3
}
],
"puppets": [
{
"image": "assets/stage-star.webp",
"sound": "pop",
"path": [
[
0.3,
850,
430,
0,
-20
],
[
0.38,
850,
430,
190,
-8
]
]
},
{
"image": "assets/stage-star.webp",
"sound": "pop",
"path": [
[
0.55,
230,
780,
0,
10
],
[
0.63,
230,
780,
150,
12
]
]
}
],
"boxTo": [
300,
0,
619
]
},
{
"from": 0.3,
"to": 2.9,
"captions": [
{
"text": "…full magic.",
"at": 0.2,
"x": 330,
"y": 300,
"rot": 3
}
],
"puppets": [
{
"image": "assets/stage-star.webp",
"sound": "pop",
"path": [
[
0.5,
880,
560,
0,
0
],
[
0.58,
880,
560,
150,
-12
]
]
},
{
"image": "assets/stage-star.webp",
"sound": "pop",
"path": [
[
0.7,
150,
540,
0,
0
],
[
0.78,
150,
540,
125,
14
]
]
},
{
"image": "assets/stage-star.webp",
"sound": "pop",
"path": [
[
0.9,
1000,
860,
0,
0
],
[
0.98,
1000,
860,
165,
-6
]
]
},
{
"image": "assets/stage-star.webp",
"sound": "pop",
"path": [
[
1.1,
170,
840,
0,
0
],
[
1.18,
170,
840,
115,
20
]
]
},
{
"image": "assets/stage-flower.webp",
"sound": "pop",
"path": [
[
1.35,
880,
330,
0,
0
],
[
1.43,
880,
330,
210,
0
],
[
2.6,
880,
330,
210,
90
]
]
},
{
"image": "assets/stage-ghost.webp",
"sound": "whoosh",
"path": [
[
1.7,
1300,
1180,
220,
20
],
[
2.1,
960,
1190,
220,
-6
],
[
2.6,
940,
1180,
220,
4
]
]
}
],
"sounds": [
[
0,
"sip",
0.45
]
]
},
{
"still": "assets/stage-hero.webp",
"len": 2.1,
"box": [
0,
0,
1080
],
"tags": [
{
"text": "Magic\nPretty Water",
"at": 0.55,
"x": 730,
"y": 300,
"to": [
835,
880
],
"ink": "light",
"rot": -5,
"size": 80
}
],
"puppets": [
{
"image": "assets/stage-ghost.webp",
"sound": "ghost",
"path": [
[
0.3,
-160,
760,
230,
25
],
[
0.6,
90,
740,
230,
12
],
[
2.1,
110,
730,
230,
8
]
]
},
{
"image": "assets/stage-star.webp",
"sound": "pop",
"path": [
[
0.95,
980,
1300,
0,
0
],
[
1.03,
980,
1300,
120,
-10
]
]
}
],
"boxTo": [
160,
260,
860
]
}
],
"end": {
"len": 2.9,
"bg": "assets/stage-wall.webp",
"wordmark": "assets/stage-wordmark.webp",
"wordmarkY": 340,
"wordmarkWidth": 660,
"name": "Magic Pretty Water",
"nameY": 520,
"line": "Gardenia · Berry · Yogurt",
"lineY": 622,
"note": "Halloween limited",
"noteY": 1400,
"cta": "Now in US · CA · UK · TH · AU",
"ctaY": 1510,
"puppets": [
{
"image": "assets/stage-cup.webp",
"sound": "whoosh",
"path": [
[
0.15,
-420,
1040,
700,
-14
],
[
0.45,
300,
1010,
700,
5
],
[
0.55,
330,
1000,
700,
0
]
]
},
{
"image": "assets/stage-ghost.webp",
"sound": "ghost",
"path": [
[
0.7,
1240,
900,
220,
20
],
[
1,
850,
860,
220,
-8
]
]
},
{
"image": "assets/stage-star.webp",
"sound": "pop",
"path": [
[
0.85,
180,
800,
0,
0
],
[
0.93,
180,
800,
120,
-12
]
]
},
{
"image": "assets/stage-potion.webp",
"sound": "pop",
"path": [
[
1.15,
930,
1210,
0,
0
],
[
1.23,
930,
1210,
190,
10
]
]
}
]
},
"music": "assets/stage.m4a"
}Built withReelity SkillNano BananaKlingHeadless ChromeFFmpeg
