The 14-Network Social Posting Engine: How We Automate Content Distribution
PuntList ships content to Facebook, Instagram, TikTok, YouTube, and X simultaneously, every day, with zero manual work. Caribbean Breeze, Always 80, Laurie Homes — the same engine handles them all. Total time spent on social posting per week, across all brands: roughly 30 minutes. Here's the architecture.
The naive approach (and why it doesn't scale)
Most small businesses do social posting manually. Open Facebook, post. Open Instagram, post. Open TikTok, post. Repeat for X, repeat for LinkedIn. Each post takes 5-10 minutes, multiplied across platforms, multiplied across days, multiplied across brands. By the time you have three brands and five channels, you're spending 10+ hours per week on copy-paste work.
The slightly less naive approach: hire a social media manager to do the manual work. That's $40-80K/year for one person managing one brand reasonably well. Doesn't scale either.
The architecture we use instead
Three components: a content queue, a posting daemon, and a unified social API.
The content queue is a JSONL file. Each line is one post — a brand, a list of platforms, the post body, an optional video file, and a scheduled-for timestamp. Adding a post is appending one line to the file.
The posting daemon runs continuously on the Mac mini. Every 60 seconds it checks the queue for posts whose scheduled-for time has passed. For each, it calls the social API, marks the post as "published" (or "failed" with the error), and moves on.
The unified social API is Late (formerly Zernio). It's a third-party service that exposes a single API endpoint that posts to 14 social networks. Authentication once, post anywhere.
Total code: about 200 lines of Python. The hard part isn't the code — it's the workflow design.
The workflow that makes it work
Every morning at 7am, an AI content generation bot runs. It reads the last week of activity for each brand, generates 5-7 candidate posts per brand using Claude, and writes them to the queue with proposed schedules spread across the next few days.
A human (one person) reviews the queue once a week — 30 minutes total — and either approves posts as-is, lightly edits them, or kills the ones that don't fit. The reviewed queue then runs autonomously for the rest of the week.
Adding a one-off post (a sale announcement, a breaking news tie-in, a manual share) is a single line append to the JSONL file. No dashboard, no UI, just text.
Why JSONL beats a database here
The queue could be a Postgres table. We tried that. JSONL ended up being better for this use case because:
It's git-trackable. Every change to the queue shows up in version control with a clear diff.
It's grep-able. "Did we ever post anything about X?" — one grep command answers that across years of posts.
It's editable in any text editor. No SQL knowledge required to make changes.
It's portable. Move the file, the system follows. No database migrations.
For high-throughput systems with millions of records this would break down. For social posting at a scale of a few thousand posts per year, JSONL is dramatically more pleasant to work with.
The numbers
Time spent on social posting across five brands: 30 minutes per week, total. Posts per week across all brands and platforms: 50-80. Equivalent labor cost if done manually: roughly 8-10 hours per week, or $400-800 in opportunity cost.
Net savings: $20K-40K per year per brand, scaled across multiple brands. The system paid for its own build cost in the first month.
What's harder than it looks
Different platforms have different rules. Twitter character limits differ from Facebook. Instagram requires media, others don't. TikTok has aggressive rate limits. The unified API hides most of this, but the content has to be designed to work on the lowest-common-denominator platform without looking weird on the others.
Our convention: every post is written to be readable on Twitter (so under 280 characters), with optional longer-form additions for platforms that support them. This keeps the content tight, which paradoxically makes it perform better across all platforms.
The pattern
If you're managing more than one social channel — and certainly if you're managing more than one brand — manual posting is a tax you stop paying as soon as you build this. The build cost is small. The savings compound forever.
Building something where this matters?
Two slots open this month. Book a 15-minute call and we'll tell you exactly what to build, in what order, and what it'll cost. No proposal theater. No follow-up nurture sequences. Direct answers from the team that's shipped 89+ products in production.
Book a Call →