Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
januari 22, 2026

Google Sheets till WordPress – utkast redo att publicera

Rickard Andersson Partner, Nodenordic.se

Din innehållskalender ljuger för dig. Inte med flit. Men när idéer ligger i ett Google Sheet, utkast ligger i Google Docs och ”publicerad” ligger i någons minne, så tappar ni snabbt bollen.

Den här Sheets WordPress-automationen slår hårdast mot content managers, men solofounders och byråledare känner av den också. Du slutar med att skriva om samma prompts, kopiera samma block och dubbelkolla samma statusar, vecka efter vecka.

Det här arbetsflödet gör om en enda rad i kalkylbladet till ett planerat inlägg, sedan ett utkast och sedan ett publiceringsklart WordPress-utkast som du kan granska innan det går live. Du får se hur det fungerar, vad du behöver och var team oftast går fel.

Så här fungerar automationen

Hela n8n-flödet, från trigger till slutresultat:

n8n Workflow Template: Google Sheets till WordPress – utkast redo att publicera

Problemet: ert innehållsflöde fastnar i ”nästan klart”

Att planera innehåll i ett kalkylblad är okej… tills du försöker skala. Du skriver utkast på ett ställe, klistrar in i WordPress, märker att formateringen är fel och uppdaterar sedan arket igen så att kalendern inte ser fel ut. Nästa vecka frågar någon vad som är redo att publiceras och du pusslar ihop ledtrådar från tidsstämplar och halvt uppdaterade statusar. Värst är den mentala belastningen. Du lägger riktig fokus på admin, och ska sedan växla om och skriva något bra. Det är utmattande.

Friktionen byggs på. Här är var det faller isär i verkligheten.

  • Du tappar tid på ”små” copy-paste-steg som tillsammans blir några timmar varje vecka.
  • Statusfält driver isär, så du kan inte lita på vad ”utkast” eller ”schemalagd” faktiskt betyder.
  • Prompts och varumärkesriktlinjer tillämpas inkonsekvent, vilket leder till fler omskrivningar och sämre output.
  • Publicering blir en skör manuell checklista, så tempot går ner så fort den enda ”WordPress-personen” är upptagen.

Lösningen: en stegvis Google Sheets → WordPress-pipeline du styr

Den här automationen använder ditt Google Sheet som enda sanningskälla och flyttar sedan varje ämne genom tydliga steg: plan, utkast, slutversion och publicera. Den startar på schema (varje timme) eller när du manuellt triggar den i n8n. Flödet läser ditt ark ”Schedule”, kontrollerar varje rads Status och Action och avgör vad som ska hända härnäst. Om ett ämne behöver planering eller utkast hämtar den promptinställningar från ett ark ”Config”, kör din valda LLM och skriver tillbaka genererat innehåll till samma rad. Sedan stannar den och lämnar kontrollen till dig, så att du kan redigera resultatet och bestämma nästa Action. När du sätter en rad till publicera skapar den ett WordPress-inlägg via XML-RPC och loggar resultatet så att du ser vad som hände.

Flödet är lätt att leva med. Kalkylbladet blir kontrollpanelen. n8n gör det repetitiva jobbet i bakgrunden, och WordPress kopplas in först när ett inlägg faktiskt är redo att bli ett utkast eller gå live.

Vad du får: automation vs. resultat

Exempel: så här ser det ut

Säg att du publicerar 4 inlägg per vecka. Manuellt kanske du lägger cirka 20 minuter på att skapa en disposition, 45 minuter på att producera ett första utkast med AI-prompts och sedan ytterligare 15 minuter på att kopiera in i WordPress och fixa formatering, alltså runt 5 timmar per vecka bara för att få utkasten ”in i systemet”. Med det här flödet uppdaterar du en rad i Google Sheets (en minut eller två), låter LLM:en jobba i bakgrunden och granskar sedan ett WordPress-utkast när det är klart. Realistiskt landar du på cirka 2 timmar granskning och redigering per vecka, inte 5 timmar repetitiv hantering.

