Seventeen seconds: a red-haired champion, a jittery rookie, tea from a tartan thermos and a shot at sunrise. There isn't a single real frame in this ad. AI agents wrote it, cast it, shot it and cut it, each in its own role. My job was to approve things and reject things.
Watch the ad (9:16, 1080×1920, 20.6 s, sound on): clay-sniper-ai-ad.mp4
The ad is for Clay Sniper, my iPhone and Apple Watch logbook for clay shooters. It took three days, October 7–9, from the approved plan to the final file: two for the shoot and the first cut, and one more for polishing. Here's who did what, which ideas went into it, and where it nearly fell apart.
Why generate an ad at all
Clay Sniper already has an App Preview on the App Store, and it's honest: a screen recording of the real app, the watch, a real gunshot sound. Apple doesn't accept anything else there. But that video only works for people who've already opened the product page. To get them there, you need something for the feed: Reels, Shorts, TikTok. Fifteen seconds, a story, faces, a joke. A solo developer can't shoot that with actors on a real range, so I had it generated.
This was the second attempt. The first ad, "Hands full", ran on a local video model on my second Mac: no voices, almost no faces. It taught me the main lesson about hooks (more on that below). For "The Legend" I switched to a cloud model that can hold characters, dialogue and sound.
The idea: even legends miss
An ad needs one promise, not a feature list. For a shooter's logbook, Claude put it like this: "Even legends miss. The difference is they know exactly where." The end card squeezes it into three words: KNOW YOUR MISS.
The camera style was mine: someone else's ad I liked. A field at golden hour, two armchairs and a side table in the grass, Wes Anderson symmetry, warm film grain, a cut every 2–3 seconds, snap zooms, whip pans, macro inserts. We cut three short silent clips from it and used them as camera-motion references only. The model was told not to copy the people, the props or the story, just the way the camera moves.
Two characters carry the story:
- The Legend: a fictional champion with fiery red hair, amber shooting glasses pushed up on her head, an olive vest, a dry half-smile and slow, precise movements.
- The Rookie: a jittery newcomer in a brand-new orange vest with the price tag still on the sleeve. He asks the question the viewer would ask.
He asks "How do you never miss?" She says "I do. I log them." and slides her phone with the stats toward him. Then she solemnly sips tea from a tartan thermos, walks to the station and smokes the clay. The tweed crowd erupts. The myth of the flawless shooter breaks, and the product shows up as evidence in her hand, not as a slide.
The crew: who did what
The most interesting part of the project is how the roles split. Two agents and one video model did the work, and each had its own job, just like on a real set.
| Role on set | Who | What they did |
|---|---|---|
| Showrunner | Me | Brought the style reference, approved the plan and the heroine, accepted the draft, lifted the "no gun on screen" rule, picked a silhouette over a face for the shot, decided to upscale to 1080p in the edit, made the calls at every fork |
| Screenwriter | Claude | The promise, a four-part beat sheet, a six-shot storyboard, dialogue timing at 2.5 English words per second, a retention pass |
| Fact-checker | Claude | Checked every line and every screen against the app's code and real screenshots. Cut a feature that didn't exist |
| Character artist | Codex | Character sheets: the heroine full-length, from behind and as a portrait (two versions), the rookie. The model uses them to keep faces consistent shot to shot |
| Production designer | Codex | The location start frame: armchairs, table, thermos, crowd behind a rope, a phone with a bright green screen to replace later |
| Director | Claude | A brief for six cuts pinned to timecodes, the 180-degree rule, camera-motion references, a list of restrictions |
| Camera, cast, sound | Seedance 2.5 | Shot every cut in one pass, played both leads and the crowd, voiced the lines, the range noise and the shots |
| Production coordinator | Claude | Launched the generation, watched the queue, saved the IDs of every piece so we could come back to them |
| Editor and sound | Claude | Edit decision list, cuts, subtitles, the KNOW YOUR MISS card, an App Store end card, the 1080×1920 upscale, frame-by-frame screen fixes, a real gunshot layered over the generated one |
| Censor | Claude | Caught what ad platforms reject: barrels pointing at the camera, revealing angles |
Notice that Claude has the most roles but none of them involve drawing. It writes, counts, checks, briefs and edits. Codex and Seedance make the pictures; Claude writes their briefs and signs off on the result.
Fact-checking: a line that couldn't exist
In the first draft, the Legend answered dryly: "I do. Station four." Nice line. But Claude checked it against the app's code first and found per-station stats only in the competition schedule. You can't show a screen that doesn't exist in an ad, so the line became "I do. I log them.", and the phone got a real screen with a best series of 22/25.
The next day it turned out per-station stats do exist: a By station screen shipped in a newer version that lives in a different repository. Station 7 is red on it, 50%, which is KNOW YOUR MISS in a single picture. The second version of the ad shows exactly that screen.
The lesson goes back to the first ad. Its hook was that a gloved finger can't tap a phone screen, while the watch crown still works. I rejected the shots: on the range people wear thin shooting gloves, and those work with touchscreens just fine. The hook was false for the very audience it targeted. The rule since then: check everyday details against real life and features against the code, both before generating, not after.
Casting: character sheets
A video model doesn't remember what a character looked like in the previous shot. To make the red-haired Legend in cut one the same person as in cut six, you feed it a character sheet: full-length, from behind, and a portrait. Codex drew those.
I approved the heroine on the second try, and the rule was strict: the look gets approved before any video runs. Redrawing a picture takes a minute; reshooting an ad because the face is wrong takes hours.
Claude also set boundaries for the character: striking, but not sexualized. No body-focused angles, no cleavage, no bare skin. The charisma comes from light, gaze and that half-smile. The reason is practical: ad platforms reject such creatives, and the video model simply refuses those prompts. Other restrictions: no real people or athlete lookalikes, no logos. Even the thermos is unbranded, just tartan.
Storyboard: six shots in fifteen seconds
| # | Time | On screen | Why |
|---|---|---|---|
| 1 | 0–2.5 s | An orange clay bursts in slow motion. The crowd turns heads in unison. Caption: "She hasn't missed all day." | Hook: everyone is looking the wrong way |
| 2 | 2.5–5 s | Whip pan to the armchairs, over the rookie's shoulder: "How do you never miss?" Snap zoom on her: "I do." | Character clash and the viewer's question |
| 3 | 5–7 s | Macro: her hand slides the phone, per-station stats on screen. Voice-over: "I log them." | The product as evidence, not a slide |
| 4 | 7–10 s | She pours tea from the thermos and takes a solemn sip. The rookie, out of focus: "...tea?" | The most shareable beat, a pause before the shot |
| 5 | 10–12.5 s | Silence, a silhouette at the station against the sunrise, "Pull!", the shot, the clay turns to dust | The hook's promise is paid off |
| 6 | 12.5–15 s | Perfect symmetry: she raises the thermos cap like a toast, the rookie copies her with an empty hand. KNOW YOUR MISS | Finale and one line of promise |
A few professional rules Claude followed without being asked:
- The 180-degree rule. In the dialogue the rookie is always on the left and she's on the right. The camera never crosses the line between them.
- Varied shot sizes. Extreme wide, medium, macro, close-up, wide, wide. Never three of the same in a row.
- Dialogue windows. Every line is timed at 2.5 words per second. "I log them." didn't fit the macro shot, so it became a voice-over on top of the phone.
- Works with the sound off. Subtitles duplicate every line and sit between 15% and 75% of the frame height, clear of the Reels and TikTok buttons.
The shoot: the whole ad in one pass
Seedance 2.5 shot the first draft in a single pass: all six cuts from one generation. It got six references: three images (both character sheets and the start frame) and three video clips with the camera style. Every camera move in the prompt pointed to its reference: "over the shoulder like Video 1", "whip pan like Video 3".
The job sat in the queue for almost two hours. The draft came out at 480p, 14 seconds. A pleasant surprise: the model produced voices, intonation, the gurgle of tea and the crowd noise itself. No separate voice-over needed.
I accepted the draft with two notes. First, the gun wasn't visible in the shooting scene. That came straight from the prompt: Claude, being cautious, had banned close-ups of the gun, and the model removed it altogether. Second, Claude had composited a real stats screenshot onto the green phone screen, but at 480p the "Best series 22/25" line was unreadable.
Fixes: reshoot pieces, not the whole ad
Regenerating the whole ad for two notes means gambling everything that already works. The model shoots differently every time, and the heroine in the tea shot could come back as someone else. So Claude reshot only the weak pieces as separate generations. The first round, the phone and the shot, took about twenty minutes. The shot was later reshot once more, more on that below.
| Piece | Draft v1 | Final |
|---|---|---|
| Phone, 4 s | Green screen with a perspective-warped screenshot. Numbers blur at 480p | The model got our own clip as a "repeat this frame by frame" reference plus the By station screenshot. Motion repeated, screen drawn by the model, large station badges readable. Later the Russian demo clubs were swapped for US ones |
| Shot, 5 s | Silhouette from behind, no gun visible, a "pistol" pose | Third take: one shot from behind and slightly to the side, a silhouette at sunrise, the whole gun visible, no face. The prompt describes a long double-barrel shotgun and a proper trap stance; a pistol grip is banned |
| Phone in wide shots | A 26×12 px green rectangle on the table | We tried the splash screen and the icon; both dissolve into a blob at that size. The screen is now off: nearly black with a reflection |
| Length | 15 s | 20.6 s: 18 s of story from three generations with freeze frames at the joins, plus a 2.5 s end card |
The biggest surprise was the phone screen. The assumption had been that you can't trust a model with small UI, so Claude always composited the real screenshot on top. It turns out that if you give the model its own clip as a motion reference plus the screen image, it repeats the shot and draws the UI itself. Large elements, numbers and badges, come out readable. Small text still drifts, so this only works for large on-screen elements.
The edit: an EDL and a censor
The final ad is assembled from pieces of three generations. Claude described it as an edit decision list: for every piece, the source, in and out points, which audio to use and whether to hold a freeze frame at the end. A build script assembles the video from that list and lays on the subtitles, the end card and the sound. The gunshot is a real one, taken from the App Preview recording, layered over the generated one.
The cuts inside the generated draft had to be found by hand: standard scene-change detectors found nothing in this video. Claude compared neighbouring frames pixel by pixel and located cuts by spikes in the difference, then timed the subtitles by the loudness of the audio track.
Censorship landed in the edit too. In the second take of the shooting scene the model swung the barrels straight at the camera for just over a second. That's a no-go for an ad, so Claude cut the piece entirely. What was left of the three-quarter view lasted about half a second and looked like a fragment. So I asked for the scene to be reshot differently: one shot from behind and slightly to the side, a silhouette against the sunrise. The whole gun is visible, and the barrels physically can't point at the camera. That third take made the final cut.
Polishing: one more day
The ad that looked done on the evening of October 8 wasn't ready to run: no app name, no App Store link, and the picture was still 480p. Polishing took another day, and the model didn't shoot a single new frame for it. It's all editing.
- 1080×1920 on our own. Regenerating in 1080p would have meant reshooting every piece and gambling the good takes again. So Claude upscaled the 480p sources during assembly with careful scaling and light sharpening. Subtitles and cards are drawn natively at 1080, so text stays sharp even where the picture is softer.
- A 2.5-second end card. The last frame blurred, the icon, the name Clay Sniper, the subtitle from the App Store listing and the official Download on the App Store badge, taken from Apple's site rather than redrawn.
- US clubs on screen. The phone close-up showed clubs from Moscow and Krasnodar at the bottom, the app's demo data. For a US campaign Claude captured a fresh screenshot with US demo data, clubs in Texas and Pennsylvania. Instead of regenerating the piece, the new card was pasted in frame by frame: on the close-up it's anchored to the old screen by keypoints; on the table, where the screen is tiny and in steep perspective, the screen corners are tracked frame to frame and motion blur is added to match.
- The pump click. In the shooting scene the model generated the sound of a pump-action being racked. A double-barrel has no pump, and any shooter would hear it. Claude muted that third of a second.
One thing stayed as it was. In the phone piece the model zooms in until the screen fills the frame and the phone body disappears. I wanted the whole phone in her hand, but there's no such frame in the footage. We discussed three options: redraw the frame with a local model and paste in the screenshot, crop the zoom out, or reshoot the piece. We decided it doesn't hurt the ad.
What didn't work
- The wink. I asked for a glance over the shoulder with a wink before the shot. The model never did it.
- Resolution. The sources are 480p and the final is upscaled to 1080×1920. Fine for a phone feed, but softer than true 1080p.
- The whole phone. The model zooms in so far that the phone body disappears. There's no frame with the whole phone in her hand.
- Subtitles by ear. Timing was matched to the track's loudness; no human ear has checked it yet.
What I took away
It felt less like using a tool and more like working with a small film crew. I didn't write prompts or scrub a timeline. I looked at frames and said "yes", "no", "actually, let's show the gun". Claude kept the whole project in its head, from the promise to the last cut, and talked to each crew member in their own language: character sheets for Codex, a second-by-second brief for Seedance.
Second: fixes. Generate the whole ad once, then reshoot only the weak pieces. What works stays put, and a fix takes minutes instead of hours.
Third: fact-checking beats beauty. The most dangerous mistakes in this project weren't in the picture but in the meaning: a line about a feature the agent didn't find at first, and a glove hook that turned out to be false. A model will draw anything, so whether it's true has to be checked before you generate.
Originally published at klukyanov.ru.
Shorter weekly write-ups (in Russian) — on Telegram.



Top comments (0)