Back to Tutorials
ai-short-film

How I Made an AI Short Film with Consistent Characters (Every Prompt)

The full workflow behind my post-apocalyptic AI short film about a girl and her dog: a film plan written with Claude, character sheets made with Seedream 5.0 Pro, and nine scenes generated with Seedance 2.5 on the RunningHub canvas. Every prompt is on this page, ready to copy.

Danish Sofi
October 13, 2026
10 min read

What you'll learn

Learning outcomes

ai-short-film workflow implementation & automation

ai-filmmaking workflow implementation & automation

runninghub workflow implementation & automation

seedance workflow implementation & automation

seedream workflow implementation & automation

claude workflow implementation & automation

character-consistency workflow implementation & automation

Practical, production-ready skills
Skip to content

This short film has no camera, no actors and no set. It's a girl and her German Shepherd in a zombie world, and the same two characters show up in every shot. I made the whole thing on a laptop.

The video above shows the full build. This page has every prompt I used, so you can copy them and make your own version. There are three prompts and three steps: plan the film, build the characters, generate the scenes.


What you need

  • Claude to write the film plan, the character sheet prompts and the scene prompts. ChatGPT or Gemini work too.
  • RunningHub for everything visual. I used its rhTV AI canvas, Seedream 5.0 Pro for the images and Seedance 2.5 for the video clips. All the models are in one place, so you never switch tools.
  • A selfie if you want the girl to have your face, plus a few reference images from Pinterest.

The RunningHub link is my invite link. Signing up through it gives you 1,000 free RH Coins to try it.


Step 1: Write the film plan with Claude

Start with a small story idea. Mine was a zombie short that was already doing well on Instagram. Paste the idea into Claude and it turns it into a full film plan: the timeline, the characters, the locations and the props.

We're making a short, sad reel. Dramatic, cinematic, hyper-realistic. The story: a girl has to shoot her own dog because he's infected with a virus. At the last second, a familiar sound stops her, and memories of their life together flood back. But the dog isn't who he was anymore.

First block is the present. Close-up of the girl with a rifle, handheld, a little shaky. She's trembling, sweaty, scrapes on her face. Hands shaking. Eyes watering, but she holds it in and doesn't cry. Heavy breathing through her nose. In the background, the low, angry growl of an infected one. She flicks the safety off, clicks. Closes her eyes, ready to shoot. And right then, a hoarse whimper. A tear falls, she opens her eyes to the familiar sound, and sees her German Shepherd. He's sitting still, but he's almost turned into a zombie.

Then the transition: a match cut from this exact pose into the past. Same dog, same pose, but healthy, in a different location, with a tennis ball in his mouth.

The plan gives you two versions of each character. The girl is clean in the past and wounded in the present. The dog is healthy in the past and infected in the present. Each timeline also gets its own location.

That present/past split is what makes the film hit. Every flashback reminds you what the dog used to be.


Step 2: Write the character sheet prompts

Go to Pinterest and search for post-apocalyptic references. I picked four: one for the girl's outfit, one for the dog and one for each location. Upload them to Claude with your selfie and send this:

I'm uploading a selfie of me, plus reference pics for the girl's outfit, the dog, and 2 locations.

Write me character sheet prompts. The girl's face must be identical to my selfie, so use the selfie only for the face and take the outfit and style from the girl reference.

Girl:
About 18 years old, 45kg, 165cm tall

- Clean version for flashback scenes: no wounds, fresh face, neat clothes
- Post-apocalyptic version: wounds, scratches, dirt and blood on her face, messy hair, worn clothes

Dog (German Shepherd from the reference):
A large male German Shepherd, five years old, 35 kilos, 65 centimeters at the withers, with a tennis ball in his mouth

- Normal healthy version
- Zombified version: infected, milky white eyes, matted fur, wounds

Locations:
- The abandoned supermarket from the reference
- A similar abandoned school basketball court for the final scene, where the girl and the dog play with a tennis ball

Keep the girl and the dog consistent between both versions. Each prompt in a separate code block, hyperrealistic.

This is where most people go wrong. They think a character prompt is just "a girl" and "a dog". Look at what's in this one: age, weight, height, the dog's weight and height at the withers. Claude carries those details into every prompt it writes, like a slim 18-year-old at around 45 kg. Physical details like these are what make the result look real instead of generic.

Using the selfie only for the face and the reference only for the outfit keeps the face consistent while the clothes change between the two versions.


Step 3: Generate the characters and locations in RunningHub

Sign up at runninghub.ai and open the rhTV AI canvas. Everything from here on happens on this one canvas.

  1. Paste a reference image onto the canvas, for example the girl.
  2. Drag from it and choose Image to create an image node connected to the reference.
  3. Paste the matching character sheet prompt from Claude.
  4. Select Seedream 5.0 Pro. It's the best model I've found for realistic faces.
  5. Set the aspect ratio to 16:9 and the resolution to 1K. You can upscale to 2K later.
  6. Generate, then repeat for every asset.

By the end you should have six assets on the canvas:

  • Clean girl (the flashbacks)
  • Post-apocalyptic girl, wounded and holding the rifle (the present)
  • Healthy dog
  • Zombified dog
  • Abandoned supermarket (the present)
  • Abandoned school basketball court (the past)

Optional: new angles with the RunningHub agent

