Du får äntligen en korrekt formaterad lista med sökord. Sedan börjar det riktiga jobbet: research, struktur, skrivande, formatering, hitta en vettig bild, skapa taggar och få in allt i WordPress utan att layouten skapar fel. När utkastet väl finns är du redan less på det.
SEO-ansvariga märker det här när innehållskalendern halkar efter. Byråägare märker det när skribenter levererar utkast som fortfarande kräver två varv av efterstädning. Och grundare som gör “bara ett inlägg i veckan” fastnar till slut i småpill. Den här Sheets WordPress drafts-automationen gör en rad med indata till ett WordPress-utkast som faktiskt är redo för granskning.
Nedan ser du vad flödet gör, vad det ersätter och vad du behöver för att köra det stabilt i n8n.
Så fungerar automationsflödet
Se hur det löser problemet:
n8n Workflow Template: Från Google Sheets till WordPress: utkast att granska
flowchart LR
subgraph sg0["On form submission Flow"]
direction LR
n0@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser1", pos: "b", h: 48 }
n1["<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/>Set Featured Image"]
n2@{ icon: "mdi:robot", form: "rounded", label: "Generate Featured Image", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "Resize Image", 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/>Upload Image To WP"]
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/>Update Meta Data1"]
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check ready for publish", pos: "b", h: 48 }
n7@{ icon: "mdi:location-exit", form: "rounded", label: "Not Ready", pos: "b", h: 48 }
n8@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", 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/form.svg' width='40' height='40' /></div><br/>On form submission"]
n10@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n11@{ icon: "mdi:robot", form: "rounded", label: "GetOnilneInfo", pos: "b", h: 48 }
n12@{ icon: "mdi:swap-vertical", form: "rounded", label: "configuration", pos: "b", h: 48 }
n13@{ icon: "mdi:web", form: "rounded", label: "Internal Links", pos: "b", h: 48 }
n14@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model", 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/wordpress.svg' width='40' height='40' /></div><br/>Post Blog To WP-without image"]
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/wordpress.svg' width='40' height='40' /></div><br/>Post Blog To WP- with image"]
n17@{ icon: "mdi:wrench", form: "rounded", label: "OutlinePlanner", pos: "b", h: 48 }
n18@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model1", pos: "b", h: 48 }
n19@{ icon: "mdi:wrench", form: "rounded", label: "SectionWriter", pos: "b", h: 48 }
n20@{ icon: "mdi:wrench", form: "rounded", label: "createSections", pos: "b", h: 48 }
n21@{ icon: "mdi:wrench", form: "rounded", label: "Editor", pos: "b", h: 48 }
n22@{ icon: "mdi:wrench", form: "rounded", label: "Image Prompt", pos: "b", h: 48 }
n23@{ icon: "mdi:wrench", form: "rounded", label: "metaInfo", pos: "b", h: 48 }
n24@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser2", pos: "b", h: 48 }
n25["<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/>Set excerpt"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Set excerpt3"]
n27@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser3", pos: "b", h: 48 }
n28@{ icon: "mdi:web", form: "rounded", label: "getCategories", 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/>set-tags"]
n30["<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/>get-tags"]
n31@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Out", pos: "b", h: 48 }
n32@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n33@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Check-Existence", pos: "b", h: 48 }
n34@{ icon: "mdi:swap-vertical", form: "rounded", label: "getID", pos: "b", h: 48 }
n35@{ icon: "mdi:swap-vertical", form: "rounded", label: "getID1", pos: "b", h: 48 }
n36@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser4", pos: "b", h: 48 }
n37@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model8", pos: "b", h: 48 }
n38@{ icon: "mdi:cog", form: "rounded", label: "Tags", pos: "b", h: 48 }
n39@{ icon: "mdi:robot", form: "rounded", label: "Tags Agent", pos: "b", h: 48 }
n40@{ icon: "mdi:robot", form: "rounded", label: "Orchestration Agent", pos: "b", h: 48 }
n41@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n42@{ icon: "mdi:database", form: "rounded", label: "Get row(s) in sheet", pos: "b", h: 48 }
n43@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model2", pos: "b", h: 48 }
n44@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model3", pos: "b", h: 48 }
n45@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model4", pos: "b", h: 48 }
n46@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model5", pos: "b", h: 48 }
n47@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model6", pos: "b", h: 48 }
n10 --> n2
n10 --> n15
n38 --> n10
n34 --> n32
n21 -.-> n40
n35 --> n32
n30 --> n33
n23 -.-> n40
n29 --> n35
n31 --> n32
n39 --> n31
n22 -.-> n40
n3 --> n4
n11 --> n40
n19 -.-> n40
n12 --> n11
n28 -.-> n23
n13 -.-> n21
n17 -.-> n40
n20 -.-> n40
n33 --> n34
n33 --> n29
n32 --> n38
n32 --> n30
n41 --> n42
n8 -.-> n40
n5 --> n16
n9 --> n12
n18 -.-> n17
n43 -.-> n20
n44 -.-> n19
n45 -.-> n21
n46 -.-> n22
n47 -.-> n23
n37 -.-> n39
n1 --> n25
n4 --> n5
n42 --> n12
n14 -.-> n11
n6 --> n39
n6 --> n7
n2 --> n3
n40 --> n6
n0 -.-> n40
n24 -.-> n22
n27 -.-> n23
n36 -.-> n39
n16 --> n1
n15 --> n26
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 n9,n41 trigger
class n0,n2,n11,n24,n27,n36,n39,n40 ai
class n8,n14,n18,n37,n43,n44,n45,n46,n47 aiModel
class n17,n19,n20,n21,n22,n23 ai
class n6,n10,n33 decision
class n42 database
class n1,n4,n5,n13,n25,n26,n28,n29,n30 api
classDef customIcon fill:none,stroke:none
class n1,n4,n5,n9,n15,n16,n25,n26,n29,n30 customIcon
Utmaningen: att göra sökord till utkast utan kaos
“Skriv ett inlägg utifrån det här sökordet” låter enkelt tills du gör det i volym. Varje utkast kräver research som är aktuell, en disposition som inte svävar iväg, avsnitt som inte upprepar sig och HTML som inte ser trasig ut i WordPress. Sedan kommer allt extra du inte kan hoppa över: en användbar titel, en korrekt formaterad slug, en sammanfattning, taggar som matchar sajtens taxonomi och en kategori som inte blir en gissning. Manuellt hoppar du runt mellan Google Sheets, webbläsarflikar, AI-verktyg, bildverktyg och WordPress. Det är inte svårt jobb. Det är dränerande jobb, och det stjäl tid från strategi.
Det blir snabbt mycket. Här är var det brukar falla i verkligheten.
- Ett enda “snabbt utkast” blir lätt cirka 2 timmar av småuppgifter utspridda över för många verktyg.
- Formateringen blir rörig, vilket innebär att någon måste fixa rubriker, listor, länkar och mellanrum i WordPress-redigeraren.
- Taggar och kategorier glider över tid, så arkivsidorna blir en röra och internlänkning blir svårare.
- Batchproduktion faller eftersom ingen vill kopiera/klistra in 10 utkast manuellt, ett i taget, och sedan markera rader som “klara”.
Lösningen: Google Sheets → GPT-research/skrivande → WordPress-utkast
Det här flödet börjar med strukturerad indata (antingen ett formulärsvar eller rader i Google Sheets) och gör om det till WordPress-utkast byggda för granskning, inte omarbete. Det hämtar realtidsinformation via en research-agent, och sedan skickar en orkestreringsagent uppgiften vidare till specialiserade “subagenter” som planerar dispositionen, definierar avsnitt, skriver varje avsnitt och putsar allt till giltig redaktionell HTML. Därefter skapar det publiceringsmetadata: titel, slug, sammanfattning, taggar och ett rimligt kategorival. Om du slår på utvalda bilder skapar det även en bildprompt, genererar bilden, skalar den, laddar upp den till WordPress media och kopplar den till inlägget. Till sist publicerar det inlägget som utkast och uppdaterar raden i Google Sheets så att din pipeline förblir korrekt.
Flödet startar från Google Sheets enligt schema (batchläge) eller från ett manuellt formulär (engångsläge). AI hanterar research, skrivande, redigering och metadata i en konsekvent ordning så att resultatet blir förutsägbart. WordPress får ett utkast (med eller utan utvald bild), redo för en människa att granska och publicera.
Vad som förändras: före vs. efter
| Det här tar bort | Effekten du märker |
|---|---|
|
|
Effekt i verkligheten
Säg att du publicerar 5 SEO-utkast per vecka från ett Google-ark. Manuellt kanske du lägger cirka 20 minuter på research, 60 minuter på att skriva och ytterligare 20 minuter på formatering + att fylla i WordPress-fält per inlägg, alltså runt 8 timmar per vecka. Med det här flödet innebär fem rader och en batchkörning kanske 15 minuter av din tid, och sedan granskar du utkasten när de är klara. Även om du fortfarande lägger totalt en timme på redigering under veckan har du frigjort större delen av en arbetsdag.
Krav
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att lagra sökord och statusflaggor.
- WordPress för att skapa utkast via REST API.
- OpenAI API-nyckel (hämta den i din OpenAI-kontos kontrollpanel).
Kunskapsnivå: Medel. Du kopplar konton, klistrar in autentiseringsuppgifter och mappar några fält, men du skriver ingen kod.
Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).
Flödets steg
En sökordsförfrågan kommer in. Flödet startar antingen när någon skickar in formuläret (perfekt för engångsförfrågningar) eller när en schemalagd trigger läser nya rader från Google Sheets för batchkörningar.
Konfigurationen sätts en gång och återanvänds. Den normaliserar din indata som målordantal, antal avsnitt, skrivstil, sajtens URL och eventuell webbplatskontext du anger så att texterna ligger i linje med ditt varumärke.
Research och skrivande sker i kontrollerad ordning. En webbresearch-agent hämtar aktuell information, och sedan skickar orkestreringsagenten uppgiften genom dispositionsplanering, avsnittsgenerering, avsnittsskrivande, redaktionell städning till HTML och skapande av metadata (titel, slug, sammanfattning, kategori).
WordPress får ett felfritt utkast och valfri bild. Taggar hämtas eller skapas, kopplas till inlägget och utkastet publiceras via WordPress API. Om utvalda bilder är aktiverade genererar flödet en bild, skalar den, laddar upp den som media och kopplar den innan sammanfattningen sätts.
Du kan enkelt justera prompten och metadatareglerna för att matcha dina redaktionella standarder. Se hela implementationsguiden nedan för anpassningsmöjligheter.
Steg-för-steg-guide för implementation
Steg 1: konfigurera formulärtriggern
Ställ in arbetsflödet så att det startar från användarinskick eller schemalagda inmatningar från ett kalkylark som går in i samma konfigurationssteg.
- Öppna Form Submission Trigger och bekräfta att den är den manuella startpunkten för innehållsförfrågningar.
- Öppna Scheduled Trigger och bekräfta att den körs med önskad frekvens för batchpublicering.
- Verifiera att både Form Submission Trigger och Scheduled Trigger kopplas in i Setup Configuration.
Steg 2: anslut Google Sheets för schemalagda indata
Den schemalagda vägen hämtar utkast från ett kalkylark innan den går in i det gemensamma konfigurationssteget.
- Öppna Retrieve Sheet Rows och konfigurera den så att den läser raderna som representerar publiceringsklara objekt.
- Inloggning krävs: anslut era Google Sheets-inloggningsuppgifter i Retrieve Sheet Rows.
- Bekräfta att Retrieve Sheet Rows skickar vidare till Setup Configuration så att schemalagda objekt följer samma bearbetningsflöde.
Steg 3: sätt upp kärnorkestrering och AI-planering
Det här steget bygger innehållsplanen och strukturerar data som används i senare publiceringssteg.
- Öppna Setup Configuration och definiera de fält ni vill standardisera för alla indata.
- Öppna Fetch Online Info och verifiera att den använder OpenRouter Chat Engine som språkmodell.
- Öppna Orchestration Agent och bekräfta att den använder OpenAI Chat Engine och Structured Result Parser A för ett konsekvent utdataformat.
- Inloggning krävs: anslut era OpenRouter-inloggningsuppgifter i OpenRouter Chat Engine.
- Inloggning krävs: anslut era OpenAI-inloggningsuppgifter i OpenAI Chat Engine.
Steg 4: konfigurera flöde för innehållsvalidering och taggning
Det här blocket säkerställer att innehållet är redo och tilldelar taxonomi baserat på AI-taggning och logik för taggverifiering.
- Öppna Validate Publish Readiness och bekräfta att den sanna vägen går till Tagging Agent medan den falska vägen går till Halt Not Ready.
- Öppna Tagging Agent och bekräfta att den använder OpenAI Chat Engine Tags med Structured Result Parser D för att standardisera taggar.
- Kontrollera batchbearbetningssekvensen: Split Items → Iterate Batches → Fetch Tags → Verify Existence.
- Validera att Verify Existence förgrenar till Extract ID (befintliga taggar) och Apply Tags (nya taggar), och att båda går tillbaka via Extract ID B eller Extract ID till Iterate Batches.
- Inloggning krävs: anslut era OpenAI-inloggningsuppgifter i OpenAI Chat Engine Tags.
Steg 5: bygg flödet för utvald bild
När inlägget innehåller en utvald bild genererar, skalar, laddar upp och tilldelar arbetsflödet den innan publicering.
- Öppna Branch Condition och bekräfta att den sanna vägen går till Create Featured Image och den falska vägen går till Publish WP Post No Image.
- Öppna Create Featured Image och anslut era inställningar för bildgenereringsmodellen.
- Verifiera bildpipeline-sekvensen: Create Featured Image → Scale Image → Upload Image to WordPress → Modify Meta Details.
- Inloggning krävs: anslut era OpenAI-inloggningsuppgifter i Create Featured Image.
Steg 6: konfigurera WordPress-publiceringsåtgärder
Det här steget hanterar publicering av inlägg både med och utan bilder, samt utdrag och tilldelning av utvald bild.
- Öppna Publish WP Post With Image och Publish WP Post No Image för att bekräfta inställningar för inläggstyp och status.
- Bekräfta att bildvägen fortsätter: Publish WP Post With Image → Assign Featured Image → Set Post Excerpt.
- Bekräfta att vägen utan bild fortsätter: Publish WP Post No Image → Set Post Excerpt B.
- Inloggning krävs: anslut era WordPress-inloggningsuppgifter i Publish WP Post With Image och Publish WP Post No Image.
Steg 7: lägg till felhantering
Felhantering förhindrar publicering när valideringen misslyckas.
- Öppna Validate Publish Readiness och bekräfta att den falska grenen routar till Halt Not Ready.
- Öppna Halt Not Ready och lägg till ett tydligt felmeddelande så att orsaken till stoppet syns i körningsloggarna.
Steg 8: testa och aktivera ert arbetsflöde
Kör ett end-to-end-test för att verifiera AI-utdata, taggning och WordPress-publicering innan ni går live.
- Kör Form Submission Trigger manuellt med ett exempelinskick för att testa hela innehållsflödet.
- Verifiera att lyckade körningar visar utdata genom Orchestration Agent, Tagging Agent och når antingen Publish WP Post With Image eller Publish WP Post No Image.
- Bekräfta att WordPress-inlägget innehåller förväntat utdrag från Set Post Excerpt eller Set Post Excerpt B.
- Aktivera arbetsflödet och bekräfta att Scheduled Trigger är aktiv för produktionskörningar.
Se upp med
- Google Sheets-autentiseringsuppgifter kan löpa ut eller kräva specifika behörigheter. Om saker slutar fungera, börja med att kontrollera n8n-sidan för autentiseringsuppgifter och inställningarna för OAuth-medgivande i Google Cloud.
- Om du använder Wait-noder eller extern rendering varierar körtiderna. Öka väntetiden om nedströmsnoder misslyckas på tomma svar.
- WordPress REST API-åtkomst fallerar ofta för att applikationslösenordet saknar behörigheter, blockeras av säkerhetsplugins eller pekar på fel sajt-URL. Bekräfta att dina /wp-json/wp/v2-endpoints svarar och att författaranvändaren kan skapa inlägg och media.
Vanliga frågor
Oftast på ungefär en timme om dina WordPress- och Google-uppgifter är redo.
Ja. Ingen kodning krävs. Du kommer främst att koppla konton och klistra in API-nycklar i n8n.
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 OpenAI API-kostnader, som varierar beroende på hur långa dina inlägg är och hur mycket research du kör.
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.
Börja med att redigera noden Setup Configuration så att den speglar dina sajtregler (ton, målgrupp och eventuella “måste ha”-detaljer). Om du vill ha annan logik för metadata byter du prompten i Meta Info Builder så att den matchar din slug-stil, längd på sammanfattning och kategoriregler. För att byta researchkällor justerar du agenten Fetch Online Info så att den använder din föredragna leverantör (till exempel OpenRouter istället för endast OpenAI). Och om du inte vill ha bilder alls låter du togglen för utvald bild vara av, så att Branch Condition går direkt till “Publish WP Post No Image”.
Oftast beror det på ett ogiltigt applikationslösenord eller ett blockerat REST API. Skapa ett nytt applikationslösenord i WordPress, uppdatera det i n8n och bekräfta att din sajts endpoint /wp-json/wp/v2/posts går att nå. Säkerhetsplugins och regler för basic auth kan också störa, särskilt vid uppladdning av media. Om inlägg fungerar men bilder misslyckas, kontrollera behörigheter för /wp-json/wp/v2/media specifikt.
Den skalar bra, men den praktiska begränsningen är AI-bearbetningstid och hur mycket din WordPress-server tål via API:et.
Ofta, ja, om du vill ha flersteglogik och konsekvent långform. Det här flödet använder flera AI-steg (research, disposition, avsnittsskrivande, redigering, metadata och taggar), plus förgrening för valfria bilder, vilket är den typ av flöde som blir klumpigt och dyrt i verktyg som tar betalt per task. n8n ger också en väg till egen hosting när volymen ökar, vilket håller din automationskostnad per utkast stabil. Zapier eller Make kan fortfarande fungera bra för “skapa ett inlägg från en kort mall”, men det här ligger närmare en produktionspipeline för innehåll. Om du vill göra en snabb rimlighetskontroll innan du bestämmer dig, prata med en automationsexpert.
När det här väl rullar blir Google Sheets din innehållskö och WordPress din inkorg för utkast. Flödet tar hand om de repetitiva delarna så att teamet kan lägga tid på granskning, positionering och att faktiskt leverera.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.