All work

Social Farm — automated short-video studio

Plans, researches, writes, voices, edits and posts short videos to 10 channels, three times a day, unattended.

Stack:
  • Python
  • FastAPI
  • OpenRouter
  • Gemini TTS
  • HyperFrames
  • SQLite
  • PostPeer API
  • Railway

What it makes

Real videos produced by the system.

  • 30 / dayposts across 10 Instagram, TikTok and YouTube channels
  • 159 / 242commits are mine, in a team of two
  • $0.03writing-cost cap per video

A studio that films, voices and posts every day

Tap a block to see what it does.

  • Input
  • Logic
  • AI
  • Infrastructure
  • Output
  • People
every day at 08:30 · 13:00 · 20:30

The heart of the system

Social Farm

The whole studio runs on Railway with every PC switched off: each day it plans, researches, writes, voices, edits and posts three videos per page.

The problem

The owner of four themed social pages (astrology, curiosities, motivation, psychology) wanted three new videos a day on each page, posted to 10 Instagram, TikTok and YouTube channels. By hand that means research, script, voice, edit, cover and upload every single day; generic AI generators make repetitive videos with invented facts and unlicensed footage.

What I built

  1. Built the publishing engine: one interface for every platform, captions adapted per platform, a dry-run mode and a scheduler for the 08:30, 13:00 and 20:30 slots.
  2. Wrote the editorial direction layer (the "regia"): a weekly plan of 28 topics per page, rotating formats, hooks and endings, and a memory that rejects scripts too close to the last 30.
  3. Moved production to Railway with a persistent volume, so videos go out with every PC switched off; the farm now runs there as three services (farm, dashboard, Telegram bot).
  4. Added the infographics module, covers that never repeat, an event log and the first version of the private dashboard that shows every slot, failure and credit.
  5. Packaged the farm as a white-label kit for a new owner: a guided setup run by Claude Code that generates the internal secrets and hands them to Railway without ever printing them.

The hard part

Hitting three fixed slots on 10 channels when one render takes minutes inside a memory-limited container. When two pages missed the 08:30 slot because preparation started only 45 minutes ahead, I moved it to 4 hours before and kept each slot open until the next one: a late video goes out late, never as a burst of backlog posts.

Result

In production on Railway, publishing on its own. The day the tenth channel was connected, all 10 went out at the 20:30 slot; the repo has 661 test functions in 69 files and two tagged releases.

My role

Team of two developers, each directing Claude Code, which wrote most of the code. By commit history (159 of 242) my parts were the publishing engine and scheduler, the Railway deploy, the editorial direction, infographics, covers, event tracking, the first dashboard and the white-label kit; my co-developer built the original research-to-edit pipeline, the self-healing sentinel and the Telegram bot, and hardened the publishing ledger.