{"product_id":"self-hosted-n8n-workflow-gemini-claude-shorts-w-edge-tts-ffmpeg","title":"Self-Hosted n8n Workflow: Gemini\/Claude Shorts w\/ Edge TTS \u0026 FFmpeg","description":"\u003ch3\u003eTurn an n8n topic into a ready-to-post vertical short—self-hosted\u003c\/h3\u003e\n\u003cp\u003eThis self-hosted n8n workflow takes a topic from an n8n Form Trigger, generates a multi-scene short using \u003cstrong\u003eGoogle Gemini\u003c\/strong\u003e or \u003cstrong\u003eAnthropic Claude\u003c\/strong\u003e, creates synchronized voiceover with \u003cstrong\u003eEdge TTS\u003c\/strong\u003e, downloads scene visuals from \u003cstrong\u003ePollinations\u003c\/strong\u003e, and renders a final vertical \u003cstrong\u003eMP4\u003c\/strong\u003e using \u003cstrong\u003eFFmpeg\u003c\/strong\u003e (with karaoke-style burned captions).\u003c\/p\u003e\n\n\u003ch3\u003eWhat this workflow does\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eCollect inputs\u003c\/strong\u003e: Receives topic, language, scene count, and LLM choice from an n8n Form Trigger.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eVoice + pacing logic\u003c\/strong\u003e: Maps the selected language to an Edge TTS voice and calculates a per-scene word limit to keep the total video under \u003cstrong\u003e60 seconds\u003c\/strong\u003e.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eGenerate the script\u003c\/strong\u003e: Produces a JSON script containing voiceover text plus English image prompts per scene using either \u003cstrong\u003eGoogle Gemini\u003c\/strong\u003e or \u003cstrong\u003eAnthropic Claude\u003c\/strong\u003e.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eScene-by-scene rendering\u003c\/strong\u003e:\n    \u003cul\u003e\n      \u003cli\u003eSplits the script into scenes and generates an \u003cstrong\u003eMP3\u003c\/strong\u003e voiceover per scene with Edge TTS.\u003c\/li\u003e\n      \u003cli\u003eEstimates caption timing word-by-word using \u003cstrong\u003effprobe\/FFmpeg\u003c\/strong\u003e silence detection.\u003c\/li\u003e\n      \u003cli\u003eDownloads a \u003cstrong\u003e1080×1920\u003c\/strong\u003e image per scene from \u003cstrong\u003ePollinations\u003c\/strong\u003e based on the scene prompt.\u003c\/li\u003e\n      \u003cli\u003eRenders each scene locally with FFmpeg: applies a slow zoom effect and burns karaoke-style \u003cstrong\u003eASS\u003c\/strong\u003e subtitles synced to the audio.\u003c\/li\u003e\n    \u003c\/ul\u003e\n  \u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eFinalize output\u003c\/strong\u003e: Concatenates all scene segments into a single vertical \u003cstrong\u003eMP4\u003c\/strong\u003e, normalizes audio loudness, and returns the final video as the workflow output.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eUse cases\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eGenerate TikTok\/Shorts-style vertical videos from form submissions without third-party video tools.\u003c\/li\u003e\n  \u003cli\u003eAutomate “script → voice → captions → render” for SaaS marketing, creator ops, or rapid testing of content ideas.\u003c\/li\u003e\n  \u003cli\u003eKeep data and rendering self-hosted while switching between Gemini and Claude.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eTechnical details\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eLLMs\u003c\/strong\u003e: Google Gemini or Anthropic Claude\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eVoice\u003c\/strong\u003e: Microsoft Edge TTS\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eImages\u003c\/strong\u003e: Pollinations (1080×1920 per scene)\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eVideo \u0026amp; captions\u003c\/strong\u003e: FFmpeg + ffprobe (libass for burned ASS subtitles)\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003en8n nodes referenced\u003c\/strong\u003e: code, merge, switch, split out, aggregate, sticky note\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eSelf-host setup\u003c\/strong\u003e: Start n8n with \u003ccode\u003eNODES_EXCLUDE=\"[]\"\u003c\/code\u003e and \u003ccode\u003eN8N_RESTRICT_FILE_ACCESS_TO=\"\/tmp\"\u003c\/code\u003e (macOS: \u003ccode\u003e\"\/tmp;\/private\/tmp\"\u003c\/code\u003e) and enable local Execute Command + file access.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"N8N Commerce","offers":[{"title":"Default Title","offer_id":45738435182771,"sku":"N8N-17566","price":28.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0749\/6279\/6723\/files\/8Q8NCCl_ewV2C-8XjkOUP_Ul4PXG6T.png?v=1785229230","url":"https:\/\/buyflowscripts.com\/products\/self-hosted-n8n-workflow-gemini-claude-shorts-w-edge-tts-ffmpeg","provider":"N8N Commerce","version":"1.0","type":"link"}