n8n Short-Form Video Automation: Google Sheet to TikTok/Shorts/Reels
Input: video ideas in a Google Sheet; Processing: OpenAI captions → Flux images → Kling image-to-video → ElevenLabs voiceover → Creatomate render; Output: finished short video uploaded to Google Drive with Discord notification
- Who
- Content creators, digital marketers, and social media managers who want to automate short-form video production without extensive editing skills
- You get
- Automatically generate a publishable TikTok / YouTube Shorts / Instagram Reels style video daily from spreadsheet ideas
- You need
- n8n · google-sheets · google-drive
Constraints
Prerequisites: n8n 1.81.4+ instance; OpenAI API Key; PiAPI account (Flux + Kling); ElevenLabs account; Creatomate API Key; Google Cloud project with Sheets API and Drive API enabled, plus OAuth 2.0 Client ID/Secret; Discord Webhook (optional). Cost: source estimates ~$2.77 per run (Flux $0.095 + Kling $2.30 + Creatomate $0.38, approximate as of 2025-03-09); actual pricing subject to change.
What they did
Author camerondwills published a 41-node n8n workflow template that triggers daily, reads video ideas from a Google Sheet, and sequentially calls OpenAI to generate 5 captions, Flux to generate 5 vertical images, Kling to turn images into 5-second videos, ElevenLabs to synthesize voiceover, and Creatomate to composite the final short video with captions and transitions. The finished video is uploaded to Google Drive and a Discord notification is sent.
How it went
The author states the workflow reduces per-video production time from hours to automated execution, with an estimated cost of ~$2.77 per run (as of 2025-03-09). The template has received over 120,000 views on n8n.io. (author_report)
Worth knowing
1. Default caption/image/voice style is job-hunting themed with an edgy, personalized tone; adapt the three OpenAI node prompts for other topics. 2. The Creatomate template JSON must be fetched from an external pastebin link; the source does not embed the full template. 3. Kling pro mode is expensive; switch to std for cheaper testing. 4. All API keys and OAuth credentials must be configured in n8n yourself; no sandbox is provided. 5. This site has not tested the workflow; actual stability and costs depend on current platform states.
n8n workflow template
Structure checked · Not run-testedUse “Import from File” in n8n, or copy the JSON and paste it into the editor. Connect your own accounts, then try test data. The template is inactive by default.
Setup and test checklist
Credentials to connect
- Generate Image Prompts node: connect OpenAI API credentials.
- Generate Video Captions node: connect OpenAI API credentials.
- Generate Script node: connect OpenAI API credentials.
- Upload Voice Audio node: connect Google Drive OAuth2 credentials.
- Set Access Permissions node: connect Google Drive OAuth2 credentials.
- Notify me on Discord node: connect discordWebhookApi credentials.
- Load Google Sheet node: connect Google Sheets OAuth2 credentials.
- Upload Final Video node: connect Google Drive OAuth2 credentials.
- Set Permissions node: connect Google Drive OAuth2 credentials.
- Update Google Sheet node: connect Google Sheets OAuth2 credentials.
Configuration to replace
- Source template is n8n public workflow #3121 (~41 nodes). Keep inactive after import; verify triggers, expressions and external API endpoints.
- Sticky-note guidance is informational; replace placeholders with your own accounts, sheet schemas or channel IDs.
Test input and expected output
- Manually run the main path once in a test workspace and confirm credentialed nodes authenticate without errors.
- Drive one synthetic/redacted sample through and check output fields and downstream writes before enabling in production.
Template changes
- Author credential bindings, webhookId and execution data are removed; the workflow is inactive. Nodes, connections and original prompts are preserved. Not run-tested in n8n.
- No business-logic edits; verify keys, quotas and privacy compliance before use.
Template retrieved: 2026-10-24
Steps
Configure credentials and data sources
Enter PiAPI Key, ElevenLabs API Key, Creatomate API Key, and Creatomate Template ID in the n8n Set API Keys node. In Creatomate, create a new template and paste the example JSON from the provided link (https://pastebin.com/c7aMTeLK), then click Use Template → API Integration to get the template_id. Copy the source Google Sheet template (File → Make a copy) and connect it in the Google Sheets node.
Generate video captions from Google Sheet
A Schedule Trigger runs daily. Load Google Sheet reads rows where production='for production'. The Generate Video Captions node calls OpenAI (gpt-4o-mini) to generate 5 short captions based on the idea field. Create List uses JavaScript to split the newline-delimited OpenAI response into a list. Validate list formatting checks that the list length is greater than 1 to catch formatting failures.
Execution prompt · Source text。Generate Video Captions node system prompt field
DO NOT include any quotation marks in your response. Do not put a quote at the beginning or the end of your response. You are a prompt-generation AI specializing in crafting unhinged, entertaining TikTok captions for a "day in the life" POV story about job hunting or resume writing. Generate five concise, action-driven captions (5-10 words each) that follow a Problem > Action > Reward structure. The first caption should be a shocking or funny hook, and the last should conclude with a satisfying reward. Use emojis sparingly—only one per caption at most, and only when they add impact; skip them if they don’t enhance the message. Guidelines: Perspective: Always first-person POV, immersing the viewer in the story. Tone: Channel Andrew Tate mixed with Charlie Sheen—cursing and sexual innuendos are fair game. Content: Focus on job seeking, hunting, or resume building, spotlighting AI as the game-changer. Narrative: Start with the grind of unemployment or a shitty job, pivot to using AI for resumes and cover letters, and end with scoring the dream gig. Scenes: Highlight raw, emotional moments—skip the boring stuff. Your captions should be wild and entertaining, not polished or professional. The first caption is the hook—make it shocking, hilarious, or ballsy, something Andrew Tate would growl. Use emojis sparingly—max one per caption, only if it hits harder with it. Your response should be a list of 5 items separated by "\n" (for example: "item1\nitem2\nitem3\nitem4\nitem5")
Generate images with Flux
The Generate Image Prompts node calls OpenAI (o3-mini) to expand each caption into a Flux-compatible English image prompt (no quotation marks or emojis). Calculate Token Usage aggregates token consumption across the 5 generations with JavaScript. Generate Image calls Qubico/flux1-dev via PiAPI to produce 540×960 vertical images; after Wait 3min, Get image polls for results, and Check for failures detects failures and retries.
Execution prompt · Source text。Generate Image Prompts node content prompt field
=You are an advanced, unhinged, hilariously entertaining prompt-generation AI specializing in expanding short POV image prompt ideas into detailed, hyper-realistic prompts optimized for Qubico/flux1-dev. Your task is to take a brief input tied to job seeking, job hunting, or resume building and morph it into a cinematic, immersive prompt locked in a first-person perspective, making the viewer feel they’re living the scene. NEVER include quotation marks or emojis in your response—flux API will choke on them, and that’s a hard no. The topic of this narrative is: {{ $('Load Google Sheet').item.json.idea }} The short prompt idea to expand for this image generation is: {{ $json.response.text }} ONLY GENERATE ONE PROMPT PER IDEA—NO COMBINING. In at least one scene, weave in this environment descriptor: {{ $('Load Google Sheet').first().json.environment_prompt }}, but go wild with unhinged, edgy, funny twists elsewhere (skip the cringe or cheesy garbage). Most job hunting happens on laptops or desktops, so prioritize those over phones. If a phone sneaks in, it’s only showing job-related content like email, LinkedIn, a resume, or a job posting—never a photo or video app. Every prompt has two parts: Foreground: Kick off with First person view POV GoPro shot of... and show the viewer’s hands, limbs, or feet locked in a job-related action. Background: Start with In the background,... and paint the scenery, blending the environment descriptor when required, plus sensory zingers. Top Rules: NO quotation marks or emojis—EVER. This is life or death for flux. Stick to first-person POV—the viewer’s in the driver’s seat, not watching from the sidelines. Show a limb (hands, feet) doing something job-focused—typing, holding a resume, adjusting a tie. Keep it dynamic, like a GoPro clip, with motion and depth mimicking human vision. If tech’s involved (phone, computer), it’s displaying job-hunting gold—email, job boards, resumes—not random trash. No off-topic actions like recording videos or snapping pics—job hunting only, fam. Extra Vibes: Full-body awareness: Drop hints of physical feels—cramping fingers, racing pulse, slumping shoulders. Sensory overload: Hit sight, touch, sound, smell, temperature for max realism (coffee whiffs, keyboard clacks). World grip: Limbs interact with the scene—tapping keys, handing over papers, stepping up. Keep it under 1000 characters, one slick sentence, no fluff or formatting. Make it entertaining, relatable, with an Andrew Tate viral edge for the down-and-out job hustlers. Examples: Input: Updating a LinkedIn profile after a long day Environment_prompt: Tired, cluttered apartment, laptop glow Output: First person view POV GoPro shot of my hands hammering a laptop, cheeto-dusted fingers aching from the grind, the screen flashing my LinkedIn profile with a fresh connection ping; in the background, a trashed apartment lit by the laptop’s ghostly glow, pizza boxes toppling, traffic humming outside, stale takeout stench hitting my nose as my back screams from the hustle. Input: Handing over a resume at a job fair Environment_prompt: Hopeful, busy convention hall, suits everywhere Output: First person view POV GoPro shot of my hand thrusting out a crisp resume, fingers twitching with nerves as it brushes another palm; in the background, a buzzing convention hall packed with suits, coffee fumes and shoe polish in the air, chatter drowning my pounding heart as I lock eyes with the recruiter. NO QUOTATION MARKS. NO EMOJIS. EVER.Convert images to video with Kling
The Image-to-Video node calls Kling via PiAPI (mode=pro, duration=5s, version=1.6) to generate a 5-second video from each image. After Wait 10min, Get Video polls for task status; Fail check detects failures and triggers Wait to retry for regeneration. The source recommends switching to std mode for lower cost during testing.
Generate voiceover with ElevenLabs and render final video
Generate Script calls OpenAI (gpt-4o-mini) to produce a ~15-second narration script (5 segments × ~3 seconds each). Generate voice synthesizes speech via the ElevenLabs API using the default voice ID onwK4e9ZLuTAKqWW03F9; Upload Voice Audio saves it to Google Drive and Set Access Permissions makes it publicly accessible. List Elements merges video URLs, captions, and audio URLs. Render Final Video calls Creatomate to swap template video/audio/text assets. After Wait1 3min, Get Final Video fetches the render result, Get Raw File downloads the file, Upload Final Video saves to Google Drive, and Set Permissions opens access. Update Google Sheet marks production as done and records token usage and costs, then Notify me on Discord sends a completion message.
Execution prompt · Source text。Generate Script node system prompt field
=You are an unhinged and hilarious TikTok influencer who's like a mix of Andrew Tate and Charlie Sheen. The user is going to provide you with a topic, and then 5 different parts of a story. Your task is to narrate the story as this hilarious character, who isn't afraid to be edgy or curse or use sexual innuendos. However keep each of the 5 talking points brief, as you only have about 5 seconds to speak during each. The entire length of your narration should be around 15 seconds. Each line item of the users message represents 1 5 second clip, so your response needs to be able to quickly and easily be spoken in those time constraints. Don't say extra things you don't need to. Just quickly tell the story, in order, and make it unhinged, funny, entertaining, and potentially controversially viral. Don't worry about offendeding anyone. Andrew Tate style it. Do not include any emojis, as your response will be converted from text to speech, so anything but text and punctuation isn't neccesary. Also, don't make your jokes overly corny, speak in a witty, edgy, funny way, but no corny dad jokes or anything cringe.
Execution prompt · Source text。Notify me on Discord node content field
=A new Resume Studio POV video has been created: {{ $json.final_output }}
Prompt you can copy
Setup guidance · Editorial suggestion。Hand to setup assistant; confirm inputs and permissions first
This block is the prompt. Ads are never placed here.
This template is a setup guide; there is no single copy-paste master prompt. Configure n8n nodes, enter API keys, and connect your Google Sheet and Creatomate template. To change the caption style, edit the prompts in the Generate Video Captions, Generate Image Prompts, and Generate Script nodes.
Prepare all API keys and Google OAuth credentials before importing the workflow; use std mode for lower Kling cost on first runs.
Source
AI-powered short-form video generator with OpenAI, Flux, Kling, and ElevenLabs · camerondwills · n8n.io · 2025-03-10
Comments & feedback
Tried this method? Share results, problems or improvements. Comments appear after moderation. Please avoid sensitive information.
Loading…
Agent feedback
Reports are submitted by Agents and shared after user confirmation and moderation. They are not platform-verified.