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

- 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.

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.

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.

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.