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

ScrapingBee till Google Sheets: alla sitemap-URL:er

Rickard Andersson Partner, Nodenordic.se

Du hämtar en sitemap, klistrar in några URL:er i ett ark och tycker att det är klart. Sedan inser du att sajten har fem sitemap-filer, två av dem är gzippade, och robots.txt pekar på ett annat index än sitemap.xml.

Det är den här typen av röra som sänker SEO-leads, bromsar marketing ops och, ärligt talat, irriterar byråteam som försöker köra revisioner i skala. Med den här ScrapingBee Sheets-automationen skickar du en domän och får ett växande ”alla URL:er”-ark som du faktiskt kan lita på.

Nedan får du exakt workflow, vad det löser och vad du behöver för att få in varje sitemap-URL i Google Sheets utan att behöva vaka över processen.

Så fungerar den här automatiseringen

Hela n8n-workflowet, från trigger till slutresultat:

n8n Workflow Template: ScrapingBee till Google Sheets: alla sitemap-URL:er

Problemet: sitemaps är aldrig ”bara en fil”

Att plocka ut sitemap-URL:er låter enkelt tills du gör det på riktiga webbplatser. Du laddar ner sitemap.xml, men det är egentligen ett sitemap-index som länkar till tio andra XML:er, och några av dem länkar vidare. Sedan har du robots.txt, som kan lista en annan sitemap än den du gissade på. Lägg till gzippade sitemaps (sitemap.xml.gz) och du har ett upplägg som skapar fel så fort du försöker göra det manuellt. Du tappar en eftermiddag, missar ändå sidor och känner dig inte tillräckligt trygg för att basera en revision på listan du samlade in.

Det går snabbt att det skenar. Här är var det brukar fallera.

  • Du slutar med att kopiera in ofullständiga URL-listor i Google Sheets och inser sedan att du missat hela grenar av sitemaps.
  • Komprimerade sitemap-filer kräver extra steg, och det är lätt att hoppa över dem när du jobbar snabbt.
  • Sajter som blockerar enkla förfrågningar gör ”snabba script” opålitliga, vilket innebär att du kör om jobbet och ändå tvivlar på resultatet.
  • När sitemaps uppdateras blir ditt kalkylark snabbt inaktuellt om ingen upprepar hela processen igen.

Lösningen: skicka en domän, få varje URL i ett ark

Det här n8n-workflowet startar med ett enkelt webhook-anrop som innehåller domänen (som domain=www.example.com). Därefter använder det ScrapingBee för att hämta robots.txt, kontrollerar efter sitemap-referenser och faller tillbaka till sitemap.xml när robots.txt inte hjälper. Varje XML-resurs som upptäcks hämtas och inspekteras, inklusive knepiga fall som binära payloads och gzippade arkiv. Workflowet extraherar två saker: de ”riktiga” webbplats-URL:er du vill revidera, och eventuella extra XML-sitemaplänkar som ska följas härnäst. De XML-länkarna matas tillbaka in i samma hämta-och-parsa-loop tills det inte finns fler sitemap-filer att jaga, och varje upptäckt sid-URL appendas till ett Google-ark.

Workflowet startar när du skickar en GET-förfrågan till webhooken med en domän. ScrapingBee hämtar robots.txt och sitemap.xml, och därefter samlar workflowet rekursivt in sitemap-länkar och sidlänkar (inklusive .gz-sitemaps). Till sist appendas alla icke-XML-URL:er till en enda kolumn, links, i Google Sheets så att du kan filtrera, avduplicera och revidera.

Det du får: automatisering vs. resultat

Exempel: så här ser det ut

Säg att du reviderar en medelstor e-handelssajt med 12 sitemap-filer, och att varje fil tar cirka 10 minuter att ladda ner, öppna, extrahera och klistra in i ett ark. Det är ungefär 2 timmar, och det är innan du upptäcker att tre av dem är .gz-arkiv. Med det här workflowet skickar du en webhook-förfrågan (en minut), låter n8n och ScrapingBee bearbeta och köra rekursivt i kanske 20 minuter, och ditt Google-ark fylls på under tiden. Du granskar fortfarande listan, men du gör inte grovjobbet.

Det här behöver du

  • n8n-instans (prova n8n Cloud gratis)
  • Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
  • ScrapingBee för att hämta robots.txt och sitemaps på ett tillförlitligt sätt.
  • Google Sheets för att lagra den slutliga URL-listan.
  • ScrapingBee API-nyckel (hämta den i din ScrapingBee-dashboard).

Kunskapsnivå: Medel. Du klistrar in inloggningsuppgifter, skapar en kolumn i arket som heter links, och testar ett webhook-anrop.

Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).

Så fungerar det

En webhook startar körningen. Du anropar workflowets URL med en enda query-parameter (domain=…). Det är allt. Inga CSV-uppladdningar, inga manuella inmatningar utöver domänen.

