Job Search Global API 및 Google Sheets를 사용한 구직 활동 자동화
중급
이것은Content Creation, Multimodal AI분야의자동화 워크플로우로, 15개의 노드를 포함합니다.주로 If, Set, Code, EmailSend, HttpRequest 등의 노드를 사용하며. Job Search Global API 및 Google Sheets를 사용한 채용 공고 검색 자동화
사전 요구사항
- •대상 API의 인증 정보가 필요할 수 있음
- •Google Sheets API 인증 정보
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"meta": {
"instanceId": "60c025075753afcab9f803964b4caaca9402f435deb4efafbb8e3b93b54d8752",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "1f0a7b3a-a6ab-4fb9-b1ef-4f4d5bc48a01",
"name": "검색어 설정",
"type": "n8n-nodes-base.set",
"position": [
272,
0
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "bb36d63f-a074-40b1-9d83-dd573566f6af",
"name": "Search Term",
"type": "string",
"value": "Web Developer"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "0a66e398-1de3-4dd3-8b5f-6fd8c6b6358c",
"name": "채용 공고 목록 가져오기",
"type": "n8n-nodes-base.httpRequest",
"position": [
496,
0
],
"parameters": {
"url": "https://job-search-global.p.rapidapi.com/search.php",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "multipart-form-data",
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "pageNumber",
"value": "1"
},
{
"name": "pageSize",
"value": "10"
},
{
"name": "searchQuery",
"value": "={{ $json[\"Search Term\"] }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "x-rapidapi-host",
"value": "job-search-global.p.rapidapi.com"
},
{
"name": "x-rapidapi-key",
"value": "your key"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "16e842c1-fd91-4082-b015-387632eff19f",
"name": "API 응답 확인",
"type": "n8n-nodes-base.if",
"position": [
784,
0
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "ef7b71fa-c726-4e08-8fdb-55c215227bb0",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "={{ $json.status }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "ec64192d-9865-45f0-b4be-e3ee18ebbe5c",
"name": "실패 알림 이메일 전송",
"type": "n8n-nodes-base.emailSend",
"position": [
1072,
224
],
"webhookId": "f1359f08-e267-44d2-9fca-505f66b5feb6",
"parameters": {
"html": "Hello,\n\nThe job search automation workflow encountered a failure while attempting to fetch job listings from the API.\n\nPlease review the API request and ensure the following:\n- API key and host are valid and not expired.\n- The request payload is correctly formatted.\n- The API endpoint is available.\n\nYou may also want to inspect the response for further debugging.\n\nRegards, \nn8n Workflow Bot\n",
"options": {},
"subject": "🚨 Job Search API Failure Notification",
"toEmail": "dev@gmail.com",
"fromEmail": "itadmin@gmail.com"
},
"credentials": {
"smtp": {
"id": "nPwKPPgVavimTJX4",
"name": "SMTP account"
}
},
"typeVersion": 2.1
},
{
"id": "96a773ee-a81b-4aca-8ad1-9d982bd0a2cd",
"name": "스케줄 트리거 설정",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
0,
0
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 6
}
]
}
},
"typeVersion": 1.2
},
{
"id": "294c8010-0792-4396-89ec-03ae8c60fe30",
"name": "메모",
"type": "n8n-nodes-base.stickyNote",
"position": [
-64,
-112
],
"parameters": {
"height": 240,
"content": "Triggers the workflow automatically every 6 hours.\nEnsures regular job search updates without manual execution."
},
"typeVersion": 1
},
{
"id": "9765dd80-dc0b-407f-a8b9-1746aaf44161",
"name": "메모1",
"type": "n8n-nodes-base.stickyNote",
"position": [
192,
-112
],
"parameters": {
"height": 240,
"content": "Defines the job search keyword (e.g., “Web Developer”).\nThis value is dynamically inserted into the API request body."
},
"typeVersion": 1
},
{
"id": "b1607d91-4603-4df8-b35d-7b7bb12ded61",
"name": "메모2",
"type": "n8n-nodes-base.stickyNote",
"position": [
448,
-112
],
"parameters": {
"height": 240,
"content": "Sends a POST request to the Job Search Global API.\nFetches job data based on the search term, limited to 10 results per request."
},
"typeVersion": 1
},
{
"id": "5ca49f7d-2598-4403-ba55-7311e4208d6e",
"name": "메모3",
"type": "n8n-nodes-base.stickyNote",
"position": [
704,
-112
],
"parameters": {
"height": 240,
"content": "Evaluates whether the API returned a successful response.\nBranches the workflow into success (data processing) or failure (email alert)."
},
"typeVersion": 1
},
{
"id": "c70bdcd3-313b-4f95-8dc0-4287982f41ae",
"name": "메모4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1056,
-256
],
"parameters": {
"height": 256,
"content": "Extracts the job listings array from the API response.\nTransforms it into individual records for Google Sheets."
},
"typeVersion": 1
},
{
"id": "785dd467-f560-4430-af77-3c935a5c6ccb",
"name": "Google Sheet에 저장1",
"type": "n8n-nodes-base.googleSheets",
"position": [
1392,
-128
],
"parameters": {
"columns": {
"value": {},
"schema": [
{
"id": "title",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "url",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "company",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "company",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "postDate",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "postDate",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "jobSource",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "jobSource",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "slug",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "slug",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "sentiment",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "sentiment",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "dateAdded",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "dateAdded",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "tags",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "tags",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "viewCount",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "viewCount",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [
"title"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": ""
},
"authentication": "serviceAccount"
},
"credentials": {
"googleApi": {
"id": "Rt0RWApx8PL9t0RF",
"name": "Google Docs account"
}
},
"typeVersion": 4.7
},
{
"id": "e8456e00-4912-4d6c-a962-717cecf5ef38",
"name": "채용 공고 데이터 추출",
"type": "n8n-nodes-base.code",
"position": [
1120,
-144
],
"parameters": {
"jsCode": "return $input.first().json.data.data;"
},
"typeVersion": 2
},
{
"id": "58681808-71b7-4041-b88a-70149c74fbf4",
"name": "메모5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1312,
-256
],
"parameters": {
"height": 256,
"content": "Appends or updates job listings in a specific Google Sheet.\nUses \"title\" as the matching column to prevent duplicates."
},
"typeVersion": 1
},
{
"id": "4bad0177-fc01-4169-a022-882c1c313d92",
"name": "메모6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1024,
112
],
"parameters": {
"height": 288,
"content": "Sends an email to notify of API failure or bad response.\nHelps in quickly identifying issues with the API call or authentication."
},
"typeVersion": 1
},
{
"id": "b0de1b25-f4b1-47dd-8a1b-1c8e47faba4d",
"name": "메모7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-896,
-368
],
"parameters": {
"width": 576,
"height": 880,
"content": "# Job Search Automation Workflow \n\n**Description:** \nThis workflow automates job searches by querying the Job Search Global API every 6 hours for the keyword \"Web Developer\". It processes the API response, extracts job listings, and appends or updates the results in a Google Sheet. If the API response indicates failure, it sends an email notification alerting the admin.\n\n\n### Workflow Steps:\n\n1. **Schedule Trigger** \n Runs the workflow automatically every 6 hours.\n\n2. **Set Search Term** \n Defines the job search keyword dynamically used in the API request (`\"Web Developer\"`).\n\n3. **Fetch Job Listings** \n Sends a POST request to the Job Search Global API with pagination parameters.\n\n4. **Check API Response** \n Validates if the API response status is successful.\n\n5. **Extract Job Data** \n Parses the job listings array from the API response for further processing.\n\n6. **Save to Google Sheet1** \n Appends or updates the extracted job listings in a specified Google Sheet, using the job title to avoid duplicates.\n\n7. **Send Failure Notification Email** (Conditional) \n Sends an alert email if the API response fails or returns an error.\n\n---\n\n### Notes: \n- Uses environment variables for API keys and authentication. \n- Prevents duplicate job entries by matching on the job title. \n- Includes helpful sticky notes explaining each node's purpose.\n"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"1f0a7b3a-a6ab-4fb9-b1ef-4f4d5bc48a01": {
"main": [
[
{
"node": "0a66e398-1de3-4dd3-8b5f-6fd8c6b6358c",
"type": "main",
"index": 0
}
]
]
},
"e8456e00-4912-4d6c-a962-717cecf5ef38": {
"main": [
[
{
"node": "785dd467-f560-4430-af77-3c935a5c6ccb",
"type": "main",
"index": 0
}
]
]
},
"96a773ee-a81b-4aca-8ad1-9d982bd0a2cd": {
"main": [
[
{
"node": "1f0a7b3a-a6ab-4fb9-b1ef-4f4d5bc48a01",
"type": "main",
"index": 0
}
]
]
},
"16e842c1-fd91-4082-b015-387632eff19f": {
"main": [
[
{
"node": "e8456e00-4912-4d6c-a962-717cecf5ef38",
"type": "main",
"index": 0
}
],
[
{
"node": "ec64192d-9865-45f0-b4be-e3ee18ebbe5c",
"type": "main",
"index": 0
}
]
]
},
"0a66e398-1de3-4dd3-8b5f-6fd8c6b6358c": {
"main": [
[
{
"node": "16e842c1-fd91-4082-b015-387632eff19f",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급 - 콘텐츠 제작, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
Google Sheets와 이메일 알림을 사용하여 제목 명확성을 최적화
Google Sheets와 이메일 알림을 사용하여 제목 명확성을 최적화하기
If
Code
Email Send
+
If
Code
Email Send
14 노드Evoort Solutions
콘텐츠 제작
TikTok 텍스트 전사
RapidAPI 및 Google Sheets를 사용한 TikTok 비디오 트랜스크립션 자동화
If
Code
Wait
+
If
Code
Wait
21 노드Evoort Solutions
콘텐츠 제작
이미지에서 이미지로 GPT, Google Sheets, Drive를 사용하여 이미지 생성 및 업로드
이미지에서 이미지로 GPT, Google Sheets, Drive를 사용하여 이미지를 생성 및 업로드
If
Code
Wait
+
If
Code
Wait
23 노드Evoort Solutions
콘텐츠 제작
AI 기반 동영상 제작 및 Instagram, TikTok, YouTube 업로드
클라우드 드라이브 기반 AI 기반 비디오 제작 및 Instagram, TikTok, YouTube 업로드
If
Set
Code
+
If
Set
Code
53 노드DevCode Journey
콘텐츠 제작
블로그 게시자 – 완전한 AI 기반 콘텐츠 연구, 제작, 최적화 및 게시 자동화
Gemini, Ideogram AI 및 WordPress를 사용한 블로그 생성 및 게시 자동화
If
Set
Code
+
If
Set
Code
35 노드Incrementors
콘텐츠 제작
Groq, Gemini, Slack 승인 시스템을 사용한 RSS에서 Medium 자동 게시
Groq, Gemini 및 Slack 승인 시스템을 통한 RSS에서 Medium 발행 자동화 워크플로
If
Set
Code
+
If
Set
Code
41 노드ObisDev
콘텐츠 제작