Det här behöver du

  • n8n-instans (prova n8n Cloud gratis)
  • Self-hosting-alternativ om du föredrar det (Hostinger fungerar bra)
  • Google Sheets för att hantera schema och prompts.
  • WordPress för att ta emot utkast och publicera inlägg.
  • OpenRouter API-nyckel (hämta den i din OpenRouter-dashboard).

Svårighetsnivå: Medel. Du kopplar konton, kopierar en kalkylbladsmall och klistrar in några ID:n och URL:er i n8n-inställningar.

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 sätter igång. Flödet körs som standard varje timme, men du kan också trigga det på beställning när du vill bearbeta nya ämnen direkt.

Ditt kalkylblad blir ”routern”. n8n läser arket Schedule (ämnen, schemalagt datum, aktuell Status och nästa Action) och laddar även arket Config, där dina prompts, kontext och till och med vilken LLM-modell som ska användas finns.

AI genererar nästa steg bara när det behövs. Om en rads Action säger ”plan”, ”draft” eller ”final” körs LLM-kedjan och skriver tillbaka resultatet till rätt kolumner, tillsammans med statusloggar så att du ser vad som ändrats.

Publicering sker bara när du säger till. När du ändrar Action till ”publish” sätter flödet ihop en XML-RPC-payload, skickar den till WordPress, validerar att det lyckas och markerar sedan raden som publicerad samt lägger till en loggrad för publiceringen.

Du kan enkelt ändra namnen på Status/Action så att de matchar er interna process. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementation

Steg 1: Konfigurera den schemalagda triggern

Konfigurera hur arbetsflödet startar, antingen enligt ett schema eller manuellt för testning.

  1. Öppna Scheduled Automation Trigger och ställ in Rule så att den körs varje timme (fältet interval hours).
  2. Låt Manual Start Trigger vara ansluten till Config Variables för manuella testkörningar.
  3. Verifiera att båda triggerarna är kopplade till Config Variables så att schemalagda och manuella körningar delar samma konfigurationsflöde.

Tips: Använd Manual Start Trigger för tidig testning så att ni kan verifiera läsning från arket och publicering i WordPress utan att behöva vänta på schemat.

Steg 2: Anslut Google Sheets

Definiera kalkylarksparametrar och anslut alla Google Sheets-noder som läser scheman, konfigurationer och loggar.

  1. I Config Variables ställer ni in kalkylarket och WordPress-värden: urlSpreadsheet till https://docs.google.com/spreadsheets/d/[YOUR_ID]/edit?gid=0#gid=0, sheetSchedule till =Schedule, sheetConfig till Config och sheetLog till Log.
  2. Bekräfta att Config Variables skickar output till både Retrieve Config Sheet och Read Schedule Sheet parallellt.
  3. Öppna Read Schedule Sheet och ställ in Document till {{ $('Config Variables').item.json.urlSpreadsheet }} och Sheet Name till {{ $('Config Variables').item.json.sheetSchedule }}.
  4. Öppna Retrieve Config Sheet och ställ in Document till {{ $('Config Variables').item.json.urlSpreadsheet }} och Sheet Name till {{ $('Config Variables').item.json.sheetConfig }}.
  5. Inloggningsuppgifter krävs: Anslut era googleSheetsOAuth2Api-uppgifter till Read Schedule Sheet, Retrieve Config Sheet, Write Back to Sheet, Append Status Log, Append Publish Log och Mark As Published.

⚠️ Vanlig fallgrop: Om urlSpreadsheet eller bladnamnen i Config Variables är felaktiga kommer alla efterföljande Google Sheets-noder att misslyckas.

Steg 3: Sätt upp bearbetning och AI-generering

