Att publicera videor ska inte kännas som att du måste barnvakta ett dussin flikar. Men om du laddar upp, döper om filer, hämtar länkar, laddar upp igen och sedan försöker komma ihåg vad som gick live var, blir det snabbt ett dagligt slit.
Den här automatiseringen för Google Sheets posting träffar sociala medier-ansvariga först, ärligt talat. Men byråägare som jonglerar kundkalendrar och marknadsförare på småföretag som försöker vara konsekventa känner också av det. Du får en tracker, en process och långt färre “vänta, publicerade vi det där?”-ögonblick.
Du får se hur det här flödet använder Google Sheets som en kontrollpanel, hämtar källvideor, förlänger dem med AI, slår ihop slutklippet, sparar det i Google Drive och publicerar på TikTok, Instagram, Facebook, LinkedIn, X och YouTube.
Varför detta är viktigt: publicering på flera plattformar blir snabbt rutinjobb
När din innehållspipeline är “gör en video och lotsa den manuellt mellan plattformar” går allt långsammare. Du lägger din bästa energi på filhantering i stället för kreativ testning. Och det värsta är osäkerheten. En video kan vara exporterad, men inte publicerad. Den kan vara publicerad, men inte loggad. Eller så tar någon en gammal version från en chatttråd och laddar upp fel klipp. Efter några veckor slutar ditt kalkylark (eller anteckningsapp) vara en källa till sanning och blir mer av en grov fingervisning.
Det summeras snabbt. Här är var det oftast fallerar i riktiga team.
- Att ladda upp till sex eller sju kanaler en och en kan lätt ta runt en timme per färdig video när du räknar in titlar, omförsök och länkspårning.
- Status blir otydlig, så folk laddar upp samma fil igen eller publicerar två gånger eftersom ingen litar på trackern.
- När AI-videverktyg tar tid att rendera måste någon fortsätta kolla, vilket gör “automation” till konstant övervakning.
- Slutliga tillgångar hamnar utspridda på skrivbord och i molnmappar, vilket gör godkännanden, återanvändning och återbruk svårare än det behöver vara.
Så fungerar automatiseringen
Här är hela flödet du kommer att sätta upp:
n8n Workflow Template: Google Sheets + Google Drive, publicera videor överallt
flowchart LR
subgraph sg0["Manual Launch Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Manual Launch Trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Frame Ready?", pos: "b", h: 48 }
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Retrieve Frame Output"]
n3@{ icon: "mdi:database", form: "rounded", label: "Write Clip URL", pos: "b", h: 48 }
n4["<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/>Pull Final Frame"]
n5@{ icon: "mdi:cog", form: "rounded", label: "Pause 10 Seconds", pos: "b", h: 48 }
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Check Frame Status"]
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map Input Fields", pos: "b", h: 48 }
n8@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Merge Ready?", pos: "b", h: 48 }
n9@{ icon: "mdi:cog", form: "rounded", label: "Store in Drive", 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/>Create Extended Clip"]
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/>Check Clip Status"]
n12@{ icon: "mdi:cog", form: "rounded", label: "Pause 60 Seconds", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Clip Ready?", pos: "b", h: 48 }
n14["<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/>Build Merge URL List"]
n15@{ icon: "mdi:database", form: "rounded", label: "Fetch Merge List", 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/>Download Final File"]
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/>Check Merge Status"]
n18["<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/>Retrieve Final URL"]
n19@{ icon: "mdi:database", form: "rounded", label: "Write Final URL", pos: "b", h: 48 }
n20@{ icon: "mdi:cog", form: "rounded", label: "Pause 30 Seconds", pos: "b", h: 48 }
n21["<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 Video Segments"]
n22["<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/>Send to Postiz Upload"]
n23@{ icon: "mdi:cog", form: "rounded", label: "Publish Social Post", pos: "b", h: 48 }
n24["<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/>Post to YouTube"]
n25@{ icon: "mdi:database", form: "rounded", label: "Fetch Source Video", pos: "b", h: 48 }
n25 --> n7
n13 --> n3
n13 --> n12
n17 --> n8
n7 --> n4
n1 --> n2
n1 --> n5
n8 --> n18
n8 --> n20
n21 --> n20
n5 --> n6
n20 --> n17
n12 --> n11
n10 --> n12
n2 --> n10
n11 --> n13
n3 --> n15
n22 --> n23
n19 --> n16
n4 --> n5
n14 --> n21
n18 --> n19
n15 --> n14
n16 --> n9
n16 --> n24
n16 --> n22
n6 --> n1
n0 --> n25
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 n0 trigger
class n1,n8,n13 decision
class n3,n15,n19,n25 database
class n2,n4,n6,n10,n11,n16,n17,n18,n21,n22,n24 api
class n14 code
classDef customIcon fill:none,stroke:none
class n2,n4,n6,n10,n11,n14,n16,n17,n18,n21,n22,n24 customIcon
Det här bygger du: ett ark som förlänger, slår ihop, lagrar och publicerar videor
Det här flödet gör Google Sheets till en enkel produktionskö. Du lägger in en URL till källvideon, en prompt och en mållängd. Därifrån hämtar n8n källan, extraherar sista bildrutan (så förlängningen matchar looken) och skickar den bildrutan plus din prompt till en AI-modell (Kling 2.1 via RunPod i den här versionen). Eftersom videogenerering inte är omedelbar väntar flödet och kontrollerar status tills klippet faktiskt är klart. Sedan slår det ihop originalet och det förlängda klippet, laddar upp slutfilen till Google Drive och publicerar resultatet via verktyg för social publicering (Postiz för TikTok, Instagram, Facebook, LinkedIn, X och YouTube, plus Upload-Post för YouTube). Till sist skriver det tillbaka URL:er och klarmarkeringar i samma ark så att du ser vad som hände utan att gissa.
Flödet startar med en manuell körning (ett klick) och läser nästa rad från Google Sheets. Det loopar genom steg för “rendera, kontrollera, vänta” tills tillgångarna är klara och avslutar sedan med lagring i Drive och publicering på flera plattformar. Ditt kalkylark blir en live-tracker i stället för en inaktuell checklista.
Det här bygger du
| Vad som automatiseras | Vad du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att du publicerar 5 videor i veckan på sex kanaler (TikTok, Instagram, Facebook, LinkedIn, X och YouTube). Om manuell publicering och loggning tar cirka 10 minuter per kanal är det ungefär 5 timmar i veckan bara för att trycka ut filer och spåra länkar. Med det här flödet är ditt “arbete” att uppdatera en rad i Google Sheets och köra flödet, vilket oftast tar 5 minuter. Rendering och sammanslagning tar fortfarande tid, men du sitter inte där och gör det, så du får tillbaka merparten av de timmarna.
Innan du börjar
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Google Sheets som fungerar som din kontrollpanel för innehåll.
- Google Drive för att lagra sammanslagna slutvideor centralt.
- Fal.ai API-nyckel (hämta den i din fal.ai-dashboard) för frame-extraktion och sammanslagning.
- RunPod API-nyckel (hämta den i ditt RunPod-konto) för att generera det förlängda klippet via Kling 2.1.
- Postiz-konto för att publicera till TikTok, Instagram, Facebook, LinkedIn, X och YouTube.
- Upload-Post-konto för att publicera till YouTube i flödets YouTube-spår.
Kunskapsnivå: Medel. Du kopplar några konton, klistrar in API-nycklar och verifierar att kalkylarkets kolumner matchar flödet.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
Du triggar en körning från n8n. Flödet startar med en manuell start och hämtar sedan nästa källvideo och dess inställningar från Google Sheets (dina fält START URL, PROMPT och DURATION).
Bildrutor och promptar förbereds för AI. n8n begär den sista bildrutan via Fal.ai, väntar en kort stund och kontrollerar sedan status tills bildrutan är klar. Den bildrutan blir “ankaret” för förlängningen så att det nya klippet smälter ihop med det du redan har.
Det förlängda klippet genereras och spåras. Flödet anropar AI-videomodellen via RunPod och loopar sedan igenom vänta-och-kolla-steg (som den inbyggda “Pause 60 Seconds” plus statuskontroller) tills klippet faktiskt är klart. När det är redo skrivs klippets URL tillbaka till Google Sheets.
Allt slås ihop, lagras och publiceras. n8n bygger en merge-lista, slår ihop originalet plus det genererade segmentet via Fal.ai, laddar ner slutfilen, laddar upp den till Google Drive och skickar den sedan till Postiz och Upload-Post för distribution. Slutlig URL och status går tillbaka till Google Sheets så att din tracker förblir korrekt.
Du kan enkelt ändra vilka plattformar som publiceras automatiskt (eller bara spara till Drive) utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera den manuella triggern
Det här arbetsflödet startas manuellt så att ni kan köra processen för videoextension vid behov.
- Lägg till noden Manual Launch Trigger som arbetsflödets trigger.
- Behåll standardinställningarna i Manual Launch Trigger (inga parametrar krävs).
- (Valfritt) Behåll sticky note Flowpast Branding för tydligare dokumentation.
Steg 2: anslut Google Sheets för indata och utdata
Google Sheets hanterar källindata och lagrar clip- och slut-URL:er.
- Öppna Fetch Source Video och välj ert kalkylark i Document med värdet
[YOUR_ID], och ställ in Sheet tillgid=0. Credential Required: Anslut era googleSheetsOAuth2Api-credentials. - I Fetch Source Video behåller ni filtret på VIDEO URL för att hitta rader för bearbetning.
- Öppna Write Clip URL och ställ in Operation till
update. Mappa VIDEO URL till{{ $json.output.result }}och row_number till{{ $('Fetch Source Video').item.json.row_number }}. Credential Required: Anslut era googleSheetsOAuth2Api-credentials. - Öppna Fetch Merge List och bekräfta filtret på MERGE, med Document
[YOUR_ID]och Sheetgid=0. Credential Required: Anslut era googleSheetsOAuth2Api-credentials. - Öppna Write Final URL och ställ in Operation till
update. Mappa FINAL VIDEO till{{ $json.video.url }}, MERGE tillx, VIDEO URL till=, och row_number till{{ $('Fetch Source Video').item.json.row_number }}. Credential Required: Anslut era googleSheetsOAuth2Api-credentials.
[YOUR_ID] i Fetch Source Video, Write Clip URL, Fetch Merge List och Write Final URL med era faktiska Google Sheet-ID:n, annars hittar arbetsflödet inte er data.Steg 3: konfigurera frame-extrahering och clip-generering
Det här segmentet extraherar sista framen, genererar ett förlängt clip och övervakar status med vänteloopar.
- I Map Input Fields ställer ni in tilldelningarna till
{{ $json.PROMPT }}för prompt,{{ $json.DURATION }}för duration och{{ $json.START }}för video. - Konfigurera Pull Final Frame med URL
https://queue.fal.run/fal-ai/ffmpeg-api/extract-frameoch JSON Body satt till{ "video_url": "{{ $json.video }}", "frame_type": "last" }. Credential Required: Anslut era httpHeaderAuth-credentials. - Behåll Pause 10 Seconds inställd på
10och bekräfta att Check Frame Status använder URLhttps://queue.fal.run/fal-ai/ffmpeg-api/requests/{{ $('Pull Final Frame').item.json.request_id }}/status. Credential Required: Anslut era httpHeaderAuth-credentials. - I Frame Ready? behåller ni villkoret som kontrollerar att
{{ $json.status }}är lika medCOMPLETEDför att loopa tills framen är klar. - Ställ in Retrieve Frame Output till URL
https://queue.fal.run/fal-ai/ffmpeg-api/requests/{{ $json.request_id }}. Credential Required: Anslut era httpHeaderAuth-credentials. - Konfigurera Create Extended Clip med URL
https://api.runpod.ai/v2/kling-v2-1-i2v-pro/runoch JSON Body som refererar till{{ $('Fetch Source Video').item.json.PROMPT }},{{ $json.images[0].url }}och{{ $('Fetch Source Video').item.json.DURATION }}. Credential Required: Anslut era httpBearerAuth-credentials. - Behåll Pause 60 Seconds inställd på
60och säkerställ att Check Clip Status använderhttps://api.runpod.ai/v2/kling-v2-1-i2v-pro/status/{{ $json.id }}. Credential Required: Anslut era httpBearerAuth-credentials (httpHeaderAuth är också kopplat men krävs inte för URL:en). - I Clip Ready? behåller ni villkoret att
{{ $json.status }}är lika medCOMPLETED, och skickar sedan vidare till Write Clip URL.
Steg 4: konfigurera merge-assemblering och insamling av slutlig URL
När clipet har genererats bygger arbetsflödet en merge-lista, kombinerar videor och hämtar den slutliga URL:en.
- I Build Merge URL List behåller ni JavaScript-koden som output:ar
urlsfrånitem.STARTochitem["VIDEO URL"]. - Ställ in Combine Video Segments med URL
https://queue.fal.run/fal-ai/ffmpeg-api/merge-videosoch JSON Body{ "video_urls": {{ JSON.stringify($json.urls) }}, "target_fps": 24 }. Credential Required: Anslut era httpHeaderAuth-credentials. - Behåll Pause 30 Seconds inställd på
30och säkerställ att Check Merge Status använderhttps://queue.fal.run/fal-ai/ffmpeg-api/requests/{{ $('Combine Video Segments').item.json.request_id }}/status. Credential Required: Anslut era httpHeaderAuth-credentials. - I Merge Ready? behåller ni villkoret att
{{ $json.status }}är lika medCOMPLETEDför att fortsätta till Retrieve Final URL. - Konfigurera Retrieve Final URL med URL
https://queue.fal.run/fal-ai/ffmpeg-api/requests/{{ $json.request_id }}. Credential Required: Anslut era httpHeaderAuth-credentials. - Bekräfta att Write Final URL skriver output till ert ark innan Download Final File använder
{{ $('Retrieve Final URL').item.json.video.url }}.
Steg 5: konfigurera distributionsutdata och parallell leverans
När den slutliga filen har laddats ned levererar arbetsflödet asseten till Google Drive, YouTube och Postiz parallellt.
- Ställ in Download Final File med URL
{{ $('Retrieve Final URL').item.json.video.url }}för att hämta den färdiga videofilen. - Download Final File skickar output till Store in Drive, Post to YouTube och Send to Postiz Upload parallellt – verifiera att alla tre kopplingar finns innan ni testar.
- I Store in Drive behåller ni filnamnsmönstret
{{ $now.format('yyyyLLddHHmmss') }}-{{ $('Retrieve Final URL').item.json.video.file_name }}och ställer in Folder till[YOUR_ID]. Credential Required: Anslut era googleDriveOAuth2Api-credentials. - I Post to YouTube behåller ni URL
https://api.upload-post.com/api/uploadoch säkerställer att multipart-fälten inkluderar platform[] satt tillyoutube. Credential Required: Anslut era httpHeaderAuth-credentials. - I Send to Postiz Upload behåller ni URL
https://api.postiz.com/public/v1/uploadoch mappar filfältet till data. Credential Required: Anslut era httpHeaderAuth-credentials. - I Publish Social Post behåller ni Date-uttrycket
{{ $now.format('yyyy-LL-dd') }}T{{ $now.format('HH:ii:ss') }}och mediareferenserna{{ $json.id }}och{{ $json.path }}. Credential Required: Anslut era postizApi-credentials.
XXX och [YOUR_ID] i Publish Social Post och Post to YouTube innan ni kör, annars misslyckas inlägg/uppladdningar.Steg 6: testa och aktivera ert arbetsflöde
Kör ett manuellt test för att validera hela pipeline:en för videoextension innan ni aktiverar den för produktion.
- Klicka på Execute Workflow och trigga Manual Launch Trigger för att köra ett fullständigt test med en exempelrad i ert Google Sheet.
- Bekräfta att Write Clip URL uppdaterar cellen VIDEO URL och att Write Final URL skriver output för FINAL VIDEO i samma rad.
- Verifiera att Download Final File producerar output och att Store in Drive, Post to YouTube och Send to Postiz Upload alla tar emot filen parallellt.
- När körningen är lyckad, växla arbetsflödet till Active för produktionsanvändning.
Felsökningstips
- Behörigheter i Google Sheets eller Google Drive är en vanlig fallgrop. Om flödet inte kan läsa rader eller skriva URL:er, kontrollera OAuth-anslutningen igen i n8n:s credentials för Google-noderna.
- Om du använder Wait-noder eller extern rendering varierar behandlingstiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Fal.ai- eller RunPod-anrop misslyckas om din API-nyckel saknas, har gått ut eller blockeras av faktureringsgränser. Börja med att kontrollera Authorization-headern i relevanta HTTP Request-noder (frame-extraktion, klippgenerering och sammanslagning).
Snabba svar
Cirka en timme om dina konton och API-nycklar är redo.
Nej. Du kopplar mest konton och klistrar in API-nycklar i HTTP Request-noderna.
Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in användning av Fal.ai och RunPod, eftersom videogenerering och rendering är betalda API:er.
Två alternativ: n8n Cloud (hanterat, enklast att sätta upp) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och klarar n8n bra. Egen hosting ger dig obegränsade körningar men kräver grundläggande serveradministration.
Ja, det är byggt för det. Du kan behålla Google Sheets som kontrollpanel men byta AI-leverantör genom att redigera HTTP Request-noderna som används för “Create Extended Clip” och statuskontrollerna. Vanliga anpassningar är att bara publicera till Drive (inga sociala kanaler), ändra logiken för titel/caption före Postiz eller hoppa över merge-steget när du bara vill ha det genererade klippet.
Oftast är det ett OAuth-behörighetsproblem eller att fel Google-konto är anslutet. Återanslut Google Sheets-credential i n8n och bekräfta sedan att sheet-ID och worksheet-/fliknamn matchar vad noden förväntar sig. Kontrollera också om någon har ändrat kolumnrubriker (som START, PROMPT eller DURATION), eftersom flödet mappar fält baserat på de namnen. Om det fungerade tidigare och plötsligt slutade är utgångna tokens nästa misstänkta.
Det beror mer på renderingstid och dina API-gränser än på n8n i sig. På n8n Cloud Starter kan du köra en bra mängd körningar per månad för små team, och högre planer hanterar mer. Om du hostar själv är körningar inte begränsade, men din server måste fortfarande vänta på långkörande videojobb. I praktiken lägger de flesta team videor i kö i batchar (till exempel 10 åt gången) och låter statuskontrollerna rulla tills varje jobb är klart.
Ofta, ja, eftersom det här flödet bygger på långkörande jobb, loopande statuskontroller och filhantering. Zapier och Make kan göra delar av det, men du landar vanligtvis i att sy ihop flera scenarier och betala mer när volymen växer. n8n är också enklare att hosta själv, vilket spelar roll när du vill ha många körningar utan överraskningsfakturor. Samtidigt: om du bara behöver “rad i Sheet → ladda upp till ett ställe” är de verktygen snabba att sätta upp. Om du är osäker, prata med en automationsexpert och få en rak rekommendation för din stack.
När det här väl rullar blir ditt kalkylark operativsystemet för distribution. Flödet tar hand om de repetitiva delarna, och du får tillbaka din tid (och ditt fokus).
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.