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 + OpenAI: crawla sajter, auditera snabbare

Rickard Andersson Partner, Nodenordic.se

Du öppnar en webbplatsgranskning och drunknar direkt i flikar. Startsida, tjänster, bloggsidor, slumpmässiga landningssidor, sedan en flik till för rubriker, en till för länkar, en till för anteckningar som du intalar dig att du ska strukturera senare.

Det är här site crawl automation hjälper. SEO-analytiker känner oftast smärtan först, men content leads och kundansvariga på byrå hamnar i samma loop: hitta sida, kopiera rubriker, räkna länkar, sammanfatta, upprepa.

Det här arbetsflödet crawlar en webbplats, sparar det nyttiga i Google Sheets och låter dig sedan ställa frågor som i en chattbot med hjälp av den sparade datan. Du får se vad det gör, vad du behöver och var team vanligtvis sparar ett par timmar per granskning.

Så fungerar den här automatiseringen

Se hur detta löser problemet:

n8n Workflow Template: Google Sheets + OpenAI: crawla sajter, auditera snabbare

Utmaningen: webbplatsgranskningar blir flikkaos

En “snabb” webbplatsgranskning förblir sällan snabb. Du börjar med en fråga (“vad finns på tjänstesidorna?”), och plötsligt granskar du rubriker manuellt, följer navigationsvägar och plockar länkar till ett dokument som ingen någonsin återanvänder. Den mentala belastningen är också lurig. Du växlar hela tiden kontext, vilket gör att du missar uppenbara problem som dubbla H1:or, tunna sidor som gömmer sig i en sitemap eller föråldrade CTA:er. Och om du gör detta för flera kundwebbplatser blir det samma repetitiva slit varje vecka.

Det drar snabbt iväg. Här är var det fallerar i verkligheten.

  • Du slutar med att kopiera rubriker och länkar för hand, och i samma sekund som du klistrar in dem i ett dokument blir de inaktuella.
  • Sitemaps är inkonsekventa mellan webbplatser, så du slösar tid på att leta efter “rätt” URL:er att granska.
  • Granskningar fastnar vid “observationer” eftersom det tar evigheter att sammanfatta varje viktig sida.
  • När någon ställer en följdfråga en vecka senare måste du göra om crawlen eftersom dina anteckningar inte är strukturerade.

Lösningen: crawla en gång, lagra i Sheets och ställ sedan frågor

Det här arbetsflödet börjar som en webb-konsultationschattbot, men den stora vinsten är vad den kommer ihåg. Första gången du ger den en webbplats-URL validerar den URL:en med AI, hittar sitemap via robots.txt och väljer den mest relevanta sitemap:en (sidor, inlägg, kategorier, taggar) baserat på dina skanningsalternativ. Sedan crawlar den de valda URL:erna i batcher, laddar ner varje sidas HTML, konverterar till Markdown och använder OpenAI för att extrahera språk, rubrikhierarki, interna länkar, externa länkar och en korrekt formaterad sammanfattning. Varje sida blir en strukturerad rad i Google Sheets, så att du kan filtrera, sortera och återanvända den senare. När indexeringen är klar markeras arket som redo, vilket växlar arbetsflödet till “agentläge” för framtida frågor.

Efter den första crawlen gör du inte om hela granskningen från noll. Du ställer frågor i chatten, och AI-agenten läser din Google Sheets-“minnesbank” för att svara snabbt. Om något behöver färsk information kan den också göra HTTP-förfrågningar i realtid så att du inte behöver lita på gamla ögonblicksbilder.

Vad som förändras: före vs. efter

Verklig effekt

Säg att du granskar en marknadsföringswebbplats med 50 sidor. Manuellt kan du lägga cirka 5 minuter per sida på att öppna den, notera H1/H2:or, skumma för att förstå innehållet och plocka ut ett par nyckellänkar, vilket blir ungefär 4 timmar ren sysselsättning. Med det här arbetsflödet skickar du in URL:en en gång, låter det crawla i bakgrunden och får ett Google-ark med rubriker, länkar och sammanfattningar för varje sida. Därifrån tar “visa mig alla H1:or på tjänstesidor” minuter, inte ännu en eftermiddag.

Krav

  • n8n-instans (testa n8n Cloud gratis)
  • Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
  • Google Sheets för att lagra crawlresultat och “minne”.
  • OpenAI för att extrahera rubriker, länkar och sammanfattningar.
  • OpenAI API-nyckel (hämta den i din OpenAI-instrumentpanel).

