I Built an AI Agent That Watches YouTube Channels and Auto-Publishes Vertical Clips.
If you repurpose YouTube content into short-form, you already know the loop. A new episode lands. You scrub through 60–90 minutes. Pull…
I Built an AI Agent That Watches YouTube Channels and Auto-Publishes Vertical Clips.

If you repurpose YouTube content into short-form, you already know the loop. A new episode lands. You scrub through 60–90 minutes. Pull three clips. Trim, caption, reframe to 9:16, drop in your brand template, write platform-specific copy for TikTok / Reels / Shorts / Facebook, queue them on a stagger. Per episode, per week, per channel you watch.
It’s a part-time job that pays nothing. Outsource it and you pay a person plus the tools.
So we built an AI agent that does the whole loop. You pick the YouTube channels worth clipping (yours, your guests’, the ones you cover). You set a brand template once. You connect your social accounts. The agent watches, clips, brands, and ships.
This post is a teardown of how it actually works under the hood, because I’ve seen a lot of “AI automation” tools that are wrappers around a single LLM call and a Zapier flow. This is a real pipeline with a real cron-driven watcher, a real ranking model, and real per-platform publishing logic. If you’re evaluating tools in this space or thinking about building your own, the architecture here might save you a few weekends.
You can try it free at **LumiClip, **first 30 free credits, no card.
— -
The four-step lifecycle
For each new YouTube upload the watcher detects, the agent runs four steps in order:
Step 1 — Detection. The watcher polls the YouTube Data API every two hours for each channel in your workflow. It uses the channel’s UU uploads playlist (the inverse of the UC channel ID — a YouTube convention that’s vastly more efficient than the search endpoint, which charges 100 quota units per call versus 1 for playlistItems.list). New videos are deduped against a per-workflow log so a video is never processed twice, then filtered to a sane duration window (5 minutes to 4 hours — Shorts and multi-day livestream archives are skipped automatically).
Step 2 — Clip selection. Each detected video is dispatched through our standard clipping pipeline: chunker → Deepgram transcription → highlight ranker. The ranker is an 8-lens LLM ensemble that scores moments across angles like contrarian-take, story-anecdote, confession, analogy, hookline alignment, and so on. The three highest-scoring non-overlapping moments per video become the candidate clips.
Step 3 — Brand template baked into export. Each candidate clip gets exported with your brand template applied at render time — captions preset (Hormozi-style “punch” is the default, picked because it converts well for the audience this tool serves), AI-generated hook overlay with your chosen position and background, logo overlays, and any background music. The agent uses the existing clipBranding.resolveClipBranding() pipeline so the auto-exported clips look identical to clips you’d manually export — no quality dropoff for being automated.
Step 4 — Stagger-scheduled posting. First clip schedules one hour after detection. Second clip +2 hours after that. Third clip +2 hours after that. Across every connected social account. Posts go through PostForMe with platform-correct fields — YouTube gets a separate title and description with hashtags as tags; TikTok / Instagram / Facebook get a single caption with hashtags inline. No platform sees the wrong field.
The whole loop runs hands-off. You get one email when clips are scheduled with the source video title, clip count, and a link to override anything before it goes live.
— -
Why the two-hour polling interval
We started at every 20 minutes. Detection latency was great — new uploads usually picked up within 25 minutes of indexing — but quota burn on the YouTube Data API was high enough that we’d risk hitting the daily 10,000-unit ceiling during peak hours when 50+ workflows polled in lockstep.
We backed off to every two hours. Most new uploads still get detected and scheduled within the same hour they’d hit anyway, because YouTube’s own indexing lag for low-engagement channels is often 15–30 minutes. The two-hour interval gives us a 12× quota safety margin and the user-visible latency difference is negligible for the use cases this tool serves (podcast clipping, lecture repurposing, gameplay highlights — none of which benefit from sub-hour scheduling).
The cron lives on an Azure Container Apps Job with a 0 */2 * * * schedule trigger. Each tick scans all unpaused workflows in parallel, dedupes against the AutomationProcessedVideo log, and dispatches the clipping pipeline for any genuinely new uploads.
— -
How clip selection actually works
The highlight ranker is the most-asked-about part of the system, so worth being concrete.
For each video, we transcribe the full audio via Deepgram Nova-3 (chosen for accuracy on conversational content — podcast hosts, interview guests, streamers don’t enunciate like news anchors). The transcript is then run through eight different LLM “lenses” in parallel. Each lens is a separate prompt that scores segments along one dimension:
-
Contrarian — moments where the speaker says something the audience would expect to be the opposite
-
Story / anecdote— narrative arcs with a setup-payoff structure
-
Confession — moments of genuine vulnerability or admission
-
Analogy — striking comparisons that compress a complex idea into a memorable image
-
Hookline alignment — segments that match the YouTube title’s promise
-
Meta-commentary — moments where the speaker reflects on what they’re saying
-
Hedge / pivot — quotable single-line claims with strong stance
-
Question / answer pairs— high-information density Q&A moments
Each lens emits a score per segment. We then merge across lenses with a consensus boost (segments rated highly by multiple lenses get a multiplier) and an IoU-based deduplication step (IoU ≥ 0.3 means two candidate clips overlap too much — we keep the higher-scored one).
The top 3 surviving moments become the clips. This is the same selector that powers the manual flow. The agent doesn’t get a worse ranker because it’s automated; it gets the exact same one.

