Du börjar med en felfri leadlista. Sedan kommer delen med ”snabb personalisering”, och plötsligt har du 40 flikar öppna, skannar webbplatser och försöker skriva inledningar som inte låter som en robot.
Den här lead enrichment automation slår hårdast mot SDR:er, men grundare som gör sin egen outreach och byråoperatörer som driver kampanjer känner av det också. Du vill ha ett enda enkelt resultat: ett kalkylark som kommer tillbaka med användbara webbplatssammanfattningar och kallmejlsinledningar som låter mänskliga, utan research-slitet.
Det här flödet bevakar en Google Drive-mapp, berikar varje rad, uppdaterar Google Sheets och pingar dig på Telegram när det är klart. Nedan ser du hur det fungerar, vad du får och vad du ska se upp med.
Så fungerar den här automatiseringen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Google Drive till Google Sheets, öppnare ifyllda
flowchart LR
subgraph sg0["Google Drive Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Google Drive Trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:cog", form: "rounded", label: "Google Drive_DownLoad", pos: "b", h: 48 }
n2@{ icon: "mdi:cog", form: "rounded", label: "Google Sheet Parse", pos: "b", h: 48 }
n3@{ icon: "mdi:robot", form: "rounded", label: "AI Agent", pos: "b", h: 48 }
n4@{ icon: "mdi:wrench", form: "rounded", label: "Fetch Markdown via Jina AI1", pos: "b", h: 48 }
n5@{ icon: "mdi:wrench", form: "rounded", label: "Think", pos: "b", h: 48 }
n6@{ icon: "mdi:wrench", form: "rounded", label: "Think1", pos: "b", h: 48 }
n7@{ icon: "mdi:brain", form: "rounded", label: "Anthropic Chat Model1", pos: "b", h: 48 }
n8@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n9@{ icon: "mdi:wrench", form: "rounded", label: "Think2", pos: "b", h: 48 }
n10@{ icon: "mdi:brain", form: "rounded", label: "Anthropic Chat Model2", pos: "b", h: 48 }
n11@{ icon: "mdi:robot", form: "rounded", label: "AI Agent_Personalization_NO ..", pos: "b", h: 48 }
n12@{ icon: "mdi:robot", form: "rounded", label: "AI Agent_Personalization_wit..", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields1", pos: "b", h: 48 }
n14["<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/>End of Loops"]
n15@{ icon: "mdi:robot", form: "rounded", label: "OpenAI1", pos: "b", h: 48 }
n16@{ icon: "mdi:database", form: "rounded", label: "Google Sheets", pos: "b", h: 48 }
n17["<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/telegram.svg' width='40' height='40' /></div><br/>Lead Enrichment is ready"]
n18@{ icon: "mdi:wrench", form: "rounded", label: "Think3", pos: "b", h: 48 }
n19@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items1", pos: "b", h: 48 }
n20@{ icon: "mdi:brain", form: "rounded", label: "Anthropic Chat Model3", pos: "b", h: 48 }
n8 --> n11
n8 --> n12
n5 -.-> n3
n6 -.-> n11
n9 -.-> n12
n18 -.-> n15
n15 --> n8
n3 --> n15
n13 --> n16
n14 --> n17
n16 --> n19
n19 --> n14
n19 --> n3
n2 --> n19
n0 --> n1
n7 -.-> n11
n10 -.-> n12
n20 -.-> n3
n1 --> n2
n4 -.-> n3
n11 --> n13
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 n3,n11,n12,n15 ai
class n7,n10,n20 aiModel
class n4,n5,n6,n9,n18 ai
class n8 decision
class n16 database
class n14 code
classDef customIcon fill:none,stroke:none
class n14,n17 customIcon
Problemet: personalisering skalar inte när det görs manuellt
Personlig outreach ska vara din fördel. Ärligt talat blir det ofta flaskhalsen. Du tar en lista och lägger sedan dina bästa timmar på samma rutin: besöka sajten, förstå vad bolaget gör, bekräfta att det inte är en död domän och försöka skriva en första rad som låter som att du faktiskt har kollat. Vissa sajter är tydliga. Andra är otydliga, trasiga eller fulla av buzzwords. Och när du gör detta rad för rad sjunker kvaliteten precis när du behöver konsekvens som mest.
Friktionen bygger på. Här är var det faller isär.
- Varje ”snabb research + inledning” kan ta cirka 5 minuter, så ett ark med 200 leads blir i praktiken en hel dag.
- Dåliga eller parkerade domäner slinker igenom, vilket gör att du slösar touchpoints på bolag du inte ens kan beskriva.
- Inledningarna blir snabbt repetitiva, så svarsfrekvensen faller och du skyller på listan i stället för processen.
- Du kan inte delegera det snyggt eftersom det inte finns en tydlig standard för hur ”bra research” ser ut.
Lösningen: släpp in ett ark, få berikade leads tillbaka
Det här n8n-flödet gör om ditt lead-kalkylark till ett personaliseringsark som är redo att skickas, automatiskt. Du lägger en CSV eller ett Google Sheet i en specifik Google Drive-mapp, och flödet laddar direkt ner filen, tolkar varje rad och börjar berika leads i batcher. För varje företagsdomän hämtar det läsbar webbplatsdata via Jina (med r.jina.ai-hämtningsmönstret), skapar en strukturerad webbplatssammanfattning och kontrollerar sedan om det som hämtats faktiskt är en riktig företagssida. Om sajten ser giltig ut genererar Anthropic en inledning på en rad baserat på sammanfattningen. Om den inte gör det tar flödet ändå fram en stark reservinledning baserad på domänen och vanliga problemområden, så att du inte får tomma fält.
Flödet startar med en Google Drive-mapptrigger. Det processar leads i hanterbara batcher, genererar en websiteSummary plus en personalisering i en enda mening och skriver sedan tillbaka båda fälten i Google Sheets. När sista batchen är klar skickar Telegram ett bekräftelsemeddelande med filnamn och länk, så att du vet att den är redo.
Det du får: automatisering vs. resultat
| Det här flödet automatiserar | Resultatet du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du har ett ark med 200 leads och normalt lägger cirka 5 minuter per lead på att skumma sajten och skriva en första rad. Det är ungefär 16 timmars arbete, och det brukar spridas ut över flera dagar (vilket saktar ner kampanjer). Med det här flödet är ditt ”arbete” att lägga filen i Google Drive och sedan vänta på att processningen blir klar i bakgrunden, ofta runt en timme beroende på webbplatshastighet och API-gränser. Du får tillbaka ett ark där websiteSummary och personalization är ifyllda för varje rad, plus en Telegram-ping när det är klart.
Det du behöver
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Google Drive för att bevaka en mapp efter nya ark.
- Google Sheets för att uppdatera rader med sammanfattningar och inledningar.
- Jina-autentisering (hämta den från ditt Jina-konto/header-inställning).
- OpenAI API-nyckel (hämta den från OpenAI-dashboarden).
- Anthropic API-nyckel (hämta den från Anthropic Console).
- Telegram Bot-token (hämta den från BotFather i Telegram).
Kunskapsnivå: Medel. Du kopplar några konton, lägger in API-nycklar och bekräftar att dina kolumner i arket matchar vad flödet förväntar sig.
Vill du inte sätta upp detta själv? Prata med en automatiseringsexpert (gratis 15-minuters konsultation).
Så fungerar det
En ny fil dyker upp i Google Drive. Flödet bevakar en specifik mapp, så i samma ögonblick du släpper in ett lead-ark startar n8n körningen automatiskt.
Arket tolkas och processas i batcher. n8n laddar ner filen, läser raderna (det förväntar sig fält som förnamn, efternamn, e-post och domän) och loopar sedan igenom leads i chunkar så att du kan skala utan att allt timeout:ar.
Webbresearch sker utan din webbläsare. En LangChain-agent hämtar webbplatsinnehåll via Jinas markdown-endpoint och gör om det till en strukturerad sammanfattning. Sedan kör OpenAI en snabb validitetskontroll (hasWebsite true/false), så att flödet vet när innehållet är på riktigt kontra oanvändbart.
Personalisering genereras och skrivs tillbaka. Anthropic skapar en inledning på en rad baserat på sammanfattningen när sajten är giltig, eller använder en reservprompt när den inte är det. Till sist uppdaterar flödet motsvarande rad i Google Sheets och skickar ett Telegram-meddelande med fillänken när alla batcher är klara.
Du kan enkelt justera tonen i inledningen så att den matchar er tonalitet utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera Drive File Trigger
Det här arbetsflödet startar när en ny kalkylbladsfil skapas i en specifik Google Drive-mapp.
- Lägg till noden Drive File Trigger och ställ in Event på
fileCreated. - Ställ in Trigger On på
specificFolderoch välj sedan det mapp-ID ni vill bevaka. - Autentiseringsuppgifter krävs: Anslut era Google Drive-autentiseringsuppgifter (den här noden kräver autentiseringsuppgifter men inga är konfigurerade).
Steg 2: Anslut Google Drive och tolka kalkylbladet
När en ny fil dyker upp laddar arbetsflödet ned den och tolkar kalkylbladet till rader.
- I Drive File Download ställer ni in Operation på
downloadoch File ID på={{ $json.id }}. - Autentiseringsuppgifter krävs: Anslut era Google Drive-autentiseringsuppgifter för Drive File Download (autentiseringsuppgifter är inte konfigurerade).
- I Spreadsheet Parse aktiverar ni Header Row så att kolumnnamn känns igen från första raden.
- Koppla Spreadsheet Parse till Iterate Records för att behandla varje rad individuellt.
Steg 3: Sätt upp AI-baserad webbplatsberikning och personalisering
Det här avsnittet sammanfattar varje företags webbplats och genererar en personlig e-postinledning baserat på om en giltig webbplats hittades.
- I Web Summary Agent ställer ni in Text till
=Please analyze the website at {{ $json.domain }} and create a structured business summary according to the template. Use the "Jina Markdown Fetcher" tool to get the website content. {{ $json.chatInput }}. - Anthropic Chat C är ansluten som språkmodell för Web Summary Agent — Autentiseringsuppgifter krävs: Anslut era
anthropicApi-autentiseringsuppgifter till Anthropic Chat C. - Jina Markdown Fetcher är en verktygs-subnod för Web Summary Agent — Autentiseringsuppgifter krävs: Anslut era
httpHeaderAuth-autentiseringsuppgifter till Jina Markdown Fetcher, och notera att verktygsautentisering hanteras på nivån för överordnad nod. - I OpenAI Website Check aktiverar ni JSON Output och behåller meddelandemallen som den är; Autentiseringsuppgifter krävs: Anslut era
openAiApi-autentiseringsuppgifter. - Branch Validation kontrollerar
={{ $json.message.content.hasWebsite }}och routar till No-Web Personalizer när värdet är false; annars routar den till Web Personalizer. - Anthropic Chat A driver No-Web Personalizer och Anthropic Chat B driver Web Personalizer — Autentiseringsuppgifter krävs: Anslut era
anthropicApi-autentiseringsuppgifter till båda noderna. - I No-Web Personalizer behåller ni prompten och uttryck som
{{ $('Iterate Records').item.json['First Name'] }}och{{ $('Iterate Records').item.json['Last Name'] }}oförändrade. - I Web Personalizer behåller ni sammanfattningsreferensen
{{ $('Web Summary Agent').item.json.output }}och samma namnuttryck från Iterate Records.
Exekveringsflöde: Iterate Records skickar utdata både till Finalize Batch och Web Summary Agent parallellt.
Steg 4: Tilldela personalisering och uppdatera arket
Båda personaliseringsvägarna konvergerar och resultatet skrivs tillbaka till kalkylbladet.
- I Assign Personalization ställer ni in personalization på
={{ $json.output }}för att fånga den genererade meningen. - I Update Sheet Rows ställer ni in Operation på
update. - Ställ in Document ID på
={{ $('Drive File Trigger').item.json.id }}och Sheet Name på={{ $('Drive File Trigger').item.json.name }}. - Mappa kolumner till följande uttryck: domain →
={{ $('Spreadsheet Parse').item.json.domain }}, websiteSummary →={{ $('Web Summary Agent').item.json.output }}, personalization →={{ $json.personalization }}. - Autentiseringsuppgifter krävs: Anslut era Google Sheets-autentiseringsuppgifter till Update Sheet Rows (autentiseringsuppgifter är inte konfigurerade).
Steg 5: Skicka färdig-notis
När alla rader har behandlats bygger arbetsflödet en sammanfattning och meddelar er i Telegram.
- I Finalize Batch granskar ni JavaScript-koden och ersätter platshållarna
[YOUR_ID]ochLead Spreadsheetmed ert faktiska fil-ID och namn. - I Telegram Ready Alert ställer ni in Chat ID till er Telegram-chatt och behåller Text som
=Lead Enrichment is ready: FileName: {{ $json.fileName }} fileURL: {{ $json.fileUrl }}. - Autentiseringsuppgifter krävs: Anslut era
telegramApi-autentiseringsuppgifter till Telegram Ready Alert.
Steg 6: Testa och aktivera ert arbetsflöde
Kör ett manuellt test med ett exempel-kalkylblad för att bekräfta att berikning och meddelanden fungerar hela vägen.
- Klicka på Execute Workflow och ladda upp ett testkalkylblad i den bevakade mappen för att trigga Drive File Trigger.
- Bekräfta att raderna tolkas av Spreadsheet Parse och att Update Sheet Rows skriver tillbaka websiteSummary och personalization till arket.
- Verifiera att ett Telegram-meddelande skickas av Telegram Ready Alert med en giltig fil-URL.
- När allt är verifierat växlar ni arbetsflödet till Active för att aktivera kontinuerlig bearbetning för nya filer.
Vanliga fallgropar
- Inloggningar för Google Drive och Google Sheets kan gå ut eller kräva specifika behörigheter. Om saker slutar fungera, kolla n8n-skärmen Credentials och bekräfta att Google-kontot fortfarande har åtkomst till mål-mappen och arket.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
- Standardprompterna i AI-noderna är generiska. Lägg in er tonalitet tidigt, annars kommer du redigera utdata i all evighet.
Vanliga frågor
Cirka 45 minuter om du redan har dina API-nycklar.
Ingen kodning krävs. Du kommer mest koppla konton, klistra in API-nycklar och matcha dina kolumner i arket.
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 in OpenAI- och Anthropic-API-användning, vilket vanligtvis landar på några dollar per större leadlista.
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 hanterar n8n bra. Self-hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du. Du kan byta Anthropic-prompten i grenarna “Web Personalizer” och “No-Web Personalizer” så att den matchar din ton (mer formell, mer rak eller mer lekfull). Vanliga justeringar är att ändra inledningens längd till två meningar, tvinga en specifik struktur (observation + relevans) och lägga till fraser som inte får användas så att den undviker spamigt språk.
Oftast är det en Google-inloggning som gått ut eller att det anslutna kontot har tappat åtkomst till målarket. Koppla om Google Sheets i n8n och bekräfta sedan att filen ligger i rätt Drive och att du kan redigera den manuellt med samma Google-användare. Ett annat vanligt problem är radmatchning: om flödet uppdaterar via domän och din domänkolumn har extra mellanslag eller saknade värden, kommer uppdateringar se ut som ”misslyckanden” eftersom det inte finns något tillförlitligt att matcha mot.
Hundratals per körning är normalt.
Ofta, ja, om du bryr dig om kvalitet och förgreningar. Det här flödet har flera AI-steg, en valideringsgren, batchning och strukturerad återföring till samma ark, och det är där Zapier och Make kan bli dyrt eller klumpigt. n8n ger dig också mer kontroll över hur du hanterar ”dåliga domäner” jämfört med ”bra domäner”, vilket spelar roll för verkliga listor. Nackdelen är uppsättningen: du kommer lägga lite mer tid på inloggningar och testning i början. Om du vill att någon gör en rimlighetskontroll, prata med en automatiseringsexpert.
Sätt upp detta en gång och låt sedan dina kalkylark komma tillbaka smartare. Du lägger mindre tid på att ”researcha” och mer tid på att skicka kampanjer som faktiskt låter som att du menar dem.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.