Kunskapsnivå: Medel. Du kopplar konton, klistrar in API-nycklar och justerar skanningsalternativ, men du behöver inte skriva riktig kod om du inte vill.

Behöver du hjälp att implementera detta? Prata med en automatiseringsexpert (gratis 15-minuters konsultation).

Så går arbetsflödet till

Ett chattmeddelande triggar arbetsflödet. Du anger en webbplats-URL i chattgränssnittet och arbetsflödet kontrollerar först Google Sheets för att se om webbplatsen redan har indexerats.

Det validerar URL:en och hittar sitemap:en. Om webbplatsen är ny bekräftar en AI-validerare att URL:en går att använda, sedan hämtar en HTTP-förfrågan robots.txt för att hitta sitemap-URL:er. Ett annat AI-steg väljer den mest relevanta sitemap:en baserat på dina skanningsalternativ (till exempel sidor vs. inlägg).

Crawlern behandlar sidor i batcher. Varje URL hämtas med en HTTP-förfrågan med roterande user-agent, HTML konverteras till Markdown och OpenAI analyserar innehållet för att extrahera språk, rubrikstruktur, interna länkar, externa länkar och en sammanfattning. Resultaten läggs till i Google Sheets rad för rad.

Sedan växlar den till “agentläge” för frågor. När arket har markerats som indexerat läser agenten (i LangChain-stil) dina sparade rader för att svara på frågor som “vad finns på kontaktsidan?” Den kan också göra live-HTTP-kontroller när du behöver uppdaterad information.

Du kan enkelt ändra vilka URL-typer som skannas (sidor, inlägg, kategorier) så att det matchar ditt sätt att granska. Se hela implementationsguiden nedan för anpassningsalternativ.

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

Steg 1: Konfigurera Web Chat Trigger

Sätt upp den inkommande chatt-endpointen som startar arbetsflödet och skickar användarens input vidare till AI-valideringen och konversationsflödena.

  1. Lägg till och öppna Web Chat Trigger.
  2. Ställ in Publictrue och AuthenticationbasicAuth.
  3. Credential Required: Anslut era httpBasicAuth-credentials.
  4. Bekräfta att Web Chat Trigger går vidare till Retrieve Data Schema som första steg i flödet.

Steg 2: Koppla Google Sheets

