Du börjar med ”bara en lista med URL:er”. Sedan sitter du hela eftermiddagen med att öppna flikar, kopiera text, städa upp den och klistra in den i dokument som du behöver senare.
Den här Firecrawl Docs-automationen träffar innehållsansvariga först, ärligt talat. Men dataanalytiker som bygger researchpaket och chatbot-team som försöker mata en kunskapsbas känner samma slit. Resultatet är enkelt: din URL-lista blir en prydlig Google Drive-mapp med korrekt formaterade Google Docs, med status spårad tillbaka i Sheets.
Nedan ser du exakt vad workflowet gör, vad du behöver och var team oftast kör fast när de försöker ”batch-scrapa” utan ett system.
Så fungerar den här automationslösningen
Hela n8n-workflowet, från trigger till slutresultat:
n8n Workflow Template: Google Sheets till Google Docs, rensade sidor via Firecrawl
flowchart LR
subgraph sg0["When chat message received Flow"]
direction LR
n0@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n2@{ icon: "mdi:play-circle", form: "rounded", label: "When chat message received", pos: "b", h: 48 }
n3@{ icon: "mdi:location-exit", form: "rounded", label: "Scraping", pos: "b", h: 48 }
n4@{ icon: "mdi:database", form: "rounded", label: "Get URL", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Row not empty", pos: "b", h: 48 }
n6@{ icon: "mdi:cog", form: "rounded", label: "Create file markdown scraping", pos: "b", h: 48 }
n7@{ icon: "mdi:database", form: "rounded", label: "Scraped : OK", pos: "b", h: 48 }
n0 --> n1
n4 --> n5
n3 --> n6
n7 --> n1
n5 --> n0
n1 --> n3
n2 --> n4
n6 --> n7
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 n2 trigger
class n0,n5 decision
class n4,n7 database
Problemet: att förvandla URL-listor till användbara dokument är plågsamt
En URL-lista ser oskyldig ut i Google Sheets tills den blir din ”research-backlog”. Du öppnar en sida, sedan en till, och inser att hälften av sidorna är brusiga (cookiebanners, navigationslänkar, upprepade sidfötter) och den andra halvan är dubbletter som du redan fångade förra veckan. Under tiden väntar teamet på ett korrekt formaterat bibliotek som de kan söka i, citera eller mata in i ett AI-projekt. Det värsta är den mentala belastningen. Du håller hela tiden koll på vad som är klart, vad som har misslyckats och vad som fortfarande behöver uppmärksamhet, oftast med ett luddigt ”jag tror jag kom till rad 47”.
Det blir snabbt mycket. Här är var det faller isär i verkligt arbete.
- Att copy-pasta sidinnehåll till dokument skapar formateringskaos, och du slutar med att redigera om samma skräp på varje sida.
- Utan en tydlig ”bearbetad”-status i arket smyger dubbletter in och du slösar tid på att scrapa det du redan har fångat.
- Batchkörningar misslyckas halvvägs, och då startar du om från början eftersom du inte enkelt kan återuppta där du slutade.
- När du samlar in dussintals sidor växer små fel till timmar av efterstädning innan något faktiskt går att använda.
Lösningen: scrapa från Sheets, skapa korrekt formaterade dokument, följ upp framdriften
Det här workflowet tar ett Google Sheet fyllt med URL:er och gör om varje URL till ett strukturerat Google Doc, automatiskt. Det startar när du skickar Google Sheets-länken via en n8n-chattrigger (eller så kan du byta ut den mot en manuell trigger). n8n läser raderna från en specifik flik, filtrerar bort tomma poster och kontrollerar sedan om varje URL redan har bearbetats så att du inte duplicerar arbete. Därefter loopar det igenom återstående URL:er en i taget (vilket är långsammare, men säkrare för rate limits) och skickar varje sida till Firecrawl för korrekt formaterad extrahering och konvertering till markdown. Till sist skapar det ett Google Doc i en vald Drive-mapp och uppdaterar arket med ett enkelt ”OK” så att du kan se framdriften i realtid.
Workflowet börjar med att läsa arket och göra en snabb valideringsrunda. Sedan scrapar Firecrawl varje sida sekventiellt och konverterar innehållet till markdown. Google Drive lagrar resultatet som separata dokument, och Google Sheets uppdateras så att du kan pausa, återuppta och behålla lugnet.
Det du får: automation vs. resultat
| Det här workflowet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du bygger ett researchbibliotek från 40 konkurrent-sidor. Manuellt kan du lägga cirka 10 minuter per sida på att öppna den, kopiera de användbara delarna, städa formateringen och namnge/spara ett dokument, vilket blir ungefär 6 timmar monotont arbete. Med det här workflowet klistrar du in de 40 URL:erna i fliken ”Page to doc”, skickar arklänken till n8n och låter det köra. Du lägger kanske 10 minuter på att sätta upp listan, och sedan kommer du tillbaka till en Drive-mapp full av dokument och ett ark markerat ”OK” på de rader som är klara.
Det här behöver du
- n8n-instans (testa n8n Cloud gratis)
- Self-hosting-alternativ om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att lagra URL-listan och status.
- Google Drive för att skapa och organisera Docs-resultatet.
- Firecrawl API-nyckel (hämta den i din Firecrawl-dashboard).
Svårighetsgrad: Mellan. Du kopplar in credentials och ändrar ett mapp-ID, men du kommer inte att skriva kod.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett meddelande (eller en manuell körning) startar allt. Workflowet är byggt runt en chattrigger där du skickar Google Sheets-URL:en. Om du vill kan du ersätta den med en manuell trigger och hårdkoda arklänken för schemalagda körningar.
Arket läses in och städas. n8n hämtar rader från fliken ”Page to doc” och filtrerar sedan bort tomma URL-celler så att du slipper slumpmässiga fel från tomma rader.
Dubblettskydd sker innan scraping. Ett if-villkor kontrollerar om raden redan är markerad som scrapad (workflowet använder en enkel status i stil med ”OK”/”Scrapé”). Om den är klar hoppar det över URL:en och går vidare.
Firecrawl extraherar sidan och Drive sparar den. För varje återstående URL returnerar Firecrawl korrekt formaterat markdown-innehåll, och sedan skapar Google Drive ett Google Doc i din valda mapp. Sista steget uppdaterar samma rad i Google Sheets så att du kan följa framdriften medan det kör.
Du kan enkelt ändra utdatamappen och dokumentnamngivningen så att det matchar din kund, ditt projekt eller din kampanj. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera chatttriggern
Konfigurera arbetsflödet så att det startar från inkommande chattmeddelanden som innehåller en Google Sheet-URL.
- Lägg till Chat Message Trigger som startnod.
- Ställ in Mode på
webhook. - Aktivera Public-åtkomst genom att sätta den till
true. - Säkerställ att den inkommande payloaden innehåller
chatInputmed Google Sheet-URL:en som används längre fram i flödet.
chatInput fångas upp innan ni fortsätter.Steg 2: Anslut Google Sheets
Konfigurera stegen för att läsa och uppdatera kalkylbladet så att länkar kan hämtas och status kan skrivas tillbaka.
- Öppna Fetch Sheet Links och ställ in Sheet Name på
Page to doc. - Ställ in Document ID på
={{ $json.chatInput }}för att använda den inkommande Sheet-URL:en. - Inloggningsuppgift krävs: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter i Fetch Sheet Links.
- Öppna Update Scrape Status och ställ in Operation på
update. - Ställ in Sheet Name på
Page to dococh Document ID på={{ $('Chat Message Trigger').item.json.chatInput }}. - Mappa Columns för att sätta URL som
={{ $('Iterate Records Batch').item.json.URL }}och Scraped somOKmed matchning på URL. - Inloggningsuppgift krävs: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter i Update Scrape Status.
Steg 3: Sätt upp filtrerings- och batchlogik
Filtrera bort rader utan URL:er och bearbeta sedan endast objekt som ännu inte har skrapats.
- I Filter Nonempty Rows ställer ni in villkoret att kontrollera att URL finns, med
leftValuesatt till={{ $json.URL }}. - I Conditional Gate ställer ni in villkoret att kontrollera att scraped är tomt genom att använda
leftValue={{ $json.scraped }}och operatorn empty. - Behåll Iterate Records Batch som batchkontroll; den loopar igenom varje filtrerad rad och skickar varje URL vidare till skrapsteget.
URL och Scraped för att matcha logiken i Filter Nonempty Rows och Update Scrape Status.Steg 4: Sätt upp skrapning och dokumentskapande
Skrapa varje URL och skriv markdown-utdata till Google Drive som en textfil.
- Öppna Firecrawl Content Scrape och ställ in Operation på
scrape. - Ställ in URL på
={{ $json.URL }}så att den skrapar det aktuella batchobjektet. - Inloggningsuppgift krävs: Anslut era firecrawlApi-inloggningsuppgifter i Firecrawl Content Scrape.
- Öppna Create Markdown Doc och ställ in Operation på
createFromText. - Ställ in Name på
={{ $('Firecrawl Content Scrape').item.json.data.metadata.url }}. - Ställ in Content på
={{ $('Firecrawl Content Scrape').item.json.data.markdown }}. - Välj Drive som
My Driveoch ställ in Folder ID till er målmapp (ersätt[YOUR_ID]). - Inloggningsuppgift krävs: Anslut era googleDriveOAuth2Api-inloggningsuppgifter i Create Markdown Doc.
[YOUR_ID] kommer filen inte att skapas. Ersätt det med ett riktigt mapp-ID.Steg 5: Testa och aktivera ert arbetsflöde
Verifiera hela loopen – från chattinput till skrapning till statusuppdateringar – och aktivera sedan för löpande användning.
- Klicka på Execute Workflow och skicka ett testmeddelande i chatten med en giltig Google Sheets-URL.
- Bekräfta att Fetch Sheet Links läser rader, att Filter Nonempty Rows behåller endast URL:er och att Conditional Gate hoppar över redan skrapade poster.
- Verifiera att Firecrawl Content Scrape returnerar markdown och att Create Markdown Doc skapar en fil i målmappen.
- Kontrollera arket för att säkerställa att Update Scrape Status skriver
OKi kolumnen Scraped för rätt URL. - När allt fungerar, växla arbetsflödet till Active för användning i produktion.
Vanliga fallgropar
- Credentials för Google Sheets och Google Drive kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera först åtkomsten för det anslutna kontot i n8n:s avsnitt Credentials.
- Firecrawl är känsligt för rate limits och ”tunga” sidor. Om en scraping misslyckas mitt i körningen, sänk tempot i loopen eller lägg in en längre väntan före nästa request så att nästa noder inte får tomt innehåll.
- Om du senare lägger till en AI-agent eller ett OpenAI-steg för efterstädning är standardprompter generiska. Lägg in dina formateringsregler och önskad struktur tidigt i prompten, annars kommer du att behöva fixa varje dokument för hand.
Vanliga frågor
Cirka 30 minuter när dina Google- och Firecrawl-konton är redo.
Nej. Du kopplar in credentials, klistrar in din Sheet-länk och ändrar ett mapp-ID om du vill ha en annan destination.
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 volymer. Du behöver också räkna med Firecrawl API-användning, som beror på hur många sidor du scrapar.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller self-hosting på en VPS. För self-hosting är Hostinger VPS prisvärt och hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det är en av de första justeringarna de flesta team gör. Du kan ändra Google Drive-destinationen genom att uppdatera mapp-ID:t i steget ”Create Markdown Doc”. Dokumentnamn kan också justeras där, så att du kan använda en sidtitel, en slug eller ett prefix som ”Competitor – ” i stället för den råa URL:en. Om du vill ha rikare formatering kan du behålla Firecrawls markdown-utdata men lägga till ett litet formateringssteg innan dokumentet skapas.
Oftast beror det på en ogiltig eller utgången Firecrawl API-nyckel, så generera en ny och uppdatera credsen i n8n. Det kan också vara ett kvotproblem om du scrapar många sidor under en kort tidsperiod, eller en sida som kräver tyngre rendering än vad dina nuvarande Firecrawl-inställningar tillåter. Om felen bara händer på specifika domäner, kontrollera botskydd och försök sänka tempot i loopen så att du inte hamrar sajten.
Om du self-hostar n8n finns ingen körningsgräns (det handlar mest om din server och hur länge du vill att körningen ska ta). På n8n Cloud beror din månatliga körningsgräns på din plan, och varje URL räknas typiskt som en körningssekvens. I praktiken kör team batchar på 20 till 200 URL:er utan att tänka på det, och schemalägger sedan större bibliotek över natten. Eftersom det här workflowet bearbetar URL:er sekventiellt tar stora listor längre tid, men de misslyckas mer sällan och är enklare att återuppta.
Ofta, ja, eftersom det här är mer än en enkel ”URL in, dokument ut”-zap. n8n gör det enklare att lägga till villkorslogik för dubbletter, loopa igenom rader på ett säkert sätt och återuppta körningar utan att betala extra för varje gren. Det ger också en self-hosting-väg, vilket spelar roll när du bearbetar stora researchlistor varje vecka. Zapier eller Make kan fortfarande fungera för små batchar om du vill ha det enklaste gränssnittet och är okej med färre kontroller. Om du är osäker, prata med en automationsexpert så får du en rak rekommendation baserad på volym.
När detta väl rullar slutar ditt kalkylark vara en backlog och börjar fungera som ett löpande band. Workflowet tar hand om det repetitiva, och du får ett researchbibliotek som du faktiskt kan använda.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.