07 - 자동화된 채용 지원서 심사 엔진
이것은HR분야의자동화 워크플로우로, 10개의 노드를 포함합니다.주로 Code, Filter, HttpRequest, GoogleSheets, ScheduleTrigger 등의 노드를 사용하며. JSearch API 및 Google Sheets를 사용한 채용 공고 검색 및 선별 자동화
- •대상 API의 인증 정보가 필요할 수 있음
- •Google Sheets API 인증 정보
카테고리
{
"id": "49jPs7OkPU0PqODZ",
"meta": {
"instanceId": "c91c5b6efe2709e07c37996245857ac5d863d575d07e0072127351337c204c40",
"templateCredsSetupCompleted": true
},
"name": "07 - Automated Job Curation Engine",
"tags": [],
"nodes": [
{
"id": "c4d4a93c-2aca-4090-88b7-3b8e75ed7984",
"name": "⏰ 일정: 매일 트리거",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-340,
440
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 9
}
]
}
},
"typeVersion": 1.1
},
{
"id": "32968ac3-397b-419c-a3f4-fd8192030515",
"name": "📄 시트에서 대기 중인 직무 역할 읽기",
"type": "n8n-nodes-base.googleSheets",
"position": [
-120,
440
],
"parameters": {
"options": {
"returnFirstMatch": true
},
"filtersUI": {
"values": [
{
"lookupValue": "Pending",
"lookupColumn": "Status"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/{{Your_Sheet_ID}}/edit#gid=0",
"cachedResultName": "Your_Sheet_No"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/{{Your_Sheet_ID}}/edit?usp=drivesdk",
"cachedResultName": "Job Scraper"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "LJQH5glroAM1SiFe",
"name": "Google Sheets account - (DEV)"
}
},
"typeVersion": 4.6
},
{
"id": "f5f29814-a6b2-4178-a84b-9646130340d8",
"name": "🌐 JSearch API를 통한 직무 검색",
"type": "n8n-nodes-base.httpRequest",
"position": [
100,
440
],
"parameters": {
"url": "https://jsearch.p.rapidapi.com/search",
"options": {},
"sendQuery": true,
"sendHeaders": true,
"queryParameters": {
"parameters": [
{
"name": "query",
"value": "={{ $json.Position + ' in ' + $json.Location }}"
},
{
"name": "page",
"value": "1"
},
{
"name": "num_pages",
"value": "1"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "X-RapidAPI-Key",
"value": "YOUR_RAPIDAPI_KEY"
},
{
"name": "X-RapidAPI-Host",
"value": "jsearch.p.rapidapi.com"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "cfd205db-f9b1-4906-8b42-3529a7d7bffe",
"name": "🧠 API 응답에서 직무 데이터 추출",
"type": "n8n-nodes-base.code",
"position": [
320,
440
],
"parameters": {
"jsCode": "const allItems = [];\n\nfor (const item of items) {\n const jobs = item.json.data || [];\n for (const job of jobs) {\n allItems.push({\n json: {\n title: job.job_title,\n company: job.employer_name,\n location: `${job.job_city}, ${job.job_country}`,\n apply_link: job.job_apply_link,\n is_remote: job.job_is_remote,\n posted_date: job.job_posted_at_datetime_utc,\n }\n });\n }\n}\n\nreturn allItems;"
},
"typeVersion": 2
},
{
"id": "a54cfdfd-b0f9-4027-9309-3aae34ff3564",
"name": "🔍 유효한 직무 공고 필터링",
"type": "n8n-nodes-base.filter",
"position": [
540,
440
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "579057db-1ec8-4a3b-8dca-7169d9699521",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.title }}",
"rightValue": "="
}
]
}
},
"typeVersion": 2.2
},
{
"id": "bdd89987-6256-408b-8bd5-0cd0154dd300",
"name": "📊 출력 시트에 직무 작성",
"type": "n8n-nodes-base.googleSheets",
"position": [
760,
440
],
"parameters": {
"columns": {
"value": {
"Title": "={{ $json.title }}",
"Company": "={{ $json.company }}",
"Location": "={{ $json.location }}",
"Is Remote": "={{ $json.is_remote }}",
"Posted On": "={{ $json.posted_date }}",
"Apply Link": "={{ $json.apply_link }}"
},
"schema": [
{
"id": "Title",
"type": "string",
"display": true,
"required": false,
"displayName": "Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company",
"type": "string",
"display": true,
"required": false,
"displayName": "Company",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Location",
"type": "string",
"display": true,
"required": false,
"displayName": "Location",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Apply Link",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Apply Link",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Is Remote",
"type": "string",
"display": true,
"required": false,
"displayName": "Is Remote",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Posted On",
"type": "string",
"display": true,
"required": false,
"displayName": "Posted On",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Apply Link"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/{{Your_Sheet_ID}}/edit#gid=0",
"cachedResultName": "Your_Sheet_No"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "Your_Sheet_ID",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/{{Your_Sheet_ID}}/edit?usp=drivesdk",
"cachedResultName": "Job Listing"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "LJQH5glroAM1SiFe",
"name": "Google Sheets account - (DEV)"
}
},
"typeVersion": 4.6
},
{
"id": "b834f983-9319-4c96-bf9f-7adbee871647",
"name": "✅ 소스 시트에서 직무를 스크랩 완료로 표시",
"type": "n8n-nodes-base.googleSheets",
"position": [
980,
440
],
"parameters": {
"columns": {
"value": {
"Status": "Scraped",
"row_number": "={{ $('📄 Read Pending Job Role from Sheet').item.json.row_number }}"
},
"schema": [
{
"id": "Position",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Position",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Location",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Location",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "string",
"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": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/{{Your_Sheet_ID}}/edit#gid=0",
"cachedResultName": "Your_Sheet_No"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/{{Your_Sheet_ID}}/edit?usp=drivesdk",
"cachedResultName": "Job Scraper"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "LJQH5glroAM1SiFe",
"name": "Google Sheets account - (DEV)"
}
},
"executeOnce": true,
"typeVersion": 4.6
},
{
"id": "b9c7a999-6c09-48e5-aea8-b5a14e30ed51",
"name": "메모지",
"type": "n8n-nodes-base.stickyNote",
"position": [
-380,
200
],
"parameters": {
"width": 420,
"height": 520,
"content": "## Trigger & Input\n\n• Triggers the workflow on a defined hourly interval.\n• Fetches a single row from the \"Job Scraper\" sheet where Status = \"Pending\".\n• This row includes 'Position' and 'Location' values for the job search.\n"
},
"typeVersion": 1
},
{
"id": "c987a1d7-03a7-40b1-99d3-57d9049b3c32",
"name": "메모지1",
"type": "n8n-nodes-base.stickyNote",
"position": [
80,
200
],
"parameters": {
"color": 3,
"width": 620,
"height": 520,
"content": "## Job Search & Processing\n\n• Sends query (Position + Location) to the JSearch API.\n• Parses the API response and extracts individual job listings.\n• Filters out empty or invalid results to ensure clean output.\n"
},
"typeVersion": 1
},
{
"id": "8c5c5acc-6b1b-4ece-b4c2-af47bda1ecd2",
"name": "메모지2",
"type": "n8n-nodes-base.stickyNote",
"position": [
720,
200
],
"parameters": {
"color": 4,
"width": 460,
"height": 520,
"content": "## Output & Status Update\n\n• Writes valid jobs to the \"Job Listing\" sheet with fields like title, location, company, etc.\n• Marks the original row in the source sheet as \"Scraped\" using the row number for tracking.\n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "5e71e30c-da84-4500-bea9-ce72b5596424",
"connections": {
"a54cfdfd-b0f9-4027-9309-3aae34ff3564": {
"main": [
[
{
"node": "bdd89987-6256-408b-8bd5-0cd0154dd300",
"type": "main",
"index": 0
}
]
]
},
"c4d4a93c-2aca-4090-88b7-3b8e75ed7984": {
"main": [
[
{
"node": "32968ac3-397b-419c-a3f4-fd8192030515",
"type": "main",
"index": 0
}
]
]
},
"bdd89987-6256-408b-8bd5-0cd0154dd300": {
"main": [
[
{
"node": "b834f983-9319-4c96-bf9f-7adbee871647",
"type": "main",
"index": 0
}
]
]
},
"f5f29814-a6b2-4178-a84b-9646130340d8": {
"main": [
[
{
"node": "cfd205db-f9b1-4906-8b42-3529a7d7bffe",
"type": "main",
"index": 0
}
]
]
},
"32968ac3-397b-419c-a3f4-fd8192030515": {
"main": [
[
{
"node": "f5f29814-a6b2-4178-a84b-9646130340d8",
"type": "main",
"index": 0
}
]
]
},
"cfd205db-f9b1-4906-8b42-3529a7d7bffe": {
"main": [
[
{
"node": "a54cfdfd-b0f9-4027-9309-3aae34ff3564",
"type": "main",
"index": 0
}
]
]
}
}
}이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급 - 인사
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
Avkash Kakdiya
@itechnotion🚀 Founder of iTechNotion — we build custom AI-powered automation workflows for startups, agencies, and founders. 💡 Specializing in agentic AI systems, content automation, sales funnels, and digital workers. 🔧 14+ years in tech | Building scalable no-code/low-code solutions using n8n, OpenAI, and other API-first tools. 📬 Let’s automate what slows you down.
이 워크플로우 공유