Case 03 · AI character studio · my own studio, built end to end

One face. Any scene. As many as you need.

Plenty of services draw a pretty picture. What I wanted was a person who does not exist and stays the same person in every picture and every video. So I built my own studio: you describe a character, the studio draws her, learns her face, and from then on puts her wherever you ask, on a street, at the beach, in the gym, on a padel court. Photos in three formats, five-second video, a queue where a person approves, a caption, a slot in the calendar. Watch it happen below.

The faces on this page are drawings that stand in for the studio’s photographs. The real output is photographic: a person you would take for real, in a real-looking place.

Watch it happenHow it works, step by step
From a description to a trained characterA few evenings
One shoot: a scene in three formatsAbout two minutes on the GPU
Video from any approved photoFive-second clips
What posts itselfNothing. A person approves every frame
Fig. 1 · The whole thing in under a minute · drawings stand in for the real, photographic output · replays on its own

1 · Describe a personnow

Written once, by you or with me. Nobody real: the words are the only source.

waiting

2 · Lock the facewaiting

One photo becomes a set of scenes with the same face. The set teaches a small model that answers to the word char01.

waiting for the face
step 01,0002,000

3 · Shoot anythingwaiting

From now on a shoot is one sentence. The face comes from the model, the scene from the words. Any approved photo can become a five-second clip.

waiting for the model
Act 1 · the description is the whole input

Nobody real. A paragraph about a person who does not exist, fifty seeds, fifty strangers who match the words; one is picked. The drawings on this page stand in for the photographs, which I do not show here.

The story

Why I built one, what it is, and where it stands.

01 · WhyPlenty of services draw a face. None of them keep it, and none of it is yours.

There are a lot of AI image services now and I used them. They are fine for one picture. The moment you want the same person again, in a new place, in a new outfit, in a video, the face drifts: her sister, then her cousin. And nothing you make there belongs to you: no model, no files, a subscription that can change its rules tomorrow. I wanted to see how far one person gets with the open models and a rented graphics card.

02 · What I builtMy own studio, end to end: cast a face, teach a model to keep it, shoot on demand.

A character is described in words and cast from fifty candidates. One photo of the chosen face becomes twenty-seven scenes with the same person, and that set trains a small identity model. From then on a shoot is one sentence: three formats back, face and hands repaired, a five-second clip from any still, a queue where a person approves, a caption, a calendar slot. The models and the files are mine; the card is rented by the minute and switched off between jobs.

03 · Where it standsBuilt, run on one character, never launched as an account.

Backend, worker, admin, the GPU pipeline, the training studio, the approval queue, captions and scheduling are all built and were run end to end on one character: casting, a curated set, a trained identity model, test shoots, clips. The social accounts were never opened; the point was the studio, not the influencer. It is ready to be pointed at a client’s character, and the rest of this page shows what it does.

Is this for you?

Built for a face you will use a hundred times. Not for one picture.

Built for
A shop that wants one model all seasonThe collection, the lookbook, the stories, the ads: the same face, any outfit, any place, without a second photo day.
A brand or an agency that needs a personaA virtual ambassador, a mascot with a human face, a character for a campaign that runs for months and must never drift.
A creator building a character, not posting selfiesDaily photos and clips of someone who does not exist, approved by you, labelled as AI, scheduled from one screen.
Product-in-context at volumeHundreds of “a person holding or wearing the thing” shots, consistent enough to sit next to each other on one page.
Not for
A real person’s faceThe character is invented from words. I do not train on photos of a real person, even with their consent; that is a different product with different risks.
One picture, onceIf you need a single image for a banner, an online generator is cheaper. The studio pays off when the same character shows up a hundred times.
Talking video, long videoClips here are five seconds of natural motion from a still. Speech, lip-sync and minute-long scenes are a later stage, not this build.
Anything that must post without a person lookingEvery frame goes through a human. That is a feature. If the brief says “fully automatic”, we disagree on the brief.
How a character is made · interactive

Five steps from a paragraph to a face that holds.

This is the part the generators skip. A face is cast, locked, taught to a model, tested and frozen, so that every later shoot starts from the same person. Click a step; the panel on the right shows what the admin shows at that moment.

01
Cast a faceFifty strangers from one paragraph, no training yet. Pick one. Its seed goes into the passport.
02
Lock the faceA face adapter turns that one photo into twenty-eight scenes with the same person. Duplicates dropped, twenty-seven kept.
03
Teach the modelTwo thousand training steps on the rented card produce a small identity add-on that answers to the trigger word.
04
Test and compareVersions live in a library with their sample and their set. One is active; test shoots decide which.
05
Freeze itA trained set is read-only forever. A better character is a new version, never an edit.

The steps advance on their own every few seconds. Click one to stop and read.

Casting · 50 faces from one paragraph

click one to pick

The admin runs the base image model fifty times on the same description with fifty different seeds. Nothing is trained yet; these are strangers who match the words, and every card carries an estimated age. One of them becomes the character.

