HR候选人解析与评估 - 使用GPT-4.1和LinkedIn数据的CSV/XLSX
高级
这是一个Content Creation, Multimodal AI领域的自动化工作流,包含 33 个节点。主要使用 Set, Code, Gmail, Merge, Switch 等节点。 HR候选人解析与评估 - 使用GPT-4.1和LinkedIn数据的CSV/XLSX
前置要求
- •Google 账号和 Gmail API 凭证
- •Google Drive API 凭证
- •可能需要目标 API 的认证凭证
- •Google Sheets API 凭证
- •OpenAI API Key
使用的节点 (33)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"meta": {
"instanceId": "c880adfc8ab05950d92e126ee3993c4a816dbb96fe9687814d0ff32aa19bc6ed",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "cd2935cd-0853-40da-bbe4-17de17d788da",
"name": "表单提交时",
"type": "n8n-nodes-base.formTrigger",
"position": [
80,
64
],
"webhookId": "a5837872-ce52-4a56-b259-f16bd7ab5c63",
"parameters": {
"options": {},
"formTitle": "Upload CSV File",
"formFields": {
"values": [
{
"fieldType": "file",
"fieldLabel": "New File Attachment",
"multipleFiles": false,
"requiredField": true,
"acceptFileTypes": "csv,xlsx,xls"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "3f8140b0-fcc5-4ebc-a3a3-33a79e7c3667",
"name": "无操作,什么都不做",
"type": "n8n-nodes-base.noOp",
"position": [
656,
160
],
"parameters": {},
"typeVersion": 1
},
{
"id": "34b10d10-b3b4-46c9-9afa-44e42a4b8918",
"name": "合并",
"type": "n8n-nodes-base.merge",
"position": [
848,
64
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition"
},
"typeVersion": 3.1
},
{
"id": "f095da77-dfbb-492c-8b1c-bc8b08b3272c",
"name": "创建Google Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
656,
-48
],
"parameters": {
"title": "=New Job Application Google Sheet Form {{ $now.format('d-LL-yyyy, H:mm') }}",
"options": {},
"resource": "spreadsheet",
"sheetsUi": {
"sheetValues": [
{
"title": "New Job Application Form"
}
]
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "QTXPiavZQSLJkwmd",
"name": "Google Sheets account"
}
},
"executeOnce": true,
"typeVersion": 4.5
},
{
"id": "76ab3d56-cb3e-4c4d-b54a-d4741b3ee3b7",
"name": "上传文件",
"type": "n8n-nodes-base.googleDrive",
"position": [
272,
64
],
"parameters": {
"name": "=New Job Application Form {{ $now.format('d-LL-yyyy, H:mm') }}",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "17r0X1Y16pvY1NXhKFUzzjS0mflnTy_k0",
"cachedResultUrl": "https://drive.google.com/drive/folders/17r0X1Y16pvY1NXhKFUzzjS0mflnTy_k0",
"cachedResultName": "Demos"
},
"inputDataFieldName": "New_File_Attachment"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "ifOkU58G6AL4cuHi",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "7d03be54-eae1-4ecb-91b1-930401916a98",
"name": "下载文件",
"type": "n8n-nodes-base.googleDrive",
"position": [
464,
64
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.id }}"
},
"options": {
"fileName": "=New Job Application Form {{ $now.format('d-LL-yyyy, H:mm') }}",
"binaryPropertyName": "New_File_Attachment"
},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "ifOkU58G6AL4cuHi",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "09e7c1c0-e418-4c32-9bd4-c1ca916629cb",
"name": "从CSV提取",
"type": "n8n-nodes-base.extractFromFile",
"position": [
1216,
-32
],
"parameters": {
"options": {},
"binaryPropertyName": "New_File_Attachment"
},
"executeOnce": true,
"typeVersion": 1
},
{
"id": "359988ca-ed6f-49f7-b8ca-d9d574a0749b",
"name": "删除文件",
"type": "n8n-nodes-base.googleDrive",
"position": [
1744,
64
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Upload file').item.json.id }}"
},
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"folderId": {
"__rl": true,
"mode": "list",
"value": "1cmnKI80W2CN67l8HOMeLdRLx-rFcxbzB",
"cachedResultUrl": "https://drive.google.com/drive/folders/1cmnKI80W2CN67l8HOMeLdRLx-rFcxbzB",
"cachedResultName": "Temp"
},
"operation": "move"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "ifOkU58G6AL4cuHi",
"name": "Google Drive account"
}
},
"executeOnce": true,
"typeVersion": 3
},
{
"id": "483ff041-e758-4b30-941a-8ef307ca1957",
"name": "格式化列1",
"type": "n8n-nodes-base.code",
"position": [
2208,
64
],
"parameters": {
"jsCode": "// Split the comma-separated string from $json.columns\nconst headersArray = $json.columns.split(',');\n\n// Create an object where each key is a header (trimmed) and its value is null\nconst headersObject = {};\nheadersArray.forEach(header => {\n const trimmedHeader = header.trim();\n headersObject[trimmedHeader] = null;\n});\n\n// Return the object so that each header becomes a column in the first row of your sheet\nreturn [\n {\n json: headersObject\n }\n];\n"
},
"typeVersion": 2
},
{
"id": "e5bb996e-882d-493a-82d9-2b32ceb02f8d",
"name": "格式化列",
"type": "n8n-nodes-base.set",
"position": [
2032,
64
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "eb599b84-0ef6-4020-97f0-8e1e07bdd756",
"name": "columns",
"type": "string",
"value": "Score Explanation, Evaluation Score"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "712a1a6d-ed8a-4e09-abbd-36be4057ea89",
"name": "添加列",
"type": "n8n-nodes-base.googleSheets",
"position": [
2384,
64
],
"parameters": {
"columns": {
"value": {},
"schema": [
{
"id": "שם פרטי",
"type": "string",
"display": true,
"required": false,
"displayName": "שם פרטי",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "שם משפחה",
"type": "string",
"display": true,
"required": false,
"displayName": "שם משפחה",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "חשבון לינקדאין",
"type": "string",
"display": true,
"required": false,
"displayName": "חשבון לינקדאין",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "הרפתקני?",
"type": "string",
"display": true,
"required": false,
"displayName": "הרפתקני?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "מה מושך אותך להדרכה",
"type": "string",
"display": true,
"required": false,
"displayName": "מה מושך אותך להדרכה",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "ניסיון בהדרכה",
"type": "string",
"display": true,
"required": false,
"displayName": "ניסיון בהדרכה",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "אהוב בהדרכה",
"type": "string",
"display": true,
"required": false,
"displayName": "אהוב בהדרכה",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "רמת אנגלית",
"type": "string",
"display": true,
"required": false,
"displayName": "רמת אנגלית",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "התמודדות עם קבוצה רועשת",
"type": "string",
"display": true,
"required": false,
"displayName": "התמודדות עם קבוצה רועשת",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "בקיאות בהיסטוריה",
"type": "string",
"display": true,
"required": false,
"displayName": "בקיאות בהיסטוריה",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "id",
"value": "={{ $('Create Google Sheet').item.json.sheets[0].properties.sheetId }}"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Create Google Sheet').item.json.spreadsheetId }}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "QTXPiavZQSLJkwmd",
"name": "Google Sheets account"
}
},
"typeVersion": 4.7
},
{
"id": "bf6a636f-648c-4922-a3c1-b5fc624ba296",
"name": "读取Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
64,
416
],
"parameters": {
"options": {
"returnFirstMatch": true,
"dataLocationOnSheet": {
"values": {
"rangeDefinition": "detectAutomatically"
}
}
},
"sheetName": {
"__rl": true,
"mode": "id",
"value": "={{ $('Create Google Sheet').item.json.sheets[0].properties.sheetId }}"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Create Google Sheet').item.json.spreadsheetId }}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "QTXPiavZQSLJkwmd",
"name": "Google Sheets account"
}
},
"typeVersion": 4.7
},
{
"id": "ad8d3814-ecd0-4b5e-8c64-2a213a17abe2",
"name": "获取第一行",
"type": "n8n-nodes-base.httpRequest",
"position": [
1456,
416
],
"parameters": {
"url": "=https://sheets.googleapis.com/v4/spreadsheets/{{ $('Create Google Sheet').item.json.spreadsheetId }}/values/{{ $('Create Google Sheet').item.json.sheets[0].properties.title }}!1:1",
"options": {},
"authentication": "predefinedCredentialType",
"nodeCredentialType": "googleSheetsOAuth2Api"
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "QTXPiavZQSLJkwmd",
"name": "Google Sheets account"
}
},
"typeVersion": 3
},
{
"id": "5e4d64f4-b029-4f40-b628-304112e4909b",
"name": "应用格式化",
"type": "n8n-nodes-base.httpRequest",
"position": [
1632,
416
],
"parameters": {
"url": "=https://sheets.googleapis.com/v4/spreadsheets/{{ $('Create Google Sheet').item.json.spreadsheetId }}:batchUpdate",
"method": "POST",
"options": {},
"jsonBody": "={\n \"requests\": [\n {\n \"updateSheetProperties\": {\n \"properties\": {\n \"sheetId\": {{ $('Create Google Sheet').item.json.sheets[0].properties.sheetId }},\n \"rightToLeft\": true\n },\n \"fields\": \"rightToLeft\"\n }\n },\n {\n \"repeatCell\": {\n \"range\": {\n \"sheetId\": {{ $('Create Google Sheet').item.json.sheets[0].properties.sheetId }},\n \"startRowIndex\": 0,\n \"endRowIndex\": 1\n },\n \"cell\": {\n \"userEnteredFormat\": {\n \"backgroundColor\": {\n \"red\": 0.8,\n \"green\": 0.9,\n \"blue\": 1.0\n },\n \"textFormat\": {\n \"bold\": true\n },\n \"verticalAlignment\": \"MIDDLE\",\n \"horizontalAlignment\": \"RIGHT\",\n \"wrapStrategy\": \"WRAP\"\n }\n },\n \"fields\": \"userEnteredFormat(backgroundColor,textFormat,verticalAlignment,horizontalAlignment,wrapStrategy)\"\n }\n },\n {\n \"repeatCell\": {\n \"range\": {\n \"sheetId\": {{ $('Create Google Sheet').item.json.sheets[0].properties.sheetId }},\n \"startRowIndex\": 1\n },\n \"cell\": {\n \"userEnteredFormat\": {\n \"verticalAlignment\": \"MIDDLE\",\n \"horizontalAlignment\": \"RIGHT\",\n \"wrapStrategy\": \"WRAP\"\n }\n },\n \"fields\": \"userEnteredFormat(verticalAlignment,horizontalAlignment,wrapStrategy)\"\n }\n },\n {\n \"setBasicFilter\": {\n \"filter\": {\n \"range\": {\n \"sheetId\": {{ $('Create Google Sheet').item.json.sheets[0].properties.sheetId }}\n }\n }\n }\n },\n {{ $('Get First Row').item.json.values[0].map((header, index) => JSON.stringify({\n \"updateDimensionProperties\": {\n \"range\": {\n \"sheetId\": $('Create Google Sheet').item.json.sheets[0].properties.sheetId,\n \"dimension\": \"COLUMNS\",\n \"startIndex\": index,\n \"endIndex\": index + 1\n },\n \"properties\": {\n \"pixelSize\": Math.max(120, header.length * 12 + 40)\n },\n \"fields\": \"pixelSize\"\n }\n })).join(',') }},\n {\n \"sortRange\": {\n \"range\": {\n \"sheetId\": {{ $('Create Google Sheet').item.json.sheets[0].properties.sheetId }},\n \"startRowIndex\": 1\n },\n \"sortSpecs\": [\n {\n \"dimensionIndex\": {{ $('Get First Row').item.json.values[0].indexOf('Evaluation Score') }},\n \"sortOrder\": \"DESCENDING\"\n }\n ]\n }\n }\n ]\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "googleSheetsOAuth2Api"
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "QTXPiavZQSLJkwmd",
"name": "Google Sheets account"
}
},
"typeVersion": 3
},
{
"id": "85518e84-1bcb-48e8-ab66-5b2fb72e31b2",
"name": "AI代理",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
496,
416
],
"parameters": {
"text": "=Google sheets Information: {{ $json.toJsonString() }}\n",
"options": {
"systemMessage": "=## Overview\nYou are a Hiring Evaluation Agent. Your job is to update rows in Google Sheets according to the information you receive. You receive:\n1) A full Google Sheet dump of candidates including row numbers.\n2) MANDATORY: For each candidate, fetch recent LinkedIn posts using Apify before evaluation.\n\n## Data format\n- Google Sheet rows include: row_number, full name, LinkedIn profile URL, and questions in the first row with answers in subsequent rows.\n\n## Apify - LinkedIn Integration (MANDATORY)\nAlways collect up to 3 recent posts per candidate using the following exact sequence:\n1) Run an Actor in Apify\n - Input must include the candidate's LinkedIn profile URL taken from the current Google Sheet row.\n - Limit results to max 3 posts.\n2) Get last run in Apify\n - Fetch the output items from the last run triggered in step 1.\n - Store the resulting posts with the candidate context of the same row.\n3) Matching logic to ensure the posts belong to the correct person\n - Primary key: exact LinkedIn profile URL match to the sheet row.\n - Fallback: match by full name after normalization\n - trim spaces\n - case insensitive\n - tolerate minor spelling variations\n4) If no posts are found or the LinkedIn URL is invalid\n - Continue the evaluation.\n - Explicitly write in Hebrew that the score is based only on form answers due to missing LinkedIn data.\n\n## Rules\n- ALWAYS use the provided `rowNumber` or `Row_Number_to_Match` to link your evaluation to the correct row.\n- Be consistent and fair - normalize scores so only top candidates approach 90+.\n- The reason must be at least 1 sentence including all explanations.\n- Explanations must be professional and in Hebrew only.\n- You have access to a Google Sheets - Update Row tool. Use it to add two new columns in the same row for each candidate:\n - Evaluation_Score\n - Score_Explanation\n- ALWAYS use the Apify sequence above to fetch recent posts for each candidate when possible.\n- ALWAYS factor LinkedIn posts into both the score and the Hebrew explanation. If none exist, say so explicitly in Hebrew and proceed the score/explanation based only on form answers due to missing LinkedIn data.\n\n## Goals\n- Infer the job role from the provided data in the sheet.\n- Before evaluating each candidate, use Apify to fetch their recent LinkedIn posts as described.\n- For each candidate output the following fields:\n - Evaluation_Score: a number from 0 to 100 based on role fit.\n - Score_Explanation: one professional Hebrew sentence that includes insights from LinkedIn posts. If no posts were found, explicitly state that the score is based on form answers only.\n - Row_Number_to_Match: the numeric row_number to update in Google Sheets.\n\n## Scoring rubric\n- Must-have skills match - 50%\n- Relevant experience - 25%\n- Achievements and impact signals - 15%\n- Communication clarity - 10%\n\n## Matching rules between candidates and \"More Information\" blocks\n- Preferred key: LinkedIn profile URL exact match.\n- Fallback: match by full name after normalization as defined above.\n\n## Required evaluation flow per candidate\n1) Read the candidate row from Google Sheets and identify:\n - row_number\n - full name\n - LinkedIn profile URL\n - all answers\n2) Run an Actor in Apify using the LinkedIn profile URL.\n3) Get last run in Apify and collect up to 3 recent posts for this candidate if exist.\n4) Score the candidate using the rubric and LinkedIn insights.\n5) Write one Hebrew sentence that clearly includes LinkedIn insights. If no posts were found, explicitly note that the score is based on form answers only.\n6) Use Google Sheets - Update Row to write:\n - Evaluation_Score\n - Score_Explanation\n into two new columns in the same row indicated by Row_Number_to_Match.\n\n## Error handling\n- If Apify returns an error or no items:\n - Proceed with evaluation based on form answers.\n - In the Hebrew explanation state that LinkedIn data was unavailable and the score is based on form answers only.\n- If multiple LinkedIn profiles match a name during fallback:\n - Prefer exact URL matches.\n - If still ambiguous, choose the profile whose name and headline are closest to the sheet entry and state the uncertainty in the internal reasoning, but keep the Hebrew explanation concise.\n\n## Output contract\nFor each candidate, produce a structured object with exactly these keys:\n- Row_Number_to_Match: <number>\n- Evaluation_Score: <0-100 only the number>\n- Score_Explanation: <Hebrew sentence, includes LinkedIn insights or explicitly states no LinkedIn posts were available>\n\nThen call Google Sheets - Update Row using Row_Number_to_Match and write Evaluation_Score and Score_Explanation to two new columns in that same row.\n"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.2
},
{
"id": "40481b0a-12ea-47b2-ac72-2a66af8af2d2",
"name": "在Google Sheets中更新行1",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
752,
608
],
"parameters": {
"columns": {
"value": {
"row_number": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('row_number__using_to_match_', ``, 'number') }}",
"Evaluation Score": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Evaluation_Score', ``, 'string') }}",
"Score Explanation": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Score_Explanation', ``, 'string') }}"
},
"schema": [
{
"id": "שם פרטי",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "שם פרטי",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "שם משפחה",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "שם משפחה",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "חשבון לינקדאין",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "חשבון לינקדאין",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "הרפתקני?",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "הרפתקני?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "מה מושך אותך להדרכה",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "מה מושך אותך להדרכה",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "ניסיון בהדרכה",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "ניסיון בהדרכה",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "אהוב בהדרכה",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "אהוב בהדרכה",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "רמת אנגלית",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "רמת אנגלית",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "התמודדות עם קבוצה רועשת",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "התמודדות עם קבוצה רועשת",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "בקיאות בהיסטוריה",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "בקיאות בהיסטוריה",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Score Explanation",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Score Explanation",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Evaluation Score",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Evaluation Score",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"row_number"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "id",
"value": "={{ $('Create Google Sheet').item.json.sheets[0].properties.sheetId }}"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Create Google Sheet').item.json.spreadsheetId }}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "QTXPiavZQSLJkwmd",
"name": "Google Sheets account"
}
},
"typeVersion": 4.7
},
{
"id": "25824592-3837-4a57-8bba-0f36fa8d75f5",
"name": "结构化输出解析器1",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1024,
624
],
"parameters": {
"jsonSchemaExample": "{\n \"Evaluation_Score\": 84,\n \"Score_Explanation\": \"כאן תבוא סיבה מקצועית בעברית במשפט אחד רציף\",\n \"Row_Number_to_Match\": 2\n}\n"
},
"typeVersion": 1.3
},
{
"id": "d2fd11d3-6160-4594-83ac-6445ed391b8a",
"name": "在Apify中获取数据集项",
"type": "@apify/n8n-nodes-apify.apifyTool",
"position": [
560,
608
],
"parameters": {
"resource": "Datasets",
"datasetId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Dataset_ID', `The \"defaultDatasetId\" received from the Apify actor tool as is`, 'string') }}"
},
"credentials": {
"apifyApi": {
"id": "fGe2Psh9GK96aErt",
"name": "Elay - Apify"
}
},
"typeVersion": 1
},
{
"id": "6218daa4-eb54-4407-91a2-307121e9d66a",
"name": "准备格式化",
"type": "n8n-nodes-base.set",
"onError": "continueRegularOutput",
"position": [
1280,
416
],
"parameters": {
"options": {}
},
"executeOnce": true,
"typeVersion": 3.4
},
{
"id": "8d7d8a62-5bf9-4964-82aa-76ab842e493f",
"name": "切换",
"type": "n8n-nodes-base.switch",
"position": [
1024,
64
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "CSV",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "dd765bcd-18d8-4a92-bed2-a9bc3f20770d",
"operator": {
"type": "string",
"operation": "endsWith"
},
"leftValue": "={{ $('On form submission').item.json[\"New File Attachment\"].filename }}",
"rightValue": ".csv"
}
]
},
"renameOutput": true
},
{
"outputKey": "XLSX",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "a2da6186-74a2-48dc-ad38-f7bf71df0ea1",
"operator": {
"type": "string",
"operation": "endsWith"
},
"leftValue": "={{ $('On form submission').item.json[\"New File Attachment\"].filename }}",
"rightValue": ".xlsx"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "4e4d8ec0-50de-4783-aae2-53bec86742bd",
"name": "转换为Google Sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
1568,
64
],
"parameters": {
"columns": {
"value": {},
"schema": [
{
"id": "שם פרטי",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "שם פרטי",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "שם משפחה",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "שם משפחה",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "חשבון לינקדאין",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "חשבון לינקדאין",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "הרפתקני?",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "הרפתקני?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "מה מושך אותך להדרכה",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "מה מושך אותך להדרכה",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "ניסיון בהדרכה",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "ניסיון בהדרכה",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "אהוב בהדרכה",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "אהוב בהדרכה",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "רמת אנגלית",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "רמת אנגלית",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "התמודדות עם קבוצה רועשת",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "התמודדות עם קבוצה רועשת",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "בקיאות בהיסטוריה",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "בקיאות בהיסטוריה",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "New Job Application Form"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Merge').item.json.spreadsheetId }}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "QTXPiavZQSLJkwmd",
"name": "Google Sheets account"
}
},
"typeVersion": 4.5
},
{
"id": "f9b25b1d-2a7f-41d5-95b5-1103f0e6cf2b",
"name": "从XLSX提取",
"type": "n8n-nodes-base.extractFromFile",
"position": [
1216,
160
],
"parameters": {
"options": {},
"operation": "xlsx",
"binaryPropertyName": "New_File_Attachment"
},
"executeOnce": true,
"typeVersion": 1
},
{
"id": "9161ad0b-dbbf-4a06-b1ff-a3ad111f50ca",
"name": "便签18",
"type": "n8n-nodes-base.stickyNote",
"position": [
1216,
336
],
"parameters": {
"color": 6,
"width": 612,
"height": 436,
"content": "# 4) 格式化Sheet"
},
"typeVersion": 1
},
{
"id": "7e8cab5f-ded2-419a-bd21-376fd3d96266",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
336
],
"parameters": {
"color": 4,
"width": 1204,
"height": 436,
"content": "# 3) 收集信息、丰富数据并添加行"
},
"typeVersion": 1
},
{
"id": "ec48a114-eaae-4629-86fe-db34bcef3bb4",
"name": "便签19",
"type": "n8n-nodes-base.stickyNote",
"position": [
1936,
-112
],
"parameters": {
"color": 2,
"width": 612,
"height": 436,
"content": "# 2) 创建新列"
},
"typeVersion": 1
},
{
"id": "b8ce6484-886f-464d-baba-52f9ef858ce2",
"name": "便签20",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
-112
],
"parameters": {
"color": 5,
"width": 1924,
"height": 436,
"content": "# 1) 排序并为操作准备数据"
},
"typeVersion": 1
},
{
"id": "b1b7f743-e7cb-470e-b72e-1a5e6d80c64d",
"name": "在Apify中运行Actor",
"type": "@apify/n8n-nodes-apify.apifyTool",
"position": [
368,
608
],
"parameters": {
"actorId": {
"__rl": true,
"mode": "list",
"value": "LQQIXN9Othf8f7R5n",
"cachedResultUrl": "https://console.apify.com/actors/LQQIXN9Othf8f7R5n/input",
"cachedResultName": "Linkedin Profile Posts Scraper [NO COOKIES] (apimaestro/linkedin-profile-posts)"
},
"customBody": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Input_JSON', `{\n \"total_posts\": 3,\n \"username\": \"paste here the exact linkedin URL of the candidate as it appears in google sheet\"\n}`, 'json') }}"
},
"credentials": {
"apifyApi": {
"id": "fGe2Psh9GK96aErt",
"name": "Elay - Apify"
}
},
"typeVersion": 1
},
{
"id": "92ad23fe-fc6f-443b-85db-2e66a4393296",
"name": "便签21",
"type": "n8n-nodes-base.stickyNote",
"position": [
-496,
-112
],
"parameters": {
"color": 3,
"width": 484,
"height": 884,
"content": "# AI驱动的候选人评估和LinkedIn数据丰富(CSV/XLSX格式)"
},
"typeVersion": 1
},
{
"id": "2d8d6034-1b1c-47bb-a7db-9a44c5934187",
"name": "合并1",
"type": "n8n-nodes-base.merge",
"position": [
1392,
64
],
"parameters": {
"mode": "combine",
"options": {
"includeUnpaired": true
},
"combineBy": "combineByPosition"
},
"typeVersion": 3.1
},
{
"id": "fa223575-a5bc-4bc5-8a49-a01109c932de",
"name": "GPT-4.1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
208,
608
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1",
"cachedResultName": "gpt-4.1"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "FbPpPRZSm02xc7N4",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "dc438c8c-e6f7-45d1-bbad-90ddfe155251",
"name": "发送消息",
"type": "n8n-nodes-base.gmail",
"position": [
2080,
416
],
"webhookId": "f10444c2-ccaf-4415-8aef-603b375fcf03",
"parameters": {
"sendTo": "elay.g@82labs.io",
"message": "=Please check out the workflow in order to be able to configure it.\nError accured in {{ $now.format('dd/MM/yyyy HH:mm') }}\n",
"options": {},
"subject": "Error in WF - \"Ben - 1st Project\"",
"emailType": "text"
},
"credentials": {
"gmailOAuth2": {
"id": "DGg7VXtEGqomgL1k",
"name": "Elay.g - Gmail"
}
},
"typeVersion": 2.1
},
{
"id": "0169300f-eb55-47fc-942b-64f63fd28415",
"name": "错误触发器",
"type": "n8n-nodes-base.errorTrigger",
"position": [
1872,
416
],
"parameters": {},
"typeVersion": 1
},
{
"id": "b5d5d85e-138c-4332-a91a-eec635907d5a",
"name": "便签14",
"type": "n8n-nodes-base.stickyNote",
"position": [
1840,
336
],
"parameters": {
"color": 3,
"width": 708,
"height": 440,
"content": "# 错误触发器"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"Merge": {
"main": [
[
{
"node": "Switch",
"type": "main",
"index": 0
}
]
]
},
"Merge1": {
"main": [
[
{
"node": "Convert to Google Sheet",
"type": "main",
"index": 0
}
]
]
},
"Switch": {
"main": [
[
{
"node": "Extract from CSV",
"type": "main",
"index": 0
}
],
[
{
"node": "Extract from XLSX",
"type": "main",
"index": 0
}
]
]
},
"GPT-4.1": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "Prepare for Formatting",
"type": "main",
"index": 0
}
]
]
},
"Read Sheet": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Add Columns": {
"main": [
[
{
"node": "Read Sheet",
"type": "main",
"index": 0
}
]
]
},
"Upload file": {
"main": [
[
{
"node": "Download file",
"type": "main",
"index": 0
}
]
]
},
"Download file": {
"main": [
[
{
"node": "Create Google Sheet",
"type": "main",
"index": 0
},
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
},
"Error Trigger": {
"main": [
[
{
"node": "Send a message",
"type": "main",
"index": 0
}
]
]
},
"Get First Row": {
"main": [
[
{
"node": "Apply Formatting",
"type": "main",
"index": 0
}
]
]
},
"Format Columns": {
"main": [
[
{
"node": "Format Columns1",
"type": "main",
"index": 0
}
]
]
},
"Format Columns1": {
"main": [
[
{
"node": "Add Columns",
"type": "main",
"index": 0
}
]
]
},
"Get Rid of File": {
"main": [
[
{
"node": "Format Columns",
"type": "main",
"index": 0
}
]
]
},
"Extract from CSV": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 0
}
]
]
},
"Extract from XLSX": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 1
}
]
]
},
"On form submission": {
"main": [
[
{
"node": "Upload file",
"type": "main",
"index": 0
}
]
]
},
"Create Google Sheet": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Run an Actor in Apify": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Prepare for Formatting": {
"main": [
[
{
"node": "Get First Row",
"type": "main",
"index": 0
}
]
]
},
"Convert to Google Sheet": {
"main": [
[
{
"node": "Get Rid of File",
"type": "main",
"index": 0
}
]
]
},
"No Operation, do nothing": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Structured Output Parser1": {
"ai_outputParser": [
[
{
"node": "AI Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Get dataset items in Apify": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Update row in sheet in Google Sheets1": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 内容创作, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
✨🩷自动化社交媒体内容发布工厂 + 系统提示组合
基于动态系统提示和GPT-4o的AI驱动多平台社交媒体内容工厂
If
Set
Code
+20
100 节点Amit Mehta
内容创作
WordPress博客自动化专业版(深度研究)v2.1市场
使用GPT-4o、Perplexity AI和多语言支持自动化SEO优化的博客创建
If
Set
Xml
+27
125 节点Daniel Ng
内容创作
GPT-4o与错误处理的自动化简历筛选 - Google表格与云端硬盘流程
GPT-4o与错误处理的自动化简历筛选 - Google表格与云端硬盘流程
If
Set
Gmail
+12
34 节点David Olusola
内容创作
使用 Google Slides 和 Flux 将会议转录转换为 AI 生成演示文稿
使用 Google Slides 和 Flux 将会议转录转换为 AI 生成演示文稿
Set
Code
Wait
+14
107 节点Joseph
内容创作
使用 OpenAI、QuickChart 和 Google Drive 将电子表格数据转换为智能图表
使用 OpenAI、QuickChart 和 Google Drive 将电子表格数据转换为智能图表
If
Set
Code
+18
82 节点LeeWei
内容创作
使用OpenAI、RunwayML和ElevenLabs自动化无脸短视频
使用OpenAI、RunwayML和ElevenLabs自动化无脸短视频:从脚本到社交媒体
Set
Code
Wait
+18
56 节点LeeWei
内容创作