我的工作流3
高级
这是一个HR, AI Summarization, Multimodal AI领域的自动化工作流,包含 23 个节点。主要使用 Set, Code, Merge, Airtable, FormTrigger 等节点。 使用AI、Gmail、GoogleDrive和Airtable的自动简历筛选与评分
前置要求
- •Airtable API Key
- •Google Drive API 凭证
- •Google 账号和 Gmail API 凭证
- •Google Sheets API 凭证
使用的节点 (23)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"id": "7S4ihndpWguEUgPR",
"meta": {
"instanceId": "b2b5a36da7eac7de99012b5a90e67cd124f5c20d9168d5fb4eef7aa2b75f2f80",
"templateCredsSetupCompleted": true
},
"name": "我的工作流 3",
"tags": [],
"nodes": [
{
"id": "14df0331-5d44-471e-a60b-9931f108764c",
"name": "Gmail 触发器",
"type": "n8n-nodes-base.gmailTrigger",
"position": [
-128,
64
],
"parameters": {
"simple": false,
"filters": {
"q": "Senior Software Engineer"
},
"options": {
"downloadAttachments": true,
"dataPropertyAttachmentsPrefixName": "CV"
},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
}
},
"credentials": {
"gmailOAuth2": {
"id": "8jLBWmrnkH59W1tP",
"name": "Gmail account"
}
},
"typeVersion": 1.3
},
{
"id": "6c3f54bf-26d8-4863-b91c-d6760b54bfc4",
"name": "上传文件",
"type": "n8n-nodes-base.googleDrive",
"position": [
144,
-48
],
"parameters": {
"name": "={{ $json.from.value[0].name }}",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "13yu3QH6GO5Kx0HbEkwXPiceBH1yDVzTO",
"cachedResultUrl": "https://drive.google.com/drive/folders/13yu3QH6GO5Kx0HbEkwXPiceBH1yDVzTO",
"cachedResultName": "Software Engineer Resume"
},
"inputDataFieldName": "CV0"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "WV2QCnuShiBUUxQX",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "8b8fb671-bd8d-42cc-8a21-1a518eb8c42b",
"name": "下载文件",
"type": "n8n-nodes-base.googleDrive",
"position": [
368,
-48
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.id }}"
},
"options": {},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "WV2QCnuShiBUUxQX",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "436d2b81-56a7-4cca-a4f3-73fa174ef3d5",
"name": "从文件中提取",
"type": "n8n-nodes-base.extractFromFile",
"position": [
592,
-48
],
"parameters": {
"options": {},
"operation": "pdf"
},
"typeVersion": 1
},
{
"id": "659a2bfe-607c-46f4-a8c0-748f900dac7d",
"name": "信息提取器",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
976,
-224
],
"parameters": {
"text": "={{ $json.text }}",
"options": {},
"schemaType": "manual",
"inputSchema": "={\n\t\"type\": \"object\",\n\t\"properties\": {\n \t\"candidate_name\": {\n\t\t\"type\": \"string\"\n\t},\n \"email_address\": {\n\t\t\"type\": \"string\",\n\t\t\"format\": \"email\"\n },\n \"contact_number\": {\n \"type\": \"string\",\n \"pattern\": \"^(\\\\+\\\\d{1,3}[- ]?)?\\\\d{10}$\"\n }\n }\n}\n"
},
"typeVersion": 1.2
},
{
"id": "88b31b2a-4e61-485f-a472-d689b198ac9e",
"name": "OpenRouter聊天模型",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
976,
-32
],
"parameters": {
"model": "openai/gpt-oss-20b:free",
"options": {}
},
"credentials": {
"openRouterApi": {
"id": "ONkqc0B0l2xlY8Mu",
"name": "OpenRouter account"
}
},
"typeVersion": 1
},
{
"id": "6476ff9c-5460-48d2-9dee-b7109692c87c",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
960,
112
],
"parameters": {
"text": "=CV:\n{{ $json.text }}",
"options": {
"systemMessage": "=YOU ARE THE WORLD'S MOST ACCURATE AND EFFICIENT CV SUMMARIZER, KNOWN FOR PRODUCING CONCISE AND INFORMATIVE SUMMARIES THAT CAPTURE ALL ESSENTIAL DETAILS.\nYOUR TASK IS TO SUMMARIZE A PROVIDED CV INTO THREE CLEAR SECTIONS: EDUCATIONAL QUALIFICATIONS, JOBN HISTORY, AND SKILL SET. IN ADDITION, YOU MUST EVALUATE THE CANDIDATE'S SUITABILITY FOR A SPECIFIED JOB ROLE AND ASSIGN A SCORE FROM 1 TO 10 BASED ON HOW WELL THEIR QUALIFICATIONS MATCH THE ROLE.\n\nINSTRUCTIONS\n1. EXTRACT AND SUMMARIZE INFORMATION FROM THE CV:\nEDUCATIONAL QUALIFICATIONS: INCLUDE DEGREE NAMES, INSTITUTIONS, AND GRADUATION YEARS.\nJOB HISTORY: LIS JOB TITLES, COMPANIES, AND EMPLOYMENT DATES, WITH A BRIEF OVERVIEW OF KEY RESPONSIBILITIES OR ACHIEVEMENTS.\nSKILL SET: COMPLETE RELEVANT TECHNICAL, SOFT, AND INDUSTRY-SPECIFIC SKILLS.\n\n2. EVALUATE THE CANDIDATE BASED ON THE PROVIDED JOB POST:\nANALYZE RELEVANCE: Compare the candidate's education, work experience, and skill set with the provided job post.\nASSIGN A SCORE (1-10):\n1-3: Weak match (lacks key qualifications or experience).\n4-6: Moderate match (some relevant qalifications but gaps exists).\n7-8: Strong match (meets most job criteria with relevant experience).\n9-10: Excellent match (perfect fit exceeding expectations).\n\nPROVIDE A BRIEF JUSTIFICATION for the assigned score, highlighting key strengths or missing qualifications.\n\n3. OUTPUT FORMAT:\nEducational Qualifications\n\n[Degree], [Institution], [Year]\nJob History\n\n[Job Title], [Company], [Dates]: [Key responsibilities or Achievements]\nSkill Ste\n\n[Skill 1], [Skill 2], [Skill 3], [Skill 4], etc.\nCandidates Evaluation\n\nScore: [1-10]\nJustification: [Brief explanation of why the candidate received this score]\nWHAT TO DO\nDO NOT INCLUDE PERSONAL INFORMATION such as contact details or addresses.\nDO NOT OMIT RELEVANT EDUCATION, JOB, OR SKILL INFORMATION.\nDO NOT ADD YOUR OWN INTERPRETATION OR ASSUMPTIONS ABOUT THE CV CONTENT.\nDO NOT USE INFORMAL LANGUAGE OR EXCESSIVE DETAIL.\nEXAMPLE OUTPUT:\nEducational Qualifications\n\nBachelor of Science in Computer Science, University of Karachi, 2020.\nJob History\n\nSoftware Engineer, Techcorp, 2021-2025: Developed Scalable web applications and optimized database performance.\nSkill Set\n\nPython, Javascript, React, ReactNative, n8n, Zapier, AI, LLM, Team Leadership, Agile Development.\nCandidate Evaluation\n\nScore: 8/10\nJustification: The candidate has a relevant degree, strong technical skills, and 12 years of industry experience. However, lacks experience with cloud technologies mentioned in the job description.\n\nJob Post:\nWe’re seeking a talented and driven Full-Stack Developer with solid experience in Next.js, SAAS Development, Supabase etc. to join our growing team. In this role, you will be instrumental in building and maintaining scalable, high-performance web applications and backend systems.\n\nKey Responsibilities:\n•\tDevelop and scale web applications using Next.js.\n•\tBuild backend infrastructure using Supabase (database, authentication, storage, etc.).\n•\tCollaborate with cross-functional teams in a SaaS product environment.\n•\tIntegrate AI tools and workflows to enhance development efficiency and innovation.\n•\tWrite optimized, maintainable SQL queries and design robust data structures.\n•\tAnalyze and work with existing codebases to extend features or resolve issues.\n•\tEnsure system performance, stability, and security through best practices.\n\nIdeal Candidate should have:\n•\t3+ years of professional development experience.\n•\tA Bachelors in Computer Science, Engineering, Information Technology, or a relevant Field.\n•\tStrong proficiency in Next.js and Supabase.\n•\tDemonstrated experience in SaaS application development.\n•\tAbility to read and work with existing codebases.\n•\tGood understanding of authentication, authorization, and middleware.\n•\tProficiency in SQL, database schema design, and performance tuning.\n•\tActively incorporates AI tools (like Copilot, ChatGPT, etc.) into development processes.\n•\tAbility to work independently and collaboratively in a fast-paced environment.\n\nWhat we Offer:\n•\tCompetitive compensation\n•\tOpportunity to work on innovative, AI-powered tools and services\n•\tCollaborative, fast-paced, and growth-focused environment\nInterested candidates can share the Resume to baluntechsol@gmail.com with the Position mentioned in the Subject line.\n\nIf you are interested, please feel free to DM me or email your Resume to baluntechsol@gmail.com with the Position mentioned in the Subject line."
},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "930d6fcb-bcb5-4179-b8d2-00037be73b1a",
"name": "OpenRouter 聊天模型1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
960,
352
],
"parameters": {
"model": "openai/gpt-oss-20b:free",
"options": {}
},
"credentials": {
"openRouterApi": {
"id": "ONkqc0B0l2xlY8Mu",
"name": "OpenRouter account"
}
},
"typeVersion": 1
},
{
"id": "ff7b1234-947b-45d8-9693-c2d9a3c82fa6",
"name": "编辑字段",
"type": "n8n-nodes-base.set",
"position": [
1344,
128
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "c186b601-19ce-4a98-8097-6f9e1d0f1a9e",
"name": "output",
"type": "string",
"value": "={{ $json.output }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "f0274105-2a9e-490f-af57-73efb0c7d366",
"name": "代码",
"type": "n8n-nodes-base.code",
"position": [
1568,
128
],
"parameters": {
"jsCode": "// Read raw text from previous node\nconst data = items[0].json;\nconst rawText = String(\n data.output ||\n data.outputText ||\n data.Output ||\n data.summary ||\n data.result ||\n \"\"\n);\n\nif (!rawText) {\n return [{\n json: {\n error: \"No input text found in previous node (tried output / outputText / Output / summary / result).\"\n }\n }];\n}\n\n// Helper: extract section\nfunction extractSection(text, sectionName) {\n if (!text) return \"\";\n const nameEsc = sectionName.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n\n // 1) Bold markdown header: **Section Name**\n let regex = new RegExp(`\\\\*\\\\*\\\\s*${nameEsc}\\\\s*\\\\*\\\\*[\\\\r\\\\n]+([\\\\s\\\\S]*?)(?=\\\\n\\\\*\\\\*|\\\\n---|$)`, \"i\");\n let m = text.match(regex);\n if (m) return m[1].trim();\n\n // 2) Plain header line\n regex = new RegExp(`^\\\\s*${nameEsc}\\\\s*$[\\\\r\\\\n]+([\\\\s\\\\S]*?)(?=^\\\\s*\\\\*\\\\*|\\\\n---|$)`, \"im\");\n m = text.match(regex);\n if (m) return m[1].trim();\n\n // 3) Fallback: find the name anywhere\n regex = new RegExp(nameEsc, \"i\");\n m = text.match(regex);\n if (m) {\n const start = m.index + m[0].length;\n const rest = text.slice(start);\n const nextBoundary = rest.search(/\\n\\*\\*|\\n---/i);\n const end = nextBoundary !== -1 ? start + nextBoundary : text.length;\n return text.slice(start, end).trim();\n }\n\n return \"\";\n}\n\n// Extract score + justification\nfunction extractScoreAndJustification(block) {\n if (!block) return [\"\", \"\"];\n const sanitized = block.replace(/\\*/g, \"\").trim();\n\n let score = \"\";\n let justification = \"\";\n\n const scoreMatch = sanitized.match(/Score\\s*[:\\-–—]?\\s*([0-9]{1,2}(?:\\/10)?|N\\/A|NA|n\\/a)/i);\n if (scoreMatch) {\n score = scoreMatch[1].trim();\n if (/^[0-9]{1,2}$/.test(score)) {\n const n = parseInt(score, 10);\n if (n >= 0 && n <= 10) score = `${n}/10`;\n }\n }\n\n const justMatch = sanitized.match(/Justification\\s*[:\\-–—]?\\s*([\\s\\S]*)/i);\n if (justMatch) {\n justification = justMatch[1].trim();\n }\n\n if (!score && sanitized) score = \"N/A\";\n return [score, justification];\n}\n\n// Extract sections\nconst educationalQualification = extractSection(rawText, \"Educational Qualifications\");\nconst jobHistory = extractSection(rawText, \"Job History\");\nconst skillSet = extractSection(rawText, \"Skill Set\");\nconst candidateEvaluation = extractSection(rawText, \"Candidate Evaluation\");\n\n// Get score + justification\nconst [score, justification] = extractScoreAndJustification(candidateEvaluation);\n\nreturn [{\n json: {\n educationalQualification: educationalQualification || \"\",\n jobHistory: jobHistory || \"\",\n skillSet: skillSet || \"\",\n score: score || \"\",\n justification: justification || \"\"\n }\n}];\n"
},
"typeVersion": 2
},
{
"id": "49e498a3-c87b-4d79-9a59-6947324dcb9a",
"name": "合并",
"type": "n8n-nodes-base.merge",
"position": [
1808,
-48
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineAll"
},
"typeVersion": 3.2
},
{
"id": "607b4f93-7b37-4293-8844-fd17ded34785",
"name": "在表格中追加行",
"type": "n8n-nodes-base.googleSheets",
"position": [
2064,
-208
],
"parameters": {
"columns": {
"value": {
"score": "={{ $json.score }}",
"skill set": "={{ $json.skillSet }}",
"Job History": "={{ $json.jobHistory }}",
"Justification": "={{ $json.justification }}",
"email_address": "={{ $json.output.email_address }}",
"candidate_name": "={{ $json.output.candidate_name }}",
"contact_number": "={{ $json.output.contact_number }}",
"Educational Qualifications": "={{ $json.educationalQualification }}"
},
"schema": [
{
"id": "candidate_name",
"type": "string",
"display": true,
"required": false,
"displayName": "candidate_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "email_address",
"type": "string",
"display": true,
"required": false,
"displayName": "email_address",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "contact_number",
"type": "string",
"display": true,
"required": false,
"displayName": "contact_number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Educational Qualifications",
"type": "string",
"display": true,
"required": false,
"displayName": "Educational Qualifications",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job History",
"type": "string",
"display": true,
"required": false,
"displayName": "Job History",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "skill set",
"type": "string",
"display": true,
"required": false,
"displayName": "skill set",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "score",
"type": "string",
"display": true,
"required": false,
"displayName": "score",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Justification",
"type": "string",
"display": true,
"required": false,
"displayName": "Justification",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/12pqhk8m-j2V44jKaNZwG7jKFPUpm4yCe17mHjbr6qUQ/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "12pqhk8m-j2V44jKaNZwG7jKFPUpm4yCe17mHjbr6qUQ",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/12pqhk8m-j2V44jKaNZwG7jKFPUpm4yCe17mHjbr6qUQ/edit?usp=drivesdk",
"cachedResultName": "HR_Automation_Workflow"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "ObgvVgjWJYaH5iLJ",
"name": "Google Sheets account"
}
},
"typeVersion": 4.7
},
{
"id": "e9ad17fd-e688-4c34-80ce-a79dc572b794",
"name": "创建记录",
"type": "n8n-nodes-base.airtable",
"position": [
2064,
64
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appAN9KciZeolO2PN",
"cachedResultUrl": "https://airtable.com/appAN9KciZeolO2PN",
"cachedResultName": "Senior_Software_Engineer_Resume"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblgro31x2ktE3aEc",
"cachedResultUrl": "https://airtable.com/appAN9KciZeolO2PN/tblgro31x2ktE3aEc",
"cachedResultName": "Table 1"
},
"columns": {
"value": {
"Score": "={{ $json.score }}",
"Skill set": "={{ $json.skillSet }}",
"Job History": "={{ $json.jobHistory }}",
"Justification": "={{ $json.justification }}",
"email_address": "={{ $json.output.email_address }}",
"candidate_name": "={{ $json.output.candidate_name }}",
"contact_number": "={{ $json.output.contact_number }}",
"Educational Qualifications": "={{ $json.educationalQualification }}"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "id",
"defaultMatch": true
},
{
"id": "candidate_name",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "candidate_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "email_address",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "email_address",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "contact_number",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "contact_number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Educational Qualifications",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Educational Qualifications",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job History",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Job History",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Skill set",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Skill set",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Score",
"type": "number",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Score",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Justification",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Justification",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"id": "jgRMszk4kSwSaU3V",
"name": "Airtable Personal Access Token account"
}
},
"typeVersion": 2.1
},
{
"id": "04901267-ea47-4280-9e19-3e88c9fc7993",
"name": "表单提交时",
"type": "n8n-nodes-base.formTrigger",
"position": [
-128,
-144
],
"webhookId": "12378e65-adc8-4ca3-9ef6-95cd5d2a412b",
"parameters": {
"options": {},
"formTitle": "Senior Software Engineer"
},
"typeVersion": 2.3
},
{
"id": "34eb4149-0501-4d6d-8dc6-f19a59385d58",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
-192,
-416
],
"parameters": {
"color": 4,
"height": 912,
"content": "GMAIL 触发器:"
},
"typeVersion": 1
},
{
"id": "22690685-9e05-4c1b-a798-bd2646e5214d",
"name": "便签1",
"type": "n8n-nodes-base.stickyNote",
"position": [
64,
-416
],
"parameters": {
"height": 912,
"content": "上传文件:"
},
"typeVersion": 1
},
{
"id": "73d68e7c-705c-49e0-a2af-8bea13a69091",
"name": "便签2",
"type": "n8n-nodes-base.stickyNote",
"position": [
320,
-416
],
"parameters": {
"color": 3,
"width": 192,
"height": 912,
"content": "下载附件(简历):"
},
"typeVersion": 1
},
{
"id": "55a5c9bd-9602-4875-aae5-d4497e06b067",
"name": "便签3",
"type": "n8n-nodes-base.stickyNote",
"position": [
528,
-416
],
"parameters": {
"color": 7,
"height": 912,
"content": "从文件提取:"
},
"typeVersion": 1
},
{
"id": "05bd2380-4208-4f0e-95be-9f0c0c542721",
"name": "便签4",
"type": "n8n-nodes-base.stickyNote",
"position": [
864,
-416
],
"parameters": {
"color": 5,
"width": 384,
"height": 912,
"content": "两条并行 AI 路径:"
},
"typeVersion": 1
},
{
"id": "fdce16c8-1138-4bb6-9925-efe4357a9f80",
"name": "便签5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1264,
-416
],
"parameters": {
"color": 2,
"height": 912,
"content": "标准化代理输出:编辑字段将代理响应映射到输出。"
},
"typeVersion": 1
},
{
"id": "9dd5f08c-6528-4650-b411-5e645413ce6e",
"name": "便签6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1520,
-416
],
"parameters": {
"width": 208,
"height": 912,
"content": "解析与清理:"
},
"typeVersion": 1
},
{
"id": "90db96b2-a8b0-44a4-8f75-05552c5c1ee1",
"name": "便签7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1744,
-416
],
"parameters": {
"color": 4,
"width": 208,
"height": 912,
"content": "合并数据集:"
},
"typeVersion": 1
},
{
"id": "d699e192-b79d-4283-b531-59ff75313ffc",
"name": "便签8",
"type": "n8n-nodes-base.stickyNote",
"position": [
1968,
-416
],
"parameters": {
"color": 6,
"width": 272,
"height": 912,
"content": "存储结果:"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "6658e34c-6f2c-418e-84fd-271309c8fcbb",
"connections": {
"Code": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Merge": {
"main": [
[
{
"node": "Append row in sheet",
"type": "main",
"index": 0
},
{
"node": "Create a record",
"type": "main",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "Code",
"type": "main",
"index": 0
}
]
]
},
"Upload file": {
"main": [
[
{
"node": "Download file",
"type": "main",
"index": 0
}
]
]
},
"Download file": {
"main": [
[
{
"node": "Extract from File",
"type": "main",
"index": 0
}
]
]
},
"Gmail Trigger": {
"main": [
[
{
"node": "Upload file",
"type": "main",
"index": 0
}
]
]
},
"Extract from File": {
"main": [
[
{
"node": "Information Extractor",
"type": "main",
"index": 0
},
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"On form submission": {
"main": [
[
{
"node": "Upload file",
"type": "main",
"index": 0
}
]
]
},
"Information Extractor": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"OpenRouter Chat Model": {
"ai_languageModel": [
[
{
"node": "Information Extractor",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"OpenRouter Chat Model1": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 人力资源, AI 摘要总结, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
智能面试助手:基于简历、职位描述和轮次的定制问题
基于简历、职位描述和轮次使用GPT-4生成定制面试问题
Set
Code
Merge
+10
26 节点Trung Tran
人力资源
第一轮 Telegram 和 LinkedIn 快速通道 AI 招聘助手
AI候选人筛选流程:LinkedIn到Telegram,集成Gemini与Apify
If
Set
Code
+15
55 节点Dean Pike
人力资源
基于比较的简历筛选
使用Gemini AI和Google Sheets自动化简历筛选与候选人评分
Code
Merge
Form Trigger
+6
27 节点Asfandyar Malik
人力资源
TalentFlow AI - 批量简历筛选与职位描述匹配
使用GPT-4为HR团队进行批量简历筛选与职位描述匹配
If
Code
Merge
+12
30 节点Trung Tran
人力资源
使用 OpenAI、ElevenLabs 和 Fal.ai 自动化病毒式内容创作,适用于视频、播客和 ASMR
使用 OpenAI、ElevenLabs 和 Fal.ai 自动化病毒式内容创作,适用于视频、播客和 ASMR
Set
Code
Wait
+16
97 节点Adam Crafts
内容创作
GPT-4o与错误处理的自动化简历筛选 - Google表格与云端硬盘流程
GPT-4o与错误处理的自动化简历筛选 - Google表格与云端硬盘流程
If
Set
Gmail
+12
34 节点David Olusola
内容创作