Picked: No. 03 · age 26 · seed 333333. Its seed is written into the passport so the exact face can be reproduced later.

The pipeline, step by step · interactive

One sentence in. Three photos, a caption and a calendar slot out.

A recorded run of the production pipeline. Pick a scene and press Shoot; the left column is what the worker logs, the right column is the approval screen in the admin. Then approve it, let the caption come back, schedule it, and make a clip. Nothing here is live; the timings and the steps are the real ones.

The worker’s logrun #a3f9 · seed 333333

Press Shoot.

Approval · Café, golden hourrendering

4:5 · waiting · 4:5 · waiting ·
9:16 · waiting · 9:16 · waiting ·
1:1 · waiting · 1:1 · waiting ·
prompt · char01, window seat in a small café, golden hour, knit sweater, flat white, contemplative
Three formats from one render, not three renders

The scene, the prompt and the character are shared; only the canvas size differs per branch, and all three run in one job on the GPU. Feed, stories and the square archive stay the same picture.

Faces and hands get a second pass

The image model draws the whole frame at once, and small things suffer: eyes, teeth, fingers. A detector finds the face and the hands and repaints just those regions at higher resolution. Most of “AI hands” goes away here.

A person is the last step, always

The queue is where the studio differs from a generator. Every frame is estimated for age, flagged if borderline, approved or rejected by hand. Rejected frames never reach a caption, let alone a calendar.

Video · WAN 2.2

Five seconds of life from any photo. Same face, now it moves.

An approved still goes into WAN 2.2, an open video model that runs on the same rented card, together with one sentence about the motion. Out comes a five-second clip: 81 frames, sixteen a second, 720 by 1280, the same person. That is the raw material for reels and stories. The model can also start from text alone; the studio prefers the photo path, because the face in the photo is already approved.

5 s · video
A breath and a push-in“subtle natural motion, gentle camera push-in, soft daylight”The default motion for a portrait: she breathes, blinks, the camera drifts closer. Enough to make a story feel filmed, not pasted.
5 s · video
A slow pan, hair in the wind“slow pan from left to right, hair moving in the sea breeze, late light”Outdoor scenes get weather: wind, light shifting, a step. Still one shot, still her.
5 s · video
Pull back to the court“camera pulls back from the face to reveal the court, mid-rally”The camera can move a lot; the person should not. A swing, a turn, a smile are fine; a full rally is not what this model is for.
From a photo, not from scratch

Image-to-video keeps the approved face and the approved scene; only the motion is new. Text-to-video also exists in the studio for b-roll without the character (a street, a sea, a kitchen), where identity does not matter.

What it can and cannot do

Breathing, blinking, a turn of the head, a step, wind in hair, camera moves: yes. Speech, lip-sync, a scene cut, a full minute: no. For narrative video the clip becomes the first frame for an external service, a later stage.

Same queue, same rules

A clip takes a few minutes on the card and lands in the queue linked to its photo. Age check on the first frame, approve by hand, caption, schedule as a reel; TikTok gets it as a draft for the trending sound.

What comes out

Three photo formats, a clip, and a 4K upscale when a print needs it.

1024 × 1280
4:5 · the feedPortrait for the main grid. The passport format.
768 × 1344
9:16 · stories, reelsSame scene, taller crop. Also the source for clips.
1024 × 1024
1:1 · squareArchive, ads, marketplaces.
720 × 1280
video · 16 fpsFive seconds of natural motion from any approved still.
Upscale to 4K

For a print, a billboard or a banner, an approved frame goes through a restoration upscaler (SUPIR, with 4x-UltraSharp as the lighter option): two to four times the size, with skin texture and pores reconstructed rather than blurred.

Every file is kept, nothing is overwritten

Originals stay on disk in full resolution, organised per character and per run, and are mirrored to cloud storage every night. A download button gives the full-size file; the admin shows previews.

Folders for sequences

Approved frames can be grouped into folders: a week of stories, a lookbook, the six stills for a slideshow reel. Folders are organisation only; they never publish anything.

Under the hood

An admin, a queue, a rented GPU that sleeps between jobs.

The studio is a small web application plus a graphics card you do not own. The card is switched on when there is work and off when there is not; everything else runs on an ordinary machine. Hover a box.

Fig. 2 · One shoot, left to righthover any box
The admina web page · Next.js
The APIPython · FastAPI
The queuejobs wait their turn · Arq
The workerruns each job · guards the budget
ComfyUI on a rented GPURunPod · Flux + LoRA · WAN 2.2
Storagelocal disk · nightly to Cloudflare R2
Age checkInsightFace · on the Mac
CaptionsClaude · daily cap
SchedulingMetricool
Instagram · TikTok · Threadsvirtual-creator accounts · AI label
Hover a box

Top row, left to right: a shoot is requested in the admin, the API queues it, the worker drives the rented GPU and brings the files home. Bottom row: the files are stored and checked, a caption is written after approval, and the scheduling service posts them.

What it costs to run

Cents per shoot. The card is rented by the hour and switched off between jobs.