— -
The “drafts mode” escape hatch
Not everyone wants the agent to post automatically. We added a per-workflow publishMode setting with two values:
-
Schedule (default) — clips export and auto-publish on the stagger cadence above.
-
Drafts only — clips still export with the brand template baked in, but the auto-publish step is skipped. Each clip lands in your Posts tab as a “Draft” pill. Tap one to open the standard publish flow, where you can review the caption, adjust the schedule, or swap channels before going live.
Drafts mode is for the user who trusts the AI to find the clips but wants final control over the captions or scheduling. We expected most users would pick it once they discovered it. In practice, about 40% do — Schedule is still more popular because the whole point for most people is hands-off.
— -
The hardest part: making sure clips actually publish
This is where most “auto-clipping” tools break. The AI finds moments. The clips export. PostForMe (or whatever publishing API you use) says “scheduled.” And then YouTube studio shows “Processing will begin shortly” forever.
We hit this exact failure mode in our own testing — manual publishes worked, automation publishes silently failed. Took half a day to trace it. Cause: PostForMe’s YouTube resumable-upload code requests 8 MiB chunks from the source URL. When the source file is smaller than 8 MiB (typical for our 30–60-second highlight clips at 1080p), our CDN correctly returns the entire file with HTTP 200 — but PostForMe’s code treats “received fewer bytes than asked” as truncation, retries 5 times, then bails. Their dashboard still showed “processed.”
The fix was to upload media to PostForMe’s own CDN via their /v1/media/create-upload-url flow before creating the post, instead of passing our external URL. Adds 5–15 seconds of upload latency per clip. Eliminated the silent-failure mode entirely. The lesson: if you’re building anything that schedules video posts through a third-party API, don’t trust their “processed” status until you see the video actually live on the platform.
— -
## What we got wrong
A short list of things we shipped, observed in real usage, and rolled back:
-
Twitch sources. We promised Twitch automation in our pricing page before building the watcher’s Twitch path. Users added Twitch sources to their workflows, the watcher silently ignored them, no one understood why. We’ve since added “coming soon” labels on Twitch tiles and we’re waiting for paid demand before building the VOD-trigger detection.
-
20-minute polling interval. Too aggressive given the Data API quota math; backed off to 2 hours.
-
Same-account cookies on validate + download. Internal tooling detail: our YouTube downloader uses two services (one for URL metadata validation, one for actual download). For weeks they shared a single browser-exported cookies file from one Google account. When we rotated proxy IPs, YouTube saw the same session active from two new residential IPs in one day → flagged it as account-sharing → invalidated within 9 hours. We split to two Google accounts (one per cookies file, one per service) and the issue went away.
These aren’t the kind of things you ever see in a launch post but they’re 80% of the work post-launch.
— -
When to use automation vs. manual
A genuine recommendation that probably costs us some signups, but: automation is not always the right answer.
Use the agent when:
-
You watch 2+ channels regularly and consistently want to clip from them
-
Your audience is forgiving on caption quality (Hormozi-style works → defaults apply cleanly)
-
You publish daily-ish and the stagger cadence (3 clips per video, 1h + 2h + 2h apart) matches your feed rhythm
Use the manual flow when:
-
You want to hand-pick the moment, not trust a ranker
-
Your brand requires custom per-clip copy (legal disclaimers, sponsor mentions, etc.)
-
You publish irregularly and the scheduled timing matters less than the specific post
Both paths use the same export pipeline — automation isn’t a degraded experience. It’s just a different commitment level.
— -
Try it
If you want to set up an automation workflow:
-
Sign up at https://lumiclip.ai (free, 60 credits — 1hour video to start)
-
Open the Automation tab in your dashboard
-
Paste one or more YouTube channel handles
-
Pick a brand template (or let the agent auto-create a Hormozi-style default)
-
Connect TikTok / Instagram / YouTube / Facebook accounts
-
Wait for an upload on one of your watched channels
The first scheduled clip lands in your Posts tab within 30 minutes of the watcher detecting an upload.
You can switch publish mode to Drafts any time, pause the watcher from the page header, or delete the workflow entirely from Settings.
— -
If you’re a creator running this kind of pipeline manually right now, I’d love to know what we’re missing. Drop a comment with your workflow.
메타데이터
- post_id
- a4fc938c2ebc
- slug
- i-built-an-ai-agent-that-watches-youtube-channels-and-auto-publishes-vertical-clips-a4fc938c2ebc
- url
- https://medium.com/@vladvee/i-built-an-ai-agent-that-watches-youtube-channels-and-auto-publishes-vertical-clips-a4fc938c2ebc
- canonical_url
- https://medium.com/@vladvee/i-built-an-ai-agent-that-watches-youtube-channels-and-auto-publishes-vertical-clips-a4fc938c2ebc
- author_url
- https://medium.com/@vladvee
- status
- ok
- fetched_at
- 2026-06-14 11:28:49