<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Milos Tu</title>
    <description>The latest articles on DEV Community by Milos Tu (@milostu).</description>
    <link>https://dev.to/milostu</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4142611%2F0da8473d-21cd-4594-a444-d3ea2ea7480c.jpg</url>
      <title>DEV Community: Milos Tu</title>
      <link>https://dev.to/milostu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/milostu"/>
    <language>en</language>
    <item>
      <title>I turn TikTok trends into one-photo AI video templates. Here's what keeps breaking</title>
      <dc:creator>Milos Tu</dc:creator>
      <pubDate>Sat, 31 Oct 2026 11:55:43 +0000</pubDate>
      <link>https://dev.to/milostu/i-turn-tiktok-trends-into-one-photo-ai-video-templates-heres-what-keeps-breaking-4ioi</link>
      <guid>https://dev.to/milostu/i-turn-tiktok-trends-into-one-photo-ai-video-templates-heres-what-keeps-breaking-4ioi</guid>
      <description>&lt;p&gt;Most people don't want to write prompts. They want to drop their own face, or their friends', into the clip everyone else is already posting. That's the bet my site is built on.&lt;/p&gt;

&lt;p&gt;So for the last few weeks, most of my work on &lt;a href="https://aimakevideo.com" rel="noopener noreferrer"&gt;aiMakeVideo&lt;/a&gt; has been one loop: spot a TikTok trend, rebuild its reference clip as a template, and ship a page where you upload a photo and get the trend back with you in it. Two recent ones: a &lt;a href="https://aimakevideo.com/thriller-dance-ai" rel="noopener noreferrer"&gt;Thriller dance generator&lt;/a&gt; (one photo, you lead a zombie crowd for 15 seconds) and an &lt;a href="https://aimakevideo.com/tiny-desk-ai" rel="noopener noreferrer"&gt;Outstanding Tiny Desk generator&lt;/a&gt; (one to five photos, your band in a 19-second office concert).&lt;/p&gt;

&lt;p&gt;The pipeline is simple to describe. Almost every step broke at least once. Here's the list.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pipeline in one paragraph
&lt;/h2&gt;

&lt;p&gt;Tear the reference clip down to a shot table with timecodes. Turn the clip into a depth video with an open-source depth model, so the motion, the camera path and the cuts come from the original while the people don't. Generate one "empty set" plate with every person removed. Then send the model the depth video, the plate, a face crop plus the full photo of each person, and a prompt that walks through the shot table beat by beat. Lay the trend's audio track under the result, charge a flat price, and refund automatically if the render fails.&lt;/p&gt;

&lt;p&gt;With that setup the cuts land where the original's cuts are. On the Tiny Desk template they come out within three frames of the reference. The problems are everywhere else.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The reference clip leaks into your output
&lt;/h2&gt;

&lt;p&gt;The first paid Thriller render looked great: the face held from the close-up all the way to the wide crowd shot, and the moves matched the track. Then I noticed the lead was wearing a cross necklace. The person in the photo wasn't. The dancer in the reference clip was.&lt;/p&gt;

&lt;p&gt;A depth map is supposed to carry shape, not identity, but a necklace &lt;em&gt;is&lt;/em&gt; shape. The model saw something on the chest and filled it in with the most plausible thing it knew.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; the prompt now forbids hats, caps, necklaces and chains unless the uploaded photo shows one. I'm still watching the next real renders to confirm it holds. Lesson: list what's on the reference performer's body and say explicitly what &lt;em&gt;not&lt;/em&gt; to carry over.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Drawing on the depth map makes black mouths
&lt;/h2&gt;

&lt;p&gt;Singing trends need open mouths, and a plain depth map carries no mouth information. So I tried being clever and drew a dark hole on the depth video wherever the original singer's mouth was open.&lt;/p&gt;

