Ditt nyckelordsark är fullt. Din Webflow CMS är tom. Och arbetet däremellan är ett slit: prompts, dispositioner, utkast, bilder, formatering, uppladdningar och sedan en rörig “vad är klart?”-kontroll i olika flikar.
Det är här Sheets Webflow-automatisering gör verklig nytta. Content marketers märker kön först, men SEO-specialister och små team som driver affiliate- eller tjänstesajter stöter på samma flaskhals. Du förvandlar ett strukturerat Google Sheet till Webflow-utkast som är formaterade, bildklara och loggade för granskning.
Nedan ser du hur flödet beter sig, vad det löser och vad du behöver för att köra det stabilt i stor skala.
Så fungerar den här automatiseringen
Se hur detta löser problemet:
n8n Workflow Template: Google Sheets till Webflow, seo-utkast att granska
flowchart LR
subgraph sg0["Schedule Flow"]
direction LR
n0@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n1@{ icon: "mdi:memory", form: "rounded", label: "Simple Memory", pos: "b", h: 48 }
n2@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n3@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n4@{ icon: "mdi:database", form: "rounded", label: "Load Pending Keywords", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Content Quality Check", pos: "b", h: 48 }
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/code.svg' width='40' height='40' /></div><br/>Process Agent Output"]
n8@{ icon: "mdi:robot", form: "rounded", label: "Expand Content", pos: "b", h: 48 }
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/code.svg' width='40' height='40' /></div><br/>Format Agent Output"]
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/merge.svg' width='40' height='40' /></div><br/>Merge Content Paths"]
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/markdown.dark.svg' width='40' height='40' /></div><br/>Convert to HTML"]
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/webflow.svg' width='40' height='40' /></div><br/>Create New Post"]
n13@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check Success", pos: "b", h: 48 }
n14@{ icon: "mdi:database", form: "rounded", label: "Mark as Complete", pos: "b", h: 48 }
n15["<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/>Log Error"]
n16@{ icon: "mdi:database", form: "rounded", label: "Save Success Results", pos: "b", h: 48 }
n17@{ icon: "mdi:database", form: "rounded", label: "Save Error", pos: "b", h: 48 }
n18@{ icon: "mdi:cog", form: "rounded", label: "Wait a few seconds", pos: "b", h: 48 }
n19@{ icon: "mdi:cog", form: "rounded", label: "No Keywords Available", pos: "b", h: 48 }
n20@{ icon: "mdi:wrench", form: "rounded", label: "AI Image Generation Tool", pos: "b", h: 48 }
n0 --> n7
n15 --> n17
n17 --> n18
n13 --> n14
n13 --> n15
n1 -.-> n0
n8 --> n9
n11 --> n12
n12 --> n13
n5 --> n19
n5 --> n0
n14 --> n16
n3 --> n4
n2 -.-> n0
n18 --> n5
n9 --> n10
n10 --> n11
n7 --> n6
n16 --> n18
n6 --> n10
n6 --> n8
n4 --> n5
n20 -.-> n0
end
subgraph sg1["When Executed by Another Workflow Flow"]
direction LR
n21@{ icon: "mdi:play-circle", form: "rounded", label: "When Executed by Another Wor..", pos: "b", h: 48 }
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/code.svg' width='40' height='40' /></div><br/>Process Image Response"]
n23@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check Image Generation", 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/code.svg' width='40' height='40' /></div><br/>Handle Generation Failure"]
n25@{ icon: "mdi:swap-vertical", form: "rounded", label: "Result", pos: "b", h: 48 }
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/code.svg' width='40' height='40' /></div><br/>Convert Base64 to Binary"]
n27@{ icon: "mdi:cog", form: "rounded", label: "Upload to Google Drive", pos: "b", h: 48 }
n28@{ icon: "mdi:cog", form: "rounded", label: "Get Download Links", pos: "b", h: 48 }
n29["<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/>Generate Image"]
n29 --> n22
n28 --> n25
n23 --> n24
n23 --> n26
n22 --> n23
n27 --> n28
n26 --> n27
n21 --> n29
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 n3,n21 trigger
class n0,n8 ai
class n2 aiModel
class n20 ai
class n1 ai
class n6,n13,n23 decision
class n4,n14,n16,n17 database
class n29 api
class n7,n9,n15,n22,n24,n26 code
classDef customIcon fill:none,stroke:none
class n7,n9,n10,n11,n12,n15,n22,n24,n26,n29 customIcon
Utmaningen: förvandla nyckelordslistor till Webflow-utkast (utan att förlora hela veckan)
Bulk-SEO låter enkelt tills det är du som ska göra jobbet. Du börjar med en prydlig lista med nyckelord och slugs, och sedan lägger du timmar på att få ut utkast från AI, kontrollera ordantal, skriva om kantiga avsnitt, konvertera markdown till korrekt formaterad HTML, ta fram en användbar utvald bild, ladda upp den någonstans och till sist skapa Webflow CMS-objektet. När du är klar är du halvt orolig att något skapade fel i det tysta: fel slug, saknad metabeskrivning, dubbelt inlägg eller en bildlänk som inte laddar. Och eftersom processen är utspridd över flera verktyg tappar du dessutom koll på vad som lyckades, vad som misslyckades och vad som aldrig kördes alls.
Det drar snabbt iväg. Här är var det oftast faller isär.
- Att copy-pasta utkast i Webflow CMS-fält leder lätt till formateringsproblem och slumpmässiga missar, särskilt när du gör det dussintals gånger.
- AI-utdata är ojämn, så du kör om prompts bara för att nå en minsta längd eller få med grundläggande on-page SEO-avsnitt.
- Utvalda bilder blir ett eget miniprojekt, eftersom “generera en bild” inte är samma sak som “lagra den, länka den och kunna återanvända den senare”.
- Utan ordentlig loggning försvinner fel i bruset, och du märker det först när trafiken uteblir två veckor senare.
Lösningen: generera Webflow-utkast från Google Sheets (med AI-bilder + loggning)
Det här flödet tar din nyckelordslista i Google Sheets och gör varje rad till ett Webflow CMS-utkast som är redo för granskning. Det startar enligt schema, hämtar “pending”-nyckelord från en dedikerad flik keywords och bearbetar dem i batchar så att du inte överbelastar API:er eller Webflow på en gång. För varje nyckelord skapar en AI-agent en SEO-fokuserad artikel (designad att landa runt 600+ ord). Om utkastet blir för kort expanderar flödet det automatiskt i stället för att lägga in ett tunt inlägg i din CMS. Samtidigt anropar det ett separat underflöde för bildgenerering (Gemini via en HTTP-förfrågan), laddar upp den resulterande bilden till Google Drive och returnerar en korrekt länk som du kan koppla till Webflow-objektet. Till sist konverterar det markdown till Webflow-vänlig HTML och skapar CMS-inlägget som ett utkast, samtidigt som det loggar lyckade körningar eller fel i separata spårningsflikar.
Flödet startar från en schemalagd trigger. Google Sheets ger strukturerade indata (nyckelord, slug och relaterade fält), AI genererar och validerar innehållet och Webflow tar emot ett formaterat utkast plus bild. Loggar skrivs tillbaka till Sheets så att du kan se vad som hände utan att gräva i körningshistorik.
Vad som förändras: före vs. efter
| Det här elimineras | Effekten du märker |
|---|---|
|
|
Praktisk effekt
Säg att du vill publicera 20 ortssidor den här veckan. Manuellt kan du lägga cirka 20 minuter per sida på att generera text, kontrollera längd, formatera, skapa ett Webflow-utkast och bifoga en bild, vilket blir ungefär 6–7 timmar totalt (och det är om inget skapar fel). Med det här flödet lägger du in 20 rader i Google Sheets och låter den schemalagda körningen hantera dem i batchar. Du granskar fortfarande utkasten, men skapandet är i princip hands-off och loggflikarna visar exakt vilka som kräver åtgärd.
Krav
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att lagra nyckelord och följa upp resultat.
- Webflow för att skapa CMS-utkast automatiskt.
- OpenAI API-nyckel (hämta den från OpenAI API-dashboarden).
- OpenRouter API-nyckel (Gemini-åtkomst) (hämta den från din OpenRouter-sida för nycklar).
- Google Drive för att lagra och leverera utvalda bilder.
Kunskapsnivå: Medel. Du mappar främst fält (Sheet → Webflow) och klistrar in API-nycklar, samt importerar ett separat underflöde för bildgenerering.
Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).
Flödet steg för steg
Schemalagd körning startar batchen. Flödet körs enligt schema (månadsvis som standard), hämtar rader med status “pending” från din flik keywords i Google Sheets och går sedan igenom dem i kontrollerade batchar.
Innehåll genereras och snyggas till. En AI-agent skapar ett SEO-vänligt utkast baserat på huvudnyckelordet och dina sheet-fält. Svaret parsas och en längdkontroll körs; om det är för kort gör ett expansionsanrop att det får rätt djup innan allt slås ihop till en slutlig version.
Den utvalda bilden hanteras av ett separat verktygsflöde. Ett underflöde genererar en bild (Gemini via HTTP-förfrågan), validerar svaret, konverterar base64-utdata till en riktig fil, laddar sedan upp den till Google Drive och returnerar en användbar nedladdningslänk.
Webflow får ett utkast du faktiskt kan granska. Markdown-utkastet konverteras till Webflow-klar HTML och sedan skapas/uppdateras ett CMS-objekt som utkast. Lyckade poster hamnar i content_created, fel hamnar i webflow_error_logs och nyckelordsstatus uppdateras så att nästa körning inte upprepar arbete.
Du kan enkelt justera artikellängd och avsnitt för att matcha din nisch, eller ändra batchstorleken efter dina API-gränser. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera den schemalagda triggern
Ställ in arbetsflödet så att det körs automatiskt enligt ert önskade schema.
- Välj Scheduled Run Trigger och behåll schemaregeln som konfigurerad (Interval med months).
- Koppla Scheduled Run Trigger till Fetch Pending Keywords så att arbetsflödet börjar med att hämta nyckelordsrader.
- Valfritt: justera schemaregeln i Scheduled Run Trigger om ni vill köra veckovis/dagligen.
Steg 2: anslut Google Sheets
Konfigurera alla kalkylbladsanslutningar för inläsning av nyckelord och statusloggning.
- Öppna Fetch Pending Keywords och ställ in Document ID till
[YOUR_ID]och Sheet Name till[YOUR_ID]. - Inloggningsuppgifter krävs: anslut era googleSheetsOAuth2Api-credentials i Fetch Pending Keywords.
- I Update Status Complete, behåll Operation inställd på
appendOrUpdateoch verifiera att main keyword mappar till{{ $('Markdown to HTML').item.json['main keyword'] }}. - Inloggningsuppgifter krävs: anslut era googleSheetsOAuth2Api-credentials i Update Status Complete, Store Success Records och Store Error Records.
[YOUR_ID]—ersätt varje med riktiga Google Sheets-ID:n.Steg 3: ställ in AI-generering av innehåll
Konfigurera AI-agenten och dess stödjande AI-komponenter för innehållsgenerering.
- Öppna AI Content Orchestrator och granska prompten i text. Behåll dynamiska fält som
{{$now}},{{ $json['main keyword'] }}och{{ $('Fetch Pending Keywords').item.json.slug }}. - Säkerställ att OpenAI Chat Engine använder modellen
gpt-4.1-minioch att temperature är satt till0.1. - Inloggningsuppgifter krävs: anslut era openAiApi-credentials i OpenAI Chat Engine.
- Verifiera att Session Memory Buffer är kopplad till AI Content Orchestrator med sessionKey satt till
{{ $('Fetch Pending Keywords').item.json['main keyword'] }}. - Kontrollera indata till Image Tool Workflow: altText, keyword, imageTitle och imagePrompt ska använda de befintliga AI-uttrycken.
Steg 4: konfigurera validering och utökning av innehåll
Säkerställ att innehållet uppfyller längdkrav och utöka vid behov.
- Låt Parse Agent Response vara oförändrad för att säkert parsa JSON och beräkna wordCount.
- I Validate Content Length, bekräfta att villkoret använder
{{ $json.wordCount }}och kontrollerar gte600. - I Extend Article Content, behåll promptstrukturen och mappningar som
{{ $json.content }}och{{ $('Iterate Keyword Batches').item.json['main keyword'] }}. - Inloggningsuppgifter krävs: anslut era openAiApi-credentials i Extend Article Content.
- Säkerställ att Normalize Expanded Output går in i Combine Content Streams (merge by position) före Markdown to HTML.
Steg 5: konfigurera delarbetsflödet för bildgenerering
Ställ in bildkedjan som genererar och laddar upp den utvalda bilden.
- I Subworkflow Start Trigger, bekräfta att arbetsflödets indata inkluderar imageTitle, imagePrompt, keyword och altText.
- I Request Image Generation, behåll URL satt till
https://openrouter.ai/api/v1/chat/completionsoch JSON-body medgoogle/gemini-2.5-flash-image-preview. - Granska Parse Image Output och Validate Image Result för att säkerställa att
{{ $json.imageUrl }}valideras innan ni fortsätter. - Låt Base64 to Binary vara oförändrad, och säkerställ sedan att Upload Image to Drive använder Name satt till
{{ $json.imageTitle }}.png. - Inloggningsuppgifter krävs: anslut era googleDriveOAuth2Api-credentials i Upload Image to Drive och Retrieve Download Links.
- Bekräfta att Retrieve Download Links använder Operation
downloadmed File ID{{ $json.webViewLink }}, och att Compose Image Result sätter ihop svaret.
Steg 6: konfigurera publicering och statusuppdateringar
Konvertera innehåll till HTML, publicera till Webflow och registrera framgång.
- I Markdown to HTML, ställ in Mode till
markdownToHtmloch Markdown till{{ $json.content }}. - I Publish Draft Post, ställ in Site ID till
[YOUR_ID]och Collection ID till[YOUR_ID]. - Mappa Webflow-fält i Publish Draft Post:
- name →
{{ $('Markdown to HTML').item.json.title }} - slug →
{{ $('Markdown to HTML').item.json.slug }} - page-content →
{{ $('Markdown to HTML').item.json.data }} - metadescription →
{{ $('Markdown to HTML').item.json.metaDescription }} - featured-image →
{{ $('Markdown to HTML').item.json.imageUrl }}
- name →
- Inloggningsuppgifter krävs: anslut era webflowOAuth2Api-credentials i Publish Draft Post.
- Låt Verify Creation Success kontrollera att
{{ $json.id }}inte är tomt, och fortsätt sedan till Update Status Complete och Store Success Records.
id kommer Verify Creation Success att routa till felhantering. Verifiera behörigheter för collection och fälttyper.Steg 7: lägg till felhantering och kontroll av batchloop
Fånga fel, logga avvikelser och hantera batch-takt.
- Behåll felvägen från Verify Creation Success till Record Failure Log, och sedan till Store Error Records.
- I Record Failure Log, säkerställ att den refererar till
{{ $('Markdown to HTML').first()?.json?.['main keyword'] }}för att logga nyckelordet. - Låt Delay Short Interval vara satt till amount
3så att batch-iterationer pausar mellan nyckelordskörningar. - Behåll loopsekvensen: Fetch Pending Keywords → Iterate Keyword Batches → AI Content Orchestrator, med tomt fall routat till No Keywords Handler.
Steg 8: testa och aktivera ert arbetsflöde
Validera hela flödet från start till mål innan ni aktiverar produktionskörningar.
- Klicka på Execute Workflow och verifiera att Fetch Pending Keywords returnerar rader från ert ark.
- Bekräfta att AI Content Orchestrator returnerar giltig JSON och att Parse Agent Response sätter wordCount och status.
- Kontrollera att Publish Draft Post får ett lyckat Webflow-item-ID och verifiera att utkastet visas i er collection.
- Säkerställ att Store Success Records skriver den publicerade posten, eller att Store Error Records loggar fel när det är relevant.
- När allt är validerat, växla arbetsflödet till Active för att aktivera schemalagd publicering.
Saker att se upp med
- Webflow OAuth-uppgifter kan gå ut eller sakna CMS-behörigheter. Om utkast slutar skapas, kontrollera först att din Webflow-app fortfarande är auktoriserad och att Site/Collection-ID:n stämmer.
- Om du använder Wait-noden mellan batchar kan bearbetningstider variera, särskilt vid bildrendering. Öka väntetiden om efterföljande noder kör innan en bildlänk finns.
- Standardprompterna för AI fungerar, men de är generiska. Lägg in din tonalitet och obligatoriska avsnitt tidigt, annars kommer du att “justera ton” för alltid.
Vanliga frågor
Cirka en timme om din Webflow-collection och ditt Google Sheet redan är uppsatta.
Ja, men ni vill ha en person som är bekväm med att koppla konton och mappa fält. Ingen traditionell kodning krävs, även om du kan justera prompts och ett par inställningar.
Ja. n8n har ett gratisalternativ för egen drift 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 OpenAI- och OpenRouter-API-kostnader för innehålls- och bildgenerering.
Två alternativ: n8n Cloud (hanterat, enklast setup) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärd och hanterar n8n bra. Egen drift ger obegränsat antal körningar men kräver grundläggande serverhantering.
Du kan justera artikellängd och struktur i prompten för AI Content Orchestrator och sedan ändra 600-ordsgränsen i kontrollen Validate Content Length. Om du vill ha andra bildstilar ändrar du prompt-/modellinställningar i underflödet Image Tool Workflow. Vanliga justeringar är att lägga till ortsspecifika avsnitt, ändra CTA-blocket och mappa fler Webflow CMS-fält i steget Publish Draft Post.
Oftast beror det på att OAuth-auktoriseringen har gått ut eller att Site ID / Collection ID inte matchar i Webflow-noden. Anslut Webflow igen i n8n, bekräfta att CMS-collectionen fortfarande finns och säkerställ att ditt konto har behörighet att skapa objekt. Om det bara faller på vissa objekt kan det också vara fältvalidering (till exempel en slug-krock eller ett obligatoriskt fält som inte mappas).
Om du kör egen drift finns ingen körningsgräns, så kapaciteten beror mest på din server och API:ernas rate limits. På n8n Cloud beror dina månatliga körningar på planen. I praktiken är flödet gjort för batchbearbetning, så att köra dussintals nyckelord per schemalagd körning är realistiskt om dina OpenAI-/OpenRouter-gränser och Webflow API-begränsningar är rätt inställda.
För just det här jobbet är n8n oftast bättre eftersom du behöver förgreningslogik (längdvalidering, loggning för lyckat vs. fel), batchning och ett anropbart underflöde för bildgenerering. De mönstren går att bygga på andra ställen, men det blir snabbt klumpigt och dyrt. n8n ger dig också möjligheten att köra egen drift, vilket spelar roll när du genererar många utkast varje månad. Zapier eller Make kan fortfarande vara bra om du bara vill ha ett lätt “Sheet-rad → skapa CMS-objekt”-flöde och gör innehållsskapandet manuellt. Om du är osäker, prata med en automationsexpert så tar vi fram det renaste upplägget.
När detta väl rullar slutar din nyckelordslista vara “någon gång sen”. Den blir utkast i Webflow, med bilder bifogade och en logg som visar hur det faktiskt gick.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.