Dessa noder läser och skriver till webbplatsens innehållsdatabas som används av assistenten och av sammanfattningsprocessen.

  1. Öppna Retrieve Data Schema och välj kalkylarket i Document ID och Sheet Name (t.ex. gid=0).
  2. I Retrieve Data Schema säkerställer ni att filtret använder Lookup Column Data schema med Lookup Value ={{ true }}.
  3. Credential Required: Anslut era googleSheetsOAuth2Api-credentials i Retrieve Data Schema.
  4. Öppna Schema Flag Update, ställ in OperationappendOrUpdate, och mappa Data schema till ={{true}}.
  5. Credential Required: Anslut era googleSheetsOAuth2Api-credentials i Schema Flag Update.
  6. Öppna Append Sheet Row, behåll Operation som append, och bekräfta att kolumnmappningarna använder AI-uttrycken som ={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Summary_Content', ``, 'string') }}.
  7. Credential Required: Anslut era googleSheetsOAuth2Api-credentials i Append Sheet Row.

Tips: Fetch Sheet Rows och Append Sheet Row är AI-verktyg. Deras credentials konfigureras direkt på de noderna, men de används av Conversational Agent och Page Summary Model som verktyg.

Steg 3: Sätt upp URL-validering och schemakontroller

Den här delen validerar användarens URL:er, kontrollerar om schemat redan finns och routar vidare antingen till chattsvaret eller till flödet för sitemap-skanning.

  1. Öppna Schema Check och bekräfta att villkoret använder ={{ $json['Data schema'] }} med en boolean-kontroll för true.
  2. Öppna URL Validator Agent och ställ in Text={{ $node["Web Chat Trigger"].json["chatInput"] }}.
  3. Koppla Structured Parser till URL Validator Agent som output-parser och behåll JSON-schemaexemplet:

{ "URL": "example.com", "URL_bool": true }

  1. Koppla OpenAI Validator Model som språkmodell för URL Validator Agent.
  2. Credential Required: Anslut era openAiApi-credentials i OpenAI Validator Model (credentials sätts på modellnoden, inte på agenten).
  3. Öppna URL Valid Check och bekräfta att villkoret använder ={{ $json.output.URL_bool }} med en boolean-kontroll för true.
  4. För ogiltiga URL:er säkerställer ni att Invalid URL Reply skickar meddelandet Debes introducir una URL válida ejemplo: https://google.es.

⚠️ Vanlig fallgrop: Om URL-valideraren returnerar ett icke-booleskt värde i URL_bool, kommer URL Valid Check inte att släppa igenom. Behåll structured parser-schemat intakt.

Steg 4: Konfigurera Conversational Agent och minne

Den här agenten besvarar chattförfrågningar med webbplatsdata i Google Sheets och en språkmodell, med minne aktiverat för kontext.

  1. Öppna Conversational Agent och ställ in Text={{ $node["Web Chat Trigger"].json["chatInput"] }}.
  2. Koppla OpenAI Chat Engine som språkmodell för Conversational Agent.
  3. Credential Required: Anslut era openAiApi-credentials i OpenAI Chat Engine.
  4. Koppla Lightweight Memory till Conversational Agent och behåll Context Window Length50.
  5. Koppla Fetch Sheet Rows som ett AI-verktyg till Conversational Agent så att den kan hämta webbplatsinnehåll från arket.
  6. Credential Required: Anslut era googleSheetsOAuth2Api-credentials i Fetch Sheet Rows (verktyg använder sina egna credentials, men anropas av agenten).
  7. Bekräfta att Conversational Agent routar till Agent Response och att Agent Response använder ={{ $json.output }} som meddelande.

Steg 5: Konfigurera upptäckt och val av sitemap

Dessa noder bygger en giltig sitemap-URL från robots.txt, hämtar sitemap:en och väljer rätt sitemap-sektion med AI.

  1. Öppna Scan Options och behåll boolean-flaggorna enligt konfigurationen: scan_pages true, scan_posts false, category false, tags false.
  2. I Random UA Picker behåller ni den JavaScript-kod som returnerar en slumpmässig userAgent-sträng.
  3. Öppna Robots.txt Request och ställ in URL={{ $node["URL Validator Agent"].json["output"]["URL"] }}/robots.txt.
  4. Bekräfta att Parse Sitemap URL parsar robots.txt-innehållet och returnerar sitemapUrl enligt koden.
  5. Öppna Sitemap Fetch och ställ in URL={{ $json.sitemapUrl }} med headers som inkluderar User-Agent ={{ $json.userAgent }}.
  6. Öppna XML Decode A för att parsa sitemap-XML och skicka vidare till Sitemap Selector.
  7. Öppna Sitemap Selector, behåll JSON Output aktiverat och verifiera att den refererar till scan options och sitemap-indexets loc:er med uttryck som {{ $json.sitemapindex.sitemap[0].loc }}.
  8. Credential Required: Anslut era openAiApi-credentials i Sitemap Selector.
  9. Öppna Page Sitemap Fetch och ställ in URL={{ $json.message.content.sitemap_page }}, och routa sedan till XML Decode B.

⚠️ Vanlig fallgrop: Om Parse Sitemap URL returnerar null kommer Sitemap Fetch att misslyckas och trigga Sitemap Failure Halt. Säkerställ att robots.txt innehåller en giltig Sitemap:-rad.

Steg 6: Konfigurera URL-splitting, sidförfrågningar och sammanfattning

Det här steget expanderar den valda sitemap:en till individuella URL:er, hämtar varje sida, konverterar HTML till Markdown och sammanfattar innehållet med AI.

  1. Öppna Combine URL Map och behåll den JavaScript-kod som transformerar urlset.url till ett urls-objekt.
  2. Öppna Split URL Items och ställ in Field To Split Outurls.
  3. Öppna Batch Iterator för att styra batchbearbetning av URL:er innan sidor begärs.
  4. Öppna Page Request och ställ in URL={{ $('Split URL Items').item.json.urls }} med User-Agent-headern ={{ $json.userAgent }}.
  5. Öppna HTML Convert to MD och ställ in HTML={{ $json.data }}.
  6. Öppna Page Summary Model och säkerställ att meddelandet inkluderar =URL: {{ $('Split URL Items').item.json.urls }} {{ $json.data }} i prompten.
  7. Credential Required: Anslut era openAiApi-credentials i Page Summary Model.
  8. Bekräfta att Page Summary Model använder Append Sheet Row som ett AI-verktyg för att skriva resultaten till arket.

Tips: Om sidor returnerar tomt innehåll, kontrollera headers i Page Request och User-Agent från Random UA Picker.

Steg 7: Lägg till felhantering

Arbetsflödet innehåller explicita stopp för ogiltiga URL:er och sitemap-fel.

  1. Verifiera att Request Error Halt är kopplad från felutgången på Robots.txt Request och använder meddelandet URL mal introducida, debes introducir con el siguiente formato: ejemplo.com.
  2. Verifiera att Sitemap Failure Halt är kopplad från felutgången på Sitemap Fetch och använder meddelandet Sitemap no encontrado o acceso bloqueadp.

⚠️ Vanlig fallgrop: Om Sitemap Fetch returnerar 403/404, bekräfta sitemap-URL:en från Parse Sitemap URL och om webbplatsen blockerar automatiserade förfrågningar.

Steg 8: Testa och aktivera ert arbetsflöde

Kör ett kontrollerat test för att validera hela flödet från chattrespons till sitemap-sammanfattning.

  1. Klicka på Execute Workflow och skicka ett chattmeddelande via Web Chat Trigger med en URL som https://example.com.
  2. Bekräfta att en giltig URL routas via URL Valid Check till Scan Options, Robots.txt Request och Sitemap Fetch.
  3. Verifiera att Page Summary Model körs och att Append Sheet Row lägger till en rad med Lang, Page URL och Summary Content.
  4. Kontrollera att Agent Response returnerar ett chattsvar när Schema Check är true och att Invalid URL Reply triggas för ogiltiga URL:er.
  5. När allt är validerat, växla arbetsflödet till Active för användning i produktion.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Saker att se upp med

  • Google Sheets-inloggningar kan löpa ut eller kräva specifika behörigheter. Om det skapar fel, kontrollera först kopplingen för inloggningsuppgifter i n8n och delningsinställningarna för arket.
  • Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
  • Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du att redigera output för alltid.

Vanliga frågor

Hur snabbt kan jag implementera den här automatiseringen för webbplatscrawl?

Cirka 30 minuter om dina konton och API-nycklar är klara.

Kan icke-tekniska team implementera den här automatiseringen för webbplatscrawl?

Ja, men någon behöver vara bekväm med att koppla Google Sheets och lägga till en OpenAI API-nyckel. Resten handlar mest om att välja skanningsalternativ och testa med en liten webbplats först.

Är n8n gratis att använda för det här arbetsflödet för webbplatscrawl?

Ja. n8n har ett gratis self-hosted-alternativ 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 kan dra iväg vid stora crawls.

Var kan jag hosta n8n för att köra den här automatiseringen?

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 dig obegränsade körningar men kräver grundläggande serverhantering.

Hur anpassar jag den här lösningen för webbplatscrawl till mina specifika utmaningar?

Du kan ändra vad som crawlas genom att justera Scan Options-inställningen och beteendet för val av sitemap, så att du bara processar sidor, inlägg eller andra URL-typer. Många team anpassar också AI-extraktionsprompten som används under sidanalysen för att fånga saker som metatitlar, CTA:er eller schema-snuttar. Om du vill ha färskare svar senare, låt agentens live-HTTP-verktyg vara aktiverat så att den kan kontrollera om kritiska sidor vid begäran.

Varför fallerar min Google Sheets-anslutning i det här arbetsflödet?

Oftast beror det på en utgången token eller att behörigheterna för arket har ändrats. Anslut Google Sheets-inloggningen på nytt i n8n, bekräfta att rätt Google-konto används och säkerställ att målarket är tillgängligt för det kontot. Om det bara fallerar vid “append row”, kontrollera att dina rubrikkolumner fortfarande matchar det arbetsflödet försöker skriva.

Vilken kapacitet har den här lösningen för webbplatscrawl?

Det beror på din n8n-plan och din server. På self-hosted n8n finns inget tak för antal körningar, men crawlstorleken begränsas av körtid, rate limits och OpenAI-tokenkostnader, särskilt under den första indexeringen.

Är den här automatiseringen för webbplatscrawl bättre än att använda Zapier eller Make?

För crawling och analys är n8n vanligtvis det praktiska valet eftersom du behöver batchning, villkorslogik och ett upplägg där du “sparar i Sheets och frågar senare”. Zapier och Make kan lösa delar av detta, men långkörande crawls och flerstegsprocessning blir snabbt klumpigt, och kostnaderna kan öka när du itererar över många URL:er. n8n ger dig också self-hosting, vilket spelar roll när du kör många exekveringar. Ärligt talat handlar det om komplexitet: enkel synk mellan två appar, Zapier fungerar. För det här arbetsflödets crawl + AI-extraktion + agentläge passar n8n bättre. Om du vill ha en second opinion, prata med en automatiseringsexpert.

När en webbplats är indexerad tystnar den irriterande delen av granskningen. Du behåller det strukturerade arket, ställer bättre frågor och rör dig snabbare i arbetet som faktiskt påverkar resultatet.

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