The Gameplay Is Real: How Our AI CMO Makes Short Clips Every Day


I run Klooboo on my own: a free game app for players 13 and up, where most games let you make a world of your own with AI and other players play it. In the org chart post I described Atlas, the AI agent that runs marketing. Most of what Atlas does every day is short vertical video for TikTok, Instagram Reels, YouTube Shorts and Facebook.

This morning at 08:00 Atlas made, checked and approved three clips for tomorrow: a Potion Sort clip, a Tile Trio world it made today, and a clip of a Sticker Hunt world being made from a typed idea and then played. It spent $1.20 from its creation budget and $0.81 from a separate AI-video budget. I wasn’t involved.

This post is how that works. The next one is what happened when the clips met the platforms, which is the more humbling half.


Where it started: one clip a day, by hand

In August I made the clips myself, with Claude Code doing the work and me approving it at three gates: the character, the rendered video, and the final draft with music. It was slow, and it taught us two things we still use.

  • Silence kills a post. Our recordings had no audio track at all. The first post went out silent and got no views. The next one, with music, got over 600. Clips now carry their own music from a short list of licensed tracks I picked, so nothing depends on a manual sound step.
  • “I typed…” beats “here’s a new feature”. By the end of August, across our first seven posts, the ones captioned I typed "<idea>" got three to five times the views of the feature-announcement ones. A small sample, but a clear one. The idea has to name a game you can picture (“stone age runner”), not something abstract.

By October I wasn’t going to make three clips a day by hand. So the job moved to Atlas.

Real game frames, recorded headless

The most important decision is the boring one: the gameplay in a clip is the real game. It’s not an AI-made video of something that looks like our game. A headless browser opens the actual game page, plays it, and records it.

A few things make that work:

  • A stepped clock. The recorder moves the game forward one frame at a time and captures each frame. The page’s own timers run on game time, not wall time, so a busy laptop still produces a smooth clip. Waits in the page get cut out afterwards.
  • A pilot for the action games. An undriven runner gets caught by the chaser in about 12 seconds, which is a bad clip. For the runner and the bike park, a scripted pilot plays: it dodges, lands tricks, and marks the good moments so the cut can find them.
  • A liveness guard. If the capture didn’t move, the recorder refuses it with its own exit code. That’s a recipe problem to fix, not a clip to post.

One render costs about two cents. Filming a world that already exists is the cheapest clip we have.

Atlas’s morning: Maker, Critic, Editor

The daily job is a written brief that Atlas runs every morning. In one run it plays three parts:

  • Maker. For a “set” game (a board-style game where the world is a set of pictures), it picks a short idea a player might type, 2 to 6 words, specific and a little weird. It asks the game to draw candidates, the same way a player would.
  • Critic. The draw comes back as one image with the candidates side by side. Atlas looks at it and picks the one that will stop a thumb in a feed: big clear subjects, bright, obviously the idea at a glance. If none is good enough, it doesn’t make one. This morning, on the Sticker Hunt make, it picked the one picture with no people in it, because the other three showed readers, some of whom looked like young children.
  • Editor. It films the world, then reads a strip of seven frames from across the clip. The world must fill the screen, something must visibly happen between frames, and there must be no loading screen, no error and no other player’s name on screen.

A clip that fails a check isn’t queued. Atlas writes down what was wrong, because that tells me what to fix in the filming.

Six a day, then three

On 21 October I looked at the clip queue and said what I saw: “all the posts just look the same, different image but the same more or less.” The job had been rotating four picture-board games, one palette and one cut. I asked for more variety and more posts a day, and told Scout (the AI head of product) and Atlas to decide between them how to film it.

They came back with a mix of six a day: up to three clips filmed from worlds that already exist in the action games, two new worlds made in the set games, and one flex slot. TikTok got at most four of those, to stay clear of looking like a high-volume AI-content account.

That lasted about ten days. On 28 October Atlas proposed fewer, stronger clips and I agreed (“we don’t need 6 clips and the 3 a day sounds better”), so from 1 November the day is three: two for the games that break out, and one “core” clip of the make flow.

