Extraction de profil LinkedIn et construction de CV JSON (Bright Data et Google Gemini)

Avancé

Ceci est unHR, AIworkflow d'automatisation du domainecontenant 19 nœuds.Utilise principalement des nœuds comme Set, Code, Function, HttpRequest, ManualTrigger, combinant la technologie d'intelligence artificielle pour une automatisation intelligente. Extraction de profils LinkedIn et construction de CV en JSON (Bright Data et Google Gemini)

Prérequis
  • Peut nécessiter les informations d'identification d'authentification de l'API cible
  • Clé API Google Gemini
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "id": "V9lUeUsju5cwwmNc",
  "meta": {
    "instanceId": "885b4fb4a6a9c2cb5621429a7b972df0d05bb724c20ac7dac7171b62f1c7ef40",
    "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": "Lors du clic sur 'Tester le workflow'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -580,
        -140
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "df338f53-cb90-4529-befb-382735043ec2",
      "name": "Définir l'URL et la zone Bright Data",
      "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": "Exécuter la requête web Bright Data",
      "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": {
          "id": "kdbqXuxIR8qIxF7y",
          "name": "Header Auth account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "078d4a98-9c45-4370-a579-06450798f1a1",
      "name": "Extracteur de données textuelles depuis Markdown",
      "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 Modèle de chat pour Markdown vers texte",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        100,
        80
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash-exp"
      },
      "credentials": {
        "googlePalmApi": {
          "id": "YeO7dHZnuGBVQKVZ",
          "name": "Google Gemini(PaLM) Api account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a45dbef9-58f3-4730-8e1b-83419e1efc85",
      "name": "Extracteur de compétences",
      "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 Modèle de chat pour l'extracteur de compétences",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        544,
        -220
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash-exp"
      },
      "credentials": {
        "googlePalmApi": {
          "id": "YeO7dHZnuGBVQKVZ",
          "name": "Google Gemini(PaLM) Api account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5c32bdeb-666b-4a0f-9722-0c62ec95ac9e",
      "name": "Créer des données binaires pour l'extraction structurée",
      "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": "Écrire le contenu structuré sur le disque",
      "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": "Initier une notification Webhook pour les données structurées",
      "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": "Écrire le contenu structuré des compétences sur le disque",
      "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": "Créer des données binaires pour l'extraction structurée des compétences",
      "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": "Note adhésive 4",
      "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": "Note adhésive 5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -580,
        -780
      ],
      "parameters": {
        "color": 7,
        "width": 400,
        "height": 340,
        "content": "## Logo\n\n\n![logo](https://images.seeklogo.com/logo-png/43/1/brightdata-logo-png_seeklogo-439974.png)\n"
      },
      "typeVersion": 1
    },
    {
      "id": "097e223c-61e2-4c01-ab8c-3eb2cc48b165",
      "name": "Note adhésive 1",
      "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": "Note adhésive",
      "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 Extracteur de CV",
      "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 Modèle de chat",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        580,
        260
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash-exp"
      },
      "credentials": {
        "googlePalmApi": {
          "id": "YeO7dHZnuGBVQKVZ",
          "name": "Google Gemini(PaLM) Api account"
        }
      },
      "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,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "bcad3928-6913-44b0-b9e5-efc6e738769c",
  "connections": {
    "9ec7af7d-72e6-410d-b52e-9eda3e193e30": {
      "main": [
        [
          {
            "node": "db74b347-713e-4ff6-9783-1d3f6b1895a6",
            "type": "main",
            "index": 0
          },
          {
            "node": "5c32bdeb-666b-4a0f-9722-0c62ec95ac9e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a45dbef9-58f3-4730-8e1b-83419e1efc85": {
      "main": [
        [
          {
            "node": "c7a77bd9-955c-45ec-b6d7-e10717eda093",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e06fcc12-c264-439f-84f2-1988587e21c6": {
      "main": [
        [
          {
            "node": "9ec7af7d-72e6-410d-b52e-9eda3e193e30",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "14c17907-10bb-45a8-b835-39251b742cbe": {
      "ai_languageModel": [
        [
          {
            "node": "e06fcc12-c264-439f-84f2-1988587e21c6",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "df338f53-cb90-4529-befb-382735043ec2": {
      "main": [
        [
          {
            "node": "e3a859aa-b330-4ae5-b0fb-7cd621be6fb3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e3a859aa-b330-4ae5-b0fb-7cd621be6fb3": {
      "main": [
        [
          {
            "node": "078d4a98-9c45-4370-a579-06450798f1a1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0bac88f2-4912-4b1e-b511-aab2c3b34db9": {
      "main": [
        [
          {
            "node": "df338f53-cb90-4529-befb-382735043ec2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "078d4a98-9c45-4370-a579-06450798f1a1": {
      "main": [
        [
          {
            "node": "a45dbef9-58f3-4730-8e1b-83419e1efc85",
            "type": "main",
            "index": 0
          },
          {
            "node": "e06fcc12-c264-439f-84f2-1988587e21c6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "955af989-3590-49ae-90be-df6424200e42": {
      "ai_languageModel": [
        [
          {
            "node": "a45dbef9-58f3-4730-8e1b-83419e1efc85",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "5c32bdeb-666b-4a0f-9722-0c62ec95ac9e": {
      "main": [
        [
          {
            "node": "b9e899f3-a1a4-4dce-af96-1814fb3c03b7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2ba19dce-4f9a-439d-b7ae-d701ddb03616": {
      "ai_languageModel": [
        [
          {
            "node": "078d4a98-9c45-4370-a579-06450798f1a1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "c7a77bd9-955c-45ec-b6d7-e10717eda093": {
      "main": [
        [
          {
            "node": "29d27cef-c868-4552-ab41-08276f56e6f9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Avancé - Ressources Humaines, Intelligence Artificielle

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds19
Catégorie2
Types de nœuds10
Description de la difficulté

Adapté aux utilisateurs avancés, avec des workflows complexes contenant 16+ nœuds

Auteur
Ranjan Dailata

Ranjan Dailata

@ranjancse

A Professional based out of India specialized in handling AI-powered automations. Contact me at ranjancse@gmail.com

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34