Du tar en jobb-URL, skummar sidan, kopierar några rader till ett kalkylark och inser sedan att lönen är gömd i en annan sektion (eller inte finns angiven alls). Gör du det 20 gånger förvandlas din ”snabba research” till en halv dag med stökiga anteckningar.
Det här är den typen av jobbdatas-automatisering som sparar rekryterare massor av flik-hoppande. Den hjälper också marknadsanalysansvariga som följer kompensationstrender, samt grundare som bygger jobbtavlor och behöver konsekventa annonser utan att handstäda varje rad.
Det här flödet hämtar en jobbsida med Bright Data, låter OpenAI standardisera det som hittas (roll, löneindikationer, företagsdetaljer) och lägger sedan in en felfri post i Google Sheets. Du får se hur det fungerar, vad du behöver och vad du kan justera för att det ska passa din pipeline.
Så fungerar den här automatiseringen
Hela n8n-flödet, från trigger till slutresultat:
n8n Workflow Template: Bright Data till Google Sheets, rensad jobbdata
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:cog", form: "rounded", label: "Bright Data MCP Client List ..", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set input fields", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "MCP Client for Job Data Extr..", pos: "b", h: 48 }
n4@{ icon: "mdi:cog", form: "rounded", label: "MCP Client for Salary Data E..", pos: "b", h: 48 }
n5@{ icon: "mdi:robot", form: "rounded", label: "Salary Information Extractor", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "Job Description Extractor", 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/merge.svg' width='40' height='40' /></div><br/>Merge the response"]
n8@{ icon: "mdi:code-braces", form: "rounded", label: "Create a binary data", pos: "b", h: 48 }
n9["<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/>Webhook Notification for Job.."]
n10@{ icon: "mdi:cog", form: "rounded", label: "Write the salary info to disk", pos: "b", h: 48 }
n11@{ icon: "mdi:database", form: "rounded", label: "Update Google Sheets", pos: "b", h: 48 }
n12@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model for Salary..", pos: "b", h: 48 }
n13@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model for Job De..", pos: "b", h: 48 }
n14@{ icon: "mdi:cog", form: "rounded", label: "Aggregate", pos: "b", h: 48 }
n15@{ icon: "mdi:cog", form: "rounded", label: "MCP Client for Company Data ..", pos: "b", h: 48 }
n16@{ icon: "mdi:robot", form: "rounded", label: "Company Data Extractor", pos: "b", h: 48 }
n17@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model for Compan..", pos: "b", h: 48 }
n14 --> n8
n14 --> n9
n14 --> n11
n2 --> n3
n2 --> n4
n2 --> n15
n7 --> n14
n8 --> n10
n16 --> n7
n6 --> n7
n5 --> n7
n1 --> n2
n0 --> n1
n4 --> n5
n13 -.-> n6
n12 -.-> n5
n17 -.-> n16
n3 --> n6
n15 --> n16
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 n5,n6,n16 ai
class n12,n13,n17 aiModel
class n11 database
class n9 api
class n8 code
classDef customIcon fill:none,stroke:none
class n7,n9 customIcon
Problemet: jobbsidor är inkonsekventa (och irriterande)
Jobbannonser ser strukturerade ut tills du faktiskt behöver jämföra dem. Ett företag lägger lönen i sidfoten, ett annat använder luddiga formuleringar som ”konkurrenskraftig”, och ett tredje trycker in nyckeldetaljer i en PDF eller en widget som din scraper inte kan läsa. Så du gör det manuellt. Kopierar en titel, gissar senioritet, klistrar in ett stycke i Sheets och försöker normalisera det senare. Det där ”senare” kommer aldrig, och ditt kalkylark blir en avlastningsplats som ingen litar på. Det handlar inte bara om tid. Det är det ständiga tvivlandet.
Friktionen byggs på. När din data väl är stökig blir varje beslut längre ned i kedjan långsammare.
- Att hämta jobbbeskrivningar för hand blir snabbt cirka 10 minuter per annons, och det blir sällan bra på första försöket.
- Löne”ledtrådar” missas eftersom de är utspridda i förmåner, platsnotiser eller små intervall som göms i brödtexten.
- Teamet hamnar i diskussioner om vad rollen ”egentligen är”, eftersom titlar och ansvar inte matchar mellan sajter.
- Även när du skrapar ger antibot-skydd och stökiga sidor korrupta resultat eller halvtomma fält.
Lösningen: Bright Data-extraktion + OpenAI-standardisering till Sheets
Det här flödet börjar med en URL till en jobbannons (eller ett sökresultat) och en rolletikett du vill följa. Bright Datas MCP-baserade skrapning simulerar verkligt webbläsarbeteende, vilket gör att du kan extrahera innehållet på jobbsidan tillförlitligt även när sajten försöker blockera automatiserad åtkomst. Därefter hämtar flödet tre informationsblock: texten i jobbbeskrivningen, lönerelevant innehåll (om det finns) och företagsdetaljer. OpenAI GPT-4o mini rensar och standardiserar sedan varje del så att du får konsekventa fält i stället för en vägg av text. Till sist slår n8n ihop allt till en strukturerad post och skickar den dit du behöver, inklusive Google Sheets för enkel jämförelse.
Flödet startar när du kör det i n8n och anger jobb-URL och målroll. Bright Data samlar in jobbannonsen, lönesignalerna och innehållet från företagssidan, och därefter extraherar OpenAI de användbara detaljerna till förutsägbara fält. Det färdiga resultatet skrivs till Google Sheets (och kan också skickas via webhook eller sparas på disk).
Det du får: automatisering vs. resultat
| Vad det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut i praktiken
Säg att du följer 25 roller som ”Senior Data Analyst” på olika företags sajter varje vecka. Manuellt: om du lägger cirka 10 minuter per annons på att fånga jobbbeskrivning, löneindikationer och grundläggande företagsinfo blir det ungefär 4 timmar (och du behöver ändå omformatera senare). Med det här flödet lägger du in URL och roll en gång, väntar ett par minuter på skrapningen och AI-extraktionen och granskar sedan det som hamnar i Google Sheets. De flesta team får tillbaka de där 4 timmarna varje vecka, och arket håller sig konsekvent i stället för att glida in i kaos.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
- Bright Data-konto för skrapåtkomst via Web Unlocker.
- Google Sheets för att lagra och jämföra felfria jobbrader.
- OpenAI API-nyckel (hämta den i din OpenAI-dashboard).
Kunskapsnivå: Medel. Du kopplar in autentiseringar, sätter indata och är bekväm med att justera prompts och fält.
Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).
Så fungerar det
Du anger en jobb-URL och en rolletikett. Flödet använder en manuell kör-trigger, och sedan sätter steget ”Define Input Fields” job_search_url och job_role så att allt nedströms håller sig organiserat.
Bright Data hämtar innehållet i tre pass. En skrapning fokuserar på hela jobbbeskrivningen (returneras som strukturerad Markdown), en annan letar specifikt efter lönerelevanta signaler, och en tredje samlar in företagsinformation som ofta ligger på en separat sida.
OpenAI extraherar det du faktiskt bryr dig om. Separata AI-extraktionssteg rensar löneuppgifter, förfinar jobbsammanfattningen (ansvar, kvalifikationer, förmåner) och standardiserar företagsfält så att ditt ark inte slutar med fem format för samma sak.
Dina utdata hamnar där de gör nytta. n8n slår ihop allt till en enda post, uppdaterar Google Sheets med en ny rad och kan även skicka resultatet till en webhook eller skriva en tidsstämplad fil till disk.
Du kan enkelt ändra vilka fält som extraheras så att de matchar din datastruktur, så att arket speglar det teamet faktiskt filtrerar på. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: konfigurera den manuella triggern
Starta arbetsflödet med den manuella triggern och konfigurera noden för verktygsupptäckt som matar resten av flödet.
- Lägg till Manual Launch Trigger som arbetsflödets trigger.
- Koppla Manual Launch Trigger till MCP Tool Directory.
- Öppna MCP Tool Directory och anslut inloggningsuppgifter.
- Credential Required: Anslut era mcpClientApi-inloggningsuppgifter i MCP Tool Directory.
Steg 2: anslut MCP-scrapers och definiera indatafält
Definiera URL:erna och indata för jobbroll, och kör sedan tre scrapers parallellt för att hämta jobb-, löne- och företagsdata.
- I Define Input Fields, ställ in job_search_url till
https://www.indeed.com/viewjob?jk=075f6b95d1ae92ae. - Ställ in company_info till
https://www.indeed.com/cmp/Deloitteoch job_role tillLead Backend .Net Developer Dallas, TX Hybrid work. - Ställ in webhook_notification_url till
https://webhook.site/[YOUR_ID]i Define Input Fields. - Define Input Fields skickar utdata till Job Markdown Scraper, Salary Search Scraper och Company Markdown Scraper parallellt.
- I Job Markdown Scraper, ställ in Tool Name till
scrape_as_markdownoch Tool Parameters till={ "url": "{{ $json.job_search_url }}" }. - I Salary Search Scraper, ställ in Tool Name till
search_engineoch Tool Parameters till={ "query": "{{ $json.job_role }}", "engine": "google" }. - I Company Markdown Scraper, ställ in Tool Name till
scrape_as_markdownoch Tool Parameters till={ "url": "{{ $json.company_info }}" }. - Credential Required: Anslut era mcpClientApi-inloggningsuppgifter i Job Markdown Scraper, Salary Search Scraper och Company Markdown Scraper.
Steg 3: konfigurera AI-extraktion för löne-, jobb- och företagsdata
Använd tre informationsextraktorer som drivs av OpenAI-chatmodeller för att omvandla skrapad markdown till strukturerad data.
- I Extract Salary Details, ställ in Text till
=Extract the salary information from the following content {{ $json.result.content[0].text }}och behåll Schema Type sommanual. - I Extract Job Summary, ställ in Text till
=Extract markdown to textual data. {{ $json.result.content[0].text }}. - I Extract Company Details, ställ in Text till
=Extract markdown to textual data. {{ $json.result.content[0].text }}. - Säkerställ att AI Model for Salary är ansluten som språkmodell för Extract Salary Details, AI Model for Job Text för Extract Job Summary och AI Model for Company för Extract Company Details.
- Credential Required: Anslut era openAiApi-inloggningsuppgifter i AI Model for Salary, AI Model for Job Text och AI Model for Company. Dessa inloggningsuppgifter används av de överordnade extraktornoderna.
result.content[0].text och att modellen gpt-4o-mini är tillgänglig i ert OpenAI-konto.Steg 4: kombinera utdata och konfigurera parallella åtgärder
Slå ihop de tre AI-utdatana till en och samma payload, aggregera dem och trigga sedan tre parallella åtgärder: filskrivning, webhook-notifiering och uppdatering av Google Sheets.
- Koppla Extract Salary Details, Extract Job Summary och Extract Company Details till Combine Outputs med Number of Inputs satt till
3. - Koppla Combine Outputs till Aggregate Results och säkerställ att Fields To Aggregate inkluderar
output. - Aggregate Results skickar utdata till Build Binary Payload, Post Webhook Update och Modify Sheets Record parallellt.
- I Build Binary Payload, behåll Function Code som angivet för att skapa en Base64-binär payload.
- Koppla Build Binary Payload till Write Salary File och ställ in File Name till
=d:\JobDesc-SalaryInfo-{{Date.now()}}.jsonmed Operation satt tillwrite. - I Post Webhook Update, ställ in URL till
={{ $('Define Input Fields').item.json.webhook_notification_url }}och ställ in Send Body tilltrue. - I Post Webhook Update, ställ in Body Parameters → response till
={{ $json.output.search_response }}. - I Modify Sheets Record, ställ in Operation till
appendOrUpdateoch mappa kolumner: salary_max till={{ $json.output[0].salary_max }}, salary_min till={{ $json.output[0].salary_min }}, company_info till={{ $json.output[2].company_info }}, salary_period till={{ $json.output[0].salary_period }}och job_description till={{ $json.output[1].job_description }}. - I Modify Sheets Record, ställ in Document ID till
[YOUR_ID]och Sheet Name tillgid=0. - Credential Required: Anslut era googleSheetsOAuth2Api-inloggningsuppgifter i Modify Sheets Record.
Steg 5: testa och aktivera ert arbetsflöde
Kör arbetsflödet manuellt för att validera skrapning, AI-extraktion och utdataåtgärder, och aktivera det sedan för produktionsanvändning.
- Klicka på Execute Workflow i Manual Launch Trigger för att köra ett test.
- Bekräfta att Extract Salary Details, Extract Job Summary och Extract Company Details returnerar strukturerad utdata.
- Verifiera att Write Salary File skapar en JSON-fil och att Post Webhook Update skickar data till er webhook-URL.
- Kontrollera Modify Sheets Record för en ny eller uppdaterad rad med fält för lön och jobbeskrivning.
- Växla arbetsflödet till Active när valideringen är klar.
Vanliga fallgropar
- Bright Data-autentisering kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera: kontrollera först din Bright Data API-token och inställningarna för Web Unlocker-zonen i Bright Data-dashboarden.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder fallerar på grund av tomma svar.
- Standardprompterna i AI-noder är generiska. Lägg in er tonalitet och exakt vilka fält ni vill ha tidigt, annars kommer du redigera utdata i all evighet.
Vanliga frågor
Cirka 45 minuter om du redan har Bright Data, OpenAI och Google Sheets redo.
Nej. Du kopplar främst ihop konton och justerar några extraktionsfält.
Ja. n8n har ett gratis alternativ för egen drift 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 kostnader för OpenAI API (oftast några cent per körning) och din Bright Data-förbrukning.
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 hanterar n8n bra. Egen drift ger dig obegränsat antal körningar men kräver grundläggande serverhantering.
Ja, och det är en av de bästa anledningarna att använda n8n här. Uppdatera prompterna i stegen ”AI Model for Job Text” och ”Extract Job Summary” så att de uttryckligen ber om fält som tech stack, remote-policy, tidszonskrav eller visumformuleringar. Om lönen är inkonsekvent kan du också skärpa instruktionerna i ”AI Model for Salary” så att den returnerar ett enda normaliserat format (till exempel årsintervall i USD plus noteringar om konfidens). Justera till sist mappningen i ”Modify Sheets Record” så att de nya fälten hamnar i dedikerade kolumner.
Oftast är det ett problem med API-token eller en felkonfiguration av Web Unlocker-zonen. Skapa om din Bright Data-token, bekräfta att din miljövariabel för MCP-servern är satt och kontrollera sedan Web Unlocker-konfigurationen i Bright Datas kontrollpanel igen. Om det fortfarande misslyckas kan målsajten strypa trafiken, så sänk körningstakten eller sprid ut förfrågningar med en Wait.
Om du kör n8n med egen drift kan den hantera så många som din server och din Bright Data-plan klarar av att köra på ett stabilt sätt.
Ofta, ja, eftersom det här flödet bygger på extraktion i flera steg, sammanslagning av utdata och kontroll över hur data formas innan den hamnar i Google Sheets. n8n är också enklare att bygga ut när du vill ha extra grenar, som att spara en kopia på disk, posta till en webhook och skriva till Sheets i samma körning. Zapier och Make kan fortfarande fungera, men du når oftast gränser när du behöver rikare logik eller vill köra med egen drift för skala. Om din process bara är ”URL in, rad ut” och inget mer kan de verktygen vara helt okej. Prata med en automationsexpert om du är osäker.
När det här väl rullar slutar ditt kalkylark vara en kyrkogård av kopierad text och blir något du kan sortera, filtrera och lita på. Bara det gör faktiskt att jobb-research känns lättare.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.