Du sätter dig för att “bara posta på X”, och plötsligt har det gått 40 minuter. Utkastet är halvskrivet, bilden saknas och du har fortfarande inget enkelt sätt att hålla koll på vad som redan har publicerats.
Det här är den typen av röra som irriterar social media managers varje dag, men grundare och byråchefer känner av det också. En Sheets Blotato-kö gör innehåll till ett repeterbart system: utkast dyker upp enligt schema, publiceras pålitligt och dupliceras inte.
Det här arbetsflödet använder n8n för att generera inlägg med AI, lagra dem i Google Sheets som en kö, valfritt bifoga en bild från Google Drive, publicera via Blotato och sedan mejla en bekräftelse så att du slipper gissa.
Så fungerar automatiseringen
Se hur det här löser problemet:
n8n Workflow Template: Google Sheets + Blotato: X-inlägg köas och publiceras
flowchart LR
subgraph sg0["Trigger: Every 4 Hours Flow"]
direction LR
n0@{ icon: "mdi:brain", form: "rounded", label: "LLM: OpenRouter", pos: "b", h: 48 }
n1@{ icon: "mdi:robot", form: "rounded", label: "AI: Generate X Post Content", pos: "b", h: 48 }
n2@{ icon: "mdi:robot", form: "rounded", label: "Parser: Format AI Output to ..", pos: "b", h: 48 }
n3@{ icon: "mdi:database", form: "rounded", label: "Google Sheets: Save Generate..", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Blotato: Post Text-Only Tweet", pos: "b", h: 48 }
n5@{ icon: "mdi:message-outline", form: "rounded", label: "Gmail: Send 'Post Complete' ..", pos: "b", h: 48 }
n6@{ icon: "mdi:database", form: "rounded", label: "Google Sheets: Update Post S..", pos: "b", h: 48 }
n7@{ icon: "mdi:database", form: "rounded", label: "Google Sheets: Get 'Not Post..", pos: "b", h: 48 }
n8@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If: Does Post Need an Image?", pos: "b", h: 48 }
n9@{ icon: "mdi:cog", form: "rounded", label: "Google Drive: Find Image by ..", pos: "b", h: 48 }
n10@{ icon: "mdi:cog", form: "rounded", label: "Blotato: Post Tweet with Image", pos: "b", h: 48 }
n11@{ icon: "mdi:cog", form: "rounded", label: "Google Drive: Download Image..", pos: "b", h: 48 }
n12@{ icon: "mdi:cog", form: "rounded", label: "Blotato: Upload Image Media", pos: "b", h: 48 }
n13["<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/>Code: Clean Up Post Text"]
n14@{ icon: "mdi:play-circle", form: "rounded", label: "Trigger: Every 4 Hours", pos: "b", h: 48 }
n0 -.-> n1
n14 --> n1
n13 --> n3
n1 --> n13
n12 --> n10
n8 --> n9
n8 --> n4
n4 --> n5
n10 --> n5
n2 -.-> n1
n11 --> n12
n5 --> n6
n9 --> n11
n7 --> n8
n3 --> n7
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 n14 trigger
class n1,n2 ai
class n0 aiModel
class n8 decision
class n3,n6,n7 database
class n13 code
classDef customIcon fill:none,stroke:none
class n13 customIcon
Utmaningen: att vara konsekvent utan att behöva vakta X
Att posta konsekvent på X låter enkelt tills du försöker göra det i mer än en vecka. Du behöver idéer, en konsekvent tonalitet och en plats att lägga utkast så att de inte försvinner i anteckningsappar och halvfärdiga flikar. Sedan kommer “postade vi det här redan?”-ögonblicket, och det är ärligt talat där många team börjar slösa tid. Om du ibland vill ha bilder tillkommer ytterligare ett litet moment: hitta rätt fil, ladda upp den och säkerställa att den matchar inlägget. Inget av det här är svårt. Det är bara konstant, och det stjäl fokus från det faktiska marknadsarbetet.
Friktionen växer snabbt. Här är var det faller isär i verkligheten.
- Utkast skrivs på olika ställen, så du tappar koll på vad som är schemalagt jämfört med vad som bara är en idé.
- Manuell publicering gör att man hoppar över dagar, och “jag gör det senare” blir till tystnad på kontot.
- Utan ett statusfält uppstår dubbletter, särskilt när fler än en person hanterar samma konto.
- Bildinlägg tar längre tid eftersom du måste matcha rätt kreativt material till rätt ämne varje gång.
Lösningen: en AI-innehållskö i Sheets som publicerar via Blotato
Det här n8n-flödet delar upp jobbet i två stabila loopar: generera innehåll, sedan publicera innehåll. Var fjärde timme kör en schemalagd trigger en AI-agent (via OpenRouter) som skriver ett inlägg i en fördefinierad persona, med dina regler inbyggda i prompten. Ett litet kodsteg trimmar och rensar texten så att den avslutas naturligt (inga avklippta meningar). Utkastet läggs sedan till i Google Sheets med en tydlig status som “Ej publicerat”, vilket blir din levande kö. Därefter hämtar samma automation en väntande rad, avgör om den behöver en bild, hämtar matchande fil från Google Drive vid behov och publicerar via Blotato. Efter publicering skickas en bekräftelse via e-post och raden markeras som “Slutförd”, så att den inte publiceras två gånger.
Flödet startar enligt schema, skapar ett utkast och sparar det i Sheets. Sedan hämtar det en enskild rad med “Ej publicerat”, bifogar valfritt media från Drive och publicerar till X via Blotato. Till sist skickar Gmail “nu är det live”-meddelandet och statusen i arket ändras till “Slutförd”.
Vad som förändras: före vs. efter
| Det här tar bort | Effekten du märker |
|---|---|
|
|
Effekt i praktiken
Säg att du publicerar 2 inlägg per dag. Manuellt kanske du lägger cirka 10 minuter på att skriva, 5 minuter på att hitta eller exportera en bild och ytterligare 5 minuter på att publicera och dubbelkolla att du inte upprepar dig. Det är ungefär 40 minuter per dag. Med det här flödet handlar det mest om att granska kön i Google Sheet och ibland lägga till en bildfil i Drive, vilket är närmare 5 minuter per dag, plus bakgrundsprocessning som du inte behöver vakta. Över en vecka blir det några timmar tillbaka utan att sänka publiceringsfrekvensen.
Krav
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att lagra utkast och statusar.
- Google Drive för valfria inläggsbilder per kategori.
- Blotato-konto för att publicera inlägg till X.
- Gmail för att skicka publiceringsbekräftelser.
- OpenRouter API-nyckel (hämta den i din OpenRouter-dashboard).
Kunskapsnivå: Mellan. Du kopplar konton, klistrar in en API-nyckel och justerar en prompt samt några fältmappningar.
Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).
Flödets gång
En tidsstyrd trigger kör automatiskt. Schemat är satt till var fjärde timme, så att innehållsproduktionen håller jämn nivå utan att någon behöver “komma ihåg” att göra det.
AI genererar ett persona-baserat utkast. Agenten, som drivs av OpenRouter, skriver inlägget med din systemprompt, och en strukturerad parser gör att output blir förutsägbar (så att den inte spårar ur i konstiga format).
Utkastet blir ett köobjekt. n8n lägger till inlägget i Google Sheets med statusen “Ej publicerat”, och hämtar sedan en enskild väntande rad för publicering så att du inte trycker ut en hel vecka på en gång.
Publicering sker med eller utan bild. En IF-kontroll läser inläggskategorin och antingen hämtar en matchande fil från Google Drive och laddar upp den till Blotato, eller publicerar endast text. Gmail skickar en bekräftelse och raden markeras som “Slutförd”.
Du kan enkelt ändra publiceringsfrekvensen för att matcha din takt, eller justera persona-prompten för att passa ett annat erbjudande. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera triggern för schemalagt intervall
Ställ in arbetsflödets körschema så att inlägg genereras med ett fast intervall.
- Lägg till och öppna Scheduled Interval Trigger.
- Ställ in intervallregeln så att den körs var 4:e timme genom att konfigurera rule → interval → field till
hoursoch hoursInterval till4. - Koppla Scheduled Interval Trigger till Compose X Post Draft.
Steg 2: Anslut Google Sheets
Konfigurera kalkylarket för att lagra utkast, hämta väntande inlägg och markera när de är klara.
- Öppna Append Draft to Sheet och ställ in Operation till
append. - Välj målkalkylark genom att ställa in Document till
[YOUR_ID]och Sheet tillX Post Management. - Mappa kolumner i Append Draft to Sheet till:
- Text →
{{ $json.output.post.text }} - Theme →
{{ $json.output.theme }} - Status →
Not Posted - Target →
{{ $json.output.target }} - Category →
{{ $json.output.post.category }} - PostDate →
{{ $now }}
- Text →
- Öppna Retrieve Pending Post Row och ställ in filtret till att Status är lika med
Not Postedmed returnFirstMatch aktiverat. - Öppna Mark Sheet Row Completed, ställ in Operation till
appendOrUpdateoch mappa:- Status →
Completed - PostDate →
{{ $('Append Draft to Sheet').item.json['PostDate'] }}
- Status →
- Autentisering krävs: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter till Append Draft to Sheet, Retrieve Pending Post Row och Mark Sheet Row Completed.
Steg 3: Konfigurera AI-utkast och rensning
Generera ett strukturerat AI-inlägg, parsa det till JSON och rensa utdata-texten innan lagring.
- Öppna Compose X Post Draft och ställ in Text till
Please create a post using emojis.. - Låt Prompt Type vara
defineoch säkerställ att hasOutputParser är aktiverat. - Verifiera att OpenRouter Chat Model är ansluten som språkmodell för Compose X Post Draft.
- Autentisering krävs: Anslut era openRouterApi-inloggningsuppgifter till OpenRouter Chat Model.
- Bekräfta att Structured Output Parser är ansluten till Compose X Post Draft som output parser (använd det medföljande JSON-schemaexemplet). Autentisering för parsern ska läggas på den överordnade noden (OpenRouter Chat Model), inte på parsern.
- Öppna Trim Post Text och klistra in den medföljande JavaScript-koden i jsCode för att korta ned inlägget vid meningsavslutande skiljetecken.
- Koppla Compose X Post Draft → Trim Post Text → Append Draft to Sheet.
Steg 4: Konfigurera bildrouting och hämtning från Drive
Routa inlägg som kräver evidensbilder och hämta en matchande fil från Google Drive.
- Öppna Check If Image Needed och ställ in villkoret till:
- Left Value →
{{ $json['Category'] }} - Operator →
contains - Right Value →
Evidence-based
- Left Value →
- Koppla Retrieve Pending Post Row till Check If Image Needed.
- Konfigurera Locate Image in Drive med Resource
fileFolder, Limit1och Query String{{ $json['Category'] }}. Välj mappen[YOUR_ID](For X Posts). - Konfigurera Fetch Image File med Operation
downloadoch File ID{{ $json.id }}. - Autentisering krävs: Anslut era googleDriveOAuth2Api-inloggningsuppgifter till Locate Image in Drive och Fetch Image File.
- Check If Image Needed ger utdata till både Locate Image in Drive och Publish Text Tweet parallellt (bildbaserad väg vs. text-only-väg).
Steg 5: Konfigurera publicering och notifieringar
Ladda upp media till Blotato för bildinlägg, publicera till X (Twitter), notifiera via e-post och markera raden som slutförd.
- Öppna Upload Media to Blotato och ställ in Resource till
mediamed Use Binary Data aktiverat. - Öppna Publish Tweet with Image och ställ in:
- Platform →
twitter - Post Content Text →
{{ $('Retrieve Pending Post Row').item.json['Text'] }} - Post Content Media URLs →
{{ $json.url }}
- Platform →
- Öppna Publish Text Tweet och ställ in Platform till
twitteroch Post Content Text till{{ $json['Text'] }}. - Öppna Email Post Confirmation och ställ in:
- Send To →
[YOUR_EMAIL] - Subject →
Today's Post Has Been Published - Message →
The scheduled post has been successfully published to X (Twitter).
- Send To →
- Koppla både Publish Text Tweet och Publish Tweet with Image till Email Post Confirmation, och koppla sedan Email Post Confirmation till Mark Sheet Row Completed.
- Autentisering krävs: Anslut era blotatoApi-inloggningsuppgifter till Upload Media to Blotato, Publish Tweet with Image och Publish Text Tweet.
- Autentisering krävs: Anslut era gmailOAuth2-inloggningsuppgifter till Email Post Confirmation.
⚠️ Vanlig fallgrop: Om er Drive-mapp inte innehåller filer som matchar exakt Category-texten (t.ex. Evidence-based_Graph) kommer Locate Image in Drive inte att returnera något och bildinlägg misslyckas. Säkerställ att filnamn eller metadata matchar kategorivärdena.
Steg 6: Testa och aktivera ert arbetsflöde
Kör ett manuellt test för att verifiera utkast, publicering och uppdateringar i kalkylarket innan ni går live.
- Klicka på Execute Workflow för att köra ett manuellt test från Scheduled Interval Trigger.
- Bekräfta att Append Draft to Sheet lägger till en rad med Status satt till
Not Postedoch ett ifyllt Text-fält. - Verifiera att antingen Publish Text Tweet eller Publish Tweet with Image publicerar till X (Twitter) och att Email Post Confirmation skickar e-postmeddelandet.
- Kontrollera att Mark Sheet Row Completed uppdaterar samma PostDate-rad till
Completed. - När allt är validerat, växla arbetsflödet till Active för att köra var 4:e timme.
Se upp för
- Google Sheets-inloggningar kan gå ut eller kräva specifika behörigheter. Om saker slutar fungera, börja med att kontrollera n8n:s panel för inloggningsuppgifter och Google-kontots åtkomst till målarbetsboken.
- Om du använder Wait-noder eller extern rendering varierar processtider. Öka väntetiden om efterföljande noder misslyckas på grund av tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in din varumärkesröst tidigt, annars kommer du att redigera output i all evighet.
Vanliga frågor
Ungefär en timme om dina konton och API-nycklar är klara.
Ja. Ingen kodning krävs, men någon behöver vara bekväm med att koppla Google-appar och klistra in en API-nyckel.
Ja. n8n har ett gratis alternativ för egen hosting och en gratis testperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in OpenRouter API-användning, som vanligtvis är några cent per generering.
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 hanterar n8n bra. Egen hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Det kan du. De flesta anpassningar sker i AI-noden “Compose X Post Draft” (persona, erbjudande, ton), plus vilka Google Sheets-kolumner du sparar (kategori, status, kampanj, URL). Om du vill ha godkännanden, skicka den skapade raden till Slack innan steget “Retrieve Pending Post Row” och publicera först efter att någon reagerar eller uppdaterar en kolumn “Godkänd”. Du kan också byta ut OpenRouter mot en annan modellleverantör genom att ändra chatmodell-noden, medan resten av kölogiken förblir densamma.
Oftast beror det på utgångna Google-inloggningar eller att det kopplade kontot inte längre har åtkomst till arket. Autentisera Google Sheets på nytt i n8n och bekräfta sedan att kalkylarkets och flikens namn fortfarande matchar det som noderna refererar till. Om det bara fallerar ibland, kontrollera kvotgränser eller om det sker konfliktande redigeringar i arket medan flödet kör.
Den skalar till mycket publicering så länge din n8n-plan och dina API-kvoter klarar det.
Ofta, ja, om du bryr dig om kontroll och kölogik. Det här flödet använder förgrening (bild vs. text), statusuppdateringar i Sheets för att förhindra dubbletter och en publiceringssekvens med flera noder via en community Blotato-nod, vilket är den typ av upplägg som blir klumpigt eller dyrt i många “tvåstegs”-verktyg. n8n låter dig dessutom köra egen hosting, så högre volym betyder inte automatiskt högre avgifter. Zapier eller Make kan fortfarande fungera bra för väldigt enkla publiceringsflöden, särskilt om du inte använder en AI-agent eller en kö. Om du är osäker, prata med en automationsexpert så tar vi fram det billigaste, pålitliga alternativet för din takt.
När det här väl rullar slutar din publiceringstakt att vara beroende av någons kalender. Flödet hanterar kön, publiceringen och uppföljningen så att du kan fokusera på kampanjerna bakom inläggen.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.