Du sätter dig för att ”skriva ett snabbt inlägg”, och plötsligt jonglerar du dispositioner, bildletande, formatering, uppladdningar och den där sista finslipningen som alltid tar längre tid än den borde.
Content marketers känner av det här när kalendern är full. Grundare känner det när produktleverans är viktigare än att skriva om den. Till och med utvecklare som försöker dela lärdomar springer in i samma vägg. Den här Dev.to-automationen för utkast förvandlar en enkel idé i Google Sheets till ett utkast som är redo för granskning, komplett med bilder.
Nedan ser du hur flödet går från ”ämne i ett kalkylark” till ”Dev.to-utkast”, vad du behöver för att köra det och var de största tidsvinsterna finns.
Så fungerar den här automatiseringen
Hela n8n-workflowen, från trigger till slutresultat:
n8n Workflow Template: Google Sheets till Dev.to-utkast, publicera oftare
flowchart LR
subgraph sg0["When clicking ‘Execute workflow’ Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Execute workf..", pos: "b", h: 48 }
n1@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n2@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>Post image Cloudinary2"]
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Input Image", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Output Image", 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/>Post article on dev.to"]
n9@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser1", pos: "b", h: 48 }
n10@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model4", pos: "b", h: 48 }
n11@{ icon: "mdi:cog", form: "rounded", label: "Aggregate", pos: "b", h: 48 }
n12@{ icon: "mdi:robot", form: "rounded", label: "Article wrtiter", pos: "b", h: 48 }
n13@{ icon: "mdi:robot", form: "rounded", label: "Generate an image1", pos: "b", h: 48 }
n14@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model2", pos: "b", h: 48 }
n15@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model1", pos: "b", h: 48 }
n16@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser2", pos: "b", h: 48 }
n17@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set input data/credintenials", pos: "b", h: 48 }
n19@{ icon: "mdi:database", form: "rounded", label: "Get data form sheet", pos: "b", h: 48 }
n20@{ icon: "mdi:cog", form: "rounded", label: "Limit", pos: "b", h: 48 }
n21@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n20 --> n17
n1 --> n3
n11 --> n12
n3 --> n4
n12 --> n8
n4 --> n11
n4 --> n6
n6 --> n13
n21 --> n19
n7 --> n4
n2 -.-> n1
n13 --> n5
n15 -.-> n12
n14 -.-> n16
n10 -.-> n9
n19 --> n20
n5 --> n7
n9 -.-> n1
n16 -.-> n12
n17 --> n1
n0 --> n17
end
subgraph sg1["Generate an image Flow"]
direction LR
n18@{ icon: "mdi:robot", form: "rounded", label: "Generate an image", pos: "b", h: 48 }
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,n21 trigger
class n1,n9,n12,n13,n16,n18 ai
class n2,n10,n14,n15 aiModel
class n19 database
class n5,n8 api
class n19 disabled
class n20 disabled
class n21 disabled
class n18 disabled
classDef customIcon fill:none,stroke:none
class n5,n8 customIcon
Problemet: att publicera konsekvent kräver för många microsteg
De flesta team har inte brist på idéer. De har problem med allt som händer efter idén. Du öppnar ett dokument, skissar en disposition, skriver ett utkast, letar efter visuellt material, laddar upp bilder någonstans publikt och formaterar sedan om allt till strukturerad Markdown som Dev.to inte förstör. Och det är en bra dag. En stressig vecka blir utkast halvklarna, målet ”vi borde publicera mer” dör tyst, och dina bästa insikter lämnar aldrig huvudet (eller backloggen).
Det drar snabbt iväg. Här är var det oftast fallerar.
- Ett enda inlägg kan sluka cirka 2 timmar när du räknar in disposition, formatering och bilder.
- Bilder är den tysta tidstjuven, eftersom du behöver något relevant, hostat och korrekt placerat i artikeln.
- När utkast ligger utspridda i Docs, anteckningar och slumpmässiga mappar är det svårt att lämna över eller granska snabbt.
- Du hamnar i publiceringsryck, vilket gör att SEO och publiktillväxt känns ojämn och svår att förutsäga.
Lösningen: Google Sheets → AI-utkast → Dev.to (med Cloudinary-bilder)
Den här n8n-workflowen gör din content pipeline till något du faktiskt kan hålla jämna steg med. Den hämtar ett ämne från Google Sheets (eller använder manuell input när du testar), sedan planerar en AI-”orkestrerare” artikelstrukturen och skriver utkastet i strukturerad Markdown. Under vägen skapar den bildprompter, genererar matchande visuellt material med Gemini (med ett äldre alternativ för OpenAI-bilder), och laddar upp bilderna till Cloudinary så att de direkt är hostade och går att använda. Till sist publicerar den färdiga artikeln som ett utkast på Dev.to, så du får det bästa av två världar: hastighet plus mänsklig granskning innan något går live. Du behöver inte längre sy ihop verktyg. Workflowen gör ihopsyningen åt dig.
Workflowen startar med en schemalagd trigger eller en manuell körning. AI skapar en disposition, sektioner och bildidéer, och producerar sedan hela Markdownen med bilder inbäddade på ett naturligt sätt. Dev.to tar emot ett utkast du kan skumma igenom, justera och publicera när du är redo.
Det här får du: automatisering vs. resultat
| Det den här workflowen automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du vill publicera 3 Dev.to-inlägg per vecka och att du sparar idéer i ett Google-ark. Manuellt, om varje inlägg tar cirka 2 timmar när du räknar in disposition, utkastskrivning, att hitta 2 bilder, ladda upp dem och formatera för Dev.to, blir det ungefär 6 timmar i veckan. Med den här workflowen tar det cirka 2 minuter att lägga till en idé, sedan väntar du kanske 15 minuter på AI + bildgenerering och Cloudinary-uppladdningar. Du granskar och redigerar fortfarande, men jobbet med ”tom sida” är i princip borta.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger funkar bra)
- Google Sheets för att lagra och hämta din ämnesbacklogg
- Dev.to för att ta emot utkast via API
- Cloudinary för att hosta genererade bilder publikt
- OpenAI API-nyckel (hämta den i din OpenAI API-dashboard)
- Gemini API-nyckel (hämta den i Google AI Studio)
- Dev.to API-nyckel (hämta den under Dev.to Settings → Account)
Nivå: Medel. Du kopplar några konton, klistrar in API-nycklar och testar med en manuell körning innan du schemalägger.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett schema (eller en manuell körning) startar allt. Du kan köra det vid begäran med Manual Execution Start, eller låta Scheduled Automation Trigger hämta idéer löpande så att utkast dyker upp utan att du behöver tänka på det.
Workflowen hämtar och begränsar rader från arket. n8n hämtar rader från Google Sheets och tillämpar sedan en postbegränsning så att du kan bearbeta en hanterbar batch (till exempel en idé per körning) i stället för att råka generera tio utkast på en gång.
AI planerar, skriver och koordinerar bildgenerering. AI Orchestrator delar upp jobbet, tolkar strukturerade utdata (disposition, mål per sektion, bildförslag) och bygger ett strukturerat artikelutkast i Markdown. För visuellt material genererar den en bildvariant med Gemini (med en äldre nod för OpenAI-bildgenerering som alternativ) och förbereder sedan filen för uppladdning.
Bilderna går till Cloudinary, sedan går utkastet till Dev.to. Workflowen laddar upp varje genererad bild via en HTTP-förfrågan till Cloudinary, fångar den hostade URL:en och väver in URL:erna tillbaka i artikeln. När allt är ihopmonterat skapar en ny HTTP-förfrågan Dev.to-inlägget som utkast.
Du kan enkelt ändra indatakällan från Google Sheets till en webhook eller ett formulär beroende på dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera manuella och schemalagda triggers
Konfigurera hur arbetsflödet startas för manuella körningar och valfri schemalagd automation.
- Bekräfta att Manual Execution Start finns med för att möjliggöra körningar på begäran från editorn.
- Om ni vill schemalägga publicering, aktivera Scheduled Automation Trigger (för närvarande inaktiverad) och konfigurera dess schema.
- Verifiera att triggerflödet går vidare till Map Input Credentials från Manual Execution Start och från Scheduled Automation Trigger om den är aktiverad.
Steg 2: Anslut Google Sheets (valfri källa)
Om ni vill hämta innehållsidéer från ett kalkylark, aktivera sheet-noderna och konfigurera dem innan AI-pipelinen startar.
- Aktivera Retrieve Sheet Data (för närvarande inaktiverad) för att hämta poster från Google Sheets.
- Inloggningsuppgift krävs: Anslut era Google Sheets-inloggningsuppgifter i Retrieve Sheet Data.
- Aktivera Apply Record Limit (för närvarande inaktiverad) för att styra hur många poster som flödar in i arbetsflödet.
- Bekräfta körordningen: Scheduled Automation Trigger → Retrieve Sheet Data → Apply Record Limit → Map Input Credentials.
Steg 3: Sätt upp AI-orkestratorn och tolkningskedjan
Konfigurera AI-ryggraden som genererar strukturerade indata för innehåll och delar upp dem i itererbara objekt.
- Öppna Map Input Credentials för att mappa eller injicera eventuella API-nycklar eller körningsvärden som era AI-noder behöver.
- Konfigurera AI Orchestrator som den centrala agenten för planering av innehållsgenerering.
- Säkerställ att OpenAI Dialogue Model är ansluten till AI Orchestrator som språkmodell.
- Säkerställ att Structured Parser Alpha är ansluten som utdata-parser för AI Orchestrator.
- Inloggningsuppgift krävs: Anslut era OpenAI-inloggningsuppgifter i OpenAI Dialogue Model (inte i Structured Parser Alpha).
- Behåll flödet från AI Orchestrator → Divide Items → Iterate Records intakt för postbearbetning.
Steg 4: Konfigurera bildgenerering och uppladdning till moln
Den här grenen genererar en bild, laddar upp den och matar tillbaka den resulterande URL:en i postloopen.
- Konfigurera Assign Input Image för att ställa in eventuella prompts eller seed-data för bild som behövs för genereringen.
- Sätt upp Generate Image Variant för bildskapande.
- Inloggningsuppgift krävs: Anslut era Google Gemini-inloggningsuppgifter i Generate Image Variant.
- Konfigurera Upload Image to Cloudinary för att skicka den genererade bilden till Cloudinary.
- Inloggningsuppgift krävs: Lägg till autentisering i Upload Image to Cloudinary (HTTP Request) så att den matchar er Cloudinary-API-metod.
- Använd Assign Output Image för att mappa Cloudinary-URL:en tillbaka in i arbetsflödet innan ni återgår till Iterate Records.
Steg 5: Sätt ihop artikeln och publicera
Kombinera AI-genererade resultat, skapa ett slutligt utkast och publicera det på Dev.to.
- Säkerställ att Iterate Records matar både Combine Results och Assign Input Image så att dataaggregering och bildgenerering körs parallellt.
- Combine Results ska aggregera postutdata innan utkastet skapas.
- Konfigurera Compose Article Draft för att bygga det slutliga artikelinnehållet.
- Bekräfta att OpenAI Chat Model Gamma är ansluten till Compose Article Draft som språkmodell.
- Bekräfta att Structured Parser Beta är ansluten till Compose Article Draft som utdata-parser, och att OpenAI Chat Model Beta driver den parsern.
- Inloggningsuppgift krävs: Anslut era OpenAI-inloggningsuppgifter i OpenAI Chat Model Gamma och OpenAI Chat Model Beta.
- Konfigurera Publish Article to Devto med nödvändiga HTTP Request-inställningar för att skapa ett inlägg på Dev.to.
- Inloggningsuppgift krävs: Lägg till autentisering i Publish Article to Devto (HTTP Request) med er Dev.to API-nyckel eller token.
Steg 6: Testa och aktivera ert arbetsflöde
Kör ett komplett test för att validera publiceringskedjan från början till slut innan ni schemalägger den.
- Klicka på Execute Workflow från Manual Execution Start för att köra ett manuellt test.
- Verifiera att objekt passerar genom AI Orchestrator, Divide Items och Iterate Records utan fel.
- Bekräfta att Upload Image to Cloudinary returnerar en giltig bild-URL och att Assign Output Image mappar den in i posten.
- Kontrollera att Publish Article to Devto skapar ett utkast eller en publicerad artikel i ert Dev.to-konto.
- När ni är nöjda, aktivera arbetsflödet och (valfritt) aktivera Scheduled Automation Trigger för produktionskörningar.
Vanliga fallgropar
- Google Sheets-inloggningar kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera, kolla först n8n-sidan Credentials och åtkomsten för det kopplade Google-kontot.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om noder längre fram fallerar på tomma svar.
- Cloudinary-uppladdningar misslyckas ofta på grund av preset-inställningar. Säkerställ att din unsigned upload preset finns, matchar preset-namnet i HTTP Request-noden och tillåter de format du skickar.
Vanliga frågor
Cirka 30 minuter om dina API-nycklar är redo.
Nej. Du kommer mest att klistra in API-nycklar och mappa några fält. ”Logiken” är redan inbyggd i workflowen.
Ja. n8n har ett gratis self-hosted-alternativ 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 OpenAI- och Gemini-API-användning (oftast några cent per utkast) samt Cloudinary-lagring/bandbredd.
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 klarar n8n bra. Self-hosting ger obegränsade körningar men kräver grundläggande serverhantering.
Ja, men då byter du publiceringssteget. Ersätt HTTP Request-noden ”Publish Article to Devto” med en request som skapar ett WordPress-utkast, och mappa titel, innehåll, taggar och det Markdown/HTML-format du föredrar. Många team justerar också prompten ”Compose Article Draft” så att den skriver mer WordPress-vänliga sektioner (kortare intros, fler mellanrubriker). Vill du ha godkännanden kan du lägga till ett Gmail- eller Slack-steg innan utkastet publiceras.
Oftast beror det på en ogiltig eller saknad Dev.to API-nyckel i Publish HTTP Request-noden. Dubbelkolla request-headers och bekräfta sedan att nyckeln fortfarande är aktiv i dina kontoinställningar på Dev.to. Om det bara fallerar ibland kan även rate limits eller payload-storlek (väldigt långa utkast) trigga fel.
Gott och väl för ett litet team. I n8n Cloud är taket främst dina månatliga körningar, och på self-hosted handlar det mest om serverresurser plus API-rate limits. I praktiken kör de flesta detta 1–10 gånger per dag och det håller sig stabilt.
Ofta, ja. Den här workflowen bygger på AI-generering i flera steg, strukturerad parsning och batchning av bilder, vilket är där Zapier-scenarier kan bli dyra och Make kan bli pilligt. n8n ger dig också branching och kontroll utan att ta betalt per ministeg, och du kan self-hosta om du vill ha obegränsade körningar. Om du bara behöver ”rad i arket → skapa ett tomt Dev.to-utkast” är Zapier eller Make helt okej. Om du vill ha hela pipelinen (disposition, utkast, bilder, uppladdning, publicera-som-utkast) är n8n oftast det smidigare valet. Prata med en automationsexpert om du vill ha en snabb rekommendation för din setup.
När det här väl rullar slutar ditt kalkylark vara en kyrkogård för ”någon gång”-idéer. Det blir utkast du faktiskt kan publicera.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.