Att publicera Instagram Stories låter enkelt tills du gör det varje dag. Leta upp filen, ladda upp den, vänta på bearbetning, lägg till den i din Story och försök sedan komma ihåg vad du redan publicerade förra veckan. Det är repetitivt, lätt att göra fel och det stjäl i tysthet tid från riktigt marknadsföringsarbete.
Sociala medier-ansvariga känner av det här mest. Men byråägare som jonglerar kundkalendrar och småföretagare som försöker hålla sig synliga stöter på samma problem. Den här IG Stories-automationen gör ett Google-kalkylark till din “alltid redo”-kö för Stories.
Du får lära dig vad arbetsflödet gör, vad du behöver för att köra det och hur du undviker de vanligaste Meta/Instagram-fallgroparna som saboterar automationer vid sämsta möjliga tillfälle.
Så fungerar den här automationen
Här är hela arbetsflödet som du kommer att sätta upp:
n8n Workflow Template: Google Sheets till Instagram stories: posta konsekvent
flowchart LR
subgraph sg0["🚀 Manual Start Flow"]
direction LR
n0@{ icon: "mdi:swap-vertical", form: "rounded", label: "⚙️ Configuration Hub", pos: "b", h: 48 }
n1@{ icon: "mdi:play-circle", form: "rounded", label: "🚀 Manual Start", pos: "b", h: 48 }
n2@{ icon: "mdi:play-circle", form: "rounded", label: "⏰ Auto Schedule", pos: "b", h: 48 }
n3@{ icon: "mdi:database", form: "rounded", label: "📊 Fetch Videos from Sheet", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "🎲 Randomize Order", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "🔄 Process Each Video", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "❓ Already Posted Check", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "🎯 Prepare Video Data", pos: "b", h: 48 }
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 Story Container"]
n9["<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 Processing Status"]
n10@{ icon: "mdi:swap-horizontal", form: "rounded", label: "✅ Ready to Publish?", pos: "b", h: 48 }
n11@{ icon: "mdi:cog", form: "rounded", label: "⏰ Wait 30 Seconds", pos: "b", h: 48 }
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/facebook.svg' width='40' height='40' /></div><br/>🎉 Publish to Instagram"]
n13@{ icon: "mdi:database", form: "rounded", label: "✏️ Mark as Posted", pos: "b", h: 48 }
n2 --> n0
n1 --> n0
n11 --> n9
n4 --> n5
n10 --> n12
n10 --> n11
n7 --> n8
n5 --> n6
n0 --> n3
n6 --> n7
n6 --> n5
n12 --> n13
n8 --> n9
n3 --> n4
n9 --> n10
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 n1,n2 trigger
class n6,n10 decision
class n3,n13 database
class n8,n9,n12 api
classDef customIcon fill:none,stroke:none
class n8,n9,n12 customIcon
Därför spelar det roll: konsekventa Stories utan daglig uppladdning
Instagram Stories belönar konsekvens, men “var konsekvent” är ett uselt råd när processen är manuell. En stressig eftermiddag blir till två missade dagar. Sedan får du panik, letar i mappar, plockar vilken videolänk du än hittar och hoppas att du inte redan har publicerat den. Det värsta är den mentala belastningen. Du laddar inte bara upp – du håller koll: vad som ligger i kö, vad som är publicerat, vad som är säkert att återanvända och vad som fortfarande behöver redigeras.
Det summerar snabbt. Och friktionen ökar när fler än en person jobbar i samma konto.
- Att ladda upp Stories manuellt tar runt 10 minuter per inlägg när du räknar in “hitta filen”, bearbetningsfördröjningar och sista-minuten-kontroller.
- Dubbletter uppstår när din kö finns i någons huvud (eller ett Slack-meddelande) i stället för i ett delat system.
- Team tappar fart eftersom ingen ser vad som är planerat och vad som redan har gått live.
- De flesta schemaläggningsverktyg hjälper inte om ditt innehåll lagras som URL:er och du behöver en pålitlig “publicerat”-logg.
Det du bygger: ett Google-kalkylark som publicerar Instagram Stories
Det här arbetsflödet gör ett enkelt kalkylark till en publiceringsmaskin för Instagram Stories. Du klistrar in direkta video-URL:er i ett Google-kalkylark, lämnar en kolumn för “publicerat” tom och n8n sköter resten enligt ett schema. Varje dag (eller den takt du väljer) hämtar automationen den senaste listan, blandar den för variation och kontrollerar varje rad för att se om den redan har publicerats. När den hittar en ny video skapar den en Instagram Story-container via Meta/Instagram-API:t, väntar medan Instagram bearbetar, och publicerar sedan Storyn. Till sist skriver den tillbaka till ditt Google-kalkylark och markerar raden som publicerad så att samma innehåll inte upprepas i morgon. Ärligt talat är det den sista delen som gör att det känns “ställ in och glöm”.
Arbetsflödet startar med en schemalagd trigger (det finns även en manuell trigger för test). Google Sheets levererar kön, HTTP-anrop hanterar skapande av container och statuskontroller, och Facebook Graph API-steget publicerar Storyn när mediet är klart. Sedan blir uppdateringarna i kalkylarket din revisionslogg.
Det du bygger
| Vad som automatiseras | Vad du uppnår |
|---|---|
|
|
Förväntade resultat
Säg att du publicerar en Story per dag. Manuellt tar det ungefär 10 minuter att hitta videon, ladda upp den, vänta på bearbetning och dubbelkolla att du inte återanvände gårdagens klipp – vilket blir cirka en timme per vecka. Med det här arbetsflödet lägger du kanske 10 minuter på måndagen på att lägga in fem video-URL:er i Google Sheets, och den dagliga publiceringen sker automatiskt. Själva publiceringen tar fortfarande tid på Instagrams sida, men du behöver inte sitta och bevaka den.
Innan du börjar
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att hålla din videokö för Stories.
- Instagram Business- eller Creator-konto så att API:t kan publicera Stories.
- Meta long-lived access token (hämta den i Meta for Developers efter att du skapat en app och gett behörigheter).
Svårighetsnivå: Medel. Du skriver ingen kod, men du behöver konfigurera en Meta-app, behörigheter och autentiseringsuppgifter noggrant.
Vill du att någon bygger detta åt dig? Prata med en automationsexpert (gratis 15-minuters konsultation).
Steg för steg
Ett schema (eller en manuell testkörning) sätter igång allt. Arbetsflödet kan köras dagligen via Schedule Trigger, och du kan även starta det manuellt medan du sätter upp det.
Ditt kalkylark blir facit. n8n läser rader från Google Sheets och blandar dem sedan så att publiceringsordningen känns fräsch i stället för att alltid ta första opublicerade objektet.
Endast opublicerade videor går vidare. En “if”-kontroll tittar på kolumnen posted_story och hoppar över allt som redan är markerat som true. För nästa rad som är aktuell bygger arbetsflödet en payload och ber Instagram (via Graph API) att skapa en Story-mediecontainer från din direkta video-URL.
Instagram bearbetar, sedan publicerar och loggar arbetsflödet. n8n kontrollerar bearbetningsstatus, väntar cirka 30 sekunder om den inte är klar och försöker igen tills mediet kan publiceras. När den har publicerat uppdaterar den samma rad i Google Sheets så att du får en tydlig, delad logg.
Du kan enkelt ändra publiceringsschemat så att det matchar din innehållstakt utifrån dina behov. Se den fullständiga implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera triggertypen
Välj hur arbetsflödet startar – manuellt eller enligt ett schema – båda triggrarna matar in i Settings Configurator.
- Öppna Manual Launch Trigger och behåll den för körningar vid behov.
- Öppna Scheduled Run Trigger och ställ in schemat att köra kl.
20:30(fält: triggerAtHour =20, triggerAtMinute =30). - Bekräfta att både Manual Launch Trigger och Scheduled Run Trigger är kopplade till Settings Configurator som visas i flödet.
Steg 2: Anslut Google Sheets
Hämta köade videor och uppdatera “posted”-flaggan i Google Sheets med Retrieve Sheet Videos och Update Sheet Posted Flag.
- Öppna Retrieve Sheet Videos och ställ in Sheet Name till
{{ $json.SHEET_TAB_NAME }}och Document ID till{{ $json.SHEET_DOC_ID }}. - Inloggningsuppgifter krävs: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter i Retrieve Sheet Videos.
- Öppna Update Sheet Posted Flag och bekräfta att Operation är
appendOrUpdate. - Ställ in Sheet Name till
{{ $('Settings Configurator').item.json.SHEET_TAB_NAME }}och Document ID till{{ $('Settings Configurator').item.json.SHEET_DOC_ID }}. - Säkerställ att columns.source_url är
{{ $('Compose Video Payload').item.json.video_url }}och att columns.posted_story är"true". - Inloggningsuppgifter krävs: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter i Update Sheet Posted Flag.
Steg 3: Sätt upp bearbetningsnoder
Konfigurera inställningar och bearbetningslogik som väljer ut och förbereder videor för publicering.
- I Settings Configurator ställer ni in IG_BUSINESS_ID till
[YOUR_ID], GRAPH_VERSION tillv23.0, SHEET_DOC_ID till[YOUR_ID]och SHEET_TAB_NAME tillInstagram Videos. - Öppna Shuffle Video Queue och ställ in Type till
randomför att slumpa listan. - I Batch Video Iterator behåller ni standardinställningarna för att bearbeta objekt i batchar.
- I Posted Status Gate verifierar ni villkoret: leftValue
{{ $json.posted_story }}notContainstrue. - I Compose Video Payload mappar ni fält: instagram_business_id till
{{ $json.IG_BUSINESS_ID || $('Settings Configurator').item.json.IG_BUSINESS_ID }}, video_url till{{ $json.source_url }}och api_version till{{ $json.GRAPH_VERSION || $('Settings Configurator').item.json.GRAPH_VERSION }}.
posted_story. Posted Status Gate hoppar över alla rader där detta fält redan innehåller true.Steg 4: Konfigurera ut-/åtgärdsnoder
Dessa noder skapar och publicerar Instagram Story, med en polling-loop som väntar på att bearbetningen ska bli klar.
- I Generate Story Container ställer ni in URL till
{{ 'https://graph.facebook.com/' + $('Settings Configurator').item.json.GRAPH_VERSION + '/' + $('Compose Video Payload').item.json['instagram_business_id'] + '/media' }}och Method tillPOST. - Ställ in query-parametrar i Generate Story Container: media_type =
STORIES, video_url ={{ $json['video_url'] }}. - Inloggningsuppgifter krävs: Anslut era facebookGraphApi-inloggningsuppgifter i Generate Story Container.
- I Inspect Processing State ställer ni in URL till
{{ 'https://graph.facebook.com/' + $('Settings Configurator').item.json.GRAPH_VERSION + '/' + $('Generate Story Container').item.json.id }}och inkluderar fields =status_code,status. - Inloggningsuppgifter krävs: Anslut era facebookGraphApi-inloggningsuppgifter i Inspect Processing State.
- I Ready for Publishing? bekräftar ni villkoret: leftValue
{{ $json.body.status_code }}equalsFINISHED. - Ställ in Delay 30 Seconds till Amount
30för att vänta innan ni kontrollerar bearbetningsstatus igen. - I Publish Story Media ställer ni in Node till
{{ $('Compose Video Payload').item.json['instagram_business_id'] }}, Graph API Version till{{ $('Settings Configurator').item.json.GRAPH_VERSION }}och creation_id till{{ $('Generate Story Container').item.json.id }}. - Inloggningsuppgifter krävs: Anslut era facebookGraphApi-inloggningsuppgifter i Publish Story Media.
FINISHED.Steg 5: Testa och aktivera ert arbetsflöde
Kör ett manuellt test för att validera sheet-inmatningen, video-payloaden och publiceringsflödet för Instagram Story.
- Klicka Execute Workflow via Manual Launch Trigger för att köra ett test.
- Verifiera att Retrieve Sheet Videos returnerar rader från fliken
Instagram Videosoch att Posted Status Gate tillåter ej publicerade objekt. - Bekräfta att Generate Story Container returnerar ett giltigt
id, och att Inspect Processing State sedan rapporterarFINISHED. - Kontrollera att Publish Story Media lyckas och att Update Sheet Posted Flag skriver
"true"tillposted_storyför matchandesource_url. - Aktivera arbetsflödet för att möjliggöra den schemalagda körningen från Scheduled Run Trigger.
Felsökningstips
- Meta-autentisering (Facebook/Instagram) kan löpa ut eller sakna rätt behörigheter. Om publiceringen misslyckas, kontrollera behörigheterna i din Meta Developer-app (särskilt instagram_content_publish) och skapa en ny long-lived token vid behov.
- Om du använder Wait-noder eller extern bearbetning varierar bearbetningstiderna. Öka väntetiden om statuskontrollen fortsätter returnera “not ready” och efterföljande steg misslyckas på grund av tomma svar.
- Problem med Google Sheets är oftast enkla men irriterande. Bekräfta att ditt Sheet ID och fliknamn är exakt rätt (skiftlägeskänsligt), och se till att det finns rader där posted_story fortfarande är tom.
Snabba svar
Cirka 45 minuter om dina Meta-konton är redo.
Ingen kodning krävs. Du kopplar Google Sheets och Meta-uppgifter, och klistrar sedan in rätt ID:n.
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 med Meta/Instagram API-åtkomst (oftast 0 USD, men kan påverkas av appgranskning/begränsningar) samt den hosting du använder för dina videofiler.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och klarar n8n bra. Egen hosting ger obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det är ganska flexibelt. Du kan ändra schemat i Scheduled Run Trigger, justera hur många objekt du försöker per körning i Batch Video Iterator eller byta ut blandningslogiken om du vill ha strikt ordning i stället. Många team lägger också till extra kolumner i Google Sheets (som kampanj, produkt eller “upphör”) och bygger sedan ut Posted Status Gate för att filtrera vad som är aktuellt den dagen.
Oftast beror det på saknade behörigheter i din Meta-app eller en long-lived access token som löpt ut. Dubbelkolla att du har gett instagram_basic, instagram_content_publish, pages_show_list och pages_read_engagement, och uppdatera sedan autentiseringsuppgiften som används i publiceringssteget. Om containern skapas men publiceringen misslyckas är video-URL:en nästa misstänkta: den måste vara en direkt, publikt åtkomlig länk till videofilen, inte en förhandsvisningslänk från Google Drive/Dropbox.
I praktiken kör de flesta team det som “en Story per dag”, vilket är sweet spot för konsekvens. I n8n Cloud beror gränsen på planens antal körningar; i self-hosted n8n beror det mest på din server och hur ofta Instagram kräver extra bearbetningskontroller. Om du försöker publicera många Stories i en körning kan du räkna med fler vänta-och-försök-igen-cykler eftersom Instagrams mediebearbetning är flaskhalsen, inte Google Sheets.
Ofta, ja. Det här arbetsflödet bygger på några saker som är enklare att styra i n8n: loopa genom en kö, kontrollera en “publicerad”-flagga, försöka igen med väntetider medan Instagram bearbetar media och uppdatera arket som logg. Zapier/Make kan göra delar av det, men flerstegs-retries och köhantering tenderar att bli klumpigt (och kan bli dyrt när antalet tasks drar iväg). n8n ger dig också möjligheten till egen hosting, vilket spelar roll när du vill kunna köra obegränsat. Om du bara gör en enkel “ny rad → publicera en gång”-setup kan Zapier eller Make kännas snabbare. Prata med en automationsexpert om du vill ha en snabb rekommendation.
När detta är live sköter dina Stories sig själva och ditt kalkylark blir loggen som alla litar på. Sätt upp det en gång, och få tillbaka dina morgnar.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.