The “zombie love story” format is everywhere on TikTok and Reels: one person walks out of fog as a zombie, the other recognises them, and on the hug there is a hard match cut to a warm field where both are healthy again. It looks like a template, but getting it reliably from two arbitrary photos took real work. Here is the prompt structure, the failure modes, and a small model bench.
Disclosure: I build Prismojo, which runs this pipeline. Everything below also works with your own API keys.
Two inputs. Slot A becomes the zombie, Slot B is the survivor. One subject per photo.
Subject detection. AWS Rekognition labels + faces. A face means “person”; otherwise the top animal label ≥70% gives a noun (“dog”, “cat”…).
Per-job prompt. Each subject is named, roles are cast once, and the beats are timed to the clip length.
Reference-to-video. Both photos are passed as references. Output is a 9:16 MP4 with no audio; users add the trending sound when posting.
On a dog (A) + person (B) pair, our first fixed prompt broke in four ways:
Role drift: the model’s prior is “zombies are people”, so the person became the zombie.
Scale: the zombie pet came out giant.
Props: the flashlight jumped to the zombie, or was “held” by the dog.
Dead time: 10–15 s clips mostly stood still.
What fixed it: capitalised role names (THE ZOMBIE / THE SURVIVOR) instead of pronouns; explicit real-world proportions for mixed species; the light always belongs to the survivor; and timed beats. The hug lands at about 45% of the clip and the cut 1–2 s later, so the match cut has a pose to match.
Replace Image 1 / Image 2 with your model’s reference syntax:
Cast — exactly two characters. THE ZOMBIE is the person from Image 1, as a zombie: the same face, hair, body and clothing as in Image 1, with pale ash-grey skin, faint dark veins, sunken milky-white eyes and dusty, torn clothes. THE SURVIVOR is the person from Image 2, looking exactly as in Image 2 and healthy the whole time. Never swap or merge their roles, faces or bodies.
0–4 s: a cold, desaturated ruined street with fog and drifting ash. THE SURVIVOR stands in the foreground, side-on, face visible, holding a lit flashlight. THE ZOMBIE appears out of the fog and moves steadily toward THE SURVIVOR, holding nothing. THE SURVIVOR recognises them and slowly lowers the flashlight; at 4 s they embrace.
At 5 s, hard match cut on the hug to a warm golden-hour wheat field: the same two in the same hug, and only now THE ZOMBIE is healthy again, exactly as in Image 1; both happy.
Single smooth camera, continuous motion. No other people, no text, no blood, wounds, weapons, biting or violence. Cinematic, not graphic. Vertical 9:16, no audio.
For a pet zombie, use: “…the dog from Image 1, as a zombie dog: still exactly that dog on four legs, same breed and markings, at its real-life size. It never gets a human body or clothes.” That last sentence fixed a “dog-headed person” output.
The “no blood / weapons / biting” line matters: without it, several providers’ filters reject the job.
| Model | Accepts real faces | Zombie look + story correct |
|---|---|---|
| Vidu Q4 | yes | 4/4 |
| Kling O3 standard | yes | 1/6 (no zombie effect or swapped roles) |
| Hailuo H3 | yes | 1/1, clothing/hair drift |
| Wan 2.7 | yes | 0/1 (ending stayed zombie) |
| Seedance 2.0 Mini | rejected real-person references | — |
Tiny samples, so directional only. The surprise was the policy side: some strong models refuse real-person photos outright. Vidu was the most reliable but slow (about 5–7 min per 5 s clip), so jobs run in the background.
Sharp, front-facing photos, one subject each, no sunglasses.
Match the lighting of both photos; indoor + outdoor breaks the match cut.
Run a short 4–5 s draft first to check photo order.
Add sound when posting: a beat that drops as the flashlight lowers sells the cut.
If you’d rather not wire up APIs, the hosted version is at prismojo.com/features/ai-zombie.
Which photo becomes the zombie? Image 1 / Slot A. Swap them to flip roles.
Pets? Yes, with the species-aware line above. They come out dusty, not gory.
Why no audio? Trend audio is licensed per platform, so adding it at post time is safer.
Open question: has anyone kept identity stable across a hard cut on an open-weight model (Wan, HunyuanVideo)? I’d love to compare prompts.