The Complete n8n Workflow: Auto-Script, Auto-Edit, Auto-Upload
API and node configurations current as of September 2026 · Last updated: Sep 25, 2026
Video Walkthrough
You understand the business model. You know that selling automated YouTube content to local businesses (B2B) or running high-quality faceless channels is highly profitable. But how do you actually build the machine that does the work?
Building a fully autonomous AI video pipeline requires connecting several distinct APIs: an LLM for scripting, a Voice API for narration, an Image/Video generation API for visuals, a rendering engine to stitch it all together, and the YouTube Data API to handle the upload. Doing this manually in Python is a nightmare of error handling. Doing it in n8n makes it visual, resilient, and virtually free to run.
Quick answer: A complete n8n YouTube automation workflow requires 5 primary nodes: (1) Trigger Node (Cron schedule), (2) Advanced AI Agent Node (connected to GPT-6 or Claude to generate a structured JSON script), (3) ElevenLabs HTTP Request Node (to convert the script to audio), (4) Creatomate/JSON2Video Node (to map the audio and text overlays onto a video template), and (5) Google OAuth2 YouTube Node (to upload the final MP4).
Unlock the Exact Node Configurations
Stop guessing how to map JSON payloads. Unlock the exact parameter settings, prompt engineering blocks, and API payload structures required to make the workflow actually run without errors.
The Architecture of the n8n Workflow
Here is the exact step-by-step technical breakdown of how to configure the nodes in your n8n canvas.
Node 1: The Brain (Advanced AI Node)
Do not use a standard HTTP request to OpenAI. Use n8n's native Advanced AI Node.
- Model: Connect an OpenAI Chat Model (GPT-6 Sol is cheap and extremely fast for this).
- Output Parser: Attach an Auto-fixing JSON Output Parser. This is critical. You must force the LLM to output a JSON array of scenes (e.g., Scene 1 text, Scene 2 text). If the LLM breaks the JSON formatting, n8n will automatically prompt it to fix itself.
Node 2: The Voice (ElevenLabs or OpenAI TTS)
Use an HTTP Request Node set to POST https://api.elevenlabs.io/v1/text-to-speech/{voice_id}.
Pro-Tip: Do not pass the entire script at once. Use a Split In Batches node to iterate through the JSON array generated by Node 1. Generate the audio for Scene 1, then Scene 2. This allows your video renderer to perfectly time the text overlays to the specific audio file of that scene.
Node 3: The Video Renderer (Creatomate)
Creatomate is a video editing API. You first go to their website and build a "Template" using a timeline editor (just like CapCut). You place placeholders for "Background Video", "Audio", and "Text Overlay".
In n8n, you use the Creatomate node (or an HTTP Request) and pass the payload:
{
"template_id": "YOUR_TEMPLATE_ID",
"modifications": {
"Text_Overlay": "{{ $json.scene_text }}",
"Audio_Track": "{{ $json.elevenlabs_url }}",
"Background": "https://url-to-your-stock-footage.mp4"
}
}The node will pause execution (using a Wait node or webhook callback) until Creatomate finishes rendering the MP4 and returns the final download URL.
Node 4: The YouTube Uploader
Use the native n8n YouTube Node. You must set up Google OAuth2 credentials in Google Cloud Console.
- Resource: Video
- Operation: Upload
- Title: Mapped from Node 1 (LLM generation)
- Description: Mapped from Node 1
- Privacy Status: Set to Private or Unlisted first! Never automate straight to Public until you trust your system completely. Have the client review it, or review it yourself on your phone, then manually click "Public".
Handling Errors and Rate Limits
An automated workflow is useless if it crashes every time an API times out.
In the Settings tab of every HTTP Request node (especially Creatomate and ElevenLabs), enable "On Error: Continue Pipeline" and configure an Error Trigger node. If the video rendering fails, the Error node should send a message to your Telegram or Discord via a webhook, alerting you exactly which client's video failed so you can manually re-trigger it.
Next Steps
Frequently Asked Questions
Can YouTube detect if I upload via the API using n8n?
Yes, videos uploaded via API are marked internally as API uploads. However, this does not intrinsically harm reach. What hurts reach is if you API-upload 50 videos a day that all look like spam. If the content is high quality, the API upload method is perfectly safe.
What video rendering API is best to integrate with n8n?
In 2026, Creatomate and JSON2Video are the industry standards for code-driven video generation. They allow you to define templates (text placement, image Ken Burns effects) and simply pass JSON payloads from n8n to render unique videos on the fly.
How do I handle YouTube API quota limits?
The YouTube Data API v3 has a quota limit of 10,000 units per day. Uploading a video costs 1,600 units. This means you can comfortably upload 6 videos per day per Google Cloud project. For most automation agencies, this is more than enough.
