27,000 Views, One Visitor: What We Learned Posting Game Clips to Social


The previous post was about how Atlas, the AI agent that runs marketing for Klooboo (a free game app for players 13 and up), makes short gameplay clips every day. That half works. A clip costs between nothing and about sixty cents before any AI intro, and Atlas reviews a sheet of its frames before it queues one.

This post is the other half: getting those clips onto four platforms, and finding out that views and players are different things.

Since 17 October our record of what’s posted lists 38 reels on Instagram, 33 Shorts on YouTube and 34 copies on Facebook, 40 different clips in all (as of 2 November). Most of the lessons came from the gaps between those numbers.


Why we post through each platform’s own scheduler

The obvious plan was a posting service or the platforms’ APIs. Neither was ready when we needed it:

  • Buffer no longer accepts new API apps.
  • The platform APIs are audit-gated. YouTube’s and TikTok’s posting APIs each need an audit before you can post through them, and Meta’s needs an app review.

So we set a rule: revisit the APIs only once a clip passes 10,000 views. On 28 October one did, so posting to Instagram, Facebook and YouTube by API is now being built, and TikTok stays manual. Until it ships, approved clips go into the platforms’ own schedulers (TikTok Studio, Meta Business Suite and YouTube Studio) in a browser session that Claude drives through Chrome. At first that was a weekly session with me there. Now it’s a posting run on the marketing team’s schedule.

One thing made this bearable: every clip is rendered once at 1080×1920, and that one vertical file works for Reels, Shorts and TikTok. Facebook gets the same reels as Instagram, from the same composer.

Each scheduler has its own limits and traps

Driving three schedulers by hand taught us their rules the hard way.

TikTok Studio

  • At most four posts a day (US Eastern), by our own rule, because we’d read that TikTok removes high-volume AI-content accounts and didn’t want to test it.
  • Never press “Post now” in the “Continue to post?” dialog. Cancel it. A scheduled post can’t change its privacy later.
  • End the caption with a space, or the hashtag autocomplete takes over.

YouTube Studio

  • About nine or ten uploads a day, then “Daily upload limit reached” until you verify a phone number or wait 24 hours.
  • The time picker lands one hour late if you type the time or click the option by script. 3 PM becomes 4 PM. The only reliable way is to find the option, scroll to it and click it.
  • The confirm dialog can say “Video published” for a video that’s scheduled. Trust the Shorts list, not the dialog.
  • The browser profile has to be signed in to the right Google account. On 2 November it wasn’t, and Tuesday’s Shorts didn’t get scheduled.

Meta Business Suite

  • One composer posts to Instagram and Facebook together, which is the good part.
  • Navigating away mid-upload raises a “Leave site?” prompt that can freeze the tab. After that happened on 25 October, every new upload sat at 0% with no network request at all, until a fresh start.

The 25 October catch-up shows how these add up. In one session we scheduled 6 clips on TikTok (the four-a-day cap kept four more off), 7 on Instagram and Facebook, and 9 on YouTube before the daily limit stopped it. That left 21 YouTube uploads and 6 stuck Meta reels for the next day.

A lesson from the same weeks: our queue and the platforms drift apart. A clip marked “scheduled” in the queue is not proof that it’s in a platform’s scheduler, and on 2 November a run found a clip still marked “approved” in the queue that had gone out on YouTube a week earlier. So the morning review checks each platform’s own list against the queue, never the queue’s status alone.

The 10 MB cap

The browser tool we upload with caps a file at 10 MB. Our clips are rendered for quality, and some come out bigger.

On 2 November the approved Big Air BMX · Pirate Harbour clip was 11.6 MB. Atlas made a 7.6 MB copy: the same cut and the same frames, re-encoded only for size. It approved the copy as the same clip and told me it had done so. The next BMX clip, Toy Shop, is 18.2 MB and needs the same treatment before it posts on 5 November.

The rule now is simple. If the file is over the cap, make a size-only copy: no new edit, no new frames, just a smaller encode. Anything else would be a different clip, and it would need its own review.

The TikTok week of zeros

From the afternoon of 24 October, every TikTok post got exactly 0 views. The posts were public and played fine. There was no violation notice. Nine of them in a row sat at zero, while the same clips on Instagram, with nobody paying for them, did well.

We stopped scheduling on TikTok and deleted the nine posts that were queued. On 31 October a single test post went up and got 159 views in about nine hours, and 358 by its third day. But that post changed several things at once (the AI label, the caption, the clip itself, and four quiet days before it), so we don’t know which of them mattered. TikTok is back to one clip a day, with a rule: two posts in a row at 0 views after 24 hours, and we stop again.