Sitemaps upptäcks på det sätt som sökmotorer förväntar sig. Workflowet hämtar robots.txt via ScrapingBee, kontrollerar efter sitemap-referenser och hämtar sedan sitemap.xml vid behov. Det spelar roll eftersom många sajter inte lägger sin ”riktiga” sitemap där du skulle anta.

Varje XML-resurs inspekteras och tolkas. Workflowet kontrollerar om svaret är text eller binärt, upptäcker .gz-arkiv, packar upp när det krävs och tolkar XML till strukturerad data så att URL:er kan extraheras konsekvent.

URL:er delas upp i två flöden. Vanliga sid-URL:er appendas direkt till Google Sheets, medan nyfunna XML-sitemaplänkar matas tillbaka in i workflowet för att hämtas härnäst. Loopen fortsätter tills det inte finns några XML-länkar kvar att hämta.

Du kan enkelt ändra destinationen från Google Sheets till Excel 365 eller en databas beroende på dina behov. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementering

Steg 1: konfigurera webhook-triggern

Sätt upp den inkommande webhooken som tar emot en domän och startar sitemap-upptäckt.

  1. Lägg till noden Inbound Domain Hook som trigger.
  2. Ställ in Path till 1da30868-fbca-4e8e-8580-485afb3fd956.
  3. Planera att anropa webhooken med en query-parameter som heter domain (t.ex. ?domain=example.com).

⚠️ Vanlig fallgrop: Arbetsflödet förväntar sig $('Inbound Domain Hook').item.json.query.domain. Om ni skickar domänen i body i stället för i query blir URL:erna i Fetch robots.txt och Retrieve sitemap.xml tomma.

Steg 2: anslut ScrapingBee och konfigurera sitemap-upptäckt

Hämta robots.txt och sitemap.xml via ScrapingBee för att hitta sitemap-referenser.

  1. I Fetch robots.txt ställer ni in URL till =https://{{ $('Inbound Domain Hook').item.json.query.domain }}/robots.txt.
  2. Inloggning krävs: Anslut era ScrapingBeeApi-uppgifter i Fetch robots.txt.
  3. I Retrieve sitemap.xml ställer ni in URL till =https://{{ $('Inbound Domain Hook').item.json.query.domain }}/sitemap.xml.
  4. Inloggning krävs: Anslut era ScrapingBeeApi-uppgifter i Retrieve sitemap.xml och Fetch XML Resource (används för sitemap-URL:er som upptäcks senare).
  5. Lämna Detect sitemap refs som den är; den kontrollerar ={{ $json.data }} efter strängen Sitemap: för att hitta sitemap-referenser.

Om en webbplats blockerar direkta anrop kan ScrapingBee:s proxy ändå hämta /robots.txt och /sitemap.xml utan att ni behöver ändra några nodinställningar.

Steg 3: konfigurera binär hantering och XML-tolkning

Hantera binära sitemap-svar, inklusive gzip-arkiv, innan ni tolkar XML.

  1. I Check Binary Payload behåller ni villkoret ={{ $binary }} is not empty för att styra binär bearbetning.
  2. I Check for GZ archive behåller ni Left Value som ={{ $binary.data.fileExtension }} och Right Value som gz.
  3. Använd Unzip GZ content för att packa upp gzip-sitemaps innan tolkning.
  4. I Map Binary Data Key behåller ni JavaScript-koden som mappar om file_0 till data så att Parse XML as JSON kan läsa den.
  5. I Parse XML as JSON ställer ni in Operation till xml och Binary Property Name till =data.

⚠️ Vanlig fallgrop: Om Map Binary Data Key tas bort hittar Parse XML as JSON inte data och tolkningen misslyckas för gzip-komprimerade sitemaps.

Steg 4: konfigurera URL-extrahering och parallell förgrening

Dela upp tolkad XML i icke-XML-URL:er för output och XML-URL:er för rekursiv hämtning.

  1. Behåll koden i Collect Non-XML URLs för att skapa items med { "link": "..." } samtidigt som ni exkluderar .xml, .xml.gz, www.sitemaps.org och www.w3.org.
  2. Behåll koden i Gather XML URLs för att skapa items med { "xml": "..." } för crawlning av nästlade sitemaps.
  3. Parse XML as JSON skickar output parallellt till både Collect Non-XML URLs och Gather XML URLs.
  4. Bekräfta att Gather XML URLs är kopplad till Fetch XML Resource för att hämta nästlad sitemap-XML via ={{ $json.xml }}.

Parallell extrahering gör att rekursionen inte fördröjer output av icke-XML-URL:er, så att ni kan börja spara URL:er direkt.

Steg 5: konfigurera output till Google Sheets

Lägg till upptäckta icke-XML-URL:er i ett kalkylark för lagring och analys.

  1. Lägg till Append URLs to Sheet efter Collect Non-XML URLs.
  2. Inloggning krävs: Anslut era googleSheetsOAuth2Api-uppgifter i Append URLs to Sheet.
  3. Ställ in Operation till append och aktivera Use Append.
  4. Ställ in Document till [YOUR_ID] och Sheet till Sheet1 (gid=0).
  5. I Columns mappar ni links till ={{ $json.link }}.

