# The AI zombie trend from 2 photos: per-job prompt assembly, role-drift fixes, and a 5-model reference-to-video bench

> Source: <https://discuss.huggingface.co/t/the-ai-zombie-trend-from-2-photos-per-job-prompt-assembly-role-drift-fixes-and-a-5-model-reference-to-video-bench/190939#post_1>
> Published: 2026-10-23 06:57:31+00:00

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](https://prismojo.com/), 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](https://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.