Omvandla schemarader till AI-prompter, generera innehåll och slå ihop output tillbaka till raddatan.

  1. Låt Build Config Map vara kopplad efter Retrieve Config Sheet för att bygga konfigurationspar av nyckel/värde för prompter och modeller.
  2. I Prepare Row Payload låter ni Mode vara satt till runOnceForEachItem för att generera prompt- och modellinställningar per rad.
  3. Verifiera att Verify Action Needed kontrollerar {{ $json.takeAction }} så att endast rader med nya åtgärder går vidare.
  4. Bekräfta att Check Publish Action jämför {{ $json.row.Action }} med {{ $('Config Variables').item.json.actionPublish }}, och notera att Check Publish Action skickar output till både Check Schedule Time och Confirm Prompt Present parallellt.
  5. Öppna Confirm Prompt Present och säkerställ att den validerar att {{ $json.prompt }} inte är tom innan AI körs.
  6. I LLM Prompt Chain ställer ni Text till {{ $json.prompt }} och låter Prompt Type vara satt till define. LLM Chat Model är ansluten som språkmodell för LLM Prompt Chain — se till att inloggningsuppgifter är tillagda i LLM Chat Model.
  7. Inloggningsuppgifter krävs: Anslut era openAiApi-uppgifter till LLM Chat Model och låt Model vara satt till {{ $json.model }}.
  8. I Merge Generated Output låter ni Mode vara satt till runOnceForEachItem för att normalisera och slå ihop AI-output tillbaka in i schemaraden.

Tips: Om prompter saknas, kontrollera nycklarna i Config-bladet som byggs i Build Config Map, särskilt posterna prompt_* och prompt_*_model.

Steg 4: Konfigurera publiceringsoutput till WordPress

Bygg XML-payloaden, skicka den till WordPress via XML-RPC och validera svaret.

  1. I Check Schedule Time låter ni jämförelsen mellan {{ DateTime.now().ts }} och {{ DateTime.fromFormat($json.row.Scheduled, "yyyy-MM-dd HH:mm:ss").ts }} vara kvar, så att endast inlägg som förfaller publiceras.
  2. I Compose XML Post behåller ni genereringen av XML-RPC-payloaden som sätter inläggstitel och innehåll från $json.row.Title och $json.row.final.
  3. I WordPress XML-RPC Call ställer ni in URL till =https://{{ $('Config Variables').item.json.urlWordpress }}/xmlrpc.php, Method till POST, Body till {{ $json.xmlRequestBody }} och Raw Content Type till text/xml.
  4. Låt Parse XML-RPC Reply vara ansluten för att fånga postId eller XML-RPC-fel.
  5. I Validate Post Success bekräftar ni att den kontrollerar {{ $('Parse XML-RPC Reply').item.json.postId }} innan den går vidare till uppdateringar.
  6. I Mark As Published bekräftar ni att Status är satt till {{ $('Config Variables').item.json.actionPublish }} och att raden matchas med {{ $('Prepare Row Payload').item.json.row.row_number }}.

⚠️ Vanlig fallgrop: Säkerställ att Config Variables innehåller giltiga wordpressUsername och wordpressApplicationPassword, annars kommer XML-RPC-anropet att returnera ett fel.

Steg 5: Konfigurera loggning och uppdateringar i arket

Logga statusändringar och skriv tillbaka genererat innehåll till schemabladet.

  1. I Append Status Log låter ni Operation vara satt till append och låter formeln för Message vara satt till =Status {{ $json.Status }} for row {{ $('Prepare Row Payload').item.json.row.row_number }}.
  2. I Write Back to Sheet låter ni Operation vara satt till update och Matching Columns satt till row_number så att raden uppdateras korrekt.
  3. I Append Publish Log låter ni Type vara satt till {{ $json.errorCode ? 'error' : 'info' }} och Message satt till =Publishing row {{ $('Prepare Row Payload').item.json.row.row_number }}: {{ $json.postId }}{{ $json.errorCode }}{{ $json.error }}.

Steg 6: Testa och aktivera ert arbetsflöde

Kör ett manuellt test, bekräfta förväntade resultat och aktivera den schemalagda automatiseringen.

  1. Klicka på Execute WorkflowManual Start Trigger för att testa med en känd schemarad.
  2. Kontrollera att Append Status Log och Append Publish Log lägger till rader i Log-bladet.
  3. Bekräfta att schemaraden uppdateras av Write Back to Sheet och, om publicerad, av Mark As Published.
  4. Verifiera att ett inlägg skapas i WordPress när Parse XML-RPC Reply returnerar ett postId.
  5. När ni är nöjda, växla arbetsflödet till Active så att Scheduled Automation Trigger körs varje timme i produktion.
