PromoForge

A self-hosted control room that plans, publishes and measures promotion for my YouTube gaming channel.

PromoForge calendar showing two weeks of scheduled X posts, YouTube Shorts and a TikTok clip, with release days marked
The Promote calendar: X posts, YouTube Shorts and TikTok clips planned around the channel’s release days.
Platforms
4YouTube, X, TikTok and Instagram
Catalogue
2.0kvideos in the localisation pipeline
Automated tests
5,600+plus in-browser checks
Posts published by AI
0agents draft, I approve

The problem

Growing a gaming channel means the same chores on four platforms: cutting clips, writing posts, scheduling them, tuning titles and tags, then guessing what worked. Each tool I tried solved one piece, and none of them measured anything.

I wanted one place to do the work for ChambersPlays, and evidence rather than guesswork about what actually moved the numbers.

What it does

Clip

Shorts Studio scans my recordings, scores the strongest moments and cuts them into vertical clips. Each clip gets an action score and a tightness score, I rate it, and it only goes out once I’ve approved it. It remembers what has already been used, so the same moment is never cut twice.

Shorts Studio review grid: four vertical clips, each with an action score, tightness, star rating and upload status

Optimise

A step-by-step pipeline rewrites titles, descriptions and tags for search: fetch, rewrite, review, push. Nothing is written back to YouTube until I’ve approved it, and every original is snapshotted so any change can be restored.

Measure

Every metadata change is logged with the numbers from just before it, then compared against videos that weren’t changed. Audience data sits alongside it, such as which days people actually watch, compared with the days I release.

Channel views by day of week over 90 days, with release days and the busiest days labelled

Reach new audiences

Localize translates titles and descriptions across the back catalogue into German, Spanish, French, Portuguese and Russian, within a daily quota budget. The originals are backed up, every applied language is verified, and anything that drifts can be put back.

Localize catalogue listing channel videos with their German, Spanish, French, Portuguese and Russian translations applied

How it’s built

One Flask web app with four feature areas behind it. There is no database: everything lives in local JSON stores, synced between my machines as encrypted backups.

An MCP server lets an AI agent read what PromoForge knows about the channel and leave drafts for me to review. By design, it can never publish.

  • Python
  • Flask
  • JavaScript
  • YouTube Data and Analytics APIs
  • Instagram Graph API
  • Claude API
  • FFmpeg
  • Playwright
  • pytest
  • Docker

How I worked on it

  • Evidence over assumptions

    Every change feeds a measurement back in, with an untreated control group so one lucky video never gets declared a winner.

  • Safety rails

    Drafts before anything goes live, and a quota budget on every API so no job can run through a platform’s limits.

  • Testing at every layer

    A large automated suite, plus scripts that boot the app and check every panel in a real browser.

  • AI-assisted development

    Built with an AI coding agent working from a written rulebook and living design docs, with me setting direction and reviewing the work.

Next: PadelScorer

PromoForge is a private project, so the code isn’t public. PadelScorer is the other thing I’ve built and shipped outside work: a padel scoring app for Android phones and Wear OS watches.