Att kopiera utdrag från LinkedIn-profiler till ett kalkylark låter enkelt. Sedan gör du det 30 gånger, tappar bort vilken flik som hade de ”bra” anteckningarna och slutar med att du skriver samma intetsägande öppningsrad som du lovade dig själv att sluta använda.
SDR:er känner av det här varje dag. En growth marketer som bygger listor fastnar i samma research-loop. Och en grundare som sköter sin egen outreach? Automatisering av LinkedIn-anteckningar är skillnaden mellan att skicka fem genomtänkta meddelanden och att ge upp efter lunch.
Det här flödet hämtar LinkedIn-profildata till Google Sheets, berikar den med Bright Data och använder sedan Claude för att skapa korta, respektfulla ice breakers. Du får se hur det fungerar, vad du behöver och vilka resultat du kan förvänta dig.
Så fungerar den här automatiseringen
Hela n8n-flödet, från trigger till slutligt resultat:
n8n Workflow Template: Google Sheets + Bright Data: rensade LinkedIn-noteringar
flowchart LR
subgraph sg0["When clicking "Test workflow" Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking 'Test workflow'", pos: "b", h: 48 }
n1@{ icon: "mdi:database", form: "rounded", label: "Get rows to enrich", pos: "b", h: 48 }
n2@{ icon: "mdi:brain", form: "rounded", label: "Anthropic Chat Model", pos: "b", h: 48 }
n3@{ icon: "mdi:robot", form: "rounded", label: "Basic LLM Chain- Ice Breaker", pos: "b", h: 48 }
n4["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>BrightData_Get_Linkedin"]
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Adjust_input_for_loop", 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/httprequest.dark.svg' width='40' height='40' /></div><br/>HTTP_Request_Post_Request_Br.."]
n7@{ icon: "mdi:cog", form: "rounded", label: "Wait_For_API_Call_Results", pos: "b", h: 48 }
n8["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>API_Call_Snapshot_Progress"]
n9@{ icon: "mdi:swap-horizontal", form: "rounded", label: "IF-Checking_Status_API_Call", pos: "b", h: 48 }
n10@{ icon: "mdi:database", form: "rounded", label: "Google Sheets - Update Row w..", pos: "b", h: 48 }
n11@{ icon: "mdi:database", form: "rounded", label: "Google Sheets - Update Row w..", pos: "b", h: 48 }
n12@{ icon: "mdi:play-circle", form: "rounded", label: "Run Workflow on a certain Sc..", pos: "b", h: 48 }
n13@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items- All Prospects", pos: "b", h: 48 }
n1 --> n5
n2 -.-> n3
n5 --> n13
n4 --> n10
n7 --> n8
n8 --> n9
n9 --> n7
n9 --> n4
n3 --> n11
n0 --> n1
n13 --> n6
n12 --> n1
n6 --> n7
n11 --> n13
n10 --> n3
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,n12 trigger
class n3 ai
class n2 aiModel
class n9 decision
class n1,n10,n11 database
class n4,n6,n8 api
classDef customIcon fill:none,stroke:none
class n4,n6,n8 customIcon
Problemet: LinkedIn-research blir till tidsödande pill
Personalisering dör i researchfasen. Du öppnar en LinkedIn-profil, skummar Om-sektionen, letar efter ett nyligt inlägg, kopierar en rad till ett dokument och upprepar. Efter några prospekt blir anteckningarna röriga: inkonsekvent formatering, saknad kontext och rader som inte matchar rätt person. Värre: du fattar beslut när du är trött (“det duger, skicka”), vilket är så “Älskade ditt arbete!” blir din standard-ice breaker. Det handlar inte om att du inte bryr dig. Processen dränerar dig bara.
Friktionen byggs på. Här är var det brukar fallera.
- Att researcha ens 20 prospekt kan sluka cirka 2 timmar, och det är innan du har skrivit ett enda mejl.
- Anteckningar hamnar utspridda mellan LinkedIn-flikar, dokument och CRM-fält, så du kan inte återanvända arbetet senare.
- Manuell copy-paste skapar små fel (fel bolag, fel stad), vilket gör att din “personalisering” känns slarvig.
- När du skalar outreach börjar du gena, och kvaliteten i meddelandena faller snabbt.
Lösningen: berika LinkedIn-rader och skapa ice breakers automatiskt
Det här n8n-flödet gör ett vanligt Google Sheet till en lättviktig research- och meddelandemotor. Du lägger in LinkedIn-profil-URL:er i en kolumn och kör sedan automatiseringen (manuellt eller schemalagt). n8n batchar varje rad, skickar LinkedIn-URL:en till Bright Datas Dataset API och väntar tills snapshoten är klar. När datasetet är färdigt hämtar det strukturerade profildetaljer som namn, stad, företag, text från Om-sektionen och nyliga inlägg, och skriver tillbaka datan till rätt kalkylarksrad med hjälp av row_number. Till sist läser Claude (Anthropic) den berikade kontexten och skriver en ice breaker på 1–4 rader som refererar prospektet naturligt, ofta med deras senaste inlägg som krok. Ditt ark blir korrekt formaterat, konsekvent och redo för outreach.
Flödet startar från en manuell trigger eller en schematrigger. Det läser ditt indata-ark, loopar igenom prospekt i batcher, berikar varje LinkedIn-URL via Bright Data och genererar sedan en anpassad öppningsrad med Claude. Slutresultatet hamnar tillbaka i Google Sheets, redo att klistra in i ditt outbound-verktyg eller mejlklient.
Det du får: automatisering vs. resultat
| Det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut i praktiken
Säg att du förbereder outreach för 30 nya LinkedIn-prospekt varje vecka. Manuellt kanske du lägger cirka 5 minuter per profil på att hitta ett inlägg, kopiera detaljer och skriva en hyfsad öppning, vilket blir ungefär 2–3 timmar i veckan. Med det här flödet klistrar du in LinkedIn-URL:erna i Google Sheets (kanske 10 minuter), kör det och låter Bright Data + Claude göra grovjobbet medan du jobbar med något annat. Du granskar och finjusterar fortfarande, men problemet med “tom sida” är borta.
Det du behöver
- n8n-instans (testa n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att lagra URL:er och resultat.
- Bright Data Dataset API för berikning av LinkedIn-profiler.
- Anthropic API-nyckel (Claude) (hämta den i Anthropic Console).
Kunskapsnivå: Mellan. Du kopplar in credentials, bekräftar kolumner i arket och klistrar in dataset-ID och API-nycklar i rätt noder.
Vill du inte sätta upp detta själv? Prata med en automatiseringsexpert (gratis 15-minuters konsultation).
Så fungerar det
En manuell körning eller ett schema startar allt. Du kan testa vid begäran med en manuell trigger och sedan byta till en schematrigger när du litar på resultatet.
Google Sheets blir din källa till sanning. n8n läser rader som innehåller Linkedin_URL_Person och row_number och förbereder varje post så att Bright Data kan bearbeta den pålitligt.
Bright Data berikar varje LinkedIn-URL. n8n triggar en dataset-snapshot via en HTTP-förfrågan, väntar, kontrollerar snapshot-status och hämtar bara den slutliga profildatan när den faktiskt är klar. Det undviker tomma svar och halvfyllda rader.
Claude skriver ice breakern och arket uppdateras igen. Flödet skickar den berikade profilkontexten (särskilt nyliga inlägg) till en anpassad prompt och skriver sedan den genererade texten i din kolumn “Ice Breaker 1”.
Du kan enkelt justera tonläget i ice breakern så att det matchar din varumärkesröst. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera triggertypen
Ställ in hur arbetsflödet startar, antingen manuellt eller enligt ett schema, innan ni hämtar rader från Google Sheets.
- Öppna Manual Execution Start och behåll den som on-demand-trigger för testning.
- Öppna Scheduled Automation Trigger och konfigurera schemaregeln så att den matchar er berikningskadens.
- Bekräfta att båda triggrarna är kopplade till Retrieve Rows for Enrichment som i arbetsflödet.
Steg 2: anslut Google Sheets
Konfigurera kalkylarket som används för indatarader och uppdateringar av utdata.
- Öppna Retrieve Rows for Enrichment och välj ert Document med
[YOUR_ID]och Sheetgid=0. - Inloggning krävs: Anslut era googleSheetsOAuth2Api-uppgifter i Retrieve Rows for Enrichment.
- Öppna Update Sheet with Profile Data och verifiera att Operation är satt till
updatemed Matching Columns satt tillrow_number. - Inloggning krävs: Lägg till era googleSheetsOAuth2Api-uppgifter i Update Sheet with Profile Data (inga uppgifter är konfigurerade ännu).
- Öppna Write Ice Breaker to Sheet och bekräfta att Operation är
updatemed Matching Columns satt tillrow_number. - Inloggning krävs: Lägg till era googleSheetsOAuth2Api-uppgifter i Write Ice Breaker to Sheet (inga uppgifter är konfigurerade ännu).
row_number saknas eller inte matchar i ert ark kommer uppdateringar att misslyckas, eftersom båda uppdateringsnoderna använder row_number som matchande kolumn.Steg 3: ställ in loopning och snapshot-triggning
Förbered varje LinkedIn-URL för bearbetning och trigga sedan BrightData-snapshots i batchar.
- I Prepare Loop Inputs behåller ni tilldelningarna som mappar person_input till
{{ $json.Linkedin_URL_Person }}och row_number till{{ $json.row_number }}. - Öppna Batch Iterate Prospects och ställ in er batchstorlek vid behov (standardvärdena fungerar för mindre körningar).
- I Trigger BrightData Snapshot ställer ni URL till
https://api.brightdata.com/datasets/v3/triggeroch behåller Method somPOST. - Säkerställ att JSON Body är satt till
=[ { "url": "{{ $json.person_input }}" } ]. - Under Query Parameters ställer ni dataset_id till
[YOUR_ID]och include_errors tilltrue. - Under Header Parameters ställer ni Authorization till
Bearer [CONFIGURE_YOUR_TOKEN].
Steg 4: konfigurera polling av snapshot och datahämtning
Poll:a BrightData tills snapshots är klara, hämta sedan LinkedIn-data och uppdatera ert ark.
- I Pause for API Response behåller ni Amount satt till
10för att fördröja mellan kontroller. - I Check Snapshot Progress ställer ni URL till
=https://api.brightdata.com/datasets/v3/progress/{{ $json.snapshot_id }}och säkerställer att Authorization-headern ärBearer [CONFIGURE_YOUR_TOKEN]. - I Branch on Snapshot Status verifierar ni att villkoret kontrollerar att
{{ $json.status }}är lika medrunningför att loopa tillbaka till Pause for API Response. - I Fetch LinkedIn Snapshot ställer ni URL till
=https://api.brightdata.com/datasets/v3/snapshot/{{ $json.snapshot_id }}och lägger till query-parametern format =json. - I Update Sheet with Profile Data verifierar ni att kolumnmappningarna använder uttryck som
{{ $json.name }},{{ $json.city }}och{{ $('Batch Iterate Prospects').item.json.row_number }}.
running kan loopen bete sig oväntat. Bekräfta vilka statusvärden ert API använder.Steg 5: ställ in AI-generering av ice breaker
Skapa personlig ice breaker-text med Anthropic och skriv tillbaka den till arket.
- Öppna Anthropic Chat Engine och välj modellen
claude-3-5-haiku-20241022. - Inloggning krävs: Anslut era Anthropic-uppgifter i Anthropic Chat Engine (AI-modellen används av Generate Ice Breaker Text).
- I Generate Ice Breaker Text behåller ni prompten i Text som den är definierad, inklusive uttryck som
{{ $json.name }}och{{ $('Fetch LinkedIn Snapshot').item.json.posts[0].title }}. - I Write Ice Breaker to Sheet bekräftar ni mappningar för row_number =
{{ $('Batch Iterate Prospects').item.json.row_number }}och Ice Breaker 1 ={{ $json.text }}.
posts[0].title finns.Steg 6: testa och aktivera ert arbetsflöde
Validera arbetsflödet end-to-end och slå sedan på den schemalagda triggern för användning i produktion.
- Klicka på Execute Workflow med Manual Execution Start för att köra ett kontrollerat test.
- Bekräfta att Update Sheet with Profile Data skriver profilfält och att Write Ice Breaker to Sheet skriver den genererade texten.
- Kontrollera att Batch Iterate Prospects loopar tills alla rader har bearbetats.
- När allt är verifierat aktiverar ni arbetsflödet och använder Scheduled Automation Trigger för återkommande körningar.
Vanliga fallgropar
- Bright Data-uppgifter kan löpa ut eller kräva specifika behörigheter. Om det skapar fel, kontrollera först din Bright Data API-nyckel och åtkomst till Dataset API i Bright Data-dashboarden.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om noder längre fram fallerar på 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 45 minuter om dina nycklar och ditt ark är redo.
Nej. Du kopplar mest konton och klistrar in ett dataset-ID och API-nycklar på rätt ställen.
Ja. n8n har ett gratis alternativ för egen hosting och en gratis testperiod på n8n Cloud. Cloud-planer startar på 20 USD/månad för högre volymer. Du behöver också räkna med Bright Data-kostnader för dataset och Anthropic API-användning för Claude-prompter.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och hanterar n8n bra. Egen hosting ger dig obegränsade körningar men kräver grundläggande serverhantering.
Ja, och det bör du. Enklaste stället är Claude-prompten i noden “Generate Ice Breaker Text”, där du kan sätta ton (formell vs. vänlig), längd och vad som ska refereras (nyligt inlägg vs. Om-sektionen). Du kan också ändra vad som skickas till Claude genom att justera vilka fält du skriver under “Update Sheet with Profile Data”. Vill du ha en andra variant duplicerar du AI-genereringssteget och skriver till “Ice Breaker 2”.
Oftast är det ett problem med API-nyckel eller dataset-behörigheter. Bekräfta att Authorization-headern i HTTP Request-noden använder en aktiv Bright Data API-nyckel med åtkomst till Dataset API och dubbelkolla att dataset-ID:t matchar det som accepterar LinkedIn-URL:er. Om snapshoten triggas men aldrig blir klar kan det också vara ett problem med polling/väntetider eller en dataset-kö på Bright Data-sidan.
I praktiken hanterar den batcher av prospekt så länge dina gränser för n8n-körningar och Bright Datas throughput för dataset tillåter det. På n8n Cloud beror dina månatliga körningar på plan; vid egen hosting beror det mest på din server. För de flesta små team är 50–200 rader per dag realistiskt, och sedan skalar du upp när du är nöjd med kostnad och tidsåtgång.
För det här use caset är n8n oftast en bättre matchning eftersom Bright Data-loop för polling (vänta, kontrollera status, förgrena, upprepa) är svår att bygga snyggt i enklare automationsverktyg. Det är också enklare att batcha rader, mappa uppdateringar tillbaka till ett specifikt row_number och köra rikare logik utan att fakturan blir en överraskning. Zapier eller Make kan fortfarande fungera om du bara behöver ett enkelt flöde av typen “skicka URL, få svar, skriv rad” och du inte har något emot mindre kontroll. Ärligt talat: så fort du behöver pålitliga retries och branching börjar n8n kännas lugnare. Om du är osäker, prata med en automatiseringsexpert och få en snabb rekommendation.
När det här väl rullar slutar LinkedIn-research vara en skatt på din dag. Ditt ark håller sig korrekt formaterat, dina öppningsrader känns mänskliga och du får tillbaka tiden till det som faktiskt stänger affärer.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.