2
5 Comments

Show IH: I automated 3 YouTube channels with GitHub Actions — here's the full stack

Hey IH,

Built something over the past 6 months I think this community will find interesting: a fully automated YouTube Shorts pipeline running across 3 channels.

What it does: GitHub Actions triggers on a cron schedule → Python script calls Claude/OpenAI API to generate a video script → edge-tts converts it to voiceover → Pexels API pulls stock footage → ffmpeg assembles everything → YouTube Data API uploads the finished video. Logs to Google Sheets.

Total API cost: ~$15/month. Three channels posting daily.

What I learned that wasn't obvious:

The prompt engineering is 90% of the product. I'm on v3 of my main channel prompt. Each version was driven by analytics — specific title patterns that underperform, hook structures that lose viewers in the first 3 seconds, duration targets by video format. The prompt includes a self-check the AI runs before returning output. Generic prompts produce garbage at scale.

The dedup system matters more than you'd think. Without a ledger tracking which Pexels clips you've used, the pipeline silently reuses the same footage. I commit a JSON file back to the repo after each run. Simple, effective, completely invisible to most tutorials on this topic.

OAuth token management is the #1 source of outages. YouTube tokens expire. If you don't have a process for re-OAuth and secret rotation, you'll have random upload failures at 2am and not know why until morning.

Current status: Three channels live. One public (@theminutezero on YouTube — business failures / corporate collapses niche). Two quiet. TikTok cross-posting pipeline built, waiting on app approval.

What I'm doing with it: Just launched ChannelStack (channelstack.net) — sharing the actual working files with operators who want to build the same thing. GitHub Actions YAML, Python scripts, Claude prompts — everything.

Happy to answer technical questions about the stack. The OAuth setup, the ffmpeg commands, the GH Actions patterns — whatever's useful.

on May 15, 2026
  1. 1

    The strongest part here is that you’re not selling “AI video automation” in the abstract. You’re packaging the actual operating system behind automated channels: prompts, deduping, OAuth handling, ffmpeg, upload flow, and the failure points most tutorials ignore.

    That makes ChannelStack more credible than another “make shorts with AI” product. The real buyer is probably not someone who wants a toy generator. It’s an operator who wants a repeatable media pipeline that keeps running after day one.

    One thing I’d watch is the name. ChannelStack explains the current use case well, but it also keeps the product tied tightly to YouTube/channel automation. If this expands into broader content ops infrastructure for AI media workflows, a cleaner platform-style name like Xevoa .com would give it more room.

    1. 1

      Appreciate that framing — "operating system" is exactly the right way to think about it. The failure points (OAuth drift, dedup, token rotation, prompt versioning) are the part no tutorial covers because they only surface after you've been running for a few weeks.
      On the name — noted. For now it fits the lane I'm in. If it expands, I'll revisit.

      1. 1

        One practical thought after our ChannelStack discussion.

        The name may be fine if the product stays focused on YouTube/channel automation. But if users are really buying reliable AI media operations, not just channel setup, the positioning and naming decision becomes more important before more copy, workflows, and customer memory build around the current frame.

        I’m doing a few focused naming/positioning audits for early products at $99 while refining the format.

        For ChannelStack, I’d look specifically at: current name risk, whether the buyer sees “channel tool” or “AI media ops system,” category framing, domain/name ceiling, and what the stronger brand direction should be if the product expands beyond YouTube automation.

        Not a long consulting thing. Just a sharp written breakdown you can use before locking more landing page copy and product positioning.

        If useful, connect here and I can put together a clear outside read:

        https://www.linkedin.com/in/aryan-y-0163b0278/

      2. 1

        That makes sense.

        ChannelStack is clear for the current lane, especially if the first wedge is YouTube/channel automation.

        The only thing I’d watch is whether the name starts shaping what users think the product is allowed to become.

        If operators begin using it less as a “channel tool” and more as the system that keeps AI media workflows running reliably, then the category gets bigger than the name.

        That is usually when the naming question becomes harder, because by then the narrow frame is already in the copy, user language, and product memory.

        So I would not force a rename now. But I would pressure-test one thing early:

        Are users buying ChannelStack because they want channel automation, or because they want reliable AI media operations?

        If it is the second, the broader platform-name question may come back sooner than expected.

  2. 1

    If you want to see what the output looks like, the public channel is @theminutezero on YouTube — business failures / corporate collapses niche, posting 2x daily via the pipeline described above.

    The community where I'm sharing the full stack (YAML, scripts, prompts) is at channelstack.net — $47/mo if you want to build the same thing.

    Happy to answer any technical questions here too.

Trending on Indie Hackers
I sold $6,773 in 2 weeks, with almost no existing community. User Avatar 53 comments Ferguson is LIVE on ProductHunt today... so I audited their homepage first! User Avatar 37 comments The hardest part isn't building anymore User Avatar 34 comments Why Remote Teams Stop Talking (And Don't Even Notice It) User Avatar 33 comments Built a local-first Amazon profit-by-SKU + QuickBooks/Xero journal tool. Looking for founding users. User Avatar 28 comments Before you build another feature, use this workflow User Avatar 22 comments