발행일: 2026-10-06(화) 11:44
← 목차로 돌아가기|하루 30분 n8n 시리즈 ② 실무 자동화 레시피 100
RECIPE C

시나리오 C — HR 전주기 채용·온보딩 자동화 시스템

  • ▸채용 공고 등록부터 퇴직 오프보딩까지 HR 전 과정을 하나의 시스템으로 연결할 수 있다
  • ▸지원자·직원 상태 변경에 따라 이메일·Slack·Notion이 자동 트리거되도록 구성할 수 있다
  • ▸채용 소요 기간, 온보딩 완료율 등 HR KPI를 자동 집계할 수 있다

✅사전 준비

  • □챕터 5 전체 레시피(051~060) 및 미니 프로젝트 P5 완료
  • □Notion HR DB 3종 구성 (지원자 DB / 직원 DB / 온보딩 DB)
  • □Gmail HR 전용 계정 자격증명 연결
  • □Slack #hr, #onboarding, #offboarding 채널 생성
  • □Google Forms 지원서 양식 및 온보딩 피드백 양식 준비
  • □Calendly 면접 일정 페이지 생성 완료

HR 전주기 자동화 4단계 흐름

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[1단계] 채용 자동화
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
채용 공고 다채널 등록 (원티드/잡코리아/LinkedIn)
  ↓
Google Form 지원서 제출
  → Notion 지원자 DB 자동 등록
  → 이력서 Google Drive 저장
  → Slack #hr 알림
  → 접수 확인 이메일 자동 발송

Notion 상태 변경 (서류합격)
  → 면접 일정 조율 이메일 + Calendly 링크 발송

Notion 상태 변경 (최종합격)
  → 합격 이메일 + 입사 안내 발송
  → 2단계 온보딩 자동 시작

Notion 상태 변경 (불합격)
  → 정중한 거절 이메일 자동 발송

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[2단계] 온보딩 자동화 (입사 전~30일)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
D-7: 입사 전 준비 안내 이메일
D-1: 내일 뵙겠습니다 이메일 + 주차 안내
D+0: 환영 Slack 메시지 + 온보딩 체크리스트 생성
D+7: 1주 회고 설문 자동 발송
D+30: 온보딩 완료 평가 설문 + KPI 업데이트

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[3단계] 재직 자동화
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
생일/입사 기념일 자동 축하 (매일 체크)
휴가 신청 자동 승인 흐름
주간 업무 현황 자동 수집 (매주 금)
인사평가 시즌 리마인더 자동 발송

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[4단계] 오프보딩 자동화
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
퇴직 확정 → 오프보딩 체크리스트 자동 생성
D-7: IT팀 계정 회수 준비 알림
D+0: 퇴직 처리 완료 → 시스템 접근 차단 알림

온보딩 D-day 스케줄 자동화 — Code 노드

// 매일 08:00 실행 — 오늘 해당하는 온보딩 이벤트 찾기
const employees = $('직원 DB').all();
const today = new Date();
today.setHours(0,0,0,0);

const tasks = [];

for (const emp of employees) {
  const startDate = new Date(emp.json.startDate);
  startDate.setHours(0,0,0,0);

  const diffDays = Math.round(
    (today - startDate) / (1000 * 60 * 60 * 24)
  );

  if (diffDays === -7)  tasks.push({ ...emp.json, task: 'pre_week' });
  if (diffDays === -1)  tasks.push({ ...emp.json, task: 'pre_day' });
  if (diffDays === 0)   tasks.push({ ...emp.json, task: 'day_zero' });
  if (diffDays === 7)   tasks.push({ ...emp.json, task: 'week_one' });
  if (diffDays === 30)  tasks.push({ ...emp.json, task: 'month_one' });
}

return tasks.map(t => ({ json: t }));

채용 KPI 자동 집계 — Code 노드

const applicants = $('지원자 DB').all();

const total      = applicants.length;
const passed     = applicants.filter(a => a.json.status === '최종합격').length;
const hired      = applicants.filter(a => a.json.status === '입사완료').length;

// 채용 소요 기간 계산 (지원일 → 합격일)
const durations = applicants
  .filter(a => a.json.hireDate && a.json.applyDate)
  .map(a => {
    const apply = new Date(a.json.applyDate);
    const hire  = new Date(a.json.hireDate);
    return Math.round((hire - apply) / (1000*60*60*24));
  });

const avgDays = durations.length
  ? Math.round(durations.reduce((s,d)=>s+d,0) / durations.length)
  : 0;

return [{
  json: {
    totalApplicants: total,
    offerRate:       total ? (passed/total*100).toFixed(1)+'%' : '-',
    hireRate:        total ? (hired/total*100).toFixed(1)+'%'  : '-',
    avgHiringDays:   avgDays + '일',
  }
}];
💡 TIP온보딩 D-day 워크플로우는 매일 1회 실행되지만 실제 이벤트가 없는 날은 빈 배열을 반환하므로 후속 노드가 실행되지 않습니다. n8n의 'Continue On Fail' 옵션과 IF 노드로 빈 배열 처리를 반드시 추가하세요.
⚠️ 주의지원자 불합격 통보 이메일은 너무 이르거나 너무 늦게 발송되지 않도록 주의하세요. 면접 당일이나 다음 날 자동 발송되도록 Notion 상태 변경 후 24시간 Wait 노드를 추가하는 것을 권장합니다.
⚡

워크플로우 JSON

아래 JSON을 복사해 n8n에 바로 임포트하세요

📥 n8n 임포트 방법
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
{
  "id": "scenario_C",
  "chapter": 9,
  "title": "시나리오 C — HR 전주기 채용·온보딩 자동화 시스템",
  "difficulty": "⭐⭐⭐",
  "target": "10~50명 규모 스타트업의 HR 담당자 또는 채용 매니저",
  "outcome": "채용 공고 등록부터 → 지원자 정리 → 면접 조율 → 입사 후 30일 온보딩까지 전 과정이 한 사람이 관리할 수 있는 수준으로 자동화돼요.",
  "linked_recipes": [
    {
      "recipe": "059",
      "desc": "공고 등록"
    },
    {
      "recipe": "051",
      "desc": "지원서 정리"
    },
    {
      "recipe": "052",
      "desc": "면접 조율"
    },
    {
      "recipe": "053",
      "desc": "온보딩"
    },
    {
      "recipe": "055",
      "desc": "생일 알림"
    },
    {
      "recipe": "057",
      "desc": "인사평가"
    }
  ],
  "workflow_diagram": [
    "[채용 공고 등록] Google Sheets 트리거",
    "↓",
    "잡코리아 API + 사람인 API + LinkedIn → 다채널 동시 등록",
    "↓",
    "[신규 지원자] Gmail Trigger",
    "↓",
    "Google Sheets → 지원자 목록 정리",
    "↓",
    "Slack → 채용팀 알림",
    "↓",
    "[서류 합격 시] Sheets 상태 변경",
    "↓",
    "Gmail → 합격 안내 + Calendly 링크",
    "↓",
    "[입사 결정 시]",
    "↓",
    "30일 온보딩 워크플로우 자동 시작"
  ],
  "workflow_url": "www.koreaaitimes.com/books/n8n-vol2/recipeC"
}
← 이전 레시피☰ 목차다음 레시피 →