&lt;p&gt;The model took it literally. About 30% of open mouths came back as flat black patches. A softer, feathered grey hole plus "teeth and tongue, never a black patch" in the prompt brought that down to about 15%. The plain, untouched depth map: 0%.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; stop drawing on the depth map. I wrote a small script that counts open mouths with a mean brightness that's too low and too flat, and ran it on every test render, which is how I got those numbers instead of a gut feeling.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Lip sync is the first thing viewers notice
&lt;/h2&gt;

&lt;p&gt;I once put a render up as a page example after checking the cast, the scene, the cuts and the audio offset. Everything except the mouths. They didn't follow the song, and it was spotted within seconds of someone else watching it.&lt;/p&gt;

&lt;p&gt;The cause is structural: the video model renders silently, the depth map has no mouth data, and the singing is only described in words. It can't follow lyrics it never heard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; nothing goes up as an example until I've watched it with the track and compared mouth open/close against the original. I also measure it now: correlating mouth-open frames with the source gives about 0.7 on a good run, where chance is about 0.13. Wide shots are where it slips: on one run the background singers had their mouths open 78% of the time, against 34% in the source.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Users upload their dog
&lt;/h2&gt;

&lt;p&gt;My first paying customer uploaded dog photos to a dance template. That template used a pipeline built for replacing people, and it did what it was built for: it swapped the dancer for a random woman. No dog in sight, full price charged.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; a face check in the browser before upload. A lightweight face detector runs twice, on the whole photo and on the upper-middle crop, and its confidence decides the route. Real people scored 0.79 and up; the dogs scored 0.53 and 0.55; a cartoon gnome scored 0.66. A clear cut-off between those sends people to the person pipeline, and pets and characters to a different one. The user sees the choice preselected and can override it.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. One photo of two people becomes a paper cutout
&lt;/h2&gt;

&lt;p&gt;On a two-person template, I let people upload a single photo of both of them. The model kept the photo's waist-up crop, so the result looked like two people pasted in front of a counter: hard edge, no camera move.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; the browser cuts the photo down the middle and sends each half as its own person, with the normal two-photo prompt. The result had natural bodies, a real push-in, and no ghost third person made from the strips at the cut. Rule since then: one person per reference image, always.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Empty seats need a policy, not an error
&lt;/h2&gt;

&lt;p&gt;The Tiny Desk clip has five parts: lead singer, keyboard, saxophone and two backup singers. Very few people have five good photos ready, so only the lead is required. Empty seats are played by AI musicians described in the prompt, and they stay the same people from shot to shot.&lt;/p&gt;

&lt;p&gt;One detail from the shot table turned into a product decision: the lead singer and the keyboard player are never on screen at the same time. So if you upload only one photo, you play both parts and appear in every shot. A competitor fills that seat with a stranger instead. I tested the one-photo version and kept it, because people make these videos to see themselves.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. The boring web bugs
&lt;/h2&gt;

