Build a Faceless YouTube Shorts Creator — AI Script + ElevenLabs Voice + Auto-Upload Workflow with n8n

You want a YouTube Shorts channel that grows while you sleep, but every video is a manual grind: pick a topic, write a script, record a voice, find footage, edit, title, tag, upload. That is 45 minute

Build a Faceless YouTube Shorts Creator — AI Script + ElevenLabs Voice + Auto-Upload Workflow with n8n

You want a YouTube Shorts channel that grows while you sleep, but every video is a manual grind: pick a topic, write a script, record a voice, find footage, edit, title, tag, upload. That is 45 minutes of skilled work per Short — and Shorts only pay off at volume. Posting one a week gets you nowhere; posting one a day is a full-time job you don't have. The math never closes when a human sits in the loop.

The problem: faceless content is a volume game you can't win by hand

Faceless Shorts — no camera, no face, just narration over stock footage — are the most scalable format on YouTube because nothing about them requires you. But that same property is wasted the moment a person becomes the bottleneck. The channels that win publish daily for months before the algorithm rewards them. If each video costs you an hour, daily publishing is 30 hours a month of repetitive, low-leverage labor: rewriting the same script structure, re-recording the same voice, re-searching the same stock libraries.

The work is not creative. It's assembly-line. Topic → script → voice → footage → upload, in the same order, every time. Anything that runs the same steps in the same order on fresh inputs is a workflow, not a job. The only reason it still eats your calendar is that no single tool spans the whole chain — GPT writes but doesn't voice, ElevenLabs voices but doesn't edit, YouTube hosts but doesn't script. You've been the glue. That's the part to automate.

The solution: one n8n workflow, trending topic in, published Short out

The fix is a single n8n workflow triggered once a day. It pulls a trending topic, asks GPT-4o for a tight 45-second script, sends that script to ElevenLabs for a natural voiceover, pulls matching B-roll from Pexels, stitches audio and video together, and uploads the finished Short to YouTube with an SEO-optimized title, description, and tags. No dashboard, no clicking, no you. At 8:00 AM a topic goes in; by 8:04 a narrated, captioned, published Short is live.

n8n is the right home for this because it's the only layer that speaks to all five services at once — OpenAI, ElevenLabs, Pexels, an FFmpeg render step, and the YouTube Data API — and because it self-hosts, so you're not paying per-run fees on top of the API costs. Each node does one job and hands its output to the next. When something breaks, you see exactly which node failed and why, instead of debugging a 400-line Python script at midnight.

Step-by-step: building the pipeline in n8n

1. Schedule Trigger. Start with a Schedule Trigger node set to a Cron expression of 0 8 * * * — every day at 08:00 in your timezone. This is the heartbeat; everything downstream fires from it.

2. Fetch a trending topic. Add an HTTP Request node hitting a trends source (Google Trends RSS, a news API, or your own curated Google Sheet read via the Google Sheets node). Keep a fallback list so a single API hiccup never produces an empty Short. Output one topic string.

3. Generate the script with GPT-4o. Use the OpenAI node (Chat model, gpt-4o). System prompt: "You write 45-second YouTube Shorts scripts. Hook in the first 3 seconds, one clear idea, spoken-word rhythm, no stage directions, 110–130 words." Pass the topic as the user message. Set temperature around 0.7. In the same call — or a second OpenAI node — ask for a JSON object with title, description, and 8–12 tags so your SEO metadata is generated from the same context, not bolted on later.

4. Voice it with ElevenLabs. Add an HTTP Request node to POST https://api.elevenlabs.io/v1/text-to-speech/{voice_id}. Header xi-api-key with your key, body { "text": "{{ $json.script }}", "model_id": "eleven_multilingual_v2", "voice_settings": { "stability": 0.5, "similarity_boost": 0.75 } }. Set the node's response format to File so you receive the MP3 as binary data, not a broken string. Pick one consistent voice_id — voice consistency is your channel's identity.

5. Pull matching footage from Pexels. Feed 2–3 keywords from the topic into an HTTP Request node against https://api.pexels.com/videos/search with your Pexels Authorization header, filtering for orientation=portrait so clips are already 9:16. Grab the download links for a few vertical clips to cover the full narration length.

6. Render with FFmpeg. Use an Execute Command node (self-hosted n8n) or a dedicated rendering API to concatenate the Pexels clips, overlay the ElevenLabs MP3, trim to the audio length, and burn in auto-captions. A representative command: ffmpeg -i clips.txt -i voice.mp3 -shortest -vf "scale=1080:1920,subtitles=captions.srt" out.mp4. Output a single 1080×1920 MP4.

7. Upload to YouTube. Finish with the YouTube node (or an HTTP Request to the YouTube Data API videos.insert endpoint) authenticated via OAuth2. Map the rendered MP4 to the upload, and wire the title, description, and tags from step 3 into the metadata. Set category, privacy to public, and append #Shorts to the title so YouTube classifies it correctly. Log the returned video URL to a Google Sheet for tracking.

Why this is worth building

Cost per video collapses. Your only recurring spend is API usage — a GPT-4o script and an ElevenLabs voiceover run a few cents combined, Pexels is free, and self-hosted n8n has no per-run charge. Compare that to the hour of your time each manual Short costs.

Volume becomes trivial. Daily publishing is the entry ticket for the Shorts algorithm, and this workflow hits it without touching your calendar. Want three a day? Duplicate the Schedule Trigger or loop over three topics. Throughput scales with a config change, not with hiring.

Consistency compounds. Same voice, same pacing, same caption style, every single day. That reliability is exactly what builds a recognizable channel and trains the algorithm — and it's precisely what humans are worst at sustaining over months.

You stay in control of quality. Because each stage is a discrete node, you can insert a manual approval step — route the script to Slack or Telegram for a thumbs-up before it renders — the day you want a human check, and remove it once you trust the output. Full automation and human-in-the-loop are one toggle apart.

Common pitfalls and how to avoid them

Binary data lost between nodes. The most frequent failure: the ElevenLabs MP3 or Pexels clip arrives as text and the render step chokes. Always set audio/video HTTP Request nodes to return File/binary, and reference the binary property by name in FFmpeg — not the JSON body.

YouTube API quota. The Data API grants a default 10,000 units/day and each upload costs ~1,600 units. That caps you near six uploads a day per project. Request a quota increase early if you plan to scale, and stagger uploads across channels rather than hammering one.

Reused stock footage. If your Pexels query is too generic, you'll republish the same three clips daily and the algorithm reads it as duplicate content. Rotate keywords, request a random page offset, and keep a short memory of recently-used clip IDs in a Google Sheet to skip repeats.

Scripts that don't hook. GPT will happily write a slow intro that kills your retention in the first three seconds. Enforce the hook explicitly in the system prompt and reject any script whose first sentence is throat-clearing — a small IF node checking the opening line saves you from publishing dead-on-arrival Shorts.

No error handling. When ElevenLabs rate-limits or Pexels returns nothing, an unguarded workflow publishes silence over a black screen. Add an Error Trigger workflow that pings you on any node failure, and give every external call a fallback so one bad API response never becomes a bad public video.

Faceless YouTube Shorts Creator — AI Script + ElevenLabs Voice + Auto-Upload
PRONTO PARA USAR

Ja construimos isso pra voce

Nao comece do zero. O Faceless YouTube Shorts Creator — AI Script + ElevenLabs Voice + Auto-Upload e um workflow n8n pronto para instalar — conecta suas ferramentas em minutos, sem codigo.

Instalar por $79.0 →