The make-flow recorder

Clips of a finished world show what you can play. What makes Klooboo different is the part before that: you type an idea, AI paints the world, and a minute later you’re playing it. On 25 October I said the flow clips beat the plain world clips, so we film that too: up to three a week, and one a day for the first half of November.

This was harder than it sounds, for two reasons.

A signed-in make happens in the app. On the web, past a guest’s first make, every make button hands you to the app, so the flow can’t be filmed in a plain browser tab. So the recorder fakes the app shell with one injected line and runs a real make, on a funded team account, through the same routes a player uses. It isn’t a mock-up of the flow. A real world gets made and goes public, and it costs real money.

A make takes minutes; a clip has seconds. The recorder writes the raw video plus a file of marks, one frame number per beat: typing starts, the empty cards appear, each candidate arrives, the tap, the ready card, play. The cut is built from those marks:

  1. the typing, at speed;
  2. four empty cards with the idea on a chip, then the candidates popping in one by one;
  3. the tap on one;
  4. straight to the ready card with its poster (no flash of the feed in between, which read as “it went back”);
  5. real-time play, reached about 2 seconds into the clip;
  6. an end card.

Some things are always off camera: the credit balance line, the debug pills, and any player’s name that isn’t the team’s.

What went wrong:

  • We picked a poor idea. The first take against production was a Chomp world from “haunted shipwreck reef with glowing jellyfish”. It worked. It also looked like every other Chomp world, because Chomp’s built-in worlds are all under the sea. There’s now a repeat check that refuses an idea that shares two or more words with one we’ve already used.
  • A local take is not a clip. Two early takes ran against a local stack. The worlds in them don’t exist in production, so the link on the end card goes nowhere. Rule: before a make-flow clip is queued, its world must open signed out on the live site.
  • The game froze on camera. Chomp’s play page froze 3 times out of 4 while filming, five or six seconds into play. Chomp flow takes are paused until that’s fixed. The flow clips rotate through other games meanwhile.

The clip opens on play

On 24 October I watched where people left. Our paid TikTok burst in mid-October had about 2 seconds of average watch time, and the clips opened on a brand card with the slogan. “People are dropping because of that.”

The rule since then: frame zero is gameplay. The brand goes on the end card only. The intro option was removed from the filming tool, and an older clip gets its first 1.2 seconds trimmed before it’s reused.

Atlas then made the rule mechanical. Every take goes through a re-cut tool before it’s queued, and its trim command starts the clip at the first big motion. It measures motion the cheap way: tiny grey thumbnails, ten a second, and the average pixel difference between neighbours.

// first moment the pixel delta (10 fps, 32×56 grey) reaches `thr`
const fr = grey(file, from, from + scan, 10);
const d = fr.slice(1).map((f, i) => meanAbsDiff(fr[i], f));
const i = d.findIndex((x) => x >= thr); // thr defaults to 5

On our takes, running and riding sit between 6 and 25 from the first frame, a tile pick spikes to about 18, and a still board stays under 2. So a threshold of 5 finds the first real move. If nothing in the first 6 seconds crosses it, the tool starts at the biggest move it found and says “judge the frames”.

The tool is plain ffmpeg on my laptop, so a re-cut costs nothing. It always works from the raw take, never from a finished clip, because a finished clip already has music and an end card baked in. Every run writes a contact sheet of the frames at 0, 0.5, 1, 1.5, 2, 3 and 5 seconds, and the rule is simple: something must be moving in the first one.

Two smaller choices came from the same place:

  • On the game clips, the end card says “Play it · link in bio”. It used to show a klooboo.com link to the world. Nobody can tap a link inside a video, so it now points at the one place they can tap.
  • A small corner tag from 3 seconds, like ”▶ Play Boo Runner · link in bio”. The re-cut tool got a --tag option for it on 2 November. So far it has been rendered once, as a test, and it’s waiting for me to check its size and place. Nothing has posted with it yet, and the option has no automated tests.

