Din innehållskalender ska inte vara beroende av magkänsla, utspridda anteckningar och ett halvfärdigt keyword-kalkylark. Men det är ofta så ”SEO-research” ser ut: några verktyg öppna, 30 flikar med konkurrentinlägg och ett dokument som aldrig blir ett publicerbart utkast.
Det är här Scrapeless SEO-automatisering lönar sig. Content managers känner smärtan först, ärligt talat, men growth-ansvariga och byråteam fastnar i samma loop. Du går från ”vi borde skriva något om X” till prioriterade ämnen och artiklar som är klara för utkast, lagrade i din databas.
Det här arbetsflödet använder Scrapeless, Google Sheets och AI för att hitta trendande sökord, analysera topresultaten och skapa utkast som du kan granska och publicera. Här är vad det gör, vad du behöver och vad du ska se upp med.
Så fungerar automatiseringen
Hela n8n-flödet, från trigger till slutlig output:
n8n Workflow Template: Scrapeless + Google Sheets: SEO-ämnen till utkast
flowchart LR
subgraph sg0["Manual Run Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Manual Run Trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Assign Seed Terms", pos: "b", h: 48 }
n2@{ icon: "mdi:cog", form: "rounded", label: "Fetch Trend Topics", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Expand Related Queries", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Retrieve Trend Heat", pos: "b", h: 48 }
n5@{ icon: "mdi:robot", form: "rounded", label: "Trend Analysis Agent", pos: "b", h: 48 }
n6["<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/>Prioritize Output Sorter"]
n7@{ icon: "mdi:database", form: "rounded", label: "Upsert Sheet Record", pos: "b", h: 48 }
n8@{ icon: "mdi:robot", form: "rounded", label: "Structured Result Parser", pos: "b", h: 48 }
n9@{ icon: "mdi:brain", form: "rounded", label: "Anthropic Chat Engine", pos: "b", h: 48 }
n10@{ icon: "mdi:database", form: "rounded", label: "Fetch Sheet Rows", pos: "b", h: 48 }
n11@{ icon: "mdi:swap-vertical", form: "rounded", label: "Distribute Level Items", pos: "b", h: 48 }
n12@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Exclude Low Priority Topics", pos: "b", h: 48 }
n13@{ icon: "mdi:cog", form: "rounded", label: "Run Google Search", pos: "b", h: 48 }
n14@{ icon: "mdi:swap-vertical", form: "rounded", label: "Select Top Competitor Links", pos: "b", h: 48 }
n15@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Competitor Results", pos: "b", h: 48 }
n16@{ icon: "mdi:cog", form: "rounded", label: "Crawl Competitor Pages", pos: "b", h: 48 }
n17@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map Competitor Markdown", pos: "b", h: 48 }
n18@{ icon: "mdi:cog", form: "rounded", label: "Aggregate Markdown", pos: "b", h: 48 }
n19@{ icon: "mdi:robot", form: "rounded", label: "Senior Content Writer", pos: "b", h: 48 }
n20["<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/>Parse AI Article JSON"]
n21["<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/supabase.svg' width='40' height='40' /></div><br/>Insert Supabase Row"]
n22@{ icon: "mdi:brain", form: "rounded", label: "Anthropic Writer Model", pos: "b", h: 48 }
n20 --> n21
n6 --> n7
n16 --> n17
n5 --> n6
n18 --> n19
n3 --> n4
n11 --> n12
n15 --> n16
n13 --> n14
n2 --> n3
n1 --> n2
n10 --> n11
n9 -.-> n5
n22 -.-> n19
n8 -.-> n5
n19 --> n20
n4 --> n5
n14 --> n15
n17 --> n18
n0 --> n1
n0 --> n10
n12 --> n13
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 trigger
class n5,n8,n19 ai
class n9,n22 aiModel
class n12 decision
class n7,n10 database
class n6,n20 code
classDef customIcon fill:none,stroke:none
class n6,n20,n21 customIcon
Problemet: SEO-ämnen blir inte till utkast
Sökordsanalys är lätt att starta och svårt att avsluta. Du hämtar ”relaterade sökfrågor”, kopierar några till ett ark och sedan ska du avgöra vad som är viktigt, kontrollera vem som redan rankar, plocka ut vad de har täckt och göra om det till en brief eller ett utkast. Det är den där ”ska”-delen som gör att veckor försvinner. Under tiden fortsätter sajten att publicera säkra ämnen som inte flyttar trafiken, eller så jagar ni en trend för sent eftersom ingen hann validera den.
Det summeras snabbt. Och kostnaden är inte bara tid. Det är momentum.
- De flesta team lägger cirka 2 timmar på att validera ett enda ämne när du räknar in SERP-kontroller, läsning av konkurrenter och städning av anteckningar.
- Prioritering blir politisk, så låginsatsidéer vinner över långsvansmöjligheter med hög potential.
- Konkurrentanalys blir inkonsekvent eftersom alla ”skummar” på olika sätt, vilket leder till utkast med tydliga luckor.
- Ditt ark blir en kyrkogård av sökord utan tydlig nästa åtgärd, så publiceringen saktar ner precis när den borde öka.
Lösningen: trenddrivna ämnen, automatiskt prioriterade, utkastade
Det här arbetsflödet gör ett seed-sökord till en repeterbar pipeline: upptäck vad som trendar, avgör vad som är värt att skriva, analysera vad som redan rankar och generera sedan ett SEO-utkast som du faktiskt kan granska. Du börjar med att ange en seed-term (som ”projektledning” eller en produktkategori). Scrapeless hämtar relaterade sökfrågor från Google Trends och samlar signaler för intresse över tid. En AI-agent granskar sedan signalerna, märker varje sökord med prioritet (P0–P3) och loggar ”vad” och ”varför” i Google Sheets.
Därefter väljer flödet bara de högre prioriterade ämnena (P0–P2), kör en Google-sökning via Scrapeless/Deep SerpAPI och hämtar de främsta organiska konkurrentsidorna. Scrapeless crawlar varje sida och extraherar korrekt formaterad Markdown, så att din AI-skribent inte gissar baserat enbart på titlar. Till sist genererar agenten ”Senior Content Writer” ett komplett SEO-artikelutkast (titel, slug, metabeskrivning, strategisammanfattning och en strukturerad brödtext). Den färdiga outputen sparas i Supabase, redo för granskning eller API-baserad publicering.
Arbetsflödet startar när du triggar det i n8n och anger (eller uppdaterar) ditt seed-sökord. Därefter hittar och poängsätter det trendbaserade long-tail-sökord, berikar sedan de bästa med konkurrentinnehåll. Slutligen producerar AI artikelutkast och lagrar dem i Supabase, medan Google Sheets håller din prioriterade ämneslista prydlig.
Vad du får: automatisering vs. resultat
| Vad det här arbetsflödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du publicerar 4 SEO-inlägg per vecka för en internationell sajt. Manuellt, om du lägger cirka 2 timmar per ämne på trender + konkurrentläsning, är det ungefär 8 timmar innan skrivandet ens börjar. Med det här arbetsflödet triggar du körningen, väntar på att research och utkast blir klara och granskar sedan det som lagras i Supabase. Sättupp-tiden är en engångsinsats på 30–60 minuter, och veckovis ”ämne till utkast”-tid sjunker vanligtvis till cirka en timmes granskning och redigering.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Scrapeless för trender, SERP och crawling.
- Google Sheets för att lagra och hantera ämnesprioriteringar.
- Supabase för att lagra utkast och strukturerad artikel-JSON.
- LLM-uppgifter (hämta från OpenAI- eller Anthropic-konsolen).
Kunskapsnivå: Medel. Du kopplar några API:er, mappar fält och testkör med små batcher.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Du triggar körningen och anger dina seed-termer. Arbetsflödet startar från en manuell trigger och steget ”Assign Seed Terms” definierar nischen som du vill bygga topical authority inom.
Trender samlas in och poängsätts. Scrapeless hämtar relaterade sökfrågor och data för intresse över tid, och sedan granskar en AI-agent signalerna och märker varje sökord med en prioritet (P0–P3) så att du inte gissar.
Bara de bästa ämnena får full konkurrentanalys. Arbetsflödet filtrerar bort lågprioriterade objekt, kör en Google-sökning, väljer de främsta konkurrentlänkarna, crawlar sedan sidorna och konverterar dem till korrekt formaterad Markdown som din skribentmodell kan använda.
Utkast genereras och sparas. Agenten ”Senior Content Writer” tar fram ett strukturerat artikelpaket (titel, slug, meta, strategisammanfattning, brödtextblock), därefter parsar arbetsflödet JSON:en och skriver in den i Supabase för granskning och publicering.
Du kan enkelt justera prioritetströsklarna för att bredda eller snäva in vad som ska utkastas utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera den manuella triggern
Starta arbetsflödet med en manuell körning så att ni kan validera utdata innan ni schemalägger eller driftsätter.
- Lägg till Manual Run Trigger som startnod.
- Observera att Manual Run Trigger skickar utdata parallellt till både Assign Seed Terms och Fetch Sheet Rows.
Steg 2: anslut Google Sheets
Konfigurera Google Sheets-noderna för att lagra trendinsikter och hämta befintliga ämnesrader för konkurrentanalys.
- Öppna Upsert Sheet Record och ställ in Operation till
appendOrUpdate. - Ställ in Document till
[YOUR_ID]och Sheet till[YOUR_ID]i Upsert Sheet Record. - Mappa fält i Upsert Sheet Record: Level →
{{ $json.recommended_priority }}, Reason →{{ $json.data_interpretation }}, Seed Keywords →{{ $('Assign Seed Terms').item.json.seedKeyword }}, Related Keywords →{{ $json.keyword }}. - Öppna Fetch Sheet Rows och ställ in Document till
[YOUR_ID]och Sheet till[YOUR_ID]. - Inloggningsuppgifter krävs: anslut era googleSheetsOAuth2Api-inloggningsuppgifter till Upsert Sheet Record och Fetch Sheet Rows.
Steg 3: konfigurera trendidentifiering och prioritering
Den här grenen genererar trendbaserade nyckelordsprioriteringar och skriver dem till arket.
- I Assign Seed Terms, ställ in seedKeyword till
Project Management. - Konfigurera Fetch Trend Topics med Operation
googleTrends, Data Typerelated_queries, GeoUSoch Query{{ $json.seedKeyword }}. - Ställ in Expand Related Queries för att dela upp Field to Split Out
related_queries.top. - Konfigurera Retrieve Trend Heat med Operation
googleTrends, GeoUSoch Query{{ $json.query }}. - I Trend Analysis Agent, behåll Text som
=The following are the keywords for the topic:` {{ $json.parameters.q }}` trends data: ``` {{ $json.interest_over_time.toJsonString() }} ```och säkerställ att Has Output Parser är aktiverat. - Granska Structured Result Parser och behåll JSON-schemaexemplet enligt det som är angivet.
- Låt koden i Prioritize Output Sorter vara oförändrad för att sortera efter nivåerna
P0–P3. - Inloggningsuppgifter krävs: anslut era scrapelessApi-inloggningsuppgifter till Fetch Trend Topics och Retrieve Trend Heat.
- Inloggningsuppgifter krävs: anslut era anthropicApi-inloggningsuppgifter till Anthropic Chat Engine.
- Obs: Structured Result Parser är en subnod till Trend Analysis Agent. Lägg till inloggningsuppgifter i Anthropic Chat Engine, inte i parsern.
Steg 4: konfigurera konkurrentanalys och innehållsaggregering
Den här grenen filtrerar prioriterade ämnen, söker efter konkurrenter, crawlar sidor och aggregerar markdown-innehåll.
- I Distribute Level Items, ställ in Field to Split Out till
Leveloch Include tillallOtherFields. - Konfigurera Exclude Low Priority Topics med ett villkor: Level
{{ $json.Level }}notContainsP3. - Ställ in frågan i Run Google Search till
{{ $json['Related Keywords'] }}. - I Select Top Competitor Links, ställ in organic_results till
{{ $json.organic_results.slice(0,3) }}. - Konfigurera Split Competitor Results för att dela upp Field to Split Out
organic_results. - Ställ in Crawl Competitor Pages med Resource
crawler, Operationcrawloch URL{{ $json.link }}. - I Map Competitor Markdown, ställ in markdown till
{{ $json[0].markdown }}. - Konfigurera Aggregate Markdown för att aggregera fältet markdown.
- Inloggningsuppgifter krävs: anslut era scrapelessApi-inloggningsuppgifter till Run Google Search och Crawl Competitor Pages.
Steg 5: konfigurera AI-skrivning, parsning och lagring
Skapa en fullständig SEO-artikel från aggregerad markdown och lagra den i Supabase.
- I Senior Content Writer, behåll den strukturerade prompten och JSON-utdataformatet intakt.
- Säkerställ att Anthropic Writer Model är ansluten som språkmodell för Senior Content Writer.
- Låt koden i Parse AI Article JSON vara oförändrad för att rensa och parsa modellens utdata.
- I Insert Supabase Row, ställ in Table till
seo_articlesoch mappa fält: title →{{ $json.title }}, meta_description →{{ $json.meta_description }}, body →{{ $json.body }}, slug →{{ $json.slug }}. - Inloggningsuppgifter krävs: anslut era anthropicApi-inloggningsuppgifter till Anthropic Writer Model.
- Inloggningsuppgifter krävs: anslut era supabaseApi-inloggningsuppgifter till Insert Supabase Row.
Steg 6: testa och aktivera ert arbetsflöde
Kör arbetsflödet från början till slut för att verifiera arkuppdateringar, konkurrentcrawling, AI-utdata och databaslagring.
- Klicka på Execute Workflow från Manual Run Trigger för att testa alla grenar.
- Bekräfta att Upsert Sheet Record skriver prioriterade nyckelord till ert Google Sheet.
- Verifiera att Aggregate Markdown matar ut en array med konkurrentinnehåll innan Senior Content Writer körs.
- Kontrollera att Insert Supabase Row skapar en ny post i
seo_articlesmed ifyllda fält. - När testet lyckas, växla arbetsflödet till Active för användning i produktion.
Vanliga fallgropar
- Scrapeless-uppgifter kan löpa ut eller så kan din plan blockera vissa endpoints. Om något skapar fel, kontrollera först användningen i din Scrapeless-dashboard och status för API-nyckeln.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Ö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 för alltid.
Vanliga frågor
Cirka 30–60 minuter när dina API-nycklar är klara.
Nej. Du kopplar mest konton, klistrar in API-nycklar och justerar några fält som ditt seed-sökord och prioriteringsregler.
Ja. n8n har ett gratis self-hosted-alternativ och en gratis provperiod på n8n Cloud. Cloud-planer börjar på $20/månad för högre volym. Du behöver också räkna med Scrapeless-användning samt LLM API-kostnader för utkast.
Två alternativ: n8n Cloud (hanterat, enklast uppsättning) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärd och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serveradministration.
Ja, och det är en vanlig justering för internationell SEO. Du kan köra separata seed-termer per locale och sedan skicka en lands-/språkparameter i Scrapeless-trend- och sökförfrågningarna. De flesta team justerar också AI-prompterna i stegen ”Trend Analysis Agent” och ”Senior Content Writer” så att output matchar lokal intent och stavningskonventioner. Om du vill behålla en gemensam master-backlogg, lägg till en locale-kolumn i Google Sheets och inkludera den i Supabase-posten.
Oftast beror det på en ogiltig eller utgången API-nyckel, eller att endpointen du anropar inte är aktiverad i din plan. Skapa en ny nyckel i Scrapeless, uppdatera den i n8n och kör sedan om ett enda sökord för att bekräfta att det fungerar. Om det bara misslyckas vid större batcher kan det vara rate limiting; sakta ner arbetsflödet eller minska hur många sökord du processar per körning.
Om du self-hostar n8n finns ingen körningsgräns, så begränsningen är främst din serverstorlek och dina Scrapeless/LLM-kvoter. På n8n Cloud beror det på din plans månatliga körningar. I praktiken processar många team 20–50 sökord per körning och genererar sedan utkast bara för P0–P2 för att kontrollera crawl- och modellkostnader.
Ofta, ja. Den här typen av pipeline behöver filtrering, förgreningar, strukturerad parsing och forskningsloopar i flera steg, och n8n hanterar det utan att du betalar extra för varje väg. Self-hosting är också viktigt om du vill ha obegränsade körningar eller om du använder community-noder som inte fungerar på hanterade plattformar. Zapier eller Make kan fortfarande vara bra för enkla ”skicka den här raden till det här verktyget”-automationer, men de blir klumpiga när du lägger till crawling och agentbaserad utkastgenerering. Om du är osäker, prata med en automationsexpert och mappa det mot din volym.
När det här väl rullar slutar din backlogg att vara en önskelista och blir en produktionslinje. Arbetsflödet tar hand om den repetitiva researchen och utkastandet så att du kan lägga din tid på granskning, differentiering och publicering.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.