16 Things I Wish I Knew About n8n Before I Started
원본 영상: 16 Things I Wish I Knew About n8n Before I Started
한 줄 요약
섹션 제목: “한 줄 요약”n8n을 처음 배울 때 놓치기 쉬운 멀티 트리거, 데이터 고정·편집, 서브에이전트 패턴, 웹훅 설정, 데이터 타입(array/object) 개념 등 16가지를 실전 워크플로 화면과 함께 설명한다.
핵심 내용
섹션 제목: “핵심 내용”-
멀티 트리거: 하나의 워크플로에 여러 Form Submission 트리거를 붙일 수 있다. 랜딩페이지별(구글 광고용, SEO용, 페이스북 광고용 등) 별도 폼을 만들되 같은 워크플로로 수렴시키는 구조.
-
Pin Data: 모듈을 더블클릭하면 상단에 “Pin Data” 옵션이 있다. 테스트할 때마다 폼을 다시 제출하지 않아도 되도록 샘플 데이터를 고정시켜 매번 동일한 mock 데이터로 실행 가능.
-
Pin Data 편집: 고정된 데이터를 연필 아이콘으로 직접 수정할 수 있다. 필드 추가·값 변경이 가능해 다양한 테스트 케이스를 폼 제출 없이 처리.
-
AI 에이전트 + Call n8n Workflow 툴: 에이전트의 Tools 패널은 기본 제공 앱이 제한적이지만, “Call n8n Workflow” 툴을 추가하면 서브 워크플로를 호출해 사실상 모든 앱에 접근 가능. 메인 에이전트 → 서브 워크플로 구조로 툴 확장.
-
서브 워크플로 파라미터 전달: 메인 에이전트에서 서브 워크플로로 파라미터를 넘기려면 서브 워크플로의 트리거에서 Input Data Mode를 JSON으로 설정하고 필드를 정의한 뒤 저장·새로고침해야 메인 에이전트에 해당 필드가 노출됨.
-
다중 모듈 선택·이동: Shift + 드래그로 여러 모듈을 선택해 한 번에 이동. Command/Ctrl+C로 복사 후 다른 워크플로에 Ctrl+V로 붙여넣기 가능.
-
Command/Ctrl+S 저장: 탭을 닫기 전 저장하지 않으면 작업이 날아감. 습관적으로 자주 저장 권장.
-
Rate Limiting 대응 — Wait 스텝: Google Sheets 등에 대량 데이터를 보낼 때 429 에러(Too Many Requests) 발생. 1초짜리 Wait 스텝을 추가하면 분당 처리량이 60회로 제한되어 쿼터 초과 방지.
-
웹훅 HTTP 메서드 일치: 외부 서비스는 대부분 POST로 데이터를 전송하는데, n8n 웹훅 트리거의 기본값은 GET. 반드시 HTTP Method를 발신 측과 일치시켜야 404 에러가 발생하지 않음.
-
에러 워크플로: Settings에서 “Error Workflow”를 지정하면 워크플로 실패 시 자동으로 해당 워크플로가 실행됨. Slack 메시지나 이메일로 즉시 알림 가능 — 클라이언트보다 먼저 오류를 인지하는 데 필수.
-
JMESPath로 중첩 데이터 추출:
{{ $jmesPath(data, 'people[*].name') }}형태로 깊게 중첩된 배열에서 특정 키만 뽑아낼 수 있다. 표현식 편집기에서{{→$→ JMESPath 선택. -
버전 히스토리(Revert): 워크플로 우상단 버전 히스토리 버튼으로 이전 저장 시점으로 되돌리기 가능.
-
데이터 타입 이해: 아래 섹션 참조.
-
Split Out: 배열(리스트)을 개별 아이템으로 분해해 하나씩 처리.
-
Filter: Split Out 이후 조건(예: budget ≥ 1,000)으로 아이템을 걸러냄.
-
Aggregate: Split Out의 역연산. 개별 아이템을 다시 배열로 묶음. 예: 50개 리드를 개별 처리 후 하나의 이메일로 묶어 전송.
전술·요소
섹션 제목: “전술·요소”| 기능 | 위치 / 방법 | 용도 |
|---|---|---|
| Pin Data | 모듈 더블클릭 → 상단 버튼 | mock 데이터 고정으로 반복 테스트 |
| Pin Data 편집 | 연필 아이콘 | 필드 값·키 수정 |
| 멀티 트리거 | 캔버스에 트리거 추가 | 폼별 분기 없이 단일 워크플로 수렴 |
| Call n8n Workflow | 에이전트 Tools → + 버튼 | 서브 워크플로로 툴 무한 확장 |
| Wait 스텝 | + 버튼 → Wait | 1초 설정으로 rate limit 회피 |
| 웹훅 HTTP Method | 트리거 설정 → HTTP Method | POST/GET 발신 측과 반드시 일치 |
| Error Workflow | 워크플로 Settings → Error Workflow | 실패 시 알림 자동화 |
| JMESPath | 표현식 $jmesPath(arr, 'key[*].field') | 중첩 배열 데이터 추출 |
| Revert | 버전 히스토리 버튼 | 실수 복구 |
데이터 타입 정리
섹션 제목: “데이터 타입 정리”| 타입 | 설명 | 예시 |
|---|---|---|
| String | 텍스트 | 이름, 문의 내용 |
| Number | 숫자 | 예산, 직원 수 |
| Boolean | true/false | 인증 여부 |
| Date | 날짜 | 폼 제출일 |
| Binary | 파일·이미지 | PDF, PNG |
| Object(Collection) | key-value 쌍 | {name: "Jane", email: "..."} |
| Array | 리스트 (위 타입 모두 가능) | [Bob, Fred, George] |
수치·사례
섹션 제목: “수치·사례”- Google Sheets API 쿼터: 분당 300 요청 초과 시 429 에러 발생 (Google 공식 문서 인용)
- Wait 1초 추가 시 분당 최대 60회 처리 → 쿼터 내 유지
- 예시 워크플로: Google Maps에서 “Toronto landscapers” 검색 결과 스크래핑 후 Google Sheets 적재 (Apify 사용)
- 예시 필터링: 리드 3명(Bob $1,000 / Fred $500 / George $2,000) 중 예산 $1,000 미만인 Fred 제외 → 2명만 HubSpot에 추가
도구·워크플로
섹션 제목: “도구·워크플로”- Apify: Google Maps 웹 스크래핑에 활용
- Req.bin (또는 유사 서비스): 웹훅 테스트용 무료 요청 수신 도구
- JMESPath 패턴:
{{ $jmesPath($json.people, '[*].name') }}— 사람 목록에서 이름만 추출 - 에이전트 확장 패턴: 메인 AI Agent → Call n8n Workflow 툴 → 서브 워크플로(When Executed by Another Workflow 트리거) → 모든 앱 접근 가능
- 에러 알림 패턴: Error Workflow 지정 → Gmail/Slack 노드로 팀 알림
- 배열 처리 패턴: Split Out → Filter → (각 앱으로 처리) → Aggregate → 단일 이메일 발송