You are browsing as a guest. Sign up (or log in) to start making projects!

Project AP-I

  • 4 Devlogs
  • 19 Total hours

I’m working on Project AP-I, which is basically just a system I built to automate my Reels and YouTube Shorts. It takes a link, downloads the video, adds a watermark and captions, and then moves it to Google Drive. From there, it gets posted to my niche accounts like the meme and anime ones. I made the submission part public so anyone can drop links, but I have a private dashbord to keep track of everything and see if any uploads fail. The actual work happens on a local worker and n8n so Vercel stays fast and doesn't get overloaded.

Open comments for this post

4h 43m 6s logged

Devlog #4 - crew DMs actually land in the queue now

last one was Captain’s Deck + Shorts geometry. this stretch was the thing i kept putting off: stop pasting reels by hand when the crew already DMs them. =_=

the collector

worker sits on the same laptop, same chrome, different profile. it does not steal the upload session. if ffmpeg or a YT/IG upload is mid-flight it waits. then it opens the crew chats and copies reel permalinks.

first version was dumb. it clicked the inbox list, grabbed whatever looked like a reel, and dumped garbage on Unsorted cargo. half of it was profile-grid junk and fake shortcodes. instagram said the link was broken. i stared at @unknown like the app was haunted. ツ

fix: open /direct/t/{id}/ for the known chats, scroll older messages, click the actual preview cards. real reel codes are 11 chars. anything else gets marked invalid. niche word under the reel (Anime / Sport / Meme) queues a job. no niche = Unsorted cargo, i pick it. we don’t invent a niche to make the dashboard look busy.

i added a Clip column and then yeeted it

instagram embeds in Ship’s log. looked cute. loaded maybe 50% of the time, with scrollbars. (._.) dropped it. dashboard is the old table again plus Unsorted cargo. open the reel on IG if you want to watch it.

where it stands

submit still public. demo still read-only. crew DMs now become jobs or unsorted rows instead of sitting in my DMs forever. still my pc. still playwright. but “the boys sent 10 reels” is closer to “they’re on the desk” than it was last week. =)

what I am planning Next ;D

Mostly gonna fix bugs in the collection worker that I encountering during use in the next few weeks, Also rn its really hard to setup project ap-i for yourself. So, I am gonna try to learn and make it into some kinda desktop app. But not sure as It took too much time just to understand how to make these automations etc 😭 and I need to study academics too 💀

live at : https://ap-i.techxtreme.me

0
0
51
Open comments for this post

5h 12m 34s logged

Devlog #3 - Captain’s Deck, Shorts that look like Shorts, and a queue i babysit less

devlog 1 and 2 were the “why is everything on fire” posts. this one is what i built after the pipeline stopped dying every hour: UI, demo voyage, edit preset, Drive auth, and ops controls that matter when the factory is still my laptop.

the dashboard stopped looking like a spreadsheet

i tore out the generic admin chrome and rebuilt it as Captain’s Deck - One Piece-inspired voyage language without ripping logos or characters. Crow’s nest, Ship’s log, Lost cargo, Crew, Sea lanes. day watch = turquoise sea + parchment; night watch = deep navy + lantern gold. Pirata One for display. sky washes, wave shimmer, ship-sail motion when something lands. still dense ops tables underneath, but it finally feels like a product.### demo mode + the crew briefingpublic submit was already open. missing piece: a safe admin poke. read-only demo watch - demo login boards you with write actions locked. Stretch, Navi, Cookie and the doodle crew run an interactive voyage tutorial (spotlight + mascots) when you land. replay tour is one click. filter Ship’s log, open Cargo bay - you just can’t smash retry/delete on live jobs. public demo without yeeting production. :)

shorts were uploading as normal youtube videos

