자동화 좋아하시나요? 나만의 커스텀 노드를 만들어서 n8n에서 직접 자동화를 구현해볼까요?
안녕하세요, 여러분! 저는 최근에 n8n이라는 자동화 툴에 푹 빠졌어요. 특히 반복적인 작업을 자동화하면서 정말 많은 시간을 절약할 수 있었거든요. 그런데 기본 노드로는 부족한 부분이 있더라구요. 그래서 직접 커스텀 노드를 만들어봤습니다! 이 글에서는 제가 경험한 n8n 커스텀 노드 제작 과정과 자동화 팁들을 공유해볼게요. 혹시 나도 자동화 좀 해볼까? 고민 중이라면, 꼭 끝까지 읽어보세요!
n8n 소개와 커스텀 노드 개념
n8n은 오픈 소스 자동화 툴로, 다양한 서비스와 애플리케이션을 연결해주는 역할을 합니다. Zapier나 Integromat과 비슷하지만, 더 유연하고 커스터마이징이 자유로운 게 특징이에요. 기본 제공되는 노드도 많지만, 내가 원하는 기능이 없을 때는? 바로 커스텀 노드를 만들어야죠! 커스텀 노드는 말 그대로 나만의 기능을 추가할 수 있는 특별한 노드입니다.
커스텀 노드 개발 환경 설정
커스텀 노드를 개발하려면 먼저 개발 환경을 세팅해야 합니다. 필요한 도구와 설치 방법을 표로 정리해봤어요.
도구 | 설치 방법 |
---|---|
Node.js | nodejs.org에서 설치 |
n8n 소스 코드 | GitHub에서 클론 |
TypeScript | npm install -g typescript |
노드 구조 이해하기
커스텀 노드를 만들기 위해서는 기본적인 노드 구조를 알아야 합니다. 대충 만들어선 제대로 작동하지 않거든요. 기본 구조는 아래와 같아요.
- description: 노드의 이름, 아이콘, 기본 정보
- inputs/outputs: 입력과 출력 포인트 설정
- execute 함수: 노드 실행 시 동작할 코드
커스텀 노드 코딩 실습
직접 코드를 작성해볼까요? 기본적인 Hello World 노드를 만들어 보면서 이해를 돕겠습니다. 아래 예제를 참고하세요.
export class HelloWorldNode implements INodeType {
description = {
displayName: 'Hello World Node',
name: 'helloWorldNode',
group: ['transform'],
version: 1,
description: 'Says Hello',
defaults: {
name: 'Hello World',
color: '#ff7043',
},
inputs: ['main'],
outputs: ['main'],
properties: [],
};
async execute(this: IExecuteFunctions): Promise {
return [[{ json: { message: 'Hello World!' } }]];
}
}
실전 자동화 예제
실제로 제가 만든 커스텀 노드 중 하나는 특정 API에서 데이터를 가져오고 슬랙으로 알림을 보내는 거였어요. 여러분도 이런 식으로 자신만의 업무를 자동화할 수 있습니다. 몇 가지 예제를 소개할게요.
- 주식 가격 변동 알림 자동화
- 날씨 데이터 수집 및 보고서 생성
- 이메일 자동 응답 시스템 구축
n8n의 custom 노드 폴더에 저장됩니다. 기본적으로 src 폴더 하위에 위치해요.
description 객체의 color 속성을 변경하면 됩니다. HEX 코드로 지정하세요.
n8n의 로그 시스템에서 확인할 수 있으며, 콘솔에 출력되는 에러 메시지를 참고하세요.
네, 가능합니다. 하지만 TypeScript를 권장하며, 공식 문서도 TypeScript 기준으로 작성되어 있어요.
GitHub에 올리거나 n8n 커뮤니티에 공유할 수 있습니다. 다른 사람들과 협업도 가능하죠!
업데이트 후에도 custom 노드는 유지되지만, 호환성 문제는 직접 확인해야 합니다.