🔒

Lås upp fullständig steg-för-steg-guide

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • Google Sheets-autentiseringsuppgifter kan gå ut eller sakna åtkomst till just den kalkylbladskopian. Om rader slutar uppdateras, kontrollera Google-kopplingen i n8n och bekräfta att kalkylbladet är delat med rätt konto.
  • Om du använder Wait-noder eller extern rendering varierar bearbetningstiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
  • WordPress-publicering via XML-RPC kan misslyckas om ditt applösenord är fel eller om din användarroll inte får publicera. Kontrollera dina inställningar för WordPress applösenord och bekräfta att XML-RPC är tillåtet av din host eller ditt säkerhetsplugin.

Vanliga frågor

Hur lång tid tar det att sätta upp den här Sheets WordPress-automationen?

Cirka en timme om ditt kalkylblad och din WordPress-åtkomst är redo.

Behöver jag kunna koda för att automatisera Google Sheets till WordPress-utkast?

Nej. Du kopplar konton och klistrar in några värden i Settings-noden. Arbetsflödet innehåller redan logiken för att läsa rader, skriva tillbaka och publicera.

Är n8n gratis att använda för det här arbetsflödet för Sheets WordPress-automation?

Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Molnplaner startar på 20 USD/månad för högre volym. Du behöver också räkna in OpenRouter API-kostnader, som beror på vilken modell du väljer.

Var kan jag hosta n8n för att köra den här Sheets WordPress-automationen?

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.

Kan jag anpassa det här arbetsflödet för Sheets WordPress-automation för flera sajter?

Ja, men du vill ha en tydlig separering. Det enklaste är att duplicera arbetsflödet och peka varje kopia mot en annan WordPress-URL och ett annat applösenord i Settings-noden. Vissa team duplicerar också kalkylbladet per sajt, vilket gör att prompts och scheman inte trasslar ihop sig. Om du föredrar ett kalkylblad kan du lägga till en kolumn ”Site” och routa rader genom en extra If-nod innan WordPress XML-RPC-anropet.

Varför misslyckas min WordPress-anslutning i den här Sheets WordPress-automationen?

Oftast är det ett problem med applösenordet eller blockerad XML-RPC. Skapa ett nytt WordPress applösenord, uppdatera det i arbetsflödet och bekräfta att din WordPress-användare har rättigheter att skapa inlägg. Om du använder ett säkerhetsplugin eller en hanterad host, kontrollera deras inställningar eftersom vissa stänger av XML-RPC som standard. Kontrollera också att WordPress-URL:en i Settings-noden är exakt den bas-URL som din XML-RPC-endpoint förväntar sig.

Hur många inlägg klarar den här Sheets WordPress-automationen?

Med n8n Cloud Starter kan du köra en bra mängd timvisa kontroller för en mindre kalender, och högre planer klarar mer volym. Om du self-hostar finns ingen begränsning i antal körningar, det beror mest på din server och din LLM-hastighet. I praktiken kör de flesta team detta varje timme och bearbetar allt från några rader till några dussin rader per körning. Om du börjar generera hundratals utkast kommer du att slå i LLM:ens rate limits innan du slår i n8n-gränser.

Är den här Sheets WordPress-automationen bättre än att använda Zapier eller Make?

Ofta, ja. Det här flödet bygger på grenlogik (kontroller av Status + Action), att skriva strukturerade resultat tillbaka till arket och att hantera WordPress-publiceringssvar med validering och loggar, vilket är precis där enklare verktyg blir klumpiga eller dyra. n8n ger dig också möjligheten att self-hosta, så att du inte betalar mer varje gång du kör timvisa kontroller. Zapier eller Make kan ändå passa bättre om du bara vill ha ett enkelt flöde ”ny rad → skapa utkast” och du inte bryr dig om godkännanden i flera steg. Om du är osäker, prata med en automationsexpert och beskriv hur ni jobbar med er kalenderprocess.

När det här väl är på plats slutar kalkylbladet vara en stökig checklista och börjar fungera som en riktig produktionspipeline. Arbetsflödet tar det repetitiva jobbet. Du tar besluten.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Launch login modal Launch register modal