The canvas has a built-in AI agent. Select an asset and ask for something like a new angle of the dog. It asks a couple of questions (I picked "new poses and angles"), writes the prompt itself and adds a ready-to-run node to the canvas. It worked out which dog was the healthy one without me telling it, and the result was the same dog.


Step 4: Write the scene prompts with Claude

Go back to Claude. Attach every asset you generated (both girls, both dogs and both locations) and send your rough script. Claude maps each scene to the right assets and writes a detailed video prompt for each one.

I'm making a short AI film in RunningHub with Seedance 2.5. I'm uploading my character sheets (clean girl, post-apocalyptic girl, healthy dog, zombified dog) and 2 locations (abandoned supermarket and school basketball court).

Here's my script. Scenes 1–4 and 6 happen in the present (supermarket, wounded girl, zombie dog). Scenes 5, 7, 8 and 9 are the past (basketball court, clean girl, healthy dog).

Write me a separate video prompt for each scene and tell me which assets to attach to each one. Keep the girl and the dog consistent across all scenes. Each prompt in a separate code block.

Scene 1
A girl holds a rifle, trembling, eyes watering, breathing heavily through her nose, trying to calm down, hands shaking. Natural, realistic facial expressions. In the background, a dog growls almost silently. She prepares to close her eyes, lowers her head, and at that moment the dog whimpers. Hearing it, she can't hold back a tear and lowers the rifle, but doesn't sob. She just looks at him, lowers her head, and shakes it. Camera stays on the girl the whole time. Handheld, cinematic lighting, ultra-realistic.

Scene 2
Over-the-shoulder shot from behind the girl. The dog sits looking at her, whimpering and growling; the inner zombie fighting the real dog. Static framing the dog only, no movement, no zoom, handheld.

Scene 3
Medium shot. The girl squats, slowly sets the rifle on the ground, wipes her tears, and says to the dog, "Wanna play?" She takes out a tennis ball and rolls it to him. Camera lowers with her, handheld.

Scene 4
Close-up tracking the ball as it rolls and stops at the dog's feet. MATCH CUT to the past: the dog immediately grabs the ball in his mouth and plays with it. Handheld, shaky camera.

Scene 5
Close-up of the girl laughing, playing with and tickling the dog as he jumps on her. Start on her close-up, then a wide shot of them playing.

Scene 6
Back to the present, again starting with the ball. It stops at the dog's paw as his blood drips beside it. The camera tilts up to the dog's face. He stares straight at his owner, growling, ignoring the ball.

Scene 7
Back to the past. Wide shot from above of the whole basketball court: cracked asphalt, faded lines, rusted hoop. The girl stands small at one end and throws the ball low across the court. The dog runs after it with real physical weight, grabs it and runs back to her. One continuous take, no cuts, sunny warm light.

Scene 8
Wide shot of the two of them playing on the court. She tickles him, he bounces on his front paws, spins, then jumps up on her and knocks her over onto the asphalt. She lies there laughing while he licks her face. Pure joy. Handheld, natural movement.

Scene 9
The final image. Extreme wide shot from far across the court. The girl and the dog sit together on the roof of a rusted chain-link fence, toy in the frame. She feeds him from her hand. Calm, quiet, golden-hour light. Static camera, no movement, no zoom. The film breathes here.

Splitting the scenes by timeline in the prompt is what keeps the continuity right. Claude knows the wounded girl and the infected dog never appear on the basketball court, and the clean versions never appear in the supermarket.

ScenesTimelineAttach these assets
1, 2, 3, 4, 6PresentAbandoned supermarket, post-apocalyptic girl, zombified dog
5, 7, 8, 9PastBasketball court, clean girl, healthy dog

Scene 4 is the match cut. The ball stops at the infected dog's feet, and the healthy dog picks it up in the past.


Step 5: Generate the video scenes

Back on the canvas, click + and choose Video. For each scene:

  1. Connect the assets Claude told you to attach. For scene 1, that's the supermarket and the post-apocalyptic girl.
  2. Paste that scene's prompt.
  3. Choose Seedance 2.5 Global.
  4. Set the duration to 8 seconds, the quality to 480p and the aspect ratio to 16:9.
  5. Use draft mode with the bitrate set to high.
  6. Generate.

Each clip cost me about $1 at these settings, so nine scenes come to roughly $9. The 480p drafts still look good. Generate every scene first, then upscale them all together at the end, so you only pay for higher resolution on the clips you keep.


Step 6: Put the film together

Once all nine clips are generated, upscale them and put them in order from scene 1 to scene 9. The final shot, the girl and the dog on the fence at golden hour, is a static wide. Let it play out and don't cut away early.


Why it feels emotional

  • Small physical details. Breathing through her nose, hands shaking, a tear that falls without a sob. Real people hold it in, and the prompts ask for exactly that.
  • Two timelines. Cutting between the infected dog and the healthy one makes the viewer feel the loss.
  • The match cut. Same dog, same pose, different life. It's the moment the whole film turns on.
  • Consistency. Detailed character sheets and the same assets on every scene make it read as one film, not nine random clips.
Apply This

Ready to build this for your business?

I help ambitious founders and businesses build production-ready automation systems. Let's discuss your specific needs.

Book a Discovery Call
ai-short-filmai-filmmakingrunninghubseedanceseedreamclaudecharacter-consistency
Free Resources

Get Weekly Automation Playbooks, Free.

Every week I send one actionable automation workflow, prompt, or tool breakdown directly to your inbox. No fluff. No recycled content. Just the stuff that actually works, straight from real client builds.