Din pipeline för kortformat är förmodligen inte “svår”. Den är bara irriterande manuell. Idéer hamnar i anteckningar, manus klistras runt, assets försvinner i chatttrådar och den färdiga videon slutar som final_v7_REAL.mp4 någonstans på en laptop.
Den här Google Sheets-automationen träffar innehållsskapare först, helt ärligt. Men marknadschefer som jagar konsekvens och byråägare som skalar leveranser känner samma friktion. Resultatet är enkelt: ett tema blir en färdig, publiceringsklar short, loggad i ett Sheet och levererad till Drive automatiskt.
Nedan ser du exakt vad det här arbetsflödet bygger, vad det ersätter och hur du sätter upp det i n8n utan att fastna i tekniska kaninhål.
Så fungerar automatiseringen
Här är det kompletta arbetsflödet du kommer att sätta upp:
n8n Workflow Template: Google Sheets till Google Drive: shorts klara att posta
flowchart LR
subgraph sg0["When clicking ‘Execute workflow’ Flow"]
direction LR
n0@{ icon: "mdi:cog", form: "rounded", label: "Upload file to drive", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>URL to file"]
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Get Full Voiceover Prompt"]
n3@{ icon: "mdi:cog", form: "rounded", label: "Wait1", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Wait11", pos: "b", h: 48 }
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>List Elements1"]
n6["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge1"]
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Video1"]
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Create Video1"]
n9@{ icon: "mdi:robot", form: "rounded", label: "Video Prompts1", pos: "b", h: 48 }
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Images1"]
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Create Images1"]
n12["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Unbundle prompts1"]
n13@{ icon: "mdi:robot", form: "rounded", label: "Create New Idea1", pos: "b", h: 48 }
n14@{ icon: "mdi:robot", form: "rounded", label: "Generating scenes1", pos: "b", h: 48 }
n15@{ icon: "mdi:database", form: "rounded", label: "Organise idea, caption etc1", pos: "b", h: 48 }
n16["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Combine Voice and Video"]
n17["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Voice and Video"]
n18@{ icon: "mdi:cog", form: "rounded", label: "Wait10", pos: "b", h: 48 }
n19["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Voiceover"]
n20["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Create Voiceover"]
n21@{ icon: "mdi:cog", form: "rounded", label: "Wait9", pos: "b", h: 48 }
n22@{ icon: "mdi:database", form: "rounded", label: "Final Video (Longest)", pos: "b", h: 48 }
n23@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Execute workf..", pos: "b", h: 48 }
n24@{ icon: "mdi:robot", form: "rounded", label: "Generate Timed Script", pos: "b", h: 48 }
n25["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Final video"]
n26["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Create Final Video"]
n27@{ icon: "mdi:cog", form: "rounded", label: "Wait3", pos: "b", h: 48 }
n3 --> n10
n27 --> n25
n21 --> n19
n6 --> n5
n18 --> n17
n4 --> n7
n7 --> n6
n10 --> n6
n10 --> n9
n1 --> n0
n8 --> n4
n19 --> n16
n11 --> n3
n5 --> n26
n9 --> n8
n25 --> n2
n13 --> n15
n20 --> n21
n12 --> n11
n26 --> n27
n14 --> n12
n17 --> n1
n17 --> n22
n24 --> n14
n16 --> n18
n2 --> n20
n15 --> n24
n23 --> n13
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n23 trigger
class n9,n13,n14,n24 ai
class n15,n22 database
class n1,n7,n8,n10,n11,n16,n17,n19,n20,n25,n26 api
class n2,n5,n12 code
classDef customIcon fill:none,stroke:none
class n1,n2,n5,n6,n7,n8,n10,n11,n12,n16,n17,n19,n20,n25,n26 customIcon
Varför det här spelar roll: att göra idéer till shorts är en flaskhals
Shorts ser enkla ut från utsidan. Men kedjan bakom kulisserna är lång: välj ett tema, hitta en hook, skriv ett tajt manus, planera scener, generera visuellt material, animera, klipp ihop, lägg på voiceover, exportera, ladda upp och följ sedan upp vad du publicerade. Det värsta är hur skört det är. En missad fil, en trasig länk, ett “var sparade vi det?”-ögonblick, och du tappar rytmen som kortformatsplattformar belönar. Det handlar inte bara om tid. Det handlar om momentum – och momentum är hela spelet.
Friktionen byggs på. Här är var det brukar fallera.
- Du gör samma repetitiva steg för varje video, även när temat knappt förändras.
- Spårningen blir snabbt rörig, så du ser inte vad som pågår, vad som är klart och vad som aldrig publicerades.
- Outsourcing blir svårare eftersom processen bara finns “i någons huvud”, inte i ett system.
- Uppladdning och överlämningar stjäl fokus precis när du borde iterera på hooks och format.
Vad du bygger: ett tema-till-short-löpande band i n8n
Det här arbetsflödet gör ett tema till en komplett short-video och håller dessutom ordning åt dig. Det börjar när du kör arbetsflödet i n8n och anger ett kärnämne (tänk “svarta hål”, “antika Rom” eller “märkliga marknadsföringsfakta”). OpenAI genererar ett viral-inriktat konceptpaket med titel, beskrivning och hashtags, och arbetsflödet loggar metadatan i Google Sheets så att din innehållskalender inte blir en gissningslek. Därefter skriver det ett manus med 12 scener, designat för att passa ungefär en 60-sekunders video, och tar fram prompts för varje scens visuella material.
Sedan loopar arbetsflödet genom scenerna för att skapa stillbilder och animera dem till korta klipp via Fal.ai-API:er. När alla klipp är klara klipper det ihop dem till en enda video, genererar ett voiceover-spår och mixar ljud med slutklippet. Till sist laddar arbetsflödet ner den färdiga videofilen, laddar upp den till din valda Google Drive-mapp och uppdaterar Google Sheets så att raden speglar slutresultatet.
Det här bygger du
| Vad som automatiseras | Vad du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att du publicerar 5 shorts i veckan. Manuellt är det vanligt att lägga cirka 2 timmar per short när du räknar in manusskrivning, hitta visuellt material, klippa ihop klipp, voiceover, export, uppladdning till Drive och uppdatering av din tracker. Det blir ungefär 10 timmar per vecka. Med det här arbetsflödet kan din “hands-on”-tid sjunka till runt 10 minuter per short (välja tema, köra, kontrollera output), medan resten kör i bakgrunden. Du får tillbaka större delen av tiden utan att tappa konsekvensen.
Innan du börjar
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Google Sheets för loggning av idémetadata och status.
- Google Drive för att lagra slutvideor i en delad mapp.
- OpenAI API-nyckel (hämta den i din OpenAI API-dashboard).
- Fal.ai API-nyckel (hämta den i dina kontoinställningar hos Fal.ai).
Kunskapsnivå: Medel. Du kopplar mest konton och klistrar in API-nycklar, samt uppdaterar några headers i HTTP Request.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
Du kör arbetsflödet med ett tema. Det börjar med en manuell start i n8n, sedan genererar OpenAI en idéstomme (titel, hashtags, beskrivning) baserat på ditt ämne.
Din innehållslogg uppdateras direkt. Google Sheets får konceptdetaljerna tidigt, vilket betyder att du har en logg även om du avbryter körningen senare eller vill jämföra flera idéer.
Scener skapas och produceras sedan i en loop. OpenAI tar fram en plan med 12 scener; arbetsflödet delar upp den i individuella scenprompts, genererar en stillbild via Fal.ai (Flux) och använder sedan vision + prompting för att animera varje scen till ett kort klipp (Kling). Väntesteg används eftersom externa renderingar inte är omedelbara.
Allt sätts ihop och levereras. Klippen slås ihop till en enda 60-sekundersvideo (FFMPEG API), voiceover genereras och mixas in, sedan laddar n8n ner den färdiga filen och laddar upp den till Google Drive. Till sist uppdateras den ursprungliga raden i Google Sheets med information om den färdiga videon.
Du kan enkelt ändra temaprompten så den matchar din nisch och byta målmapp i Drive efter dina behov. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera den manuella triggern
Starta arbetsflödet manuellt för att köra en fullständig videopipeline vid behov.
- Lägg till och öppna Manual Execution Start.
- Lämna nodinställningarna som standard för att möjliggöra manuella körningar.
- Koppla Manual Execution Start till Generate Idea Seed.
Steg 2: Anslut Google Sheets för lagring av metadata
Lagra den genererade idéns metadata och uppdatera den slutliga video-URL:en i ert kalkylark.
- Öppna Record Idea Metadata och ställ in Operation på
append. - Ställ in Document till
[YOUR_ID]och Sheet tillSheet1. - Mappa fält som idea till
{{ $json.message.content.idea }}och caption till{{ $json.message.content.title }}. - Öppna Update Final Video Sheet och ställ in Operation på
update, med matchning på idea. - Ställ in final_output till
{{ $json.video_url }}för att lagra länken till slutresultatet.
Credential Required: Anslut era googleSheetsOAuth2Api-uppgifter för både Record Idea Metadata och Update Final Video Sheet.
Steg 3: Sätt upp AI för idé, berättarröst och scen-prompting
Dessa OpenAI-noder genererar idéstommen, tidsatt berättarröst och scen-prompter som driver den visuella pipelinen.
- Konfigurera Generate Idea Seed med Model satt till
gpt-4.1och JSON Output aktiverat. - I Create Timed Narration, bekräfta att prompten refererar till idén och titeln via
{{$('Generate Idea Seed').first().json.message.content.title}}och{{$('Generate Idea Seed').first().json.message.content.idea}}. - Öppna Compose Scene Prompts och säkerställ att den läser berättelsegment som
{{ $json.message.content.segments[0].text }}till{{ $json.message.content.segments[11].text }}. - I Split Scene Prompts, behåll JavaScript-koden som mappar varje scen till ett eget output-item.
- Verifiera att Draft Animation Prompts använder Resource
imageoch Operationanalyze, med Image URLs satt till{{ $json.images[0].url }}.
Credential Required: Anslut era openAiApi-uppgifter för Generate Idea Seed, Create Timed Narration, Compose Scene Prompts och Draft Animation Prompts.
Steg 4: Konfigurera köerna för bild- och klippgenerering
Dessa HTTP-förfrågningar skickar prompter till externa API:er, väntar och hämtar sedan resultat. Det finns flera HTTP Request- och Wait-noder som följer samma mönster, så konfigurera dem konsekvent.
- I Generate Scene Images, ställ in URL till
https://queue.fal.run/fal-ai/flux/schnelloch Body till{"prompt":"{{ $json.prompt }}","image_size":"portrait_16_9"}. - Ställ in Authorization-headern i Generate Scene Images och Retrieve Image Result till
[CONFIGURE_YOUR_API_KEY]. - Behåll Pause Images Queue satt till Amount
240för att ge bildbearbetningen tid att slutföras. - I Generate Scene Clip, ställ in Body så att den inkluderar
{{ $json.content }}och{{ $('Retrieve Image Result').item.json.images[0].url }}. - Behåll Pause Video Queue satt till Amount
700, därefter ska Retrieve Clip Result anropahttps://queue.fal.run/fal-ai/kling-video/requests/{{ $json.request_id }}.
Steg 5: Slå ihop scenresultat och skapa den slutliga videon
Slå ihop klippresultaten, samla deras URL:er och bygg den slutliga sammanfogade videotidslinjen.
- Säkerställ att Retrieve Image Result skickar output till både Combine Scene Data och Draft Animation Prompts parallellt.
- I Combine Scene Data, behåll Mode satt till
combineoch Combine By tillcombineByPosition. - I Collect Clip URLs, behåll JavaScript-koden som mappar
item.json.video.urltill en video_urls-array. - Öppna Compose Final Video och bekräfta att varje keyframe använder
{{ $json.video_urls[0] }}till{{ $json.video_urls[11] }}med 5 sekunders varaktighet. - Behåll Pause Final Merge satt till
200, därefter ska Retrieve Final Video anropahttps://queue.fal.run/fal-ai/ffmpeg-api/requests/{{ $json.request_id }}.
Steg 6: Generera berättarröst och mixa med video
Sätt ihop berättelsen till ett stycke, skapa voiceover-ljud och mixa det med den slutliga sammanfogade videon.
- I Assemble Voiceover Text, behåll JavaScript-koden som slår ihop berättelsegment till paragraph.
- I Generate Voiceover Audio, ställ in URL till
https://queue.fal.run/fal-ai/elevenlabs/tts/turbo-v2.5och ersätt[YOUR_ID]i voice-fältet. - Behåll Pause Voice Queue satt till
280, därefter hämtar Retrieve Voiceover Output resultatet för requesten. - I Mix Audio With Video, säkerställ att video-URL:en är satt till
{{ $('Retrieve Final Video').item.json.video_url }}och ljud-URL:en till{{ $json.audio.url }}. - Behåll Pause Mix Queue satt till
280och Retrieve Audio Video Mix konfigurerad med request-URL-mallen.
65 sekunder i Mix Audio With Video.Steg 7: Ladda upp och logga slutresultatet
Ladda ner den mixade videon, ladda upp den till Drive och uppdatera kalkylarket med den slutliga URL:en.
- Säkerställ att Retrieve Audio Video Mix skickar output till både Fetch Video File och Update Final Video Sheet parallellt.
- I Fetch Video File, ställ in URL till
{{ $json.video_url }}och behåll Response Format satt till file. - I Drive File Upload, ställ in Name till
{{ $('Generate Idea Seed').first().json.message.content.name }}och välj mål-Drive och mapp.
Credential Required: Anslut era googleDriveOAuth2Api-uppgifter för Drive File Upload.
Steg 8: Testa och aktivera ert arbetsflöde
Kör ett fullständigt test för att validera hela pipelinen från början till slut innan ni slår på den för produktion.
- Klicka på Execute Workflow och övervaka varje köbaserad sektion tills den är klar.
- Bekräfta att Record Idea Metadata lägger till en ny rad och att Update Final Video Sheet uppdaterar fältet final_output.
- Verifiera att Drive File Upload skapar en ny videofil med förväntat namn.
- Om allt fungerar, växla arbetsflödet till Active för att möjliggöra produktionskörningar.
Tips för felsökning
- Behörigheter för Google Sheets och Google Drive kan löpa ut eller kräva specifika rättigheter. Om saker slutar fungera, kontrollera skärmen Credentials i n8n och bekräfta att Google-kontot fortfarande har åtkomst till målarket och Drive-mappen.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Fal.ai-anrop bygger på Authorization-headern i flera HTTP Request-noder. Om du glömmer att ersätta platshållarnyckeln i varje nod (bild, klipp, merge och mix) kommer körningen att fallera halvvägs och kännas “slumpmässig”.
Snabba svar
Cirka en timme om du redan har dina API-nycklar och Google-åtkomst redo.
Nej. Du kopplar konton, klistrar in API-nycklar och justerar några konfigurationsfält.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volym. Du behöver också räkna med kostnader för OpenAI- och Fal.ai-användning, som kan dra iväg om du genererar många videor.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du förmodligen göra. De flesta börjar med att justera prompten i “Generate Idea Seed” så den matchar deras nisch, och anpassar sedan Google Sheets-kolumnerna i “Record Idea Metadata” och “Update Final Video Sheet” efter sin uppföljning. Om du föredrar en annan AI-röst kan du byta HTTP request för voiceover till din leverantör och låta resten vara. Du kan även minska antalet scener (12 till 8, till exempel) om du vill ha snabbare körningar och ett mer rappt tempo.
Oftast beror det på en utgången Google-behörighet eller att det kopplade kontot tappat åtkomst till kalkylarket. Koppla om Google-credentialen i n8n och dubbelkolla sedan att Spreadsheet ID och fliknamnet i Sheet matchar vad noden förväntar sig. Om det bara fallerar vid uppdateringar kan arket vara skyddat eller så skriver arbetsflödet till ett intervall som ännu inte finns.
Om du self-hostar finns ingen körningsgräns från n8n (det beror mest på din server och API:ernas rate limits). I praktiken är varje videokörning tung eftersom den skapar 12 bilder, 12 klipp, en sammanslagning, en voiceover och en slutmix, så de flesta team börjar med några videor per dag och skalar när det är stabilt.
För den här typen av arbetsflöde, ja, i de flesta fall. Du hanterar loopar, väntar på renderjobb, skickar data mellan steg och syr ihop output – där brukar n8n kännas mer flexibelt. Zapier och Make kan lösa delar, men så fort du lägger till “generera 12 klipp, vänta, merge, och mixa ljud” blir scenariot skört och dyrt. n8n ger dig också möjligheten att self-hosta, vilket spelar roll om du kör detta ofta. Vill du ha hjälp att välja rätt stack för dina publiceringsmål, prata med en automationsexpert.
När det här väl rullar slutar du “hantera processen” och börjar granska output. Arbetsflödet tar hand om den repetitiva produktionskedjan, och ditt Google Sheet blir äntligen en riktig kontrollpanel.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.