Ditt Google Sheet säger ”Acme Inc.” men LinkedIn har fem ”Acme”-sidor, två regionala dubbletter och en gammal profil som fortfarande rankar i sök. Så du chansar. Sedan fylls ditt CRM med fel URL:er, säljarna skickar meddelanden till fel bolag och rapporteringen blir rörig.
Den här LinkedIn URL-automationen slår först mot sales ops, eftersom felfri data är deras ansvar. Men BDR:er som bygger listor och research assistants som städar exporter känner också av det. Resultatet är enkelt: du går från ”bara bolagsnamn” till ”verifierad LinkedIn-URL för företag” i ditt sheet, i en körning.
Det här flödet använder Bright Data-sökning plus en AI-tolk för att välja den mest sannolika officiella LinkedIn-företagssidan, och skriver sedan tillbaka resultaten till Google Sheets. Du får se hur det fungerar, vad du behöver och var team oftast går bet.
Så fungerar den här automationen
Se hur den löser problemet:
n8n Workflow Template: Google Sheets + LinkedIn: rensade företags-URL:er snabbt
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:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n2@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model", pos: "b", h: 48 }
n3@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-horizontal", form: "rounded", label: "LinkedIn Profile is Found?", pos: "b", h: 48 }
n5["<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/merge.svg' width='40' height='40' /></div><br/>Merge"]
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Add Unique Result", pos: "b", h: 48 }
n7["<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/>Snapshot Progress"]
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/>HTTP Request- Post API call .."]
n9@{ icon: "mdi:cog", form: "rounded", label: "Wait - Polling Bright Data", pos: "b", h: 48 }
n10["<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 - Getting data .."]
n11@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Checking status of Snapshot ..", pos: "b", h: 48 }
n12["<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/>Code - Parse and Organize JS.."]
n13["<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/>Code - Prepare Request Body .."]
n14@{ icon: "mdi:swap-vertical", form: "rounded", label: "Add Empty result", pos: "b", h: 48 }
n15@{ icon: "mdi:swap-vertical", form: "rounded", label: "Extract Body from Response", pos: "b", h: 48 }
n16@{ icon: "mdi:database", form: "rounded", label: "Append Results to Google She..", pos: "b", h: 48 }
n17@{ icon: "mdi:database", form: "rounded", label: "Read Company Names from Goog..", pos: "b", h: 48 }
n18@{ icon: "mdi:robot", form: "rounded", label: "Extract LinkedIn Url", pos: "b", h: 48 }
n19["<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/>Bright Data Web Request - Go.."]
n20@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Company Search URL", pos: "b", h: 48 }
n5 --> n1
n1 --> n13
n1 --> n20
n14 --> n5
n6 --> n5
n7 --> n11
n18 --> n4
n20 --> n19
n2 -.-> n18
n3 -.-> n18
n15 --> n18
n4 --> n6
n4 --> n14
n9 --> n7
n0 --> n17
n12 --> n16
n8 --> n9
n13 --> n8
n17 --> n1
n10 --> n12
n11 --> n9
n11 --> n10
n19 --> n15
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,n18 ai
class n2 aiModel
class n4,n11 decision
class n16,n17 database
class n7,n8,n10,n19 api
class n12,n13 code
classDef customIcon fill:none,stroke:none
class n5,n7,n8,n10,n12,n13,n19 customIcon
Utmaningen: att hitta rätt LinkedIn-företagssida
Att korrigera företags-URL:er låter trivialt tills du är 200 rader in och varje sökresultat ser ”nästan rätt” ut. Du öppnar en flik, söker, klickar runt, dubbelkollar loggan, jämför antal följare och klistrar sedan in URL:en tillbaka i sheetet. Sedan gör du om det. Efter ett tag slutar du verifiera lika noggrant eftersom du försöker få klart listan innan nästa kampanj går ut. Det är då misstagen smyger sig in: dubblettsidor, ”showcase”-sidor i stället för moderbolaget, eller ett företag med liknande namn i ett annat land.
Det summerar sig snabbt. Och skadan syns oftast senare, när du är som minst sugen på att felsöka dataregistrering.
- Manuell sökning blir timmar av flikhoppande, särskilt när en lista har många snarlika namn.
- Folk klistrar in det som ser rätt ut, vilket gör att din outreach kan hamna på fel företagssida.
- LinkedIn-URL:er ändras, sidor slås ihop och ditt kalkylark blir inaktuellt i samma stund som det är ”klart”.
- Det är svårt att skala eftersom det inte finns någon konsekvent metod, bara individuella bedömningar.
Lösningen: Google Sheets → verifierade LinkedIn-URL:er, automatiskt
Det här flödet börjar med en lista med företagsnamn i Google Sheets och producerar ett felfritt, strukturerat output-sheet med varje företags mest sannolika officiella LinkedIn-URL. Du kör det manuellt (medvetet), så att du kan styra batchstorlek, testa på små listor och undvika oväntade användningskostnader. För varje företag genererar n8n en Google-sökfråga som fokuserar på LinkedIn-företagssidor och hämtar sedan sökresultaten via Bright Datas Web Unlocker. Därefter läser en AI-modell (Google Gemini i mallen, men den går att byta) HTML:en och extraherar den bäst matchande LinkedIn-URL:en för företagsprofilen. Resultat slås ihop, rader med ”hittades inte” loggas ändå, och slutdata appendas tillbaka till ett Google Sheet för enkel granskning och vidare enrichment.
Flödet startar när du klickar på kör i n8n. Det hämtar namn från ditt input-sheet, loopar igenom dem och kör en konsekvent sök-och-tolka-rutin för varje rad. Till sist paketerar det resultaten för enrichment via en Bright Data dataset-snapshot och skriver den strukturerade outputen till ditt målsheet.
Vad som förändras: före vs. efter
| Det här eliminerar du | Effekten du märker |
|---|---|
|
|
Praktisk effekt i verkligheten
Säg att du har 150 företag från en webbinarielista i Google Sheets. Manuellt kanske du lägger cirka 2 minuter per företag på att söka, validera och klistra in, vilket blir runt 5 timmar (och det är om du håller fullt fokus). Med det här flödet startar du körningen på en minut, låter Bright Data hämta resultaten och låter AI:n extrahera URL:er medan du gör annat. Du granskar fortfarande slut-sheetet, men den granskningen är oftast en snabb genomgång i stället för 150 separata utredningar.
Krav
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- Google Sheets för indata-lista och sparade utdata.
- Bright Data för att hämta Google-sökresultat pålitligt.
- Google Gemini (eller en annan LLM) för att tolka HTML och extrahera rätt URL.
- Bright Data API-nyckel (hämta den i din Bright Data-dashboard).
Kunskapsnivå: Medel. Du kopplar konton, klistrar in API-nycklar och är bekväm med att redigera ett par noder (sheet-namn, kolumner och prompts).
Behöver du hjälp att implementera detta? Prata med en automationsexpert (gratis 15-minuters konsultation).
Flödet, steg för steg
Manuell körning från n8n. Du startar flödet när du är redo, vilket är praktiskt för kontrollerade batchkörningar och för att först testa på ett litet urval.
Läs företag från Google Sheets. n8n laddar dina företagsnamn från det angivna kalkylarket och förbereder dem för looping, så att varje rad hanteras konsekvent.
Sök, hämta och extrahera LinkedIn-URL:en. För varje företag bygger flödet en riktad Google-sökning (med fokus på LinkedIn), hämtar HTML via Bright Data och använder sedan en AI-agent + chattmodell för att plocka ut den mest sannolika officiella LinkedIn-länken till företagssidan. Om flödet inte kan hitta en match med hög säkerhet loggar det ett tomt resultat i stället för att misslyckas i det tysta.
Berika och exportera till ditt output-sheet. Hittade URL:er slås ihop, paketeras för enrichment via en Bright Data dataset-snapshot och appendas sedan som strukturerade rader i en separat flik i Google Sheets så att teamet kan använda det direkt.
Du kan enkelt justera sökmönstret och output-kolumnerna så att de matchar ditt CRM eller din enrichment-leverantör. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera den manuella triggern
Det här arbetsflödet startar manuellt och orkestrerar sedan två bearbetningsgrenar för företagsberikning och upptäckt av LinkedIn-URL:er.
- Lägg till och öppna Manual Execution Start.
- Lämna standardinställningarna som de är för att tillåta manuella körningar.
- Notera att Manual Execution Start skickar utdata till Retrieve Sheet Company List för att hämta företagslistan.
⚠️ Vanlig fallgrop: Det här arbetsflödet körs inte enligt schema om ni inte ersätter Manual Execution Start med en schemalagd trigger.
Steg 2: anslut Google Sheets
Arbetsflödet läser företag från ett ark och lägger till berikade resultat i ett annat.
- Öppna Retrieve Sheet Company List och ställ in Document till
[YOUR_ID]och Sheet tilldata. - Öppna Append to Sheets Output och ställ in Document till
[YOUR_ID]och Sheet tilloutput. - Behåll Operation inställd på
appendi Append to Sheets Output.
Inloggning krävs: Anslut era Google Sheets-inloggningsuppgifter i Retrieve Sheet Company List och Append to Sheets Output.
⚠️ Vanlig fallgrop: Om era kolumner i arket inte matchar inkommande JSON-nycklar kan automatisk mappning i Append to Sheets Output placera värden fel.
Steg 3: konfigurera BrightData-batchbearbetning och polling
Den här grenen skickar LinkedIn-URL:er till BrightData, pollar tills körningen är klar och hämtar snapshot-resultaten.
- Öppna Build BrightData Request och behåll Python-koden som bygger
companiesfrån inkommandeurl-fält. - I Submit BrightData Batch, ställ in URL till
https://api.brightdata.com/datasets/v3/triggeroch Method tillPOST. - Ställ in JSON Body till
{{ $json.companies }}och inkludera query-parametrar: dataset_id =[YOUR_ID], include_errors =true. - I Delay for BrightData Poll, ställ in Amount till
15sekunder för att begränsa polling-frekvensen. - I Check Snapshot Progress, ställ in URL till
=https://api.brightdata.com/datasets/v3/progress/{{ $('Submit BrightData Batch').item.json.snapshot_id }}. - I Verify Snapshot Status, bekräfta att villkoret använder
{{ $json.status }}lika medrunning. - I Fetch BrightData Snapshot, ställ in URL till
=https://api.brightdata.com/datasets/v3/snapshot/{{ $json.snapshot_id }}och query format tilljson.
⚠️ Vanlig fallgrop: Säkerställ att headern Authorization använder Bearer [CONFIGURE_YOUR_TOKEN] i alla BrightData HTTP-noder, annars misslyckas anropen.
Notering om nodflöde: Verify Snapshot Status skickar utdata till både Delay for BrightData Poll och Fetch BrightData Snapshot parallellt, vilket möjliggör kontinuerlig polling tills det är klart.
Steg 4: konfigurera sökparsning och AI-extraktion
Den här grenen bygger en Google-sökfråga, skrapar resultat via BrightData och använder Gemini för att extrahera den officiella LinkedIn-profilen.
- I Compose Search URL, ställ in google_search till
=https://www.google.com/search?q=site%3Alinkedin.com+{{ encodeURIComponent($json["name"].trim()) }}. - Konfigurera BrightData Search Request med URL
https://api.brightdata.com/request, MethodPOST, och body-parametrar: zone =web_unlocker1, url ={{ $json.google_search }}, format =json, data_format =markdown. - I Extract Response Body, ställ in result_body till
{{ $json.body }}. - Öppna Parse LinkedIn Link, ställ in Text till
{{ $json.result_body }}och behåll den anpassade prompten för att extrahera företagets LinkedIn-profil. - Säkerställ att Gemini Chat Model är ansluten som språkmodell för Parse LinkedIn Link med Model inställd på
models/gemini-2.0-flash-lite. - Behåll Structured Output Decoder kopplad till Parse LinkedIn Link och ställ in schemaexemplet till den angivna JSON-arrayen med
company_nameochurl. - I LinkedIn Link Exists?, verifiera att kontrollen exists använder
{{ $json.output[0]['url'] }}. - För framgångsvägen, ställ in Add Matched Result JSON Output till
{{ $json.output[0] }}. - För fallback-vägen, ställ in Add Blank Result JSON Output till
{ "company_name": "{{ $('Iterate Through Records').item.json['name']}} (NOT FOUND)", "url": "" }.
Inloggning krävs: Anslut era Google Gemini-inloggningsuppgifter i Gemini Chat Model.
Structured Output Decoder är kopplad till Parse LinkedIn Link; inga separata inloggningsuppgifter krävs på parserns sub-nod.
Notering om nodflöde: Iterate Through Records skickar utdata till både Build BrightData Request och Compose Search URL parallellt för att köra berikning och LinkedIn-upptäckt samtidigt.
Steg 5: konfigurera datatransformering och utdata
Snapshot-data normaliseras och läggs till i utdata-arket. LinkedIn-uppslagsresultat slås ihop för att hålla batch-loopen igång.
- I Transform Snapshot Payload, behåll Python-koden som mappar BrightData-fält som
name,country_code,employees_in_linkedin,websiteochcrunchbase_urltill ren JSON. - Verifiera att Append to Sheets Output är ansluten efter Transform Snapshot Payload så att poster läggs till i ert utdata-ark.
- Bekräfta att Combine Results slår ihop utdata från Add Matched Result och Add Blank Result innan loopen går tillbaka till Iterate Through Records.
⚠️ Vanlig fallgrop: Om Transform Snapshot Payload ger “Missing input data”, verifiera att Fetch BrightData Snapshot returnerar JSON och innehåller förväntade fält.
Steg 6: testa och aktivera ert arbetsflöde
Kör ett manuellt test för att validera inloggningsuppgifter, BrightData-svar och utdata-mappning innan ni går i produktion.
- Klicka på Execute Workflow på Manual Execution Start för att köra ett test.
- Bekräfta att Retrieve Sheet Company List returnerar poster och att Compose Search URL genererar en giltig Google-fråga.
- Kontrollera att Submit BrightData Batch returnerar ett
snapshot_idoch att Verify Snapshot Status till slut routar vidare till Fetch BrightData Snapshot. - Verifiera att Append to Sheets Output lägger till rader i arket
outputmed transformerade fält. - När allt är verifierat, aktivera arbetsflödet med reglaget Active för produktionsanvändning.
Se upp med
- Bright Data-inloggning kan gå ut eller kräva åtkomst på produktnivå. Om anrop börjar fallera, kontrollera först din Bright Data-dashboard och den specifika API-nyckeln som används i noderna för HTTP Request.
- Om du använder Wait-noder eller extern snapshot-rendering varierar processtiderna. Öka väntetiden om efterföljande noder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg till er tonalitet och era regler (som ”föredra /company/ framför /showcase/”) tidigt, annars kommer du att redigera output i all evighet.
Vanliga frågor
Cirka 30 minuter om dina konton och API-nycklar är klara.
Ja, men någon bör vara bekväm med att koppla inloggningar och redigera sheet-mappningar. Ingen traditionell kodning krävs, om du inte vill anpassa de valfria kodnoderna.
Ja. n8n har ett gratis alternativ för egen drift och en gratis provperiod i n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in Bright Data-användning samt kostnader för din AI-modell (Gemini eller annan leverantör).
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärd och klarar n8n bra. Egen drift ger dig obegränsade körningar men kräver grundläggande serverhantering.
Du kan ändra query-logiken i noden ”Compose Search URL” för att matcha din marknad (till exempel lägga till ett land), och skärpa extraktionsreglerna i AI-tolkningen så att den föredrar /company/-sidor framför andra LinkedIn-URL:er. Många team anpassar också flödet ”Add Blank Result” för att flagga rader för granskning, eller lägger till en e-postnotis när för många företag kommer tillbaka tomma. Om du vill ha andra outputfält uppdaterar du transformations-/kodnoderna innan noden ”Append to Sheets Output”.
Oftast är det ett problem med API-nyckeln eller en behörighetsmissmatch i ditt Bright Data-konto. Skapa en ny nyckel, uppdatera den i Bright Data-noderna för HTTP Request och bekräfta att Web Unlocker- eller dataset-funktionerna är aktiverade i din plan. Om det fungerar för några företag och sedan slutar kan du slå i rate limits eller tillfälliga blockeringar, så att sänka batchstorleken kan hjälpa.
Det beror på din throughput hos Bright Data och din n8n-plan, men de flesta team kör utan problem några hundra företag per batch.
För det här jobbet är n8n oftast det mer flexibla valet, eftersom du kan loopa rader, grena på ”hittad vs inte hittad” och hantera batch-polling utan att samla på dig massor av betalda tasks. Det är också enklare att ha all ”limlogik” på ett ställe, särskilt när du blandar web scraping-liknande anrop (Bright Data) med en AI-tolk och enrichment i flera steg. Zapier eller Make kan fortfarande fungera, ärligt talat, men du hamnar ofta i att sy ihop flera mindre automationer, vilket är svårare att felsöka när resultaten ser fel ut. Om du väljer mellan verktyg är bästa testet enkelt: kan du inspektera det råa HTML-svaret och den extraherade URL:en i en körning? n8n gör den typen av felsökning okomplicerad. Prata med en automationsexpert om du är osäker på vad som passar.
När du väl har verifierade LinkedIn-URL:er i ditt sheet blir allt nedströms enklare: enrichment, segmentering, till och med grundläggande avduplicering. Sätt upp det en gång, kör det när en ny lista landar och sluta behandla datastädning som en initieringsrit.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.