&lt;p&gt;Two non-AI problems took longer to find than they should have.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Autoplay ignores &lt;code&gt;preload&lt;/code&gt;.&lt;/strong&gt; Each template page opened with a muted autoplay preview. On a slow connection it pulled 3–5 MB on first render and pushed my config API call from about 0.5 s to 6.1 s. Now the page shows the poster first and attaches a light, silent preview copy only after the data fetches and the session check settle and the browser is idle. The Tiny Desk preview went from 5.0 MB to 1.9 MB.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Re-cut samples stay invisible.&lt;/strong&gt; My sample videos are cached for a day at the browser and at the edge. When I re-encoded an example under the same filename, the server had the new file and my own browser kept showing the old one. Now a replaced sample always gets a new name (&lt;code&gt;-v2&lt;/code&gt;), plus a test that checks every page points at a real preview file.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd tell myself three weeks ago
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Write the shot table before the prompt. Every fix above starts from knowing exactly what happens at each timecode.&lt;/li&gt;
&lt;li&gt;Measure the failure you care about (black mouths, lip sync, face match) with a script, even a crude one. "Looks fine" is how the necklace shipped.&lt;/li&gt;
&lt;li&gt;Decide what happens with the weird inputs (pets, group photos, missing bandmates) before launch. Users find them on day one.&lt;/li&gt;
&lt;li&gt;Refund failed renders automatically. It costs less than the support emails.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The prompts and reference workflows from my earlier rebuild are in a &lt;a href="https://github.com/tumingguang-svg/aimakevideo-prompt-cookbook" rel="noopener noreferrer"&gt;GitHub cookbook&lt;/a&gt;, and the full process for that one is in &lt;a href="https://dev.to/zenotu/i-rebuilt-a-viral-youtube-short-with-ai-it-got-522k-views-jb1"&gt;my previous post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you've built anything on top of video models: which of these bit you too, and what broke that isn't on this list?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>showdev</category>
      <category>sideprojects</category>
    </item>
    <item>
      <title>I rebuilt a viral Youtube Short with AI — it got 522K views</title>
      <dc:creator>Milos Tu</dc:creator>
      <pubDate>Mon, 19 Oct 2026 10:28:06 +0000</pubDate>
      <link>https://dev.to/milostu/i-rebuilt-a-viral-youtube-short-with-ai-it-got-522k-views-jb1</link>
      <guid>https://dev.to/milostu/i-rebuilt-a-viral-youtube-short-with-ai-it-got-522k-views-jb1</guid>
      <description>&lt;p&gt;Complex action is no longer the hard part. AI can reproduce it now. What it still can't do for you is &lt;strong&gt;direct&lt;/strong&gt; — and that is the actual skill: shot sizes, camera moves, where the cut lands, and what you deliberately keep out of frame.&lt;/p&gt;

&lt;p&gt;I rebuilt a 321-million-view Korean Short to test that. First attempt: &lt;strong&gt;522,000 views&lt;/strong&gt;. The result is 42 seconds: three 15-second generations cut together.&lt;/p&gt;

&lt;p&gt;Most AI video falls apart for a boring reason — it cuts too much. Every second and a half the model hands you a new angle, and the result reads as a slideshow of unrelated frames. The clip I was rebuilding does the opposite: &lt;strong&gt;four camera setups inside the first four seconds&lt;/strong&gt;, then &lt;strong&gt;27 seconds without a cut&lt;/strong&gt;. That contrast is the whole trick.&lt;/p&gt;

&lt;p&gt;Here is the full process, including the three prompt sets that produced the result.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — four cuts inside four seconds, then 27 seconds of continuous slow motion. One reference image, reused by all three clips. Three 15-second prompts, every beat timecoded to a camera and a single event. Expect several takes per prompt: the density is why one pass rarely lands.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The two clips
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The original&lt;/strong&gt; — 32 seconds, 321 million views. A Korean Short where a couple keeps a falling egg in the air. The uploader blocks off-site playback, so here is the cover — click through to watch:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/shorts/l5pNeR7Q5mo" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ftumingguang-svg.github.io%2Faimakevideo-prompt-cookbook%2Fdevto%2Fposter-card.jpg" alt="The reference Short: a pastel kitchen, a woman with a purple braid carrying a tray of eggs, a man at the table" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;▶ &lt;strong&gt;&lt;a href="https://www.youtube.com/shorts/l5pNeR7Q5mo" rel="noopener noreferrer"&gt;Watch the original on YouTube&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My rebuild&lt;/strong&gt; — 42 seconds, 522,000 views. Three 15-second Seedance 2.5 clips, same kitchen, same beat structure, plus a dog:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/OyKBR-sxGHo" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;One case, not a formula: the same prompts will not reproduce it, and they did not reproduce the original's numbers either. What &lt;em&gt;is&lt;/em&gt; reproducible is the order of work:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Tear the reference down frame by frame&lt;/strong&gt; — write a shot list before you write a prompt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build exactly one reference image&lt;/strong&gt; — the whole Short runs on it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write timed prompts&lt;/strong&gt; — three 15-second clips, each beat given a timecode, a camera, an action.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generate several takes per prompt&lt;/strong&gt; — the action is too dense for one clean pass.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cut in the timeline&lt;/strong&gt; — sound effects are requested in the prompt; music and captions are not.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That order is the point. Everything below is detail.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The shot list comes first
&lt;/h2&gt;

