워크플로우

1. 워크플로우란?
워크플로우는 반복적인 작업을 자동화하는 도구입니다.
사람이 직접 하던 일들 — 데이터 수집, AI 글 작성, 이메일 발송, 스프레드시트 정리 등 — 을 노드(블록)를 연결하는 것만으로 자동으로 처리할 수 있습니다.
[시작 조건] → [작업 1] → [작업 2] → [작업 3]
예시: "매일 아침 9시에 뉴스를 검색하고, AI로 요약한 뒤, 이메일로 보내기"
[매일 9시 실행] → [뉴스 검색] → [AI 요약] → [이메일 전송]
이 모든 과정이 한 번 설정하면 매일 자동으로 동작합니다.
2. 이런 분께 추천합니다
이런 작업을 자동화할 수 있습니다
하고 싶은 일 | 활용 예시 |
|---|---|
매일 반복하는 업무 | 뉴스 수집, 보고서 생성, 정기 알림 발송 |
AI로 콘텐츠 만들기 | 글 작성 → 이미지 생성 → 업로드까지 한 번에 |
데이터 정리/연동 | Google Sheets ↔ 외부 서비스 간 데이터 동기화 |
조건에 따른 알림 | 특정 상황 발생 시 SMS, 이메일, 채팅 알림 |
영상/이미지 제작 | 자막 생성, 썸네일 제작, 영상 렌더링 |
YouTube 운영 | 영상 업로드, 메타데이터 관리 자동화 |
폼 접수 후 처리 | 신청서 접수 → 스프레드시트 기록 → 확인 문자 발송 |
3. 시작하기
워크플로우 만드는 순서
워크플로우 에디터에 접속합니다.
트리거 노드를 추가합니다 — "언제 실행할 것인가"를 정합니다.
버튼 클릭으로 수동 실행할지, 매일 특정 시간에 자동 실행할지, 외부 요청이 오면 실행할지 선택합니다.
작업 노드를 추가하고 연결합니다 — "무엇을 할 것인가"를 정합니다.
검색, AI 처리, 데이터 변환, 이메일 전송 등 원하는 작업을 추가합니다.
각 노드의 설정을 채웁니다 — 검색어, 프롬프트, 수신자 등 세부 내용을 입력합니다.
외부 서비스 인증을 연결합니다 — Google, OpenAI 등 외부 서비스를 사용하는 노드는 인증 정보가 필요합니다.
테스트 실행합니다 — 각 노드를 개별로 테스트하거나, 전체 워크플로우를 실행해봅니다.
저장합니다 — 필요하면 스케줄(정기 실행)도 등록합니다.
노드 연결 규칙
워크플로우에는 트리거 노드가 반드시 하나 이상 있어야 합니다.
노드의 출력에서 다음 노드의 입력으로 선을 그어 연결합니다.
하나의 노드 출력에서 여러 노드로 분기할 수 있습니다.
반대로, 여러 경로를 Merge 노드로 합칠 수도 있습니다.
4. 기본 개념 이해하기
아이템이란?
워크플로우에서 데이터는 아이템 단위로 흐릅니다. 아이템은 한 건의 데이터라고 생각하면 됩니다.
상황 | 아이템 |
|---|---|
Google Sheets에서 10행을 읽으면 | 10개의 아이템 |
뉴스 검색 결과가 5건이면 | 5개의 아이템 |
폼을 1건 제출하면 | 1개의 아이템 |
각 아이템에는 텍스트 데이터(이름, 이메일, 숫자 등)와 파일 데이터(이미지, 영상, 문서 등)가 담길 수 있습니다.
노드 실행 순서
트리거 노드가 워크플로우를 시작합니다.
연결된 순서대로 다음 노드가 실행됩니다.
각 노드는 받은 데이터를 처리하고 결과를 다음으로 넘깁니다.
If 노드에서 조건에 따라 경로가 나뉠 수 있습니다.
반복 노드에서 여러 건의 데이터를 하나씩 처리할 수 있습니다.
모든 노드가 실행되면 워크플로우가 완료됩니다.
노드의 출력 포트
대부분의 노드는 하나의 출력을 가지지만, 일부 노드는 여러 개의 출력이 있습니다.
If 노드: "조건 충족" 출력과 "조건 미충족" 출력 2개
반복(LoopOverItems) 노드: "반복 중" 출력과 "반복 완료" 출력 2개
그 외 노드: 기본 출력 1개
5. 표현식 사용법
표현식은 {{ }} 안에 작성하며, 이전 노드의 데이터를 가져오거나 값을 동적으로 만들 때 사용합니다. 노드의 설정 필드에 직접 입력하면 됩니다.
이전 노드의 데이터 가져오기
{{ $json.이름 }} → 현재 데이터의 "이름" 필드
{{ $json.주소.도시 }} → 중첩된 필드
{{ $json.목록[0].id }} → 배열의 첫 번째 항목
{{ $('노드 이름').json.결과 }} → 특정 노드의 출력값
자주 쓰는 내장 함수
함수 | 설명 | 사용 예시 | 결과 |
|---|---|---|---|
| 값이 비어있으면 대체값 사용 |
| 이름이 없으면 "미지정" |
| 현재 날짜/시간 |
| 2026-03-18 |
| 랜덤 문자열 |
| aBcDeFgH |
| 랜덤 정수 |
| 42 |
| 최솟값 |
| 3 |
| 최댓값 |
| 10 |
| 평균 |
| 20 |
| 숫자 배열 |
| [1,2,3,4,5] |
| 한국어 날짜 인식 |
| 날짜 객체 |
실전 활용 예시
이메일 본문에 이름 넣기:
안녕하세요, {{ $json.name }}님! {{ $moment().format('M월 D일') }} 보고서를 보내드립니다.
조건에 따라 다른 값 사용:
{{ $json.score > 80 ? '합격' : '불합격' }}
날짜 계산:
{{ $moment($json.startDate).add(7, 'days').format('YYYY-MM-DD') }}
빈 값 안전하게 처리:
{{ $ifEmpty($json.phone, '전화번호 없음') }}
특수 변수
변수 | 용도 |
|---|---|
| 현재 아이템의 데이터 |
| 현재 노드에 들어온 모든 아이템 |
| 특정 노드의 출력 데이터 참조 |
| 반복(Loop) 안에서 현재 몇 번째인지 |
6. 실행하기
실행 방법 4가지
방법 | 사용하는 트리거 | 적합한 상황 |
|---|---|---|
수동 실행 | 수동 트리거 | 필요할 때만 직접 실행 |
예약 실행 | 스케줄 트리거 | 매일/매주 등 정기적으로 자동 실행 |
외부 호출 | 웹훅 트리거 | 다른 시스템에서 HTTP 요청으로 실행 |
폼 제출 | 폼 트리거 | 사용자가 폼을 작성하면 실행 |
개별 노드 테스트
전체 워크플로우를 실행하기 전에 개별 노드만 따로 테스트할 수 있습니다. 각 노드의 설정이 올바른지, 표현식이 제대로 동작하는지 확인할 때 유용합니다.
실행 상태 확인
워크플로우 실행 후 상태를 확인할 수 있습니다.
상태 | 의미 |
|---|---|
대기 중 | 실행 준비가 된 상태 |
실행 중 | 현재 처리가 진행되는 중 |
성공 | 모든 노드가 정상적으로 완료 |
오류 | 실행 도중 문제가 발생하여 중단 |
취소됨 | 사용자가 직접 실행을 취소 |
7. 에러가 발생했을 때
노드별 에러 처리 설정
각 노드에 "에러가 나면 어떻게 할지"를 미리 설정할 수 있습니다.
설정 | 동작 | 언제 사용하나 |
|---|---|---|
워크플로우 중지 (기본) | 에러 발생 시 전체 중단 | 반드시 성공해야 하는 중요한 작업 |
에러 경로로 계속 | 에러 정보를 별도 경로로 보내고 계속 진행 | 에러를 기록하면서 나머지 작업은 계속해야 할 때 |
무시하고 계속 | 에러가 나도 다음 노드로 그냥 진행 | 실패해도 큰 문제가 없는 부수적 작업 |
자동 재시도
외부 API 호출이 일시적으로 실패할 수 있는 경우, 자동 재시도를 설정할 수 있습니다. 최대 재시도 횟수를 지정하면 실패 시 자동으로 다시 시도합니다.
자주 만나는 에러 유형
에러 | 원인 | 해결 방법 |
|---|---|---|
API 호출 실패 | 외부 서비스 오류, 인증 만료 | 인증 정보 확인, 재시도 설정 |
노드 설정 오류 | 필수 필드 누락, 잘못된 값 | 노드 설정 다시 확인 |
표현식 오류 | 존재하지 않는 필드 참조, 문법 오류 | 표현식 수정, |
8. 인증 정보 연결하기
Google, OpenAI 등 외부 서비스를 사용하는 노드는 인증 정보가 필요합니다.
인증 방식
OAuth2 연결 — Google 서비스에서 사용합니다. "인증" 버튼을 클릭하면 해당 서비스의 로그인 화면이 나타나고, 권한을 허용하면 자동으로 연결됩니다. 한 번 연결하면 토큰이 자동으로 갱신되어 계속 사용할 수 있습니다.
API 키 입력 — OpenAI, Brave Search 등에서 사용합니다. 해당 서비스에서 발급받은 API 키를 직접 입력합니다.
인증이 필요한 서비스 목록
서비스 | 인증 방식 | 필요 정보 |
|---|---|---|
Google Sheets, Drive, Gmail 등 | OAuth2 | Google 계정 로그인 |
YouTube | OAuth2 | Google/YouTube 계정 로그인 |
OpenAI (ChatGPT, DALL-E) | API 키 | OpenAI API Key |
Google Gemini | API 키 | Gemini API Key |
ElevenLabs | API 키 | ElevenLabs API Key |
Brave Search | API 키 | Brave API Key |
Tavily | API 키 | Tavily API Key |
Grok (xAI) | API 키 | Grok API Key |
Kling AI | API 키 | Kling API Key |
Typecast AI | API 키 | Typecast API Key |
Creatomate | API 키 | Creatomate API Key |
Flux Kontext | API 키 | Flux Kontext API Key |
AWS S3 | API 키 | Access Key ID, Secret Key, 리전 |
연결 방법
인증이 필요한 노드를 클릭합니다.
설정 패널에서 인증 정보 항목을 찾습니다.
기존에 등록한 인증을 선택하거나, 새로 만들기를 클릭합니다.
OAuth2의 경우 인증 버튼을 클릭하여 서비스에 로그인합니다.
API 키의 경우 발급받은 키를 직접 입력합니다.
인증 정보는 암호화되어 안전하게 저장되며, 내 계정에서만 접근할 수 있습니다.
9. 노드 상세 가이드
9.1 트리거 노드
트리거 노드는 **"워크플로우를 언제 시작할지"**를 결정합니다. 모든 워크플로우에는 반드시 하나 이상의 트리거가 필요합니다.
수동 트리거 (ManualTrigger)
에디터에서 실행 버튼을 클릭하면 워크플로우가 시작됩니다.
이럴 때 사용하세요:
워크플로우를 만들면서 테스트할 때
필요한 순간에만 직접 실행하고 싶을 때
별도의 설정 없이 바로 사용할 수 있으며, 빈 데이터를 다음 노드로 전달합니다.
스케줄 트리거 (ScheduleTrigger)
정해진 시간에 자동으로 워크플로우를 실행합니다.
이럴 때 사용하세요:
매일 아침 9시에 뉴스를 수집하고 싶을 때
매주 월요일에 주간 보고서를 만들고 싶을 때
30분마다 데이터를 동기화하고 싶을 때
설정 항목:
항목 | 설명 |
|---|---|
Cron 표현식 | 실행 주기를 지정 (아래 예시 참고) |
타임존 | Asia/Seoul, America/New_York 등 |
Cron 표현식 예시:
원하는 주기 | 표현식 |
|---|---|
매일 오전 9시 |
|
평일(월~금) 오전 9시 |
|
30분마다 |
|
매월 1일 자정 |
|
매주 금요일 오후 6시 |
|
Cron 표현식은
분 시 일 월 요일순서입니다.*는 "매번"을 의미합니다.
웹훅 트리거 (Webhook)
웹훅 트리거는 현재 되원되지 않습니다.
외부에서 HTTP 요청을 보내면 워크플로우가 실행됩니다.
이럴 때 사용하세요:
다른 서비스/시스템에서 이벤트 발생 시 자동으로 처리하고 싶을 때
외부 API와 연동할 때
설정 항목:
항목 | 설명 |
|---|---|
HTTP 메서드 | GET, POST 등 |
경로 | 웹훅 URL 경로 |
인증 | 없음, Basic Auth, API 키(헤더/쿼리), OAuth2 |
응답 방식 | 즉시 응답, 워크플로우 완료 후 응답, 스트리밍 |
받는 데이터: 요청의 헤더, URL 파라미터, 쿼리, 본문(body)이 모두 다음 노드로 전달됩니다.
응답 방식 설명:
즉시 응답: 요청을 받자마자 바로 "성공" 응답을 보냅니다. 워크플로우는 백그라운드에서 계속 실행됩니다.
완료 후 응답: 워크플로우가 끝난 후 결과를 응답으로 보냅니다. 처리 결과를 바로 돌려주고 싶을 때 사용합니다.
스트리밍: 파일(이미지, 영상 등)을 스트리밍으로 응답합니다.
9.2 흐름 제어 노드
워크플로우의 실행 경로를 분기하거나, 반복하거나, 합치는 노드들입니다.
조건 분기 (If)
조건을 검사하여 "예/아니오" 두 경로로 나눕니다.
이럴 때 사용하세요:
금액이 10만원 이상이면 할인을 적용하고, 아니면 일반 처리할 때
상태가 "활성"인 데이터만 다음 단계로 보내고 싶을 때
설정 방법:
방법 1 — 필드 비교: 특정 필드의 값을 비교합니다.
항목 | 예시 |
|---|---|
필드명 |
|
연산자 | 이상 (>=) |
비교 값 |
|
방법 2 — 표현식: 두 표현식의 결과를 비교합니다.
사용 가능한 비교 연산자:
연산자 | 의미 | 사용 예 |
|---|---|---|
같음 | 값이 같은지 | 상태가 "완료"인지 |
같지 않음 | 값이 다른지 | 상태가 "삭제"가 아닌지 |
포함 | 텍스트에 특정 단어가 있는지 | 제목에 "긴급"이 포함되는지 |
미포함 | 텍스트에 특정 단어가 없는지 | 내용에 "스팸"이 없는지 |
초과 / 이상 | 숫자 크기 비교 | 점수가 80 이상인지 |
미만 / 이하 | 숫자 크기 비교 | 재고가 10 미만인지 |
결과:
"조건 충족" 출력: 조건이 참이면 이쪽으로 데이터가 흐릅니다.
"조건 미충족" 출력: 조건이 거짓이면 이쪽으로 데이터가 흐릅니다.
반복 (LoopOverItems)
여러 건의 데이터를 하나씩 꺼내어 반복 처리합니다.
이럴 때 사용하세요:
100명의 고객에게 각각 개인화된 이메일을 보낼 때
여러 건의 데이터를 건별로 AI 처리해야 할 때
대량 파일을 하나씩 업로드할 때
동작 흐름:
┌──────────────────────┐
▼ │
[반복 노드] → "반복 중" 출력 → [처리 노드들] ────┘
│
└→ "반복 완료" 출력 → [완료 후 처리]
입력받은 데이터를 하나씩 "반복 중" 출력으로 보냅니다.
연결된 처리 노드들이 해당 데이터를 처리합니다.
처리 결과가 다시 반복 노드의 입력으로 돌아옵니다.
모든 데이터 처리가 끝나면 "반복 완료" 출력으로 전체 결과를 보냅니다.
중요: "반복 중" 출력에 연결된 마지막 노드는 반드시 다시 반복 노드의 입력으로 연결해야 합니다. 이 연결이 없으면 반복이 동작하지 않습니다.
예시: 고객 목록을 받아서 각각 이메일 발송
[고객 조회] → [반복] → "반복 중" → [이메일 발송] → (반복 노드로 돌아감)
→ "반복 완료" → [발송 완료 알림]
병합 (Merge)
여러 경로에서 온 데이터를 하나로 합칩니다.
이럴 때 사용하세요:
서로 다른 소스에서 가져온 데이터를 합쳐서 처리할 때
분기된 결과를 다시 모아야 할 때
입력: 최대 3개의 입력을 받을 수 있습니다.
병합 방식:
방식 | 설명 | 쉬운 비유 |
|---|---|---|
단순 연결 | 모든 데이터를 순서대로 이어 붙임 | 리스트 A + 리스트 B |
인덱스 매칭 | 같은 순번끼리 합침 | 1번↔1번, 2번↔2번 |
키 매칭 | 특정 필드 값이 같은 항목끼리 합침 | id가 같은 것끼리 합침 (SQL JOIN과 유사) |
모든 조합 | 가능한 모든 쌍을 만듦 | A × B의 모든 경우의 수 |
주의: "모든 조합"은 데이터 양이 많으면 결과가 매우 커질 수 있습니다. 시스템에 의해 제한될 수 있습니다.
대기 (Wait)
지정한 시간만큼 멈춘 후 다음 노드로 진행합니다.
이럴 때 사용하세요:
외부 API 호출 사이에 간격을 두어야 할 때 (호출 제한 대응)
특정 처리 후 잠시 기다려야 할 때
설정 항목:
항목 | 설명 |
|---|---|
대기 시간 | 숫자 |
시간 단위 | 초, 분, 시간 중 선택 |
에러 발생 (ThrowError)
의도적으로 에러를 발생시켜 워크플로우를 중단합니다.
이럴 때 사용하세요:
데이터 검증에 실패했을 때 워크플로우를 멈추고 싶을 때
If 노드와 함께 사용하여 "이 조건이면 진행하면 안 된다"를 표현할 때
설정 항목:
항목 | 설명 |
|---|---|
에러 메시지 | 표시할 에러 내용 (예: "필수 데이터가 누락되었습니다") |
9.3 데이터 가공 노드
데이터를 원하는 형태로 변환, 추가, 정리하는 노드들입니다.
값 설정 (Set)
데이터의 필드를 추가, 수정하거나 필요한 필드만 남깁니다.
이럴 때 사용하세요:
이전 노드의 데이터에서 필요한 필드만 골라내고 싶을 때
새로운 필드를 추가하고 싶을 때
여러 아이템을 하나의 배열로 모으고 싶을 때
3가지 동작 모드:
모드 | 동작 | 사용 예 |
|---|---|---|
설정한 필드만 유지 | 지정한 필드만 남기고 나머지 제거 | 20개 필드 중 이름, 이메일만 필요할 때 |
필드 추가/수정 | 기존 데이터에 새 필드를 추가하거나 값을 수정 | 처리 시간, 상태 필드를 추가할 때 |
배열로 집계 | 모든 아이템을 하나의 배열 아이템으로 합침 | 개별 건들을 한 묶음으로 모을 때 |
예시 — 필요한 필드만 남기기:
이전 노드 출력: { name: "홍길동", email: "hong@...", age: 30, address: "..." }
→ name, email만 설정
→ 결과: { name: "홍길동", email: "hong@..." }
예시 — 새 필드 추가:
필드 이름: fullName
필드 값: {{ $json.firstName }} {{ $json.lastName }}
변환 (Transform)
JSON 템플릿 또는 JavaScript 코드로 데이터를 자유롭게 변환합니다.
이럴 때 사용하세요:
Set 노드로는 부족한, 복잡한 데이터 변환이 필요할 때
데이터 구조를 완전히 바꿔야 할 때
계산이나 가공 로직이 필요할 때
템플릿 모드 — JSON 안에 표현식을 넣어 변환합니다:
{
"제목요약": "{{ $json.title }} - {{ $json.author }}",
"작성일": "{{ $moment().format('YYYY-MM-DD') }}"
}
JavaScript 모드 — 코드로 자유롭게 변환합니다:
return {
items: $input.all().map(item => ({
...item.json,
점수: item.json.likes * 2 + item.json.comments
}))
}
JSON 파서 (JsonParser)
JSON 문자열을 데이터 객체로 변환하거나, 반대로 데이터를 JSON 문자열로 만듭니다.
이럴 때 사용하세요:
외부에서 받은 JSON 형태의 문자열을 데이터로 파싱해야 할 때
데이터를 JSON 문자열로 만들어서 다른 서비스에 보내야 할 때
출력 확인 (Print)
현재 데이터를 그대로 콘솔에 출력하여 확인합니다. 데이터는 변경 없이 다음 노드로 전달됩니다.
이럴 때 사용하세요:
워크플로우 중간에 "이 시점에서 데이터가 어떻게 생겼는지" 확인하고 싶을 때
표현식이 예상대로 동작하는지 디버깅할 때
개발/테스트 용도로, 완성된 워크플로우에서는 제거해도 됩니다.
9.4 AI 노드
AI 모델을 활용하여 텍스트, 이미지, 음성, 영상을 생성하는 노드들입니다.
OpenAI
OpenAI의 GPT, DALL-E 등을 사용하여 텍스트 생성, 이미지 생성을 수행합니다.
사용 가능한 기능:
기능 | 설명 |
|---|---|
채팅 (Chat) | GPT-4 등으로 대화형 텍스트 생성 |
텍스트 생성 | 텍스트 완성 |
이미지 생성 | DALL-E로 이미지 생성 |
채팅 기능 주요 설정:
설정 | 설명 | 예시 |
|---|---|---|
모델 | 사용할 AI 모델 | gpt-4, gpt-3.5-turbo |
시스템 프롬프트 | AI의 역할/행동 지침 | "당신은 뉴스 요약 전문가입니다" |
사용자 메시지 | AI에게 보내는 요청 |
|
Temperature | 창의성 조절 (0=정확, 2=창의적) | 0.7 |
최대 토큰 | 응답 길이 제한 | 2000 |
응답 형식 | 텍스트 또는 JSON | text, json_object |
활용 예시:
뉴스 기사 → AI 요약
키워드 → AI 블로그 글 작성
상품 정보 → AI 마케팅 문구 생성
필요 인증: OpenAI API Key
Gemini 텍스트 생성 (GeminiTextGen)
Google의 Gemini 모델로 텍스트를 생성합니다.
주요 설정: 모델, 프롬프트, Temperature, 최대 출력 토큰
필요 인증: Gemini API Key
Gemini 음성 합성 (GeminiTTS)
Google Gemini 모델로 텍스트를 음성으로 변환합니다.
필요 인증: Gemini API Key
Grok AI (GrokXAi)
xAI의 Grok 모델로 텍스트 또는 이미지를 생성합니다.
필요 인증: Grok API Key
ElevenLabs 음성 합성
ElevenLabs API로 자연스러운 음성을 합성합니다.
주요 설정:
설정 | 설명 |
|---|---|
텍스트 | 음성으로 변환할 텍스트 |
음성 | 사용할 음성 종류 |
모델 | TTS 모델 |
출력: 음성 파일 (이후 S3 업로드, 영상 삽입 등에 활용 가능)
필요 인증: ElevenLabs API Key
Typecast AI 음성 합성
Typecast AI로 음성을 합성합니다.
필요 인증: Typecast API Key
Kling AI 영상 생성
Kling AI로 텍스트나 이미지를 기반으로 AI 영상을 생성합니다.
필요 인증: Kling API Key
Flux Kontext 이미지 생성
Flux Kontext 모델로 AI 이미지를 생성합니다.
필요 인증: Flux Kontext API Key
9.5 미디어 제작 노드
영상, 이미지, 자막 등 미디어 콘텐츠를 제작하는 노드들입니다.
영상 렌더링 (RenderVideo)
미리 만들어둔 영상 템플릿에 데이터를 넣어 영상을 생성합니다.
이럴 때 사용하세요:
YouTube 영상을 자동으로 대량 생성할 때
광고 영상의 텍스트/이미지만 바꿔서 여러 버전을 만들 때
주요 설정:
설정 | 설명 |
|---|---|
템플릿 ID | 사용할 영상 템플릿 |
변경 사항 | 템플릿에 넣을 텍스트, 이미지 URL 등 |
영상 렌더링은 메모리를 많이 사용합니다. 대용량 영상을 동시에 여러 개 처리할 때는 주의하세요.
Creatomate 디자인 렌더링
Creatomate의 디자인 템플릿으로 이미지나 영상을 렌더링합니다.
필요 인증: Creatomate API Key
9.6 검색/정보 수집 노드
웹에서 정보를 검색하고 수집하는 노드들입니다.
Brave Search 웹 검색
Brave Search API로 웹 검색을 수행합니다.
이럴 때 사용하세요:
AI 콘텐츠 생성 전 최신 정보를 수집할 때
특정 키워드의 검색 결과를 자동으로 모을 때
주요 설정:
설정 | 설명 |
|---|---|
검색어 | 검색할 키워드 (표현식 사용 가능) |
결과 수 | 가져올 검색 결과 개수 |
출력: 검색 결과 목록 (제목, URL, 설명)
필요 인증: Brave API Key
Tavily 리서치 검색
Tavily API로 심층 리서치 검색을 수행합니다.
이럴 때 사용하세요:
단순 웹 검색보다 깊이 있는 자료 조사가 필요할 때
AI 콘텐츠의 사실 확인(팩트 체크)을 하고 싶을 때
주요 설정:
설정 | 설명 |
|---|---|
검색어 | 검색할 키워드 |
검색 깊이 | 기본(빠름) 또는 심층(정확) |
필요 인증: Tavily API Key
9.7 파일 저장소 노드
파일을 클라우드 저장소에 업로드, 다운로드, 관리하는 노드들입니다.
AWS S3
AWS S3 버킷에서 파일을 업로드, 다운로드, 삭제, 목록 조회합니다.
이럴 때 사용하세요:
AI가 생성한 이미지/영상을 클라우드에 저장할 때
보고서 파일을 자동으로 아카이빙할 때
S3에 있는 파일 목록을 가져와 처리할 때
사용 가능한 기능:
기능 | 설명 |
|---|---|
업로드 | 파일을 S3에 저장 |
다운로드 | S3에서 파일 가져오기 |
삭제 | S3의 파일 삭제 |
목록 조회 | 버킷 안의 파일 목록 확인 |
업로드 시 설정:
설정 | 설명 |
|---|---|
버킷 이름 | S3 버킷명 |
파일 이름 | 저장할 파일명 |
바이너리 필드명 | 업로드할 파일 데이터가 담긴 필드 |
필요 인증: AWS Access Key ID, Secret Access Key, 리전
9.8 Google 서비스 노드
Google Workspace 및 Cloud 서비스를 워크플로우에서 직접 사용할 수 있습니다. 모든 Google 노드는 OAuth2 인증 또는 API 키가 필요합니다.
Google Sheets — 스프레드시트
Google Sheets에서 데이터를 읽고, 쓰고, 수정합니다.
이럴 때 사용하세요:
수집한 데이터를 스프레드시트에 자동 기록할 때
스프레드시트의 데이터를 읽어서 다른 작업에 활용할 때
보고서를 자동으로 갱신할 때
사용 가능한 기능:
기능 | 설명 |
|---|---|
읽기 | 시트에서 데이터 가져오기 |
행 추가 | 시트 맨 아래에 새 행 추가 |
행 수정 | 기존 행의 값 변경 |
행 삭제 | 특정 행 삭제 |
범위 지우기 | 지정한 범위의 데이터 삭제 |
주요 설정:
설정 | 설명 | 예시 |
|---|---|---|
스프레드시트 ID | 시트의 고유 식별자 | URL에서 확인 가능 |
시트 이름 | 탭 이름 | "Sheet1" |
셀 범위 | 읽기/쓰기 범위 | A1:D10 |
Gmail — 이메일
Gmail로 이메일을 전송하고 검색합니다.
사용 가능한 기능:
기능 | 설명 |
|---|---|
보내기 | 이메일 전송 (HTML 본문, 첨부파일 지원) |
검색 | 조건으로 이메일 검색 |
상세 조회 | 특정 이메일 내용 가져오기 |
라벨 추가 | 이메일에 라벨 지정 |
이메일 전송 설정:
설정 | 설명 |
|---|---|
수신자 | 받는 사람 이메일 (표현식 가능) |
제목 | 이메일 제목 (표현식 가능) |
본문 | 이메일 내용 (HTML 지원) |
첨부파일 | 이전 노드의 파일 데이터 첨부 |
YouTube — 영상 관리
YouTube에서 채널 정보 조회, 영상 목록 확인, 영상 업로드 등을 수행합니다.
이럴 때 사용하세요:
자동 생성한 영상을 YouTube에 업로드할 때
채널의 영상 목록이나 통계를 가져올 때
9.9 메시지 전송 노드
SMS, 이메일 등 메시지를 보내는 노드입니다.
Solapi — SMS/MMS 전송
Solapi API를 통해 SMS/MMS 문자 메시지를 전송합니다.
이럴 때 사용하세요:
주문 확인, 예약 알림 등을 문자로 보낼 때
워크플로우 처리 결과를 담당자에게 문자로 알릴 때
주요 설정:
설정 | 설명 | 예시 |
|---|---|---|
수신 번호 | 문자를 받을 전화번호 |
|
발신 번호 | 문자를 보내는 번호 | 등록된 발신 번호 |
내용 | 문자 메시지 내용 |
|
9.10 기타 노드
메모 (StickyNote)
워크플로우 캔버스에 메모를 남깁니다. 실행에는 아무런 영향을 주지 않습니다.
이럴 때 사용하세요:
워크플로우의 각 구간이 무슨 역할인지 설명을 달아둘 때
팀원에게 안내 사항을 남길 때
복잡한 워크플로우를 나중에 이해하기 쉽게 정리할 때
플레이스홀더 (ReplaceMe)
아직 결정되지 않은 노드 자리를 임시로 차지합니다. 데이터를 그대로 통과시킵니다.
이럴 때 사용하세요:
워크플로우의 전체 구조를 먼저 설계하고, 세부 노드는 나중에 결정할 때
10. 자주 쓰는 워크플로우 패턴
패턴 1: 수집 → 가공 → 전송
가장 기본적인 패턴입니다. 데이터를 수집하고, 가공한 뒤, 결과를 전송합니다.
[스케줄 트리거] → [뉴스 검색] → [AI 요약] → [이메일 전송]
활용 예: 매일 아침 업계 뉴스를 AI로 요약하여 팀에게 메일 발송
패턴 2: 조건 분기 처리
데이터의 조건에 따라 서로 다른 처리를 합니다.
┌→ 조건 충족 → [할인 적용] → [이메일]
[웹훅 트리거] → [If 조건]─┤
└→ 조건 미충족 → [일반 처리] → [SMS]
활용 예: 주문 금액에 따라 VIP 할인 적용 또는 일반 처리
패턴 3: 대량 반복 처리
여러 건의 데이터를 하나씩 순회하며 처리합니다.
┌───────────────────────┐
▼ │
[트리거] → [데이터 조회] → [반복] → "반복 중" → [개별 처리] ─┘
→ "반복 완료" → [결과 저장]
활용 예: 고객 100명에게 개인화된 이메일을 각각 발송
패턴 4: 다중 소스 병합
서로 다른 소스에서 데이터를 가져와 하나로 합칩니다.
[Google Sheets 조회] ─┐
[API 데이터 조회] ─┤→ [병합] → [분석/가공] → [보고서 저장]
[뉴스 수집] ─┘
활용 예: 여러 채널의 매출 데이터를 합쳐서 종합 보고서 생성
패턴 5: AI 콘텐츠 파이프라인
AI를 활용하여 콘텐츠를 자동으로 만들고 배포합니다.
[스케줄 트리거] → [웹 검색] → [AI 글 생성] → [AI 이미지 생성]
→ [Google Sheets 기록]
→ [이메일 발송]
활용 예: 매일 트렌드 키워드를 검색하고, AI로 블로그 글과 이미지를 만들어 관리 시트에 기록
패턴 6: YouTube 영상 자동 제작
스크립트 생성부터 영상 렌더링, 업로드까지 자동화합니다.
[트리거] → [AI 스크립트] → [음성 합성] → [자막 생성] → [영상 렌더링] → [YouTube 업로드]
활용 예: 매일 뉴스 요약 영상을 자동으로 만들어 업로드
11. 팁과 주의사항
워크플로우 설계 팁
작게 시작하세요 — 처음부터 복잡한 워크플로우를 만들지 말고, 노드 2~3개로 시작하여 점진적으로 확장하세요.
노드별로 테스트하세요 — 전체 실행 전에 각 노드를 개별 테스트하면 문제를 빨리 찾을 수 있습니다.
메모를 남기세요 — StickyNote로 각 구간의 목적을 적어두면 나중에 수정할 때 훨씬 편합니다.
에러 처리를 설정하세요 — 외부 API를 호출하는 노드에는 "에러 경로로 계속" 설정을 권장합니다. 하나의 에러로 전체가 멈추는 것을 방지합니다.
표현식 팁
기본 참조:
{{ $json.필드명 }}— 가장 많이 쓰는 형태입니다.빈 값 대비:
{{ $ifEmpty($json.필드명, '기본값') }}— 데이터가 없을 때 에러를 방지합니다.디버깅: Print 노드를 중간에 넣어서 데이터가 예상대로인지 확인하세요.
성능 관련 주의사항
대량 반복 시: LoopOverItems로 수백~수천 건을 처리할 때, Wait 노드를 넣어 외부 API의 호출 제한에 걸리지 않도록 하세요.
영상/이미지 처리: RenderVideo 등 미디어 노드는 메모리를 많이 사용합니다. 동시에 여러 영상을 처리하면 느려질 수 있습니다.
병합 시 "모든 조합" 주의: crossJoin 모드는 데이터 양이 조금만 많아도 결과가 기하급수적으로 늘어납니다 (10건 × 10건 = 100건, 100건 × 100건 = 10,000건).
문제 해결
증상 | 확인할 것 |
|---|---|
워크플로우가 실행되지 않음 | 트리거 노드가 있는지, 스케줄이 등록되었는지 확인 |
특정 노드에서 에러 발생 | 노드의 설정값과 인증 정보 확인, 표현식이 올바른지 확인 |
데이터가 비어서 넘어옴 | 이전 노드의 출력을 확인, 필드명 대소문자가 맞는지 확인 |
표현식 에러 |
|
외부 API 호출 실패 | 인증 정보 만료 여부 확인, API 서비스 상태 확인, 재시도 설정 |