Overview & Architecture
Publishing a video should not cost you another hour after the edit is done. The title, description, tags, chapters, thumbnail and schedule are all repeatable work, and none of it has to run in someone else’s cloud.
This blueprint connects a watch folder, a local Whisper transcription server and a local Ollama model to n8n. Drop a finished video into a folder and it ends with a private, scheduled YouTube upload and a Discord notification. Everything except the final upload and the notification stays on your own hardware.
In testing, a 7:33 video went from folder drop to a scheduled upload in roughly 4.5 to 6 minutes on a 12 GB RTX A2000, including the upload itself.
The Pipeline
- Watch Folder Trigger: The n8n Local File Trigger notices a new video file in a mounted Docker folder and waits until it has finished copying.
- Local Transcription: The video is sent to a Speaches (faster-whisper) container that returns a timestamped transcript on your GPU. A 133 MB video transcribed in about 20 seconds.
- AI-Written Metadata: Ollama turns the transcript into a title, description, tags and chapter list, with the context window sized to fit the transcript.
- Chapter Validation: A Code node enforces YouTube’s chapter rules (start at 0:00, at least three chapters, ten seconds apart) before anything is uploaded.
- Scheduled Upload: The video goes up as private with a publish time you choose, such as 9:00 AM in your time zone, with daylight saving handled.
- Optional Thumbnail: Drop a PNG or JPG named like the video and n8n sets it as the custom thumbnail. No image means no error, just YouTube’s default.
- Discord Notification: You get the video link and the local publish time.
What You Need
- Docker and Docker Compose with n8n and Ollama running (built and tested on n8n 2.43.5)
- An NVIDIA GPU (tested on a 12 GB RTX A2000: about 2 GB for Whisper and about 7.7 GB for a 12B model)
- A free Google Cloud project with the YouTube Data API v3 enabled
- A Discord webhook (optional)
Key Deployment Hurdles & Solutions
- n8n 2.x Locks Down Files and Nodes: Since n8n 2.0 the Local File Trigger is disabled by default and file access is limited to one folder. The companion assistant prompt shows the exact environment variables that re-enable only the trigger and allow only your watch folder.
- Sharing One GPU: Whisper and the language model run one after the other, and the Ollama model unloads as soon as it responds, so both fit comfortably on a 12 GB card.
- Google OAuth on a Home Server: The redirect URI and consent screen are the most common sticking point. The assistant prompt walks through each screen and the usual
invalid_clientand redirect errors. - Local Model Output You Can Trust: The model’s JSON is parsed defensively and the chapters are checked in code, so a bad generation never turns into an invalid upload.
- YouTube’s API Limits: Daily quota is limited, and uploads from an unaudited Google project may be forced private. The assistant prompt explains how to plan for both.
Download the Workflow (.json)
Import-ready n8n workflow with all 15 nodes, grouped and labeled. In n8n choose Import from file, connect your own YouTube credential, paste your Discord webhook URL, and set your models and publish time in the Workflow Settings node.
Download the n8n workflow (.json)
Download the Companion System Prompt (.md)
Enter your first name to personalize the upload-system assistant prompt so your AI helper can walk you through the Docker, Whisper, Ollama, n8n and Google OAuth setup step by step. Add your email optionally to get notified when new home lab blueprints drop.