&lt;p&gt;Before any prompt, the reference is broken into beats down to the frame. Nearly every instruction later in this post comes from this table.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Timecode&lt;/th&gt;
&lt;th&gt;What happens&lt;/th&gt;
&lt;th&gt;Camera&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0s00f–1s10f&lt;/td&gt;
&lt;td&gt;She cuts a snack; an egg rolls toward the table edge&lt;/td&gt;
&lt;td&gt;Eye-level medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1s10f–2s00f&lt;/td&gt;
&lt;td&gt;The egg leaves the table&lt;/td&gt;
&lt;td&gt;Side view&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2s00f–2s26f&lt;/td&gt;
&lt;td&gt;Egg falling; her astonished face&lt;/td&gt;
&lt;td&gt;Low angle from the floor, looking up&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2s26f–4s08f&lt;/td&gt;
&lt;td&gt;The egg keeps falling&lt;/td&gt;
&lt;td&gt;Top-down&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4s08f–8s11f&lt;/td&gt;
&lt;td&gt;He throws a whole tray of eggs into the air and dives after the falling one&lt;/td&gt;
&lt;td&gt;Wide, tracking the dive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8s11f–11s06f&lt;/td&gt;
&lt;td&gt;He lands flat; his right hand catches the egg and bounces it skyward&lt;/td&gt;
&lt;td&gt;Low, on the floor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11s06f–12s08f&lt;/td&gt;
&lt;td&gt;The egg rising&lt;/td&gt;
&lt;td&gt;Locked on the egg&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12s08f–13s26f&lt;/td&gt;
&lt;td&gt;She reacts — mouth open — and dives after it&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13s26f–16s05f&lt;/td&gt;
&lt;td&gt;She moves under the egg and jumps, both arms up&lt;/td&gt;
&lt;td&gt;Wide&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;16s05f–17s19f&lt;/td&gt;
&lt;td&gt;Second save: she pushes it back up&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;17s19f–19s22f&lt;/td&gt;
&lt;td&gt;Two levels: her jumping, him climbing from chair to table&lt;/td&gt;
&lt;td&gt;Wide + near&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;19s22f–20s22f&lt;/td&gt;
&lt;td&gt;Her face, close, eyes wide&lt;/td&gt;
&lt;td&gt;Close-up&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;20s22f–22s22f&lt;/td&gt;
&lt;td&gt;He hits the egg forward&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;22s22f–23s26f&lt;/td&gt;
&lt;td&gt;She grabs a frying pan&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;23s26f–25s03f&lt;/td&gt;
&lt;td&gt;Side view of the same hit&lt;/td&gt;
&lt;td&gt;Side&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;25s03f–26s03f&lt;/td&gt;
&lt;td&gt;She slides on her knees, pan held up&lt;/td&gt;
&lt;td&gt;Follow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;26s03f–28s03f&lt;/td&gt;
&lt;td&gt;Top-down on the pan, push in to a close-up&lt;/td&gt;
&lt;td&gt;Top-down → macro&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;28s03f–31s17f&lt;/td&gt;
&lt;td&gt;The egg lands in the pan; thumbs-up&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two things fall out of this table immediately:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The first four seconds are four different setups.&lt;/strong&gt; That's what makes the egg's fall feel chaotic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The next twenty-seven seconds never cut away from the action.&lt;/strong&gt; Slow motion is what keeps a single continuous shot readable when that much happens inside it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you take one thing from this post: &lt;strong&gt;write the shot list first&lt;/strong&gt;. A prompt written without a shot list produces exactly the slideshow you were trying to avoid.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. One reference image, not three
&lt;/h2&gt;

