n8n
Webhook은 유료 요금제가 필요해요. 제한과 세부 정보는 Webhook 자동화를 참고하세요.
n8n은 자체 호스팅하거나 클라우드에서 사용할 수 있는 자동화 플랫폼이에요. Webhook 노드로 TellDone을 n8n에 연결하세요. n8n 인스턴스는 인터넷에서 접근 가능한 HTTPS URL이 있어야 해요.
설정 방법
n8n에서
- 워크플로우에 Webhook 노드를 추가하세요
- HTTP Method를 POST로 설정하세요
- 경로를 설정하세요(예:
telldone) - (선택) Header Auth를 활성화하세요: Name =
Authorization, Value = 비밀 토큰 - Production URL(테스트 URL이 아님)을 복사하세요
TellDone에서
- 설정 > 연동 > Webhook 자동화로 이동하세요
- 새 자동화를 누르고 n8n 프로덕션 URL을 붙여넣으세요
- n8n에서 Header Auth를 활성화했다면 TellDone의 인증 헤더에 동일한 토큰을 입력하세요
- 보낼 데이터 유형을 선택하세요
- 저장을 누른 다음 테스트를 눌러 샘플 페이로드를 보내세요
n8n 실행 로그를 확인하세요. "test": true가 있는 페이로드가 보여야 해요.
이벤트 유형으로 라우팅
Webhook 노드 뒤에 Switch 노드를 추가해 이벤트 유형별로 데이터를 라우팅하세 요.
- 라우팅 필드: 들어오는 데이터의
event값 - Rule 1:
note.created와 같음 - 노트 액션으로 라우팅 - Rule 2:
task.created와 같음 - 할 일 액션으로 라우팅 - Rule 3:
calendar_event.created와 같음 - 캘린더 액션으로 라우팅 - Rule 4:
report.created와 같음 - 리포트 액션으로 라우팅
각 Switch 출력을 적절한 액션 노드(Todoist, Google Calendar, Slack 등)에 연결하세요.
유용한 표현식
액션 노드를 구성할 때 TellDone 데이터에 접근하기 위해 다음 n8n 표현식을 사용하세요.
| 표현식 | 설명 |
|---|---|
{{ $json.data.title }} | 노트, 할 일, 이벤트의 제목 |
{{ $json.data.tags.join(', ') }} | 쉼표로 구분된 태그 문자열 |
{{ $json.data.priority }} | 우선순위 |
{{ $json.data.due_date }} | 마감일(할 일) |
{{ $json.data.summary }} | AI가 생성한 요약(노트) |
{{ $json.event }} | 이벤트 유형 |
각 데이터 유형의 전체 필드 목록은 Webhook 자동화 - 전송되는 내용을 참고하세요.
테스트 이벤트 필터링
Webhook 노드 바로 뒤에 IF 노드를 추가하세요.
- 조건:
{{ $json.test }}가 true가 아님 - True 경로: 워크플로우의 나머지 부분
- False 경로: No Operation(테스트 이벤트 폐기)
워크플로우 예시
- Webhook - Switch - Todoist: 우선순위와 마감일이 있는 할 일 생성
- Webhook - Switch - Google Calendar: 시간, 장소, 참석자가 있는 이벤트 생성
- Webhook - Switch - Slack: 채널에 일간 리포트 게시
- Webhook - Switch - Google Sheets: 모든 노트를 스프레드시트 행으로 기록
- Webhook - Switch - Notion: 태그와 요약이 있는 노트 저장
Webhook 서명 검증(선택)
n8n Code 노드는 파싱된 JSON 객체만 노출하고 원시 요청 본문은 노출하지 않아요. 서명 검증은 TellDone이 서명한 정확한 원시 바이트가 필요해요. 실제로 대부분의 n8n 사용자는 HMAC 검증 대신 기본 Authorization: <signing_secret> 헤더로 인증해요.
프로덕션에서는 HMAC-SHA256 서명을 확인해 Webhook 데이터가 진짜 TellDone에서 왔는지 검증할 수 있어요. Webhook 노드 바로 뒤에 Code 노드를 추가하세요.
const crypto = require('crypto');
const secret = 'whsec_your_signing_secret_here';
const signature = $input.first().headers['x-lp-signature'];
const timestamp = $input.first().headers['x-lp-timestamp'];
const body = JSON.stringify($input.first().json);
const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(timestamp + '.' + body)
.digest('hex');
if (signature !== expected) {
throw new Error('Invalid webhook signature');
}
// Reject timestamps older than 5 minutes
const age = Math.floor(Date.now() / 1000) - parseInt(timestamp);
if (age > 300) {
throw new Error('Webhook timestamp too old');
}
return $input.all();
whsec_your_signing_secret_here를 TellDone에서 자동화를 만들 때 복사한 서명 비밀 키로 바꾸세요.
연결 해제
n8n으로 데이터 전송을 중지하려면 다음을 하세요.
- n8n에서 워크플로우를 비활성화하거나,
- TellDone 설정 > 연동 > Webhook 자동화에서 자동화를 비활성화하거나 삭제하세요
같이 보기
- Webhook 자동화 - 페이로드 형식, 전송 제한, 보안
- Zapier - 클라우드 자동화 대안
- Make - 클라우드 자동화 대안