I built an n8n workflow that creates and publishes YouTube videos automatically — from script to upload

Hey community! I’ve been working on a fully automated YouTube content pipeline using n8n, and I wanted to share the architecture with you all.

The Pipeline

Trigger (Schedule/Telegram)
  → AI Script Generation (GPT-4o/Claude via HTTP Request)
  → ElevenLabs TTS Voiceover
  → Pexels Stock Footage Search
  → Shotstack Video Assembly
  → YouTube Data API Upload
  → Telegram Notification
  → Google Sheet Status Update

How it works

  1. Trigger — I use a Telegram bot webhook. Sending “yap” to the bot starts the workflow. You can also use a schedule trigger for daily posts.

  2. AI Script — n8n’s HTTP Request node calls GPT-4o-mini with a structured system prompt. The key is requesting JSON output with intro_text, voiceover_segments[], image_prompts[], and outro_text. Without structured output you get a blob you can’t parse.

  3. ElevenLabs TTS — Each voiceover segment goes to ElevenLabs via HTTP Request. Turbo v2 generates ~10min of audio in 2 minutes. ~$0.30 per 10-min video.

  4. Stock Footage — Pexels API searches for each image_prompt. Falls back to Gemini Imagen/DALL-E if no results. All automated — never touch a download button.

  5. Video Assembly — Shotstack API takes a JSON timeline and renders the MP4. Timeline structure: silent intro → section 1 (audio+video) → section 2 → … → outro. ~3-5 min render for a 10-min video.

  6. YouTube Upload — YouTube Data API v3. Uploads as unlisted first for review. :warning: Quota warning: 1 upload = 1,600 units, daily limit = 10,000.

  7. Notification + Tracking — Telegram tells me when it’s done. Google Sheet tracks status so nothing gets re-processed.

Error Handling (critical!)

Without proper error handling, one API failure kills the entire pipeline. I use:

  • n8n Error Workflow trigger (catches ANY node failure)
  • Retry on Fail for critical nodes (ElevenLabs, Shotstack)
  • State tracking in Google Sheet (script_done → voice_done → video_done)
  • Resume from last checkpoint on failure

Best Niches for Faceless AI Channels

  • Top 10 lists (evergreen, simple structure)
  • News commentary (timely, high engagement)
  • Educational explainers (high retention)
  • Motivational content (high shareability)
  • Fact channels (fast production, high volume)

Monetization

  1. YouTube AdSense ($1–$5 CPM)
  2. Sell the n8n workflow template ($29–$49)
  3. n8n cloud affiliate ($10–$20/referral)
  4. Done-for-you service ($500–$2K/setup)

Questions?

I’m happy to share more details about any part of the pipeline. What niche would YOU automate with n8n?

Full step-by-step video tutorial: [YouTube link placeholder]

Workflow template available at: [link placeholder]

the structured json output requirement for the script step is the part most people skip and then wonder why parsing breaks two steps later, good call locking that down early. uploading unlisted first before making it public is smart too, catches the renders that technically worked but look wrong before anyone sees them.

i run something adjacent to this for repurposing rather than pure generation, script and voiceover assembled the way you’re doing it, then blotato handles pulling the finished video into shorts and cross posting the clips to tiktok and instagram alongside the youtube upload, so the long form upload isn’t the only output from one render. quota is the same headache on the youtube side either way though, 1600 units per upload adds up fast if you’re iterating.

how’s the shotstack render time holding up once you’re doing this daily instead of testing one off, that’s usually where render queues start backing up