Media automation · 1 min read
ISMA
★ Used in production at a company
Takes YouTube Shorts all the way to Instagram — finding videos, prepping them, scheduling, and posting. It's part of a company's day-to-day now.
/ 01
The problem
Moving a YouTube Short to Instagram looks simple — until it's every day. Find the video, prep the file, pick a time, then check whether it actually went out. Repeated by hand, that loop eats hours and quietly drops posts.
☝ Poke the mini version
/ 02
Decisions that mattered
- 1
The playlist decides the route
Instead of a settings screen, the YouTube playlist a Short lands in decides how it gets published — a normal Reel or a collab. The team keeps working in a tool they already use.
- 2
Every step is a tracked job
Download, prep, schedule, and post each run as jobs in a SQLite engine with retries and cancellation. When the Instagram API answers ambiguously, ISMA checks whether the post exists before trying again — no double posts.
- 3
Fewer moving parts
It started as SyncPost: n8n, Postgres, and a separate Mac worker. I folded all of it into one service on a single Mac mini with no external database — less to break, less to babysit.
- 4
Ops where the team already is
A Slack /check command with action buttons plus a small dashboard, both reading the same job engine. Checking the queue is one message away.
/ 03
How it flows
01
New Short
detected, route by playlist
02
Prep
yt-dlp + FFmpeg
03
Schedule
in Bali time (WITA)
04
Post
Reels & collabs via Graph API
05
Check
Slack /check + dashboard
/ 04
Where it landed
- ✦Running in production as part of a company's daily workflow
- ✦The find → prep → schedule → verify loop no longer needs a person in it
- ✦One machine, no external database, every step visible and retryable
Built with
- Python
- FastAPI
- SQLite
- yt-dlp
- FFmpeg
- Instagram / Slack API