&lt;p&gt;This is where the workflow differs from the usual prompt list: &lt;strong&gt;three prompt sets, one image.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnyze1hmlt9pintmdi73z.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnyze1hmlt9pintmdi73z.jpg" alt="Left: the single kitchen reference image. Right: a frame from the finished Short — same room, same two people, same pastel palette." width="800" height="684"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Left: the reference image, built once and reused by all three clips. Right: a frame from the output. The composition, the characters and the palette all come from that one still.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The kitchen is built once — 9:16, the woman with purple braids on the left holding a tray, the man at the table on the right drinking water, one egg at the table edge between them — and every clip references that same image.&lt;/p&gt;

&lt;p&gt;Two decisions worth copying:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Both characters are in frame from the start.&lt;/strong&gt; Every clip needs her, him and the egg, so the reference has to establish all three at once. The cost is that each prompt then has to work to keep the &lt;em&gt;wrong&lt;/em&gt; character out of individual shots (more on that below).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The iterations went into the egg and the poses, not the room.&lt;/strong&gt; A reference image is cheap to fix and expensive to re-shoot. Fix it before you spend a single credit on video.&lt;/p&gt;

&lt;p&gt;If you build your own, keep the shape: &lt;strong&gt;one room, two people, one small object that is going to fly.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  3. The three prompt sets
&lt;/h2&gt;

&lt;p&gt;Each set is a 15-second clip. The first line of every set names who is who, because one image carries both characters. Every beat has a timecode.&lt;/p&gt;

&lt;h3&gt;
  
  
  Set 1 — the egg rolls off the table
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;She is the purple-braid woman, he is the black-haired man.

[0-2s] Reference.

The black-haired man sits on the chair drinking water; the
woman carries a tray of eggs and is slowly walking toward the
counter top in front of her; the camera focuses on the single
egg on the dining table, which is rolling toward the table
edge and has just dropped off the table.

[3-5s] The instant the egg rolls off the table and drops, the
picture enters slow motion: a low-angle close-up from the
floor shows the egg falling through mid-air in slow motion.
While the low-angle close-up holds on the egg, the
black-haired man must watch the egg's slow-motion fall in
extreme panic.

[6-9s] The purple-braid woman looks toward the front of the
camera in extreme anxiety and panic; she throws the plate in
her hands and the eggs on it hard into the air behind her. The
picture enters slow motion; the eggs scatter in mid-air behind
the woman; the purple-braid woman dives forward toward the
front of the camera in slow motion, anxious and terrified.

[10-12s] Slow motion, shot from a ground-level point of view.
A slow-motion shot of the purple-braid woman: she lies on the
floor and slides toward the camera; in the background some
out-of-focus eggs are falling in slow motion and smashing on
the floor behind her. She looks up in utter terror at one egg
in the upper foreground that is falling toward the ground, and
she reaches one hand out along the floor, palm up, trying to
catch the egg falling from the air.

[13-15s] Slow motion. The egg drops into the woman's hand; she
pushes upward hard but does not hold it — the egg is pushed
high and flies up out of frame above the camera. The woman
must keep watching the egg in utter terror, and only this one
egg may appear in the picture.

Rich sound effects, no background music, no subtitles.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Set 2 — the man's run and the first volley
&lt;/h3&gt;

&lt;p&gt;This is where the negative constraints do the heaviest work: three beats in a row end with &lt;em&gt;the woman must not appear in the picture&lt;/em&gt;, because the single reference image contains her.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;She is the purple-braid woman, he is the black-haired man.

[0-1s] Reference.

Close-up of the man's chest and head. In extreme panic his
gaze moves slowly in slow motion from the upper right to the
upper left, and as he looks he slowly spits the water in his
mouth out in slow motion. The woman must not appear in the
picture.