The one place we do use AI video

To be honest about the title: since 1 November, the clips in the two breakout slots can open with a 3 to 4 second AI-made mood shot before a hard cut into the real gameplay. I agreed to pay for it because, in my words, “it’s better to release better clips, we will get more views and hopefully manage to convert some.” It’s an experiment, and the rules are strict:

  • the intro has its own look (live-action-like, stop-motion, painterly) and never imitates the game’s art or fakes a 3D version of it;
  • no people, hands, faces, text or logos;
  • the caption says “Intro made with AI.”, and the AI label goes on wherever the posting tool offers one (YouTube does; Meta’s Business Suite doesn’t, so there the caption line is the label);
  • it comes from its own budget: $25 a month, about $0.41 a take, at most one retry.

This morning’s Potion Sort intro shows why the frame check matters. The first take had a fingertip at the top edge and bottle labels with marks that looked like letters. A free re-cut didn’t hide them, so Atlas rejected it and paid for one retry, which passed.

It’s too early to say whether the intros help. Everything after the first 3 or 4 seconds is still the game, filmed.

The review before anything posts

Until 29 October I approved every clip myself. That made me the bottleneck, so the rule changed: Atlas approves routine clips itself, after the Critic and Editor checks pass. Two things still come to me:

  • The first cut of a new format, such as a new layout, recipe or opening style, is a taste call. It waits for me.
  • Every clip Atlas approved shows up on my daily marketing card, with its title, its slot and a link to the video, so I can watch it and veto it before it goes out.

The admin has a note box on each clip. Before Atlas picks anything, it reads every note I’ve left (“this hero looked bad”, “that world was already posted”) and treats them as rules over its own brief.

Captions follow the same voice rules as everything else we publish. One hook, then “Free, no ads. Link in bio.” and three tags. The hooks rotate between the make hook (I typed "…" and it became a game), a dare (“Can you clear the ghost taxis before the fog rolls back?”) and a one-line story. Some words are never used: “kids”, “prompt”, “generate”, “AI game maker”, “platform”, “users”. And a world is never posted twice on the same platform. One file records what is up where.

What it costs

WhatCostNotes
Filming a world that exists~$0.02the render
Re-cut (trim, cut, tag, end card)$0ffmpeg on my laptop
A new world made by Atlas~$0.60the draw plus the make
A make-flow take~$0.60a real make on the team account
An AI intro take~$0.41from a separate $25/month cap

The creation budget is $2 a day and $60 a month. It’s enforced in code, not in the prompt. The draw tool refuses to start when a make would go over, and a refused draw is the answer for the day, never something to work around. When the budget says no, Atlas still films the free clips.

At this morning’s run, three days into November, Atlas had spent $3.53 of the $60 creation budget and $2.04 of the $25 AI-video cap.

The cheap parts are cheap because of the first decision. An AI intro take costs about $0.41 for 3 or 4 seconds. A filmed clip costs two cents for the whole thing, and it shows the actual game.

What I’d take from it

  • Film the real thing. A headless browser and a stepped clock give you smooth, honest gameplay for cents. Save AI video for the part that isn’t the product, and label it.
  • Open on motion, and measure it. “Frame zero is gameplay” became a pixel-difference threshold and a contact sheet, so nobody has to remember the rule.
  • Cut from marks, not by hand. A recorder that writes down when each beat happened turns a make that takes minutes into a clip under twenty seconds without anyone editing by hand.
  • Make the agent judge pictures, not its own summary. The Critic reads the candidate sheet and the Editor reads seven frames. That’s where the stray fingertip and the pictures of young children got caught.
  • Put the budget in code. A tool that refuses is worth more than a sentence in a prompt that asks nicely.
  • Keep the human on taste, not on routine. I see every clip and can veto any of them. I only have to decide the new formats.

Making the clips turned out to be the easy half. The next post is about posting them, and about Instagram reels that drew 27,000 views and brought us one visitor.