Cron 표현식으로 정해진 시각에 워크플로우를 자동 실행하고, 타임존 설정과 매일 오전 9시 팀 리포트 자동화 실전 패턴을 익힌다.
🎯 학습 목표
이 강을 마치면 다음을 할 수 있습니다.
- Schedule Trigger 노드로 정해진 시각과 주기에 워크플로우를 자동 실행합니다.
- Cron 표현식의 5개 필드를 이해하고 원하는 주기를 직접 작성합니다.
- 타임존 설정의 함정을 이해하고 한국 시간 기준으로 정확하게 설정합니다.
- 매일 오전 9시 리포트 자동화 같은 정기 업무를 설계합니다.
💡 스케줄 트리거가 필요한 상황
이 섹션에서는 스케줄 트리거가 어떤 업무 자동화에 적합한지 살펴보겠습니다.
자동화의 두 가지 트리거 유형을 구분하는 것이 중요합니다. 12강에서 학습한 Webhook 트리거는 외부 이벤트가 발생했을 때 즉시 실행됩니다. 반면 스케줄 트리거는 사람이 정의한 시각·주기에 따라 규칙적으로 실행됩니다. 이 두 트리거는 상호 배타적이 아니라 서로 다른 업무 유형에 적합합니다.
스케줄 트리거가 적합한 대표적인 업무는 다음과 같습니다. 매일 오전 9시 팀 일일 리포트 이메일 발송, 매주 월요일 주간 매출 통계 슬랙 공유, 매시간 외부 API에서 데이터 수집 및 DB 저장, 매달 1일 전월 청구서 자동 생성, 매일 새벽 2시 DB 백업 실행이 여기에 해당합니다. 이처럼 "언제"가 트리거인 업무는 스케줄로 처리하고, "무슨 일이 일어났을 때"가 트리거인 업무는 Webhook으로 처리합니다.
⏰ Schedule Trigger 노드 설정
이 섹션에서는 n8n의 Schedule Trigger 노드 사용법을 살펴보겠습니다.
Schedule Trigger 노드는 n8n의 기본 내장 트리거로, 별도의 외부 설정 없이 n8n 내에서 스케줄을 관리합니다. 노드를 추가하면 다음 네 가지 모드 중 하나를 선택합니다.
| 모드 | 설명 | 예시 |
|---|---|---|
| Every X Minutes/Hours | 일정 시간 간격으로 반복 | 30분마다 실행 |
| Every Day | 매일 특정 시각 실행 | 매일 09:00 |
| Every Week | 매주 특정 요일·시각 실행 | 매주 월요일 08:00 |
| Custom (Cron) | Cron 표현식으로 세밀하게 설정 | 평일만, 월말만 등 |
간단한 주기(매일, 매시간 등)는 UI 모드로 쉽게 설정할 수 있습니다. 복잡한 조건(평일만, 매달 마지막 날, 분기별 첫째 주 등)은 Custom Cron 모드를 사용합니다. 워크플로우를 저장하고 활성화하면 다음 실행 예정 시각이 노드 하단에 표시됩니다.
🕐 Cron 표현식 완전 이해
이 섹션에서는 Cron 표현식의 구조와 작성 방법을 살펴보겠습니다.
Cron 표현식은 원래 Unix 시스템에서 주기적인 명령 실행을 위해 만든 형식입니다. n8n도 동일한 형식을 사용합니다. Cron 표현식은 5개의 필드를 공백으로 구분한 문자열입니다.
분 시 일 월 요일
0-59 0-23 1-31 1-12 0-7(0·7=일요일)
각 필드에서 사용하는 특수 문자의 의미를 정리했습니다.
| 문자 | 의미 | 예시 |
|---|---|---|
| * | 모든 값 (해당 필드의 매 단위마다) | 시 필드에 *이면 매 시간 |
| , | 여러 값 나열 | 1,3,5이면 1, 3, 5에만 실행 |
| - | 범위 | 1-5이면 1부터 5까지 |
| / | 간격 | */15이면 15 간격마다 |
자주 사용하는 Cron 표현식 예시를 살펴보겠습니다.
| 표현식 | 의미 |
|---|---|
0 9 * * * | 매일 오전 9시 정각 |
0 9 * * 1-5 | 평일(월~금) 오전 9시 |
0 9 * * 1 | 매주 월요일 오전 9시 |
0 0 1 * * | 매달 1일 자정 |
*/30 * * * * | 30분마다 |
0 */2 * * * | 2시간마다 정각 |
0 9,18 * * * | 매일 오전 9시, 오후 6시 |
0 0 1,15 * * | 매달 1일과 15일 자정 |
Cron 표현식이 처음에는 복잡하게 느껴질 수 있습니다. crontab.guru 사이트를 활용하면 표현식을 입력했을 때 다음 실행 예정 시각이 자연어로 설명되므로 검증에 도움이 됩니다. n8n 자체도 Cron 필드 아래에 다음 실행 예정 시각을 미리보기로 보여줍니다.
🌏 타임존 설정 — 한국 시간 기준
이 섹션에서는 타임존 설정이 왜 중요하고 어떻게 올바르게 설정하는지 살펴보겠습니다.
Cron 표현식의 시각은 n8n 서버의 타임존을 기준으로 합니다. n8n 클라우드는 기본적으로 UTC(협정 세계시)를 사용합니다. 한국 표준시(KST)는 UTC+9입니다. 즉, 한국 시간 오전 9시는 UTC 기준 오전 0시(자정)입니다. 타임존을 고려하지 않으면 의도한 시각과 9시간 차이가 나는 최악의 상황이 발생합니다.
n8n에서 타임존을 올바르게 설정하는 방법은 두 가지입니다. 첫 번째는 n8n 전체 타임존 설정입니다. 셀프호스팅이면 환경변수 GENERIC_TIMEZONE=Asia/Seoul을 설정합니다. 클라우드 n8n이면 Settings → Default Timezone에서 변경합니다. 이렇게 하면 모든 Schedule Trigger가 서울 시간 기준으로 동작합니다. 두 번째는 Schedule Trigger 개별 설정입니다. 각 트리거 노드의 Timezone 옵션에서 Asia/Seoul을 직접 지정합니다. 이 방법은 워크플로우별로 다른 타임존이 필요할 때 사용합니다.
타임존 관련 함정이 하나 더 있습니다. 서머타임(DST)입니다. 한국은 서머타임을 사용하지 않지만, 미국·유럽 등과 연동하는 워크플로우라면 서머타임을 고려해야 합니다. UTC 기준으로 고정 Cron을 설정하면 서머타임과 무관하게 일정한 간격으로 실행됩니다. 반면 Asia/New_York 같은 지역 타임존을 설정하면 서머타임이 적용되어 현지 시각 기준으로 실행됩니다.
💻 실전: 매일 오전 9시 팀 리포트 자동화
이 섹션에서는 매일 오전 9시에 팀 리포트를 슬랙으로 자동 발송하는 실전 워크플로우를 살펴보겠습니다.
목표: 평일(월~금) 오전 9시에 Google Sheets에서 전날 데이터를 읽어 팀 슬랙 채널에 일일 현황 리포트를 자동 발송합니다.
Cron 표현식: 0 9 * * 1-5 (UTC 기준이면 0 0 * * 1-5, 타임존 Asia/Seoul 지정 시 0 9 * * 1-5). Schedule Trigger 노드 → Google Sheets 노드(어제 날짜 행 읽기) → Code 노드(집계 계산) → Slack 노드(메시지 발송) 순서로 구성합니다.
Google Sheets 노드에서 "어제" 날짜를 동적으로 참조하려면 표현식을 사용합니다. {{ $now.minus({days: 1}).toFormat('yyyy-MM-dd') }}처럼 Luxon으로 전날 날짜 문자열을 만들어 필터 조건에 사용합니다. Slack 메시지에는 집계된 수치를 표현식으로 삽입합니다. 이 워크플로우는 한 번 설정하면 매 평일 오전 9시에 자동으로 실행되어 팀에게 현황을 공유합니다. 수작업으로 데이터를 모아 매일 작성하던 리포트가 완전히 자동화됩니다.
📝 핵심 요약
| 개념 | 핵심 내용 |
|---|---|
| 스케줄 vs Webhook | 스케줄: 정해진 시각·주기. Webhook: 외부 이벤트 발생 시 |
| Cron 5필드 | 분 시 일 월 요일. * = 매, / = 간격, - = 범위, , = 나열 |
| 타임존 | 한국 시간 기준이면 Asia/Seoul 반드시 지정. UTC 기본값 주의 |
| 검증 | crontab.guru로 표현식 확인, n8n UI에서 다음 실행 시각 미리보기 |
다음 강에서는 드디어 AI 노드를 다룹니다. OpenAI의 Chat 모델을 n8n에 연결하고, LLM과 대화하거나 텍스트를 분석·생성하는 워크플로우를 처음으로 만들어 보겠습니다.
관련 주제
- Schedule Trigger
- Cron 표현식
- 타임존 설정
- 정기 리포트 자동화
- 매일 오전 9시 발송
- AI 기술
- AI 기술 강의
- n8n + AI 워크플로우 설계법 20강
- 무료강의
- 무료 온라인 강의
- NUGUNA
- 누구나
댓글
불러오는 중...
