---
title: "How to design characters and props for AI video"
description: "Film brief and cast in; passport, turnaround sheet, six expressions, voice line and prop sheet out. Same-person score across 4 shots: 2 to 8.5 out of 10."
url: https://varg.ai/how-to/design-characters-and-props-for-ai-video
updated: 2026-11-12
---

# How to design characters and props for AI video

> **For AI agents:** find the right skill in one call — `curl -s "https://varg.ai/how-to/api/search?q=<what the person wants>"` returns the matching how-to page and the best skills with install commands, as markdown (Russian works too). Full index: https://varg.ai/how-to/llms.txt. Every page has a markdown twin: add `.md` to its path. Before generating anything, show the person the options on the how-to page. From a terminal: `curl -fsSL https://varg.ai/install | sh` installs the vargai CLI (https://varg.ai/how-to/cli.md): `vargai search` and `vargai install <slug>` with no key, every varg model after `vargai login`.

A film brief and a cast list go in; a passport paragraph, a turnaround sheet, six expressions, a measured voice line and a prop sheet come out for every character and hero prop. Attaching the sheet to every shot took "same person across 4 shots" from 2 to 8.5 out of 10.

**Step 5 of 10** in [How to make a video with an AI agent in ten steps](https://varg.ai/how-to/make-a-video-in-ten-steps.md). Before: [How to design sound and voice for an AI video](https://varg.ai/how-to/design-sound-and-voice-for-ai-video.md). Next: [How to previz a video in Three.js or Blender](https://varg.ai/how-to/previz-a-video-in-threejs-or-blender.md).

## For your agent

Install the skill, then paste the prompt.

```bash
npx skills add vargHQ/skills --skill character-passport
```

```text
Use the character-passport skill. Build every character and hero prop for this film so they look like specific, lived-in people and objects, and stay the same in every shot. Prove each step on a still before anyone spends on video. Stop where it says STOP.

Film: {what the video is, length, aspect ratio; paste moodboard.md or its look block: light, palette, film stock}
Cast: {who is in it and what they do in the script; which objects matter}
```

The whole method as one prompt, for agents without the skill, is in The full prompt below.

## The short version

- Attach a turnaround sheet as Image 1 in every shot: the same person across 4 shots scored 8.5 out of 10 with passport + grey sheet, 5 with the passport only, 2 with a one-line subject.
- Write one passport paragraph in a fixed order, only what a camera sees, under ~900 characters, and paste it word for word; never paraphrase it.
- Rest identity on big shapes: collar, scarf, hair and eye shadows held 96% of the time, side-specific marks 0% to 5%. Models mirror sides and drop details under ~2% of the frame.
- Write each feeling as a cause plus physical tells, never an adjective: expressions that read as real went from 5 to 7.
- Give every voice a pace in words per minute and measure the take: 92 wpm became 129 wpm against a 130 wpm target after one fix (target band ±15%).
- Props get their own passport, sheet and motion block: the worn umbrella handle appeared 0% of the time without a prop sheet.
- Judge takes with yes/no questions, one criterion per call: two AI judges agreed 92% (kappa 0.88) on a yes/no checklist; a 1–10 film-likeness score gave r = 0.47.
- Decide faces and sides in code: "hair behind right ear" got kappa 0.00 from the judges. Read gaps of a point or less as a tie.

## Characters that stay the same in every shot, and act like people

Guide · tested 2026-11-03

Character slop comes from letting the model pick the face, the clothes and the feeling. This guide takes those choices back, one checkable line at a time, and proves each step on a still before any video is paid for.

![Nonna Rosa's character sheet: turnaround, four expressions, palette and props](https://varg.ai/how-to/guide-pages/design-characters-and-props-for-ai-video/img/cast-hero.jpg)

Nonna Rosa's character sheet: the turnaround, four expressions, the palette and her props. Made with varg.

![Four more character sheets: a cook, an athlete, a cartoon clerk and a bread dinosaur](https://varg.ai/how-to/guide-pages/design-characters-and-props-for-ai-video/img/cast-more.jpg)

More sheets from varg's character skills: Bruno the cook, Mara the athlete, Gary the clerk and Baguettosaurus. The tests below follow one character, Vesna, from the film LAST BUS.

| Measure | Before → after | What was compared |
|----|----|----|
| Same person across 4 shots | 2 → 8.5 | out of 10: one-line subject vs passport + sheet |
| Expressions that read as real | 5 → 7 | adjectives vs cause + physical tells |
| Voice pace vs a 130 wpm target | 92 → 129 | words per minute, after one fix |

## A sheet attached to every shot is what makes her the same person

The test.

One character (Vesna, from the LAST BUS [moodboard](https://varg.ai/how-to/make-a-moodboard-for-an-ai-video.md)), four shots, four ways to describe her, on Nano Banana 2.1. Two blind AI judges saw only the images.

| Way to describe her | Same-person score, out of 10 |
|----|----|
| Passport + grey sheet | 8.5 |
| Passport + moodboard-lit sheet | 7.5 |
| Passport only | 5 |
| One-line subject from the moodboard | 2 |

![Four shots with a one-line subject, then with the passport](https://varg.ai/how-to/guide-pages/design-characters-and-props-for-ai-video/img/generic-vs-passport.jpg)

Top: the moodboard's one-line subject gave four different women. Bottom: the passport alone.

### Big features survive; small and side-specific ones don't

| Detail | How often it survived |
|----|----|
| Collar, scarf, hair, eye shadows | 96% |
| Brows that almost meet (her signature) | 79% |
| Plaster on the right hand | 5% |
| Scar on the left of the chin | 0% |
| Hair behind the right ear only | 0% |
| Worn umbrella handle (no prop sheet) | 0% |

Models mirror sides and drop details under ~2% of the frame. Identity must rest on big shapes; a prop's wear needs the prop's own sheet. One image per cell: read gaps of a point or less as a tie.

## Design a person before you generate a picture

Method step 1.

![The bare prompt result](https://varg.ai/how-to/guide-pages/design-characters-and-props-for-ai-video/img/bare-prompt.jpg)

“cinematic, moody, 8k, beautiful”: nothing on her is wrong, and nothing is hers.

| Line | Vesna |
|----|----|
| Premise | A nurse who holds everyone together all night has nothing left for herself at 2 a.m. |
| Job and history | ICU nurse, 12-hour night shift, from Split, lives in London |
| Want and obstacle | Get home; the bus is late |
| One visible flaw | Tired, deep-set eyes with grey shadows |
| One big signature | Brows that almost meet; the red umbrella |
| Silhouette | Long narrow coat, small head, stooped neck |
| Why each garment | Scrubs under the coat (straight from work), salt-marked boots (winter commute) |

### Slop tells to check on every still

- **The average face:** symmetric, smooth, young, no age in the skin.
- **Costume without a life:** new, ironed, shop-fresh.
- **The same smile:** mouth only, eyes untouched.
- **Catalogue props:** perfect, centred, weightless.
- **A face you know:** “rugged, bald, stubble” can come back as a famous actor.

Generated people skew light-skinned (86.5%) and young (74%) in one study, and AI faces are more average and more attractive than real ones. Write against the default.

## One paragraph, every visible detail, pasted word for word

Method step 2.

1.  **Fixed order:** who → build and posture → face top to bottom → skin → hair → clothes outer to inner → hands.
2.  **Only what a camera sees,** with size and side for every mark, and one sign of wear per garment.
3.  **No value words, no real names, no brands.** Web-search invented names: our first surname belonged to a real writer.
4.  **Under ~900 characters,** versioned, never paraphrased. The skill's script fails any prompt where it drifted.

Template:

```text
<Name>, a <age>-year-old <origin> <job>, <height> cm, <build>, <a posture that comes from the job or history>.
<Face shape>, <eyes: set, colour, what is around them>, <brows>, <nose>, <mouth and lips>, <one mark: size, colour, side>.
<Skin: tone, texture, freckles or lines>, <makeup or none>.
<Hair: length, colour, cut, texture, which side it is tucked or parted>.
<Outer garment: colour, material, length, one sign of wear>; <what shows underneath>; <accessory>; <footwear with wear>.
<Hands: nails, marks>.
```

Vesna's passport (884 characters):

```text
Vesna Doric, a 30-year-old Croatian ICU nurse, 168 cm, narrow shoulders, long neck, a slight forward stoop after a 12-hour shift, weight on her left leg. Long oval face, deep-set dark brown eyes with grey shadows under them, thick straight black brows that almost meet, a strong straight nose with a small bump on the bridge, a wide mouth with a thin upper lip, a 2 cm pale scar across the left side of her chin. Olive skin with visible pores, a few freckles across the nose, no makeup. Shoulder-length black hair in a grown-out blunt cut, frizzy from rain, tucked behind her right ear only. Charcoal wool coat to mid-calf, single-breasted, the second button from the top missing, pilled cuffs; a navy V-neck scrub top showing at the collar; a black jersey scarf; worn black leather ankle boots with white salt marks. Short unpolished nails, a beige plaster on her right index finger.
```

The look block from the moodboard, pasted after the passports:

```text
Late-1990s city night drama on Kodak Vision3 500T 35mm film. Key: hard sodium streetlight high camera-left, about 2000K. Fill: soft cold blue advert-panel light camera-right, about 9000K. Teal shadows #0F3B3F, sodium highlights #E07A2E, only the umbrella saturated red #C1272D, blacks #1A1A1A, low contrast, lifted blacks. Fine grain, halation around lights, slightly soft, no digital sharpening.
```

## Light the turnaround like the film, and keep the face readable

Method step 3.

![Two turnaround sheets](https://varg.ai/how-to/guide-pages/design-characters-and-props-for-ai-video/img/sheets.jpg)

Left: flat 18% grey. Right: the same layout in the moodboard look. Both held her identity; neither leaked into scenes.

| Sheet | When to use it |
|----|----|
| Moodboard-lit sheet | One film, one light family. The sheet doubles as a look test. Keep a fill so no feature hides, and never put the location in it. |
| Flat 18% grey | When the character crosses very different lights, or the model copies backgrounds. |

Turnaround prompt:

```text
Character turnaround sheet in the look of the film <she/he> is in: <film stock and texture>. Every panel lit the same way: <key: source, Kelvin, direction>, <fill: source, Kelvin, direction>, face fully readable. Plain <darkest palette hex> backdrop, no location, no text, no labels, no logos. Top row: three full-body views at the same scale on one ground line: front, side profile, back; arms relaxed, empty hands. Bottom row: three large head-and-shoulders close-ups: front, three-quarter, side profile. The same <woman/man> in every panel: identical face, hair, body, outfit and proportions. Do not beautify, de-age or redesign <her/him>. CHARACTER: <passport, word for word>. Photoreal, visible pores, no retouching.
```

![Shots with a sheet as Image 1](https://varg.ai/how-to/guide-pages/design-characters-and-props-for-ai-video/img/sheet-refs.jpg)

The four shots with a sheet as Image 1. Top: grey sheet. Bottom: moodboard-lit sheet.

## Write each feeling as a cause plus physical tells, never an adjective

Method step 4.

![Adjective vs cause expression sheets](https://varg.ai/how-to/guide-pages/design-characters-and-props-for-ai-video/img/expressions.jpg)

Left: adjectives (posed, into the lens). Right: cause + tells (eyes on the cause, held back).

| Expression | Write the cause | Physical tells |
|----|----|----|
| Listening (rest face) | who is talking, about what | lips closed and soft, eyes steady on the speaker, brows level, chin slightly down |
| Real laugh | what is funny, to whom | cheeks lifted, crow’s-feet at the outer eyes, lower lids pushed up, mouth open |
| Anger held in | what was done to them | brows down and together, a hard stare, lips pressed thin, jaw clenched, no shouting |
| Worry or grief | the news, the loss | inner brow ends raised and pulled together, crease between them, lip corners slightly down |
| Startle | the sudden thing | brows shot up, white above the irises, jaw dropped a little, head pulled back |
| Contempt | who they look down on | one mouth corner tightened and lifted on one side only, eyes flat, half-lidded |

### In motion: name the cause, the tells and the second each happens

![Kling 4 acting comparison](https://varg.ai/how-to/guide-pages/design-characters-and-props-for-ai-video/img/acting-kling.jpg)

Kling 4, same start frame. Top: adjective prompt under-acts. Bottom: cause + tells + timing.

![Seedance 2.5 acting comparison](https://varg.ai/how-to/guide-pages/design-characters-and-props-for-ai-video/img/acting-seedance.jpg)

Seedance 2.5. Top: adjective prompt over-acts into a snarl. Bottom: cause + tells + timing.

The acting line (one clip per model; illustration, not a statistic):

```text
The bus she waited for drives past without stopping; its headlights slide off her face from left to right. She holds the anger in: at 1 s her jaw tightens and her lips press into a thin line, her brows pull down and together; at 2 s she breathes out slowly through her nose and her shoulders drop; her eyes follow the bus to frame right for two seconds, then she looks down. No shouting, no head shaking, no tears. Static camera, 50mm close-up.
```

## Give every voice a pace, an accent and one habit, then measure the take

Method step 5.

Vesna's voice line:

```text
Pace: steady conversational, about 130 words per minute; short pauses only at full stops. Pitch: low-mid, slightly husky, tired. Accent: light Dalmatian Croatian accent in English: tapped r, pure open vowels, "th" close to "t". Verbal habit: ends statements with a flat tag "no?" ("It's late, no?"). Default emotion: dry and calm, holding back exhaustion, never theatrical.
```

| Instruction | Measured pace |
|----|----|
| No voice line | 144 wpm |
| Voice line v1: "slow, half-second pauses" | 92 wpm |
| Voice line v2: "steady, about 130 wpm" | 129 wpm |

Target band on the chart: the 130 wpm target ±15%. Models follow the direction of a pace word, not its number. An 8-second clip holds about 20 words at 150 wpm. No script checks an accent, so a person listens once.

## Props get a passport, a sheet and a motion block

Method step 6.

![Umbrella prop sheet](https://varg.ai/how-to/guide-pages/design-characters-and-props-for-ai-video/img/prop-umbrella.jpg)

Every wear detail held on the prop sheet: lacquer worn to pale wood, the bent rib, faded panels.

Prop passport:

```text
Her umbrella: a full-size stick umbrella, red nylon canopy #C1272D faded paler on the top panels, eight black steel ribs, the front-left rib bent so that edge dips, a J-shaped wooden handle with black lacquer worn to bare pale wood where the thumb rests, a scratched chrome tip. Unbranded, no logos.
```

Motion block (video prompts only):

```text
Heavy for its size, about 0.6 kg. Opens with a hard snap and a short shudder of the canopy. In a gust the canopy dents inward on the windward side and the bent rib flutters. Rain drums loudly on the taut nylon; water runs off the rib tips in thin streams. Closing takes one shake that throws a fan of drops; the furled canopy drips from the tip for a few seconds.
```

Wear is contact, exposure and time. Say which hand moves the prop, give it a weight, and attach its sheet in every shot where it must read.

## Chain approved stills, then animate the approved one

Method step 7.

| Step | Model that worked |
|----|----|
| Sheets, expressions, prop sheet, shot stills | Nano Banana 2.1 (up to 10 references, $0.05) |
| Video from an approved still | Kling 4 image-to-video |
| Video from references | Seedance 2.5 with face close-up + full-body front |
| Voice test takes | Gemini 3.8 Flash TTS with the voice line ($0.01) |
| 20+ shots, a mascot | A trained LoRA or Soul ID |

A full shot prompt: image role → shot → passport → prop → look:

```text
Image 1 is the character sheet of Vesna: use it for her identity only (face, hair, body, clothes); do not copy its layout, panels or background. Close-up, 50mm, eye level: her face as bus headlights sweep across it from frame left, rain on the shelter glass behind her, she squints slightly into the light. SUBJECT: Vesna Doric, a 30-year-old Croatian ICU nurse, 168 cm, narrow shoulders, long neck, a slight forward stoop after a 12-hour shift, weight on her left leg. Long oval face, deep-set dark brown eyes with grey shadows under them, thick straight black brows that almost meet, a strong straight nose with a small bump on the bridge, a wide mouth with a thin upper lip, a 2 cm pale scar across the left side of her chin. Olive skin with visible pores, a few freckles across the nose, no makeup. Shoulder-length black hair in a grown-out blunt cut, frizzy from rain, tucked behind her right ear only. Charcoal wool coat to mid-calf, single-breasted, the second button from the top missing, pilled cuffs; a navy V-neck scrub top showing at the collar; a black jersey scarf; worn black leather ankle boots with white salt marks. Short unpolished nails, a beige plaster on her right index finger. Her umbrella: a full-size stick umbrella, red nylon canopy #C1272D faded paler on the top panels, eight black steel ribs, the front-left rib bent so that edge dips, a J-shaped wooden handle with black lacquer worn to bare pale wood where the thumb rests, a scratched chrome tip. Unbranded, no logos. Late-1990s city night drama on Kodak Vision3 500T 35mm film. Key: hard sodium streetlight high camera-left, about 2000K. Fill: soft cold blue advert-panel light camera-right, about 9000K. Teal shadows #0F3B3F, sodium highlights #E07A2E, only the umbrella saturated red #C1272D, blacks #1A1A1A, low contrast, lifted blacks. Fine grain, halation around lights, slightly soft, no digital sharpening.
```

## Judge takes with yes/no questions, code for faces and sides, and three model families

Method step 8.

| What was measured | Result | Reading |
|----|----|----|
| yes/no checklist, 224 calls | 92% | two AI judges agreed (kappa 0.88) |
| 1–10 film-likeness | r = 0.47 | every score 6–8; too vague to rank |
| “hair behind right ear” | kappa 0.00 | side-specific items: move to code |

### A face embedding confirms the order and removes a fake gap

| Way to describe her | ArcFace similarity |
|----|----|
| Passport + grey sheet | 0.66 |
| Passport + moodboard-lit sheet | 0.58 |
| Passport only | 0.44 |
| One-line subject | 0.02 |

ArcFace similarity to the grey sheet's front close-up (same person ≥ 0.28). Averaged over both sheets the two sheet methods tie (0.62 vs 0.64): the judges' 1-point lead for the grey sheet was anchoring on the reference they saw first.

### Biases to design against

| Bias | Measured | Fix |
|----|----|----|
| Position in a pair | GPT-4 kept its verdict 65% after a swap, Claude-v1 23.8% | Judge both orders; disagreement = tie |
| Provenance labels | An “Expert” label moved verdicts 18%; model names up to 50 points | Random IDs, no names or prompts |
| Length | A padded answer fooled Claude-v1 91.3% of the time | Short critiques, normalised takes |
| Self-preference | GPT-4 +10% for itself, Claude-v1 +25% | Judges from other families than the generator |
| Score bunching | Video judges give every take the same average score | Binary or 0–2 items; pairs to rank |
| Saying yes | LLaVA says yes to 80% of no-questions | Absence questions; “cannot determine” |
| Visual tricks | Brightness and overlays inflate scores up to +109.6% | Normalise inputs; prompts don’t fix it |
| Small details, sides | Small objects lose 7–24 points; left vs right 56% vs 99% for people | Crop; decide the side in code |

### The protocol

1.  **Blind:** random IDs, no model, method or prompt names, one size and format; reference first.
2.  **Code first:** face embedding for identity, landmark crops for sides, measured pace, verbatim passports.
3.  **One criterion per call:** yes/no or 0–2 with anchors, always “cannot determine”; describe, compare, answer.
4.  **Rank in pairs, both orders,** then Bradley–Terry. Never rank many takes in one prompt.
5.  **Three judges, three model families,** none from the generator's family; majority vote.
6.  **Calibrate on people:** TPR and TNR ≥ 0.85, kappa ≥ 0.6 per criterion, or the criterion goes to a person.
7.  **Report uncertainty:** 3–4 seeds per cell; 50% vs 65% needs about 170 cells per method.

| Criterion | Pass / fail | Decided by |
|----|----|----|
| Same person | Face similarity above a calibrated threshold | Code |
| No contradicting features | Different eye colour, brows, nose, hairline, jaw or age gap = fail | Judge |
| Passport item | In the named-side crop, not in the mirror crop | Judge + code |
| Prop item | Colour, shape, wear, markings match the prop sheet | Judge |
| Slop tells (6) | Anatomy, waxy skin, sourceless light, garbled text, melting background, AI gloss | Judge |
| Film-likeness | 0 AI ad · 1 photo, not cinema · 2 a film frame; rank by pairs | Judge |
| Acting | Emotion reads · genuine 0–2 · under/right/over · timing at 4–8 fps | Judge, calibrated |

Judge prompt: one criterion per call:

```text
SYSTEM
You are a strict visual inspector for film production. You check ONE criterion.
You do not know how these images were made, and it does not matter.
Judge only what is visible. If the evidence is not visible or too small, answer "cannot_determine". Do not guess.

USER (fixed order: reference first, candidate second)
[REFERENCE: character C1] <ref_front.png> <ref_34.png> <ref_detail_P3.png>
Passport item P3: pale vertical scar, about 1.5 cm, on the chin.
[CANDIDATE take_7f3a] <CROP 1> <CROP 2>

CRITERION PD-P3
A: Is the scar described in P3 visible in CROP 1?
B: Is it visible in CROP 2?
"Visible" = a line of lighter or raised skin of roughly the reference shape and orientation.
Shadows, stubble or compression noise do not count.
Examples: <pass_example> PASS because ... <fail_example> FAIL because ...

Steps: 1) describe each crop in 1-2 sentences, 2) compare with the reference, 3) answer.
Return ONLY JSON:
{"criterion":"PD-P3","observation_crop1":"...","observation_crop2":"...","comparison":"...",
 "answer_crop1":"yes|no|cannot_determine","answer_crop2":"yes|no|cannot_determine","confidence":"low|medium|high"}
```

### Who to learn from about judges

| Who | Proof of skill | Their rule |
|----|----|----|
| [@HamelHusain](https://x.com/HamelHusain/status/2106036521082016064) | Co-teaches the largest AI-evals course | “Binary labels force clearer thinking and more consistent labeling” |
| [@sh_reya](https://x.com/sh_reya/status/1782425960366940333) | “Who Validates the Validators?” (UIST 2024) | Label outputs before freezing criteria; they drift |
| [@cwolferesearch](https://x.com/cwolferesearch/status/2112936086389309449) | Co-built Netflix’s production judge | Split or drop criteria judges keep disagreeing on |
| [@lm_zheng](https://arxiv.org/abs/2306.05685) | First author, MT-Bench judge-bias paper | Swap the order; a flipped verdict is a tie |
| [@aparnadhinak](https://x.com/aparnadhinak/status/1748368364395721128) | Arize co-founder; tested number vs label judges | “LLM’s suck at continuous ranges”: classify instead |
| [@arena](https://x.com/arena/status/2106037792870649995) | Largest blind pairwise ratings, incl. Image and Video Arena | Pretty can still miss details: pair taste with a checklist |
| [@ArtificialAnlys](https://x.com/ArtificialAnlys/status/2114845070411330029) | Runs Video Arena; VLM pairwise judge for video | “A Bradley-Terry fit per axis turns verdicts into Elo.” |
| [@LechMazur](https://x.com/LechMazur/status/2046661738339430489) | Open position-bias benchmark | “The median model flips in 45% of decisive case pairs” |
| [@ZhiqiuLin](https://x.com/ZhiqiuLin/status/2064316582461841499) | VQAScore author | Turn the prompt into atomic yes/no questions |
| [@Kangwook_Lee](https://x.com/Kangwook_Lee/status/1993438649963164121) | “How to Correctly Report LLM-as-a-Judge Evaluations” | Correct pass rates for the judge’s own error |

## Build it in code when the shape must be exact, then dress it with one edit

Other route.

![three.js blockout dressed by an image model](https://varg.ai/how-to/guide-pages/design-characters-and-props-for-ai-video/img/code-to-ai.jpg)

A three.js blockout (primitives, a lantern, four cameras), then one Nano Banana 2.1 edit that keeps pose and proportions.

- **three.js blockout → image edit:** give people real heads, limbs and boots, or they come back as logs.
- **VRM + three-vrm:** built-in expressions (happy, angry, sad, relaxed, surprised) and mouth shapes.
- **SVG face rig from FACS units:** one head, six expressions, for mascots and explainers.
- **Procedural props with real materials:** CC0 rust and measured brass look worn, not plastic.
- **Image to 3D:** one clean front view on white becomes a mesh you can turn.

![Code routes rendered headless](https://varg.ai/how-to/guide-pages/design-characters-and-props-for-ai-video/img/code-routes.jpg)

VRM expressions, SVG face rig, PBR prop and an image-to-3D turnaround, all rendered headless.

## Remix real people and objects, not other AI images

- **Pinterest: decade + place + job + “photograph”** returned 6 of 6 real photos; “weathered portrait” returned AI art.
- **Props: “antique” or “vintage” + the material** finds auction and product photos.
- **Avoid** “hyper realistic”, “cinematic”, “8k”, “concept”. Boards beat search.
- **Rights:** each pin belongs to its maker; look, never feed it to a model.

| # | Source | Take from it | Rights |
|----|----|----|----|
| 1 | [The Met collection](https://metmuseum.github.io/) | Real costume by date, armour, tools, lanterns | CC0 where public domain |
| 2 | [Wikimedia Commons](https://commons.wikimedia.org/) | Occupational portraits, regional dress, objects | License on every file |
| 3 | [Library of Congress FSA/OWI](https://www.loc.gov/collections/fsa-owi-black-and-white-negatives/) | 1930s–40s working people: faces, hands, workwear | Public domain |
| 4 | [Europeana](https://www.europeana.eu/) | European folk dress, uniforms, crafts | Per item; filter open reuse |
| 5 | [Poly Haven](https://polyhaven.com/) | 521 CC0 3D props, textures, HDRIs | CC0 |
| 6 | [Sketchfab](https://sketchfab.com/) | 3D props and characters to turn and study | Per model; filter CC0 |
| 7 | [ambientCG + physicallybased.info](https://ambientcg.com/) | Worn materials and measured values | CC0 |
| 8 | [ArtStation](https://www.artstation.com/) | How pros lay out turnarounds and prop sheets | Look only, never feed in |
| 9 | [Speech Accent Archive](https://accent.gmu.edu/) | 2,999 speakers reading one paragraph, with IPA | Listen and describe only |
| 10 | [Fashion History Timeline](https://fashionhistory.fitnyc.edu/) | What people wore in a given decade | Text © FIT; images often CC0 |

## Trust finished work, not reach

Ranked by films, credits and prompts shown with their limits, from 553 X searches and 203 full posts. Accounts with comment gates or link-only posts saved far more than liked were not ranked.

| Who | Proof of skill | Their best rule |
|----|----|----|
| [@heavypulp](https://x.com/heavypulp/status/2080007439185776733) | Film editor and VFX artist; his own Odyssey dialogue scene (Grok Imagine) drew 17M views and press | “describe physical attributes and not just the emotion by itself” |
| [@RobertAnim8er](https://x.com/RobertAnim8er/status/1922835836518928445) | Lead cinematic animator; The Last of Us Part I, God of War | Heavy things take longer to start and to stop |
| [@CharlieDFilm](https://x.com/CharlieDFilm/status/2098929162735997071) | Shipped a 22-minute AI animated film: 847 takes, 127 kept | Characters “intentionally ugly”, handheld camera, weather |
| [@henrydaubrez](https://x.com/henrydaubrez/status/2001337146905690519) | Google Flow’s first filmmaker in residence | Four big frames keep detail; “Lost detail is lost.” |
| [@Diesol](https://x.com/Diesol/status/2061811843551932695) | DGA director, co-founder of the AI studio Promise | “How long you stay on a face. When you cut.” |
| [@second_bassoon](https://x.com/second_bassoon/status/2117307653320007954) | Making an AI feature about Beethoven | A sniffle or a breath between lines “gave the biggest improvement BY FAR” |
| [@Uncanny_Harry](https://x.com/Uncanny_Harry/status/2087589869354672222) | Made Kling’s 3.0 promo | Act it yourself and transfer it; expect an interpretation, not a copy |
| [@aimikoda](https://x.com/aimikoda/status/2052124669050843453) | No finished film found; tests FACS and Laban prompting with full prompts and limits | Close-ups directed with FACS action-unit codes, no emotion words |
| [@jaynwabueze](https://x.com/jaynwabueze/status/2095171650241110448) | AI filmmaker; the only consent-first accent method we found | 5–15 s of a consenting real speaker as the voice reference |
| [@Kavanthekid](https://x.com/Kavanthekid/status/2085108708925911227) | Writes “The Chronicles of Bone” (Magnific series) | Photograph a real costume or mask, then develop it with AI |

## Install the skill, or paste the prompt into any agent

Open-source skill [character-passport](https://github.com/vargHQ/skills/tree/main/character-passport), with three scripts, tested code and the full evidence. Also on [varg how to](https://varg.ai/how-to/skills/character-passport).

Install (Claude Code):

```bash
claude plugin marketplace add vargHQ/skills && claude plugin install varg@varg
```

## The full prompt

The whole method as one prompt:

````text
You are the casting director and costume designer for an AI video. Build every character and hero prop so they look like specific, lived-in people and objects, and stay the same in every shot. Prove each step on a still before anyone spends on video. Stop where it says STOP.

Film: {what the video is, length, aspect ratio; paste moodboard.md or its look block: light, palette, film stock}
Cast: {who is in it and what they do in the script; which objects matter}

If the character-passport skill is installed, follow it. Otherwise read it first: https://github.com/vargHQ/skills/tree/main/character-passport (references/ has the rules, prompts and examples).

1. Design each person before any picture. In cast/<id>.md, one line each: premise · job and history · what they want in this film and what stops them · one visible flaw · one big signature detail readable at phone size · a silhouette that reads as a black shape · why each garment is on them. Find 3-5 real references for face, costume and props (real photos, museum collections, street portraits; not other AI images). STOP: show me the designs with their references.

2. Write the passport: one paragraph in a ```passport block, in this order: name, age as a number, origin, job · height, build, posture from their history · face top to bottom · skin · hair · clothes outer to inner, each with colour, material and one sign of wear · hands. Only what a camera sees. No "beautiful", "perfect", "cinematic", no real people's names, no brands. Under 900 characters. Never paraphrase it later: paste it.

3. Turnaround sheet, one per look: top row three full-body views (front, side, back), same scale, empty hands; bottom row three large close-ups (front, three-quarter, profile). Light it like the film (the moodboard's key direction, colour temperature and film stock, a fill that keeps the face readable, a plain backdrop in the darkest palette colour); use flat 18% grey instead if the character crosses very different lights. No text. With varg: nano_banana_2_1, about $0.05 an image; tell me the price first. Check the sheet against the passport line by line. Expect sides to be mirrored and tiny details to vanish; fix misses with an edit pass on the sheet, not a re-roll.

4. Six expressions, one 3x2 sheet with the turnaround as Image 1. Write each as a cause in the film plus physical tells (brows, lids, mouth, jaw, head, breath), eyes looking at the cause, never an adjective. Default: listening, real laugh (crow's-feet, lifted cheeks), anger held in (lips pressed, jaw set), worry (inner brows up and together), startle (upper lids up, jaw dropped), contempt (one mouth corner only).

5. Voice line for everyone who speaks, in a ```voice block: pace in words per minute and where pauses go · pitch and texture · accent (first language, region, class, strength) · one verbal habit (also written into the script) · default emotion. Generate a test line in their own words, measure its pace (ffmpeg silencedetect, or scripts/voice_check.py), and change the instruction until it is within 15% of the target. I will listen for the accent.

6. Props: every object the camera lingers on or a character touches twice gets cast/<id>.md with a ```passport (type, size, materials and finish, wear and why it is there, one defect, "unbranded, no logos") and a ```motion block (weight, how it starts and stops, what lags behind, its sound). Make a 5-view prop sheet with no hands and a close-up of the wear.

7. STOP: show me cast/board.md (one row per character and prop: sheet, expressions, voice take with its measured pace, status) and wait for approval.

8. In every later shot: Image 1 = character sheet (identity only, do not copy its layout or backdrop), Image 2 = prop sheet, Image 3 = location master, each named by its job, plus a winner rule when they disagree. Then the shot (size, lens, action), the passport word for word, the prop passport, the look block. Check every prompt still contains each passport verbatim before a batch. For video: animate an approved still, and write the acting as a cause the viewer can see, the tells, and the second each happens, plus a short "no" list (no shouting, no head shaking) against over-acting.
````

## Sources

- Test: 23 images, 3 voice takes, 4 clips, about $6.62; prompts and URLs in the skill's [examples/vesna](https://github.com/vargHQ/skills/tree/main/character-passport/examples/vesna)
- [Kamali et al. 2024](https://arxiv.org/abs/2406.08651) · [Dinkar et al. 2025](https://arxiv.org/abs/2511.00749v2) · [BPS on AI hyperrealism](https://bps.org.uk/research-digest/ai-faces-seem-realer-real)
- [Tinwell et al. 2011](https://vbn.aau.dk/ws/files/63140615/Facial_expression_of_emotion_and_perception.pdf) · [Paul Ekman Group](https://www.paulekman.com/blog/science-of-smiling/) · [Seedance prompt guide](https://docs.byteplus.com/en/docs/modelark/seedance-2-0-prompt-guide)
- [Valve TF2](https://cdn.fastly.steamstatic.com/apps/valve/2008/GDC2008_StylizationWithAPurpose_TF2.pdf) · [Riot clarity](https://www.leagueoflegends.com/en-us/news/dev/clarity-in-league/) · [Adobe PBR guide](https://www.adobe.com/learn/substance-3d-designer/web/the-pbr-guide-part-2)
- People and 200+ verbatim techniques: [people.md](https://github.com/vargHQ/skills/blob/main/character-passport/references/people.md), [x-evidence.md](https://github.com/vargHQ/skills/blob/main/character-passport/references/x-evidence.md)

Every image, clip and voice here was generated on varg.

## Go deeper

- The skill: [character-passport](https://github.com/vargHQ/skills/tree/main/character-passport) (`npx skills add vargHQ/skills --skill character-passport`)
- The designed version of this guide, with every picture and clip: https://varg.ai/how-to/design-characters-and-props-for-ai-video
- Every claim of the ten steps traced to its source: [the evidence bank](https://varg.ai/how-to/guide-pages/evidence-bank/)

## All 10 steps

The route, with the one line that hands it to an agent: [How to make a video with an AI agent in ten steps](https://varg.ai/how-to/make-a-video-in-ten-steps.md)

1. [How to find references for an AI video](https://varg.ai/how-to/find-references-for-an-ai-video.md)
2. [How to make a moodboard for an AI video](https://varg.ai/how-to/make-a-moodboard-for-an-ai-video.md)
3. [How to write a video script with an AI agent](https://varg.ai/how-to/write-a-video-script-with-an-agent.md)
4. [How to design sound and voice for an AI video](https://varg.ai/how-to/design-sound-and-voice-for-ai-video.md)
5. How to design characters and props for AI video (this page)
6. [How to previz a video in Three.js or Blender](https://varg.ai/how-to/previz-a-video-in-threejs-or-blender.md)
7. [How to animate a previz with AI video models](https://varg.ai/how-to/animate-a-previz-with-ai-video-models.md)
8. [How to edit a video with HyperFrames and AI agents](https://varg.ai/how-to/edit-a-video-with-hyperframes-and-agents.md)
9. [How to judge an AI video: measure, don't grade](https://varg.ai/how-to/judge-an-ai-video-without-bias.md)
10. [How to keep an AI video project in GitHub](https://varg.ai/how-to/keep-a-video-project-in-github.md)