caught it live in studio: short clip, landscape preview, regular upload not a Short. ffmpeg did speed + bgm but never forced 9:16. source stayed landscape, so youtube stayed “normal video.” shared edit now always outputs 1080x1920, asserts dimensions after encode, fails loud if not. IG gets the clean export. YT can still get niche brand c-text (ShonenSnaps / CrackleCrumb / ScoreMorsel) when there’s no burned-in hard captions. preset: 1.2x speed, stronger filter, original audio, quiet bgm (~5%), no logo watermark on IG. :D

drive auth + knowing if the laptop is awake

invalid_grant wiped jobs because the oauth refresh token was minted while the google app was still in Testing. publishing consent to Production does not resurrect old tokens - mint a new one after. worker health probes Drive; claim skips when Drive is dead. vercel can’t ping my private worker, so the topbar has a remote laptop signal (supabase heartbeat): offline vs connected and ready. if that light is dead, the queue is sleeping.

ops controls when soft limits park everything

rolling 24h soft daily upload cap still parks niches at the limit. sometimes i need one job through. Ship’s log swaps Retries for a Force button on those rows: one-shot soft-limit bypass for that job only (platform hard caps still apply). also pause / unpause / abort so one hung Playwright session doesn’t hold the door. deferred jobs recheck sooner so the queue doesn’t look cursed when a slot frees early. =_+

where it stands

submit is public. demo voyage read-only. real uploads still need my pc awake with chrome profiles + docker n8n. last stretch wasn’t another playwright ghost story - shape, Drive health, Captain’s Deck polish, and operator controls so the queue cooks without me hovering. still local. still weird. closer to “drop the link and walk away” than where #2 left me. ;)

the video attached is sped up 16x the orignal tho +_=

live: https://ap-i.techxtreme.me
github: https://github.com/its-techxtreme/project-ap-i

0
0
30
Open comments for this post

1h 25m 22s logged

Devlog #2 — breakages, fixes, and where it stands

continuing from #1,
Because apparently the pipeline had more ways to die than i budgeted my mental piece for 😭 =_= 😭

pipeline breakages that made me feel cursed

a non-exhaustive list of things that broke autonomy (these are the majot ones, many more small things too):

  1. claim SQL bug — null failure_code made healthy queued jobs invisible to claim_next_job. queue looked alive. nothing claimed. i checked daily upload limits, n8n, worker health… everything green. the bug was one boolean expression treating SQL NULL like false.
  2. retry after login recovery did nothing — youtube was login_required, instagram already uploaded, admin hit retry, worker said “no platforms need upload” because login_required wasn’t in the retryable set. i fixed the session, clicked retry, watched nothing happen, questioned my life choices.
  3. zombie uploading jobs — crash mid-instagram after youtube succeeded. status stayed uploading. claim blocked. daily limit logic counted the zombie as an inflight upload. cascade of sadness overflowed.
  4. drive cleanup count lying — overview said “6 files need cleanup” and half were old cancelled junk. made the ops panel feel broken even when it wasn’t (fake failures T_T).
  5. yt-dlp randomly failing on some instagram urls with “no video formats found.” not a glamorous issue. still ate an hour.

each time the dashboard looked calm and the logs were quiet for 30+ minutes, that was the tell. silence usually meant a stuck lock, not “everything is fine.”

how i actually got past it (atleast for the meanwhile)

i stopped trying to be clever and started treating the worker like a hostile roommate.

  • if an upload hangs longer than ~12 minutes, kill it and mark that platform failed
  • if a job is still uploading after the lock expires / goes stale, auto-recover it on the next claim instead of waiting for me to notice
  • if studio shows Create and we’re not on an auth URL, we’re logged in — stop screaming about 2fa banners
  • scrape share urls from anchors, inputs, and page text, because youtube’s dialog is allergic to consistent DOM
  • keep secrets and playwright profiles off github. public repo + demo read-only login so people can poke the UI without yeeting my jobs

also: verify delay went from 30 minutes to 5 for local testing because waiting half an hour to learn the upload silently failed was making me insane.

where it stands