No hardware is bought. A card with 24–32 GB of memory is rented from a GPU cloud by the minute, the models live on a persistent volume, and the pod stops itself after thirty idle minutes. Rounded figures from the project’s own runs and the providers’ list prices in mid-2026; they will drift.

$0.35–0.75one GPU hour, depending on the card (an RTX 4090 class or an RTX PRO 4500)
≈ 2–3¢one shoot: three photos in about two minutes on a warm card
$0.30–0.50one five-second clip (a few minutes of GPU time)
≈ $10training one character version (one to two hours, done once)
under $0.01a caption with hashtags from the language model
A month of daily content

Three to five posts a day with a clip or two is roughly eighty GPU hours a month: a few tens of dollars, plus a scheduling tool and a few dollars of storage. The budget line is the card, and it is small.

Two caps, enforced in code

A daily ceiling on the GPU spend and a separate one on the language model. At eighty percent a message arrives; at a hundred, new jobs are refused until tomorrow. A forgotten pod cannot run all night.

What is not in these numbers

The person approving frames, the licence of the base image model for commercial use (see the honest part), and your own time writing scenes. The studio removes the photo shoot, not the editor.

The rules

Six things the studio refuses to do, by design.

Never post without a personThere is no auto-publish path in the code. A frame reaches the calendar only after a click in the approval screen.
Never a real person as the referenceCharacters are cast from words. Uploading someone’s photo to make a lookalike is not a feature, and will not become one.
Never ambiguous about ageEvery frame carries an estimated age; anything that reads young is flagged and opened full-screen before it can be approved. Characters are adults, stated in the passport.
Always labelled as AIThe platforms require the label for virtual creators and it is applied on every post. Pretending the character is a person is off the table.
Never an unbounded billDaily caps on the GPU and the language model, a hard monthly ceiling at the provider, a balance watchdog that writes to you before the balance runs dry.
Never a character that cannot be rebuiltSeed, description, frames, config and weights are kept per version; a frozen version is never edited. Lose the machine and the character comes back from the backup.
The honest part

What still goes wrong, and what I would tell you on the first call.

Hands, teeth and text still fail sometimes

The second pass fixes most of it, not all. Count on rejecting one frame in five on a hard scene, and on the odd re-roll. The queue exists because the model is not finished, and will not be for a while.

The face drifts at the extremes

A trained identity holds beautifully at portrait and waist-up framing and in ordinary light. Extreme angles, very small faces in wide shots and heavy stylisation loosen it. A second version with those frames in the set usually fixes it.

Video is five seconds, silent

The clips are natural motion from a still: a breath, a turn, a camera push. No speech, no lip-sync, no scene change. Longer narrative video from external services is a later stage and a different cost.

The base model’s licence matters

The image model used here (Flux.1-dev) is free for research and personal use; commercial production needs the paid licence from its maker or an openly licensed model instead. It is a line item, not a blocker, and it is decided before the first shoot.

It is a studio, not a vending machine

Someone writes scenes, approves frames, finishes TikTok posts in the app for the trending sound. Half an hour to an hour a day for a daily account. The studio removes the shoot, the retouching and the formatting, not the editor.

The public account was never launched

The pipeline was built and run on one character to the point of scheduled posts; the accounts were not opened. Everything on this page is built; the audience numbers are not there to show, because there was no audience.

The tech, in plain words

Every tool on this page, named and explained.

Pick a term. Each is one sentence of what it is and one of what it does in the studio.

ComfyUIThe engine that runs the models

An open-source program where an image or video pipeline is a graph of boxes: load a model, read a prompt, render, repair the face, save. The studio keeps those graphs as files and sends them to ComfyUI with the scene filled in; nobody edits boxes by hand after setup.

How a project goes

A character in the first week. A posting routine by the fourth.

Week 1 · castingThe passport

We write the character together: age, look, mood, the places she lives in. Casting runs, you pick the face, the set is locked, the first version trains. You see the first test shoots.

Weeks 2–3 · productionScenes and formats

A library of scene prompts for your use (collection, seasons, places), the three formats, repairs, upscale for print, clips. A second version of the character if the first one taught us something.

Week 4 · the routineQueue, captions, calendar

The admin wired to your accounts through the scheduling tool, captions in your tone, the approval routine in your hands, the labels and caps in place. First posts go out.

AfterOn demand

New scenes any day, new versions when the character grows, a second character on the same studio. You run it; I stay on call for the pipeline.

What stays with you at the end
  • The character: the trained weights, the frames, the seed, the passport
  • The studio: admin, API, worker, workflows, deployed where you choose
  • The scene library and the caption templates in your tone
  • The provider accounts in your name: GPU, storage, scheduling
  • The runbooks: start the card, train a version, restore from backup
  • The know-how: which settings hold a face, and which break it
Contact

Want a character of your own, or a studio for your brand?

Tell me who the character is for and how often you would post. I reply by email with how I would build it and roughly how long it takes.

[email protected]