A related trap: our five biggest TikTok posts, 4,000 to 14,000 views, had been promoted with ads from the phone app in mid-October. The biggest one averaged 2 seconds of watch time. The spend is only visible inside the app. They are marked as promoted in our records now, and their views are never compared with unpaid posts.

27,000 views, one visitor

This is the one I’m least proud of.

In late October our Instagram reels took off with nobody paying for them: one passed 12,000 views, others reached 4,600, 3,000 and 1,400, about 27,000 in all. Our web analytics showed Instagram sending 2 sessions and 1 visitor to the site from 24 to 27 October. (They only see the web, so a store install wouldn’t show there. But nothing else moved either.)

The reason was basic. Instagram and TikTok never make a link in a caption tappable, and YouTube Shorts descriptions mostly don’t either. Our captions had a URL in them, which is dead text. The Instagram bio had the address typed out as plain text, not as a link. The account had one follower. A viewer had nothing to tap that led to the game. Facebook, where a caption link does work, sent 8 visitors in a week on a tenth of the views.

My reaction, on 26 October: “I can’t believe we missed that … this is basic.”

The fix:

  • An app link on every profile: klooboo.com/app. It sends an iPhone to the App Store, an Android phone to Google Play, and a desktop to the web game. We checked it with curl before putting it anywhere.
  • Captions say “link in bio”, never a URL. The clip’s end card says “Play it · link in bio” too.
  • Each platform hides the field somewhere different. Instagram’s profile link can only be edited in the mobile app; the web has no field for it. TikTok’s website field needs a Business account, switched in the app, and the bio is capped at 80 characters. YouTube’s links live in Studio under Customization, and only the first one shows on the channel page.

It hasn’t paid off yet. In the week after the links went in, about 43,000 views on Instagram and YouTube brought 3 follows and roughly one real visitor from Instagram. Setting the bio links also set off a burst of fake “visitors”: Meta’s link scanners loading every link at once. A fixed link is the minimum, not the answer.

The rule we wrote down: before any social push, check that every profile has a link you can tap.

Install referrers drop utm tags

The second attribution hole is quieter.

On Android, Google Play can pass an install referrer to the app on its first launch. Our app shell keeps only one thing from it: a share code in the form kb=<world code>.<share id>, which opens the world the player was sent. The utm_source and utm_campaign tags are read once on first launch and thrown away.

So for an Android install, a Play link tagged utm_source=instagram tells our own analytics nothing (Play Console sees it; the app never does). The only links that survive an install are share links. For ads, the workaround is one dedicated share link per ad, so each ad shows up as its own share. The real fix is to forward the utm tags into the app’s start URL. That needs a new native build (planned, not shipped yet), and installs from before it can’t be credited.

What we measure now

Views were the easy number and the wrong one. The morning review and the Monday review now read these:

  • Taps on the app link. Our server counts klooboo.com/app taps by device and source, with robots counted separately. The review reports them as “N taps from about M views” over the same window, so the ratio is the headline, not the views.
  • Watch time and early skips. For each Instagram reel: average watch time, and the share who left before 3 seconds once we can read it (Business Suite doesn’t show it). Average watch time is the leading sign. So far every reel at 5 seconds or more broke out, 4 seconds is a coin flip, and below that almost none did.
  • A breakout has a definition. More than 1,000 Instagram views, judged only on posts at least 24 hours old. Under about 300 is the floor. Only unpaid posts count.
  • Installs per store, each with the date it covers and how many days it lags. The store consoles report late, and the review says so instead of reading a quiet day as zero.
  • The weekly question: did organic players grow, and through which engine, the stores or player sharing? Shares, opens and new players from shares are counted weekly. Clips feed both engines; views on their own aren’t a goal.

The marketing overview shows exactly three numbers: clips posted this week, views on them, and app-link taps over 7 days. Any number that wasn’t read that day shows as empty rather than last week’s value.

What I’d take from it

  • Check the link before the content. A profile with nothing to tap turns any number of views into zero players. It’s the cheapest fix in this post and we found it last.
  • Don’t put URLs in captions. On most short-video platforms they’re dead text. Say “link in bio” and make sure the bio has one.
  • Know which links survive an install. If your app throws away utm tags on first launch, tagged links measure nothing. Use links that carry their own identity.
  • Trust each platform’s own list, not your queue. “Scheduled” in your system and “scheduled” on the platform are two different facts.
  • Respect the limits, and write them down. Four a day on TikTok, about ten on YouTube, 10 MB per upload. Each was learned once, by hitting it.
  • Keep paid and unpaid apart. A promoted post’s views will make the wrong game look like a winner.
  • Measure the step after the view. Taps, watch time, installs, shares. If a number can’t move the business, don’t put it on the board.

The clips are good now. Whether they bring players is the experiment we’re running this month, and this time we’ll see the answer in taps, not views.