it kinda works. not “enterprise reliable.” more like “if my pc is awake and chrome profiles are healthy, videos move.” submit is public. admin dashboard shows queue / failed review / accounts. demo user can look, can’t smash retry/delete. real uploads still need my laptop + n8n and docker which runs on it.

frustrations that still remain (T_T) :
local dependency, playwright flakiness, platforms changing UI for sport, and the eternal fear that tomorrow’s youtube banner invents a new sentence that trips the detector again.

but i went from “i will paste this reel into six tabs” to “drop the link and let the queue cook.” for a broke-student compromise architecture, that’s the win i care about.

This devlog shows only 1hr, cuz actually 60-70% of work was done in previous timed devlog, but I hit the character limit.

try the demo

if you want to click around without breaking anything:

submit page is public. dashboard demo login is read-only (you can browse, you cannot smash retry/delete/account buttons).

thanks for reading these long-ass devlogs. seriously fr !!
if you made it through both, you now know more about my chrome profiles than my friends do :)

0
0
136
Open comments for this post

7h 26m 39s logged

Devlog #1 — shipping this without a VPS budget

ok so i will be honest about how this project actually felt to build, because if i write the clean “i learned so much” version nobody will believe it, so anyways lets move on ;)

Basciallyy, i started Project AP-I because managing short form content for three niches (memes, anime, sports) was eating my brain at very very fast rate.
Every day was the same monotonous loop: find an approved clip, download it, slap a watermark, write a caption, open youtube studio, open instagram, upload twice, pray nothing asks for 2fa. doing that by hand for multiple accounts is how you lose a whole evening and still miss one niche. i wanted a queue. drop the link once, pick the niche, walk away.
sounds simple, but fr it was nott 😭 +_=

the money problem / why everything runs on my laptop

my first instinct was “just rent a VPS, put chrome + playwright there, done.” then i looked at prices for a box that can actually run headed chrome without dying, plus storage for temp video, plus sitting there 24/7. for a student project that was a hard no. so i compromised.

So the architecture became weird on purpose:

  • vercel = public submit form + admin UI (free, fine for that)
  • supabase = source of truth for jobs / accounts / audit logs
  • my trusty windows laptop = native worker with real chrome profiles + ffmpeg + yt-dlp
  • docker n8n on the same laptop = cron that claims jobs and calls the worker

so the so called “cloud” part is mostly the website in my project sadly =_=. the actual factory is under my desk. if my pc sleeps, the queue sleeps. that sucks. but it meant i could ship real uploads without burning money i don’t have. i’d rather have an ugly local stack that works than a pretty architecture diagram and empty wallet :)

playwright almost made me quit

ngl browser automation for youtube studio + instagram is genuinely mean. docs make it look like page.click('#upload') and you’re done.
lemme give u a look at reality:-

-youtube throws a red banner that says turn on 2-step verification while you’re fully logged in, and my detector treated that like a login wall. i watched chrome sitting there logged in, create button visible, video already published… and the job still flipped to login_required. i wanted to throw the laptop.

  • sometimes it does publish, then fails because it couldn’t scrape the youtu.be link from the share dialog. so the video is live on the channel and the database says failed. truly was a nightmare for me.
  • instagram will hang mid-upload. worker restarts. job stuck in uploading forever. claim logic sees “someone is uploading” and refuses to take the next job. whole pipeline frozen for like an hour while five videos sit in queued doing nothing. i stared at the dashboard thinking n8n died. n8n was fine. one ghost job was holding the me at the edge of Cyberpsychosis (anime reference :D)

every “one more small fix” turned into another edge case. captcha? stop and mark login_required. real verify-it’s-you interstitial? same. security upsell notification? ignore it or you false-positive yourself into a corner =_=
i had to rewrite the challenge detector like three times until it stopped panicking at youtube’s “your account is at greater risk” banner.

and that was just the browser drama.
Since I have reached the charcter limit I will continue in next devpost.

2
0
117

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…