This workflow corresponds to n8n.io template #4653 — we link there as the canonical source.
This workflow follows the Chainllm → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "V9lUeUsju5cwwmNc",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "LinkedIn Profile Extract and Build JSON Resume with Bright Data & Google Gemini",
"tags": [
{
"id": "Kujft2FOjmOVQAmJ",
"name": "Engineering",
"createdAt": "2025-04-09T01:31:00.558Z",
"updatedAt": "2025-04-09T01:31:00.558Z"
},
{
"id": "ZOwtAMLepQaGW76t",
"name": "Building Blocks",
"createdAt": "2025-04-13T15:23:40.462Z",
"updatedAt": "2025-04-13T15:23:40.462Z"
},
{
"id": "ddPkw7Hg5dZhQu2w",
"name": "AI",
"createdAt": "2025-04-13T05:38:08.053Z",
"updatedAt": "2025-04-13T05:38:08.053Z"
},
{
"id": "rKOa98eAi3IETrLu",
"name": "HR",
"createdAt": "2025-04-13T04:59:30.580Z",
"updatedAt": "2025-04-13T04:59:30.580Z"
}
],
"nodes": [
{
"id": "0bac88f2-4912-4b1e-b511-aab2c3b34db9",
"name": "When clicking \u2018Test workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-580,
-140
],
"parameters": {},
"typeVersion": 1
},
{
"id": "df338f53-cb90-4529-befb-382735043ec2",
"name": "Set URL and Bright Data Zone",
"type": "n8n-nodes-base.set",
"position": [
-360,
-140
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "3aedba66-f447-4d7a-93c0-8158c5e795f9",
"name": "url",
"type": "string",
"value": "https://www.linkedin.com/in/ranjan-dailata"
},
{
"id": "4e7ee31d-da89-422f-8079-2ff2d357a0ba",
"name": "zone",
"type": "string",
"value": "web_unlocker1"
},
{
"id": "20518160-df56-49fe-9a42-05e9f9d743a5",
"name": "webhook_notification_url",
"type": "string",
"value": "https://webhook.site/c9118da2-1c54-460f-a83a-e5131b7098db"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "e3a859aa-b330-4ae5-b0fb-7cd621be6fb3",
"name": "Perform Bright Data Web Request",
"type": "n8n-nodes-base.httpRequest",
"position": [
-140,
-140
],
"parameters": {
"url": "https://api.brightdata.com/request",
"method": "POST",
"options": {},
"sendBody": true,
"sendHeaders": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "zone",
"value": "={{ $json.zone }}"
},
{
"name": "url",
"value": "={{ $json.url }}"
},
{
"name": "format",
"value": "raw"
},
{
"name": "data_format",
"value": "markdown"
}
]
},
"genericAuthType": "httpHeaderAuth",
"headerParameters": {
"parameters": [
{}
]
}
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "078d4a98-9c45-4370-a579-06450798f1a1",
"name": "Markdown to Textual Data Extractor",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
80,
-140
],
"parameters": {
"text": "=You need to analyze the below markdown and convert to textual data. Please do not output with your own thoughts. Make sure to output with textual data only with no links, scripts, css etc.\n\n{{ $json.data }}",
"messages": {
"messageValues": [
{
"message": "You are a markdown expert"
}
]
},
"promptType": "define"
},
"retryOnFail": true,
"typeVersion": 1.6
},
{
"id": "2ba19dce-4f9a-439d-b7ae-d701ddb03616",
"name": "Google Gemini Chat Model for Markdown to Textual",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
100,
80
],
"parameters": {
"options": {},
"modelName": "models/gemini-2.0-flash-exp"
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "a45dbef9-58f3-4730-8e1b-83419e1efc85",
"name": "Skill Extractor",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
456,
-440
],
"parameters": {
"text": "=Perform Data Mining and extract the skills from the provided resume\n\n {{ $json.text }}",
"options": {},
"schemaType": "manual",
"inputSchema": "{\n\t\"type\": \"array\",\n\t\"properties\": {\n\t\t\"skill\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n \"desc\": {\n\t\t\t\"type\": \"string\"\n\t\t}\n\t}\n}"
},
"retryOnFail": true,
"typeVersion": 1
},
{
"id": "955af989-3590-49ae-90be-df6424200e42",
"name": "Google Gemini Chat Model for Skill Extractor",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
544,
-220
],
"parameters": {
"options": {},
"modelName": "models/gemini-2.0-flash-exp"
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "5c32bdeb-666b-4a0f-9722-0c62ec95ac9e",
"name": "Create a binary data for Structured Data Extract",
"type": "n8n-nodes-base.function",
"position": [
1052,
-40
],
"parameters": {
"functionCode": "items[0].binary = {\n data: {\n data: new Buffer(JSON.stringify(items[0].json, null, 2)).toString('base64')\n }\n};\nreturn items;"
},
"typeVersion": 1
},
{
"id": "b9e899f3-a1a4-4dce-af96-1814fb3c03b7",
"name": "Write the structured content to disk",
"type": "n8n-nodes-base.readWriteFile",
"position": [
1280,
-40
],
"parameters": {
"options": {},
"fileName": "=d:\\Json_Resume.json",
"operation": "write"
},
"typeVersion": 1
},
{
"id": "db74b347-713e-4ff6-9783-1d3f6b1895a6",
"name": "Initiate a Webhook Notification for Structured Data",
"type": "n8n-nodes-base.httpRequest",
"position": [
1060,
160
],
"parameters": {
"url": "={{ $('Set URL and Bright Data Zone').item.json.webhook_notification_url }}",
"options": {},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "json_resume",
"value": "={{ $('JSON Resume Extractor').item.json.output.toJsonString() }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "29d27cef-c868-4552-ab41-08276f56e6f9",
"name": "Write the structured skills content to disk",
"type": "n8n-nodes-base.readWriteFile",
"position": [
1060,
-340
],
"parameters": {
"options": {},
"fileName": "=d:\\Resume_Skills.json",
"operation": "write"
},
"typeVersion": 1
},
{
"id": "c7a77bd9-955c-45ec-b6d7-e10717eda093",
"name": "Create a binary data for Structured Skill Extract",
"type": "n8n-nodes-base.function",
"position": [
832,
-340
],
"parameters": {
"functionCode": "items[0].binary = {\n data: {\n data: new Buffer(JSON.stringify(items[0].json, null, 2)).toString('base64')\n }\n};\nreturn items;"
},
"typeVersion": 1
},
{
"id": "46dc726e-c939-466b-b834-83f0aed2c95c",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-140,
-420
],
"parameters": {
"color": 5,
"width": 440,
"height": 240,
"content": "## LLM Usages\n\nGoogle Gemini LLM is being utilized for the structured data extraction handling."
},
"typeVersion": 1
},
{
"id": "a100ebc9-9253-4e80-93d9-60174a08e7d9",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-580,
-780
],
"parameters": {
"color": 7,
"width": 400,
"height": 340,
"content": "## Logo\n\n\n\n"
},
"typeVersion": 1
},
{
"id": "097e223c-61e2-4c01-ab8c-3eb2cc48b165",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-580,
-420
],
"parameters": {
"width": 400,
"height": 240,
"content": "## Note\n\nDeals with the LinkedIn profile data extraction by utilizing the Bright Data and Google Gemini LLM for transforming the profile into a structured JSON resume with the structured skill extraction.\n\n**Please make sure to set the input fields node with the LinkedIn profile URL, Bright Data zone name, Webhook notification URL**\n"
},
"typeVersion": 1
},
{
"id": "8260cf1a-bd5e-4c05-a898-e7f74ff1d268",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
360,
-520
],
"parameters": {
"color": 7,
"width": 1100,
"height": 960,
"content": "## Structured Data Extract using LLM"
},
"typeVersion": 1
},
{
"id": "e06fcc12-c264-439f-84f2-1988587e21c6",
"name": "JSON Resume Extractor",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
460,
80
],
"parameters": {
"text": "=Extract the resume in JSON format.\n {{ $json.text }}",
"options": {},
"schemaType": "manual",
"inputSchema": "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"JSON Resume\",\n \"type\": \"object\",\n \"properties\": {\n \"basics\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" },\n \"label\": { \"type\": \"string\" },\n \"image\": { \"type\": \"string\", \"format\": \"uri\" },\n \"email\": { \"type\": \"string\", \"format\": \"email\" },\n \"phone\": { \"type\": \"string\" },\n \"url\": { \"type\": \"string\", \"format\": \"uri\" },\n \"summary\": { \"type\": \"string\" },\n \"location\": {\n \"type\": \"object\",\n \"properties\": {\n \"address\": { \"type\": \"string\" },\n \"postalCode\": { \"type\": \"string\" },\n \"city\": { \"type\": \"string\" },\n \"countryCode\": { \"type\": \"string\" },\n \"region\": { \"type\": \"string\" }\n }\n },\n \"profiles\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"network\": { \"type\": \"string\" },\n \"username\": { \"type\": \"string\" },\n \"url\": { \"type\": \"string\", \"format\": \"uri\" }\n }\n }\n }\n }\n },\n \"work\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" },\n \"position\": { \"type\": \"string\" },\n \"url\": { \"type\": \"string\", \"format\": \"uri\" },\n \"startDate\": { \"type\": \"string\", \"format\": \"date\" },\n \"endDate\": { \"type\": \"string\", \"format\": \"date\" },\n \"summary\": { \"type\": \"string\" },\n \"highlights\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" }\n }\n }\n }\n },\n \"volunteer\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"organization\": { \"type\": \"string\" },\n \"position\": { \"type\": \"string\" },\n \"url\": { \"type\": \"string\", \"format\": \"uri\" },\n \"startDate\": { \"type\": \"string\", \"format\": \"date\" },\n \"endDate\": { \"type\": \"string\", \"format\": \"date\" },\n \"summary\": { \"type\": \"string\" },\n \"highlights\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" }\n }\n }\n }\n },\n \"education\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"institution\": { \"type\": \"string\" },\n \"url\": { \"type\": \"string\", \"format\": \"uri\" },\n \"area\": { \"type\": \"string\" },\n \"studyType\": { \"type\": \"string\" },\n \"startDate\": { \"type\": \"string\", \"format\": \"date\" },\n \"endDate\": { \"type\": \"string\", \"format\": \"date\" },\n \"score\": { \"type\": \"string\" },\n \"courses\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" }\n }\n }\n }\n },\n \"awards\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"title\": { \"type\": \"string\" },\n \"date\": { \"type\": \"string\", \"format\": \"date\" },\n \"awarder\": { \"type\": \"string\" },\n \"summary\": { \"type\": \"string\" }\n }\n }\n },\n \"certificates\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" },\n \"date\": { \"type\": \"string\", \"format\": \"date\" },\n \"issuer\": { \"type\": \"string\" },\n \"url\": { \"type\": \"string\", \"format\": \"uri\" }\n }\n }\n },\n \"publications\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" },\n \"publisher\": { \"type\": \"string\" },\n \"releaseDate\": { \"type\": \"string\", \"format\": \"date\" },\n \"url\": { \"type\": \"string\", \"format\": \"uri\" },\n \"summary\": { \"type\": \"string\" }\n }\n }\n },\n \"skills\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" },\n \"level\": { \"type\": \"string\" },\n \"keywords\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" }\n }\n }\n }\n },\n \"languages\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"language\": { \"type\": \"string\" },\n \"fluency\": { \"type\": \"string\" }\n }\n }\n },\n \"interests\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" },\n \"keywords\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" }\n }\n }\n }\n },\n \"references\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" },\n \"reference\": { \"type\": \"string\" }\n }\n }\n },\n \"projects\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": { \"type\": \"string\" },\n \"startDate\": { \"type\": \"string\", \"format\": \"date\" },\n \"endDate\": { \"type\": \"string\", \"format\": \"date\" },\n \"description\": { \"type\": \"string\" },\n \"highlights\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" }\n },\n \"url\": { \"type\": \"string\", \"format\": \"uri\" }\n }\n }\n }\n },\n \"required\": [\"basics\"]\n}\n"
},
"retryOnFail": true,
"typeVersion": 1
},
{
"id": "14c17907-10bb-45a8-b835-39251b742cbe",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
580,
260
],
"parameters": {
"options": {},
"modelName": "models/gemini-2.0-flash-exp"
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "9ec7af7d-72e6-410d-b52e-9eda3e193e30",
"name": "Code",
"type": "n8n-nodes-base.code",
"position": [
800,
80
],
"parameters": {
"jsCode": "return $input.first().json.output"
},
"typeVersion": 2
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "bcad3928-6913-44b0-b9e5-efc6e738769c",
"connections": {
"Code": {
"main": [
[
{
"node": "Initiate a Webhook Notification for Structured Data",
"type": "main",
"index": 0
},
{
"node": "Create a binary data for Structured Data Extract",
"type": "main",
"index": 0
}
]
]
},
"Skill Extractor": {
"main": [
[
{
"node": "Create a binary data for Structured Skill Extract",
"type": "main",
"index": 0
}
]
]
},
"JSON Resume Extractor": {
"main": [
[
{
"node": "Code",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "JSON Resume Extractor",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Set URL and Bright Data Zone": {
"main": [
[
{
"node": "Perform Bright Data Web Request",
"type": "main",
"index": 0
}
]
]
},
"Perform Bright Data Web Request": {
"main": [
[
{
"node": "Markdown to Textual Data Extractor",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Test workflow\u2019": {
"main": [
[
{
"node": "Set URL and Bright Data Zone",
"type": "main",
"index": 0
}
]
]
},
"Markdown to Textual Data Extractor": {
"main": [
[
{
"node": "Skill Extractor",
"type": "main",
"index": 0
},
{
"node": "JSON Resume Extractor",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model for Skill Extractor": {
"ai_languageModel": [
[
{
"node": "Skill Extractor",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Create a binary data for Structured Data Extract": {
"main": [
[
{
"node": "Write the structured content to disk",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model for Markdown to Textual": {
"ai_languageModel": [
[
{
"node": "Markdown to Textual Data Extractor",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Create a binary data for Structured Skill Extract": {
"main": [
[
{
"node": "Write the structured skills content to disk",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googlePalmApihttpHeaderAuth
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
The LinkedIn Profile Extract and JSON Resume Builder is a powerful workflow that scrapes professional profile data from LinkedIn using Bright Data's infrastructure, then transforms that data into a clean, structured JSON resume using Google Gemini. The workflow is ideal for…
Source: https://n8n.io/workflows/4653/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
The Brand Content Extract, Summarization & Sentiment Analysis workflow is designed for professionals and teams who need to monitor, understand, and act on public brand perception at scale.
The Structured Data Extract & Data Mining workflow is crafted for researchers, content analysts, SEO strategists, and AI developers who need to transform semi-structured web data (like markdown conten
The Google Trend Data Extract & Summarization workflow is ideal for trend researchers, digital marketers, content strategists, and AI developers who want to automate the extraction, summarization, and
Content - Newsletter Agent. Uses formTrigger, chainLlm, outputParserStructured, httpRequest. Event-driven trigger; 87 nodes.
🤖🧑💻 AI Agent for Top n8n Creators Leaderboard Reporting. Uses httpRequest, lmChatOpenAi, executeWorkflowTrigger, toolWorkflow. Event-driven trigger; 49 nodes.