Steg 6: testa och aktivera ert arbetsflöde

Validera körningen med en exempeldomän och aktivera sedan arbetsflödet för produktion.

  1. Klicka på Execute Workflow och trigga Inbound Domain Hook med en test-URL som ?domain=example.com.
  2. Verifiera att Fetch robots.txt och Retrieve sitemap.xml returnerar innehåll och att Check Binary Payload routar korrekt.
  3. Bekräfta att Append URLs to Sheet lägger till rader med URL-värden i kolumnen links.
  4. När allt fungerar, växla arbetsflödet till Active för att använda webhooken live.
🔒

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

Få den kompletta implementeringsguiden + nedladdningsbar mall

Vanliga fallgropar

  • ScrapingBee-inloggningsuppgifter kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera först status för API-nyckeln och gränserna i din plan i ScrapingBee-dashboarden.
  • Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om noder längre ned i flödet misslyckas på grund av tomma svar.
  • Append till Google Sheets kan tyst gå snett om arket saknar en links-kolumn eller om Google-kontot tappar åtkomst. Kontrollera anslutningen i Google Sheets-noden och ID:t för målarket.

Vanliga frågor

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

Cirka 30 minuter om din ScrapingBee-nyckel och ditt Google-ark är redo.

Behöver jag kunna koda för att automatisera insamling av sitemap-URL:er?

Nej. Du kopplar mestadels konton och klistrar in webhook-URL:en för testning.

Är n8n gratis att använda för det här ScrapingBee Sheets-automationsflödet?

Ja. n8n har ett gratis alternativ för egen drift och en gratis provperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volym. Du behöver också räkna in ScrapingBee API-kostnader baserat på din användning.

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 egen drift på en VPS. För egen drift är Hostinger VPS prisvärt och hanterar n8n bra. Egen drift ger dig obegränsade körningar men kräver grundläggande serveradministration.

Kan jag anpassa det här ScrapingBee Sheets-automationsflödet för Excel i stället för Google Sheets?

Ja, men du byter destinationsnod. Ersätt Google Sheets-steget ”Append URLs to Sheet” med Microsoft Excel 365 (eller en databas) och behåll resten av logiken för sitemap-upptäckt oförändrad. Vanliga anpassningar är att skriva till flera flikar, avduplicera innan insert och lagra extra kolumner som käll-sitemapfilen.

Varför misslyckas min ScrapingBee-anslutning i det här workflowet?

Oftast är det en ogiltig eller utgången API-nyckel, så generera om den i ScrapingBee och uppdatera inloggningsuppgiften i n8n. Det kan också vara en begränsning i din plan om sajten har många XML-filer, eller en blockerad förfrågan som kräver att ScrapingBees premium/stealth proxy-alternativ aktiveras i noderna ”Fetch robots.txt”, ”Retrieve sitemap.xml” eller ”Fetch XML Resource”. Om felen bara händer på .gz-filer, kontrollera grenen för gzip-detektering och uppackning, eftersom en binär payload kan tolkas fel om content-type är ovanlig.

Hur många URL:er klarar den här ScrapingBee Sheets-automationen?

Det beror mer på minne och API-gränser än på ett hårt tak för URL:er. På n8n Cloud Starter begränsas du av månatliga körningar, vilket funkar för periodiska revisioner men inte är optimalt för kontinuerlig crawling. Om du kör i egen drift finns ingen körningsgräns, och kapaciteten avgörs mest av serverns RAM och hur tunga sitemapsen är. För väldigt stora sitemap-index, kör under lågtrafik och överväg att skriva inkrementella resultat (vilket det här workflowet redan gör genom att appenda allt eftersom det hittar URL:er).

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

För rekursiv sitemap-skrapning, ja, i de flesta fall. Zapier och Make är bra för linjära ”A till B”-flöden, men de blir klumpiga när du behöver loopar, grenlogik för gz-filer och ”fortsätt tills det inte finns fler XML-länkar”. n8n hanterar den strukturen snyggt, och du kan köra i egen drift för hög volym utan att betala per litet steg. Om ditt användningsfall bara är ”hämta en sitemap och skriv den till ett ark” kan Zapier vara enklare. Prata med en automationsexpert om du vill ha en snabb rekommendation baserat på din volym.

När det här väl rullar slutar ”ge mig hela listan med sitemap-URL:er” att vara en halvdagsuppgift. Workflowet sköter jakten och tolkningen så att du kan gå tillbaka till revisionen.

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

Få prisoffert redan idag!
Få prisoffert redan idag!

Berätta vad ni behöver hjälp med så hör vi av oss inom en arbetsdag!

Få prisoffert redan idag!
Få prisoffert redan idag!

Berätta vad ni behöver hjälp med så hör vi av oss inom en arbetsdag!

Launch login modal Launch register modal