[4-7s] Slow-motion shot of the man's upper body. Side-on to
the camera, he takes two quick steps toward the edge of the
frame, turning his head as he runs to look up above the camera
in extreme panic, then he jumps hard in slow motion with both
hands raised in a lifting motion. The woman must not appear in
the picture.

[8-11s] Slow motion, close-up of the man as he jumps in
mid-air in slow motion with both hands raised in a lifting
motion. An egg is flying from the air toward the man's hands;
he pushes up hard but does not catch the egg and sends it high
up, out of frame above the picture. The woman must not appear
in the picture.

[12-15s] Slow motion. In the background the man makes the
lifting motion, watching an egg above him in anxious panic as
it slowly flies up into the air. Side shot of the woman: in
the foreground she stands on the chair, looking toward the egg
in the sky with her back to the camera, knees bent and loading
to jump. There is no egg on the table at this moment.

Rich sound effects, no background music, no subtitles.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Set 3 — the spike, the bowl and the face
&lt;/h3&gt;

&lt;p&gt;The busiest set. She spikes the egg downward like a volleyball, he slides in on his knees with a bowl, and the clip ends on a gag instead of a clean catch.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;She is the purple-braid woman, he is the black-haired man.

[0-2s] Reference [].

Slow motion, low-angle shot. In extreme anxiety and panic the
woman stands on the dining chair that the man sits on in the
reference image, looking up above the camera; she loads and
jumps high, reaching out one hand in the pose of a volleyball
spike. The black-haired man must not be in this shot.

[3-5s] Slow motion, shot of the black-haired man. In the
corner of the reference image, in utter anxious panic, he
looks up above the camera and runs toward the camera, pulling
a big bowl out from behind him at the same time, running in
slow motion toward the camera and out at the edge of the
picture, anxious.

[6-8s] Slow motion, side shot of the woman in mid-air in a
spike pose, her face full of anxious panic. An egg is flying
slowly from above her shoulder toward the front of her hand;
with one slow-motion spike she hits the egg and sends it
flying down and out of the picture at a diagonal. The egg must
not be broken by her hit.

[9-10s] Slow motion, high-angle follow shot of the
black-haired man sliding toward the camera on his knees, his
weight leaning back, holding a big bowl in both hands with the
bowl facing up in front of him, ready to catch something.

[11-12s] Over-the-shoulder view of the man, slow motion. His
weight leans back as he slides toward the woman on his knees,
holding the big bowl in both hands in front of his chest ready
to catch the egg; the woman is falling from mid-air in utter
terror watching the egg; an egg is flying slowly through the
air toward the man.

[13-15s] Slow motion, slightly high-angle follow shot of the
man sliding on the floor toward the camera, his weight leaning
back, his expression going slowly from anxious panic to happy,
looking up above the camera, holding the big bowl in both
hands in front of his chest as if he wants to catch something.
The slow motion ends: a raw egg smashes hard onto the
black-haired man's face, the egg breaks and the yolk and white
cover his face; the man freezes for a moment, then a close-up
of his face as he breaks down and screams.

Rich sound effects, no background music, no subtitles.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  4. What I learned about prompting complex action
&lt;/h2&gt;

&lt;p&gt;These six rules are the transferable part. They apply to any multi-shot AI video, not just this kitchen:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. One reference image for all three clips.&lt;/strong&gt; Every set opens by naming who is who, and reuses the same image instead of rebuilding one per shot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Every beat names its camera.&lt;/strong&gt; Low angle, side, top-down, over-the-shoulder, follow — plus shot size and movement. The prompts read like a shot list, not a mood description.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Slow motion is stated in almost every beat.&lt;/strong&gt; With this much action in 15 seconds, slow motion is what makes it legible. It is the one stylistic instruction that never gets left implicit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Negative constraints replace missing references.&lt;/strong&gt; Because one image holds both characters, shots that need only one of them say so explicitly: &lt;em&gt;the woman must not appear in the picture&lt;/em&gt;, &lt;em&gt;only this one egg may appear in the picture&lt;/em&gt;. If you've ever written JSON Schema or regex, this is the same idea: &lt;strong&gt;constrain what must not occur, don't hope the model infers it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Beats are 2–4 seconds and exactly one event.&lt;/strong&gt; Camera, action, expression, and what the object does. Nothing else.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. The same closing line every time.&lt;/strong&gt; Rich sound effects, no background music, no subtitles — leaving the edit to the edit.&lt;/p&gt;

