Ditt outreach-ark börjar felfritt. Sedan börjar det riktiga jobbet: leta upp LinkedIn-URL:er, bekräfta att det är rätt person, kopiera profiler till rätt kolumner och försöka att inte blanda ihop två personer med samma namn.
Det är här kontaktberikning i Sheets svider som mest för kampanjteam och growth-team. Men även researchers som bygger listor och byråoperatörer som förbereder prospekteringslistor känner av det. Det går långsamt, är felkänsligt och ärligt talat lite själsdödande.
Det här n8n-workflowet hämtar en obearbetad rad från Google Sheets, skickar den till en AI-researchagent via OpenRouter och skriver tillbaka en prydlig uppsättning publika profillänkar. Du får se hur det fungerar, vad du behöver och vad du kan justera för din egen outreach-process.
Så fungerar den här automatiseringen
Hela n8n-workflowet, från trigger till slutligt resultat:
n8n Workflow Template: Google Sheets + OpenRouter: berika kontakter snabbt
flowchart LR
subgraph sg0["Schedule Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Model", pos: "b", h: 48 }
n2@{ icon: "mdi:database", form: "rounded", label: "Get All Contacts", pos: "b", h: 48 }
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter Out Processed Contacts", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "Limit to 1", pos: "b", h: 48 }
n5@{ icon: "mdi:cog", form: "rounded", label: "Find Social Media Links", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "Structure Response", pos: "b", h: 48 }
n7@{ icon: "mdi:database", form: "rounded", label: "Update Contact", pos: "b", h: 48 }
n4 --> n5
n2 --> n3
n0 --> n2
n6 --> n7
n1 -.-> n6
n5 --> n6
n3 --> n4
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 n6 ai
class n1 aiModel
class n3 decision
class n2,n7 database
Problemet: kontaktberikning blir ett oändligt tab-hoppande
Kontaktlistor fallerar sällan för att du inte kan samla in namn. De fallerar för att du inte kan berika dem snabbt nog för att använda dem. En person i teamet öppnar en rad, googlar, klickar LinkedIn, kollar Twitter/X, kanske skummar en personlig sajt och klistrar sedan in länkar tillbaka i arket. Upprepa det några hundra gånger och du har bränt dagar på “research” som egentligen bara är kopiering och verifiering. Missar du en länk eller klistrar in på fel rad skickas din outreach till fel person, vilket är värre än att inte skicka något alls.
Friktionen byggs på. Här är det som brukar fallera.
- Varje kontakt tar cirka 5–10 minuter att researcha om du är noggrann.
- Två personer med samma namn kan lätt slås ihop till ett stökigt set med profiler.
- Manuell berikning blir inte konsekvent, så en rad har fem länkar medan nästa inte har någon.
- När arket växer vill ingen “äga” backloggen med oanalyserade rader.
Lösningen: Google Sheets + OpenRouter-berikning som fyller dina profilkolumner
Det här workflowet behandlar ditt Google Sheet som en kö. Enligt schema letar det efter rader där kolumnen Analysed? är satt till false, och väljer sedan en enda kontakt att bearbeta (en per körning, med flit). Kontakten skickas till en dedikerad AI-driven researchagent via OpenRouter, som letar efter publikt tillgängliga profiler på de största plattformarna. När agenten returnerar resultat extraherar n8n de strukturerade fälten (LinkedIn, Twitter/X, Facebook, Instagram, GitHub, YouTube, Reddit och många fler) och skriver tillbaka länkarna till originalraden. Slutresultatet är ett ark du faktiskt kan använda för outreach, segmentering eller överlämning till ett annat system.
Workflowet startar med en schemalagd trigger, hämtar kandidatrader från Google Sheets och filtrerar bort allt som redan är hanterat. Därefter berikar det en rad med researchagenten via OpenRouter. Till sist uppdaterar det samma rad så att datan hålls strukturerad och teamet slutar göra dubbelarbete.
Det här får du: automatisering vs. resultat
| Vad det här workflowet automatiserar | Resultaten du får |
|---|---|
|
|
Exempel: så här ser det ut i praktiken
Säg att du ska berika 150 kontakter inför en kampanjpush och du vill ha bara LinkedIn, Twitter/X och en “annan” länk. Manuellt blir även 6 minuter per kontakt cirka 15 timmar av sökande och klistrande. Med det här workflowet schemalägger du det att köra var 15:e minut och det bearbetar en rad varje gång, vilket betyder cirka 4 kontakter i timmen utan att någon rör arket. Du behöver fortfarande granska enstaka konstiga matchningar, men grovjobbet försvinner till största delen.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för self-hosting om du föredrar det (Hostinger fungerar bra)
- Google Sheets för att lagra kontakter och berikningskolumner.
- OpenRouter för att köra AI-researchfrågorna.
- OpenRouter API-nyckel (hämta den i din OpenRouter-dashboard).
Kunskapsnivå: Medel. Du kopplar konton, anger ett sheet-ID/namn och säkerställer att referensen till sub-workflowet är korrekt.
Vill du inte sätta upp det här själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Ett schema kontrollerar ditt ark. Workflowet körs på timer (till exempel var 15:e minut) och hämtar rader från Google Sheets.
Bara oanalyserade kontakter går vidare. Det filtrerar på rader där flaggan “Analysed?” är false och begränsar sedan bearbetningen till en enda kontakt så att körningen blir stabil och enkel att felsöka.
En AI-researchagent hittar publika profiler. n8n anropar ett dedikerat sub-workflow som använder OpenRouter för att researcha personen och returnera strukturerade profillänkar från sociala plattformar och publiceringsplattformar.
Ditt Google Sheet uppdateras direkt i samma rad. Workflowet extraherar rätt fält och skriver tillbaka dem till originalraden, så att din lista blir redo för berikad outreach och segmentering.
Du kan enkelt ändra listan över plattformar för att prioritera endast LinkedIn (eller lägga till nya kolumner) utifrån dina behov. Se hela implementeringsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementation
Steg 1: Konfigurera den schemalagda triggern
Det här arbetsflödet startar med ett schemalagt intervall med Scheduled Automation Start.
- Lägg till noden Scheduled Automation Start som trigger.
- Ställ in schema-regeln så att den körs varje minut genom att konfigurera Rule med
interval → field: minutes. - Koppla Scheduled Automation Start till Retrieve Contact Rows för att matcha exekveringsflödet.
Steg 2: Anslut Google Sheets
Dessa noder läser och uppdaterar er kontaktlista i Google Sheets.
- Öppna Retrieve Contact Rows och välj Google Sheet: ställ in Document till
[YOUR_ID]och Sheet Name tillgid=0(Sheet1). - Autentiseringsuppgifter krävs: Anslut era
googleSheetsOAuth2Api-uppgifter till Retrieve Contact Rows. - Öppna Modify Contact Row och ställ in Operation till
update. - Ställ in Document till
[YOUR_ID]och Sheet Name tillgid=0(Sheet1). - Autentiseringsuppgifter krävs: Anslut era
googleSheetsOAuth2Api-uppgifter till Modify Contact Row.
gid.Steg 3: Ställ in filtrering och bearbetning
Det här steget säkerställer att endast obearbetade rader skickas för enrichment och begränsar sedan bearbetningen till en enda rad per körning.
- I Exclude Processed Records ställer ni in villkoret Left Value till
{{ $json['Analysed?'] }}och operatorn tillfalseså att endast oanalyserade rader släpps igenom. - Låt looseTypeValidation vara aktiverat för att undvika typkonflikter.
- Koppla Exclude Processed Records till Restrict to Single Item.
- I Restrict to Single Item lämnar ni standardinställningarna för att bearbeta endast en kontakt per körning.
TRUE/FALSE eller textvärden, justera filterlogiken så att den matchar er arkdata.Steg 4: Konfigurera AI-enrichment och tolkning av utdata
Arbetsflödet använder ett underarbetsflöde för att hämta sociala länkar och tolkar sedan JSON-utdata till strukturerade fält.
- Öppna Run Sub-Workflow (Configure Required) och ställ in Workflow ID till det underarbetsflöde som utför enrichment.
- Säkerställ att Workflow Inputs inkluderar chatInput med hela prompten och att sessionId är satt till
{{ (Math.random().toString(36).substring(2) + Date.now().toString(36)) }}. - I Parse Profile Output ställer ni in Text till
{{ $json.output }}och behåller det angivna JSON-schemat för att tvinga fram strukturerad utdata. - OpenRouter Chat Engine är ansluten som språkmodell för Parse Profile Output — Autentiseringsuppgifter krävs: Anslut era
openRouterApi-uppgifter till OpenRouter Chat Engine.
Steg 5: Konfigurera uppdateringar av utdata
Det här steget skriver tillbaka de tolkade URL:erna för sociala profiler till arket.
- I Modify Contact Row mappar ni varje kolumn till de extraherade utdatasvärdena, till exempel
{{ $json.output.github }},{{ $json.output.linkedin }}och{{ $json.output.twitter }}. - Ställ in radmatchningen genom att mappa row_number till
{{ $('Restrict to Single Item').item.json.row_number }}. - Bekräfta att kolumnerna för instagram, youtube, tiktok, reddit, mastodon, truth_social, threads, bluesky, pinterest, snapchat, telegram, whatsapp_business, medium, github och twitch alla är mappade.
Steg 6: Testa och aktivera ert arbetsflöde
Validera hela kedjan från indata i arket via AI-enrichment till uppdatering av arket.
- Klicka på Execute Workflow och verifiera att Retrieve Contact Rows hämtar rader och att Exclude Processed Records släpper igenom endast oanalyserade kontakter.
- Bekräfta att Run Sub-Workflow (Configure Required) returnerar en JSON-payload och att Parse Profile Output skapar strukturerade fält.
- Kontrollera att Modify Contact Row uppdaterar rätt rad med URL:er för sociala profiler.
- När allt fungerar växlar ni arbetsflödet till Active för att köra enligt schema.
Vanliga fallgropar
- Google Sheets-inloggningar kan gå ut eller kräva specifika behörigheter. Om något slutar fungera: kontrollera n8n:s credential-inställningar och att det kopplade Google-kontot kan redigera arket.
- Om du använder Wait-noder eller extern rendering varierar processingtider. Öka väntetiden om nedströmsnoder fallerar på tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du att sitta och redigera output för alltid.
Vanliga frågor
Cirka 30 minuter om ditt ark och din OpenRouter-nyckel är redo.
Nej. Du kopplar Google Sheets, lägger till en API-nyckel och klistrar in ditt sheet-ID och namn.
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 in OpenRouter-kostnader, som beror på vilken modell du väljer och hur många kontakter du berikar.
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änsat antal körningar men kräver grundläggande serverhantering.
Ja, men du vill göra det på två ställen. Justera först instruktionerna till researchagenten i sub-workflowet så att den prioriterar LinkedIn och returnerar färre plattformar. Uppdatera sedan extraktionsschemat i “Parse Profile Output” och dina kolumner i Google Sheet så att du bara skriver tillbaka fälten du faktiskt bryr dig om. Det gör output mer strukturerad och minskar granskningstiden.
Oftast beror det på en ogiltig eller utgången API-nyckel, eller att nyckeln inte är sparad i rätt n8n-credential. Det kan också vara ett problem med modellval i OpenRouter-chatnoden, särskilt om modellen är otillgänglig eller om ditt konto saknar åtkomst. Om du berikar många rader snabbt kan även rate limits dyka upp som intermittent fel.
Många, eftersom den bearbetar en rad per körning. I n8n Cloud beror hur många du kan göra per månad på din plans exekveringsgränser; i self-hosted n8n finns ingen fast exekveringsgräns, men din server och API-användning blir den praktiska begränsningen. Om du kör den var 15:e minut berikar du cirka 4 kontakter i timmen, hela dagen, utan att någon behöver sitta och passa den.
Ofta, ja, eftersom den här typen av berikning kräver filtrering, kontroll per enskilt objekt och strukturerad extraktion som kan bli krånglig (och dyr) i enklare verktyg. n8n ger dig också self-hosting om du vill ha obegränsade körningar och mer kontroll över datahantering. Zapier eller Make kan fortfarande fungera bra om du bara behöver ett grundläggande “sök och skriv tillbaka”-flöde och inte bryr dig om sub-workflow-mönstret. Valet handlar främst om komplexitet och skala, inte varumärke. Prata med en automationsexpert om du vill ha en snabb rekommendation utifrån din exakta volym.
När det här väl är igång slutar ditt ark vara ett researchprojekt och blir en outreach-tillgång. Sätt upp det, låt det beta av backloggen och få tillbaka din tid.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.