&lt;p&gt;And the unwritten rule that matters most: &lt;strong&gt;plan for several takes.&lt;/strong&gt; The action is too dense for one clean pass. Generate multiple, keep the best beat from each, cut them together. Expecting a single prompt to land is the most common way this fails.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Things that will trip you up
&lt;/h2&gt;

&lt;p&gt;The source was a working note, not a tutorial, and a few details don't line up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The prompts don't end like the reference.&lt;/strong&gt; The teardown ends with the egg landing in a frying pan and a thumbs-up; set 3 ends with a raw egg on his face and a scream. It's a comedy remix, not a frame-accurate copy — decide your ending and write it into the last beat.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The pan becomes a bowl.&lt;/strong&gt; Use one word in both places or the prop will drift between clips.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set 3 opens with an empty reference slot&lt;/strong&gt; (&lt;code&gt;Reference []&lt;/code&gt;). All three clips start from the same kitchen image — fill it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set 1 fights itself.&lt;/strong&gt; &lt;code&gt;[6-9s]&lt;/code&gt; throws a whole tray of eggs into the air, while &lt;code&gt;[13-15s]&lt;/code&gt; says only one egg may appear. Keep the scattered eggs out of focus in the background and apply the rule to the foreground.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Timecodes restart in every set.&lt;/strong&gt; &lt;code&gt;[0-2s]&lt;/code&gt; in set 1 and in set 3 are different clips. Generate each as its own 15-second clip.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. Adding the dog
&lt;/h2&gt;

&lt;p&gt;The version that took off added a dog to make the scene more complex. My working document records the change and the view count but not the rewritten prompts, so that pass was written by hand.&lt;/p&gt;

&lt;p&gt;The rule that made it work is the same one the two characters already follow: &lt;strong&gt;put the dog into the reference image first&lt;/strong&gt;, then name it in every beat and give it one job in the rally — going for the egg. A dog that only sits in the background does not survive a 15-second shot.&lt;/p&gt;




&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;The three prompt sets were generated in &lt;a href="https://aimakevideo.com" rel="noopener noreferrer"&gt;aiMakeVideo&lt;/a&gt; with Seedance 2.5, image-to-video, 9:16, 15 seconds per clip. The shot list is my own teardown of the reference Short.&lt;/p&gt;

&lt;p&gt;If you want the parameter side of this — what each clip costs in credits, how 480p and 720p compare — that's collected in &lt;a href="https://github.com/tumingguang-svg/aimakevideo-prompt-cookbook" rel="noopener noreferrer"&gt;this open-source companion repo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The transferable part isn't the egg. It's the order: &lt;strong&gt;shot list → one reference image → timed beats → multiple takes → cut in the timeline.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Credits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The reference Short&lt;/strong&gt; — &lt;em&gt;계란을 구하고 싶어요&lt;/em&gt; by &lt;a href="https://www.youtube.com/shorts/l5pNeR7Q5mo" rel="noopener noreferrer"&gt;김프로KIMPRO&lt;/a&gt;. The shot list above is a teardown of their video.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The version with the dog, and the working document&lt;/strong&gt; the prompts come from — mine.&lt;/li&gt;
&lt;li&gt;Prompts were generated in &lt;a href="https://aimakevideo.com" rel="noopener noreferrer"&gt;aiMakeVideo&lt;/a&gt; with Seedance 2.5.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://aimakevideo.com/blog/seedance-2-5-egg-rescue-shorts" rel="noopener noreferrer"&gt;aimakevideo.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>promptengineering</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
