n8n 워크플로우 예제 9종 — 계정 없이 바로 돌아가는 JSON
n8n은 코드를 안 짜고도 여러 서비스를 이어 붙여 일을 자동으로 시키는 도구입니다. AI로 뭔가 만들어보려다 이 이름을 처음 접한 분들을 위해, 계정도 API 키도 없이 그대로 가져와 돌려볼 수 있는 n8n 워크플로우 예제 9개를 정리했습니다.
자동 재생 · 눌러서 해당 항목으로 · 전부 한 zip
- 01 RSS 하루 요약
- 02 공개 API → 표
- 03 웹훅 검증 후 응답
- 04 주간 리포트 뼈대
- 05 묶음으로 돌리기
- 06 두 소스 합치기
- 07 중복 제거·걸러내기·정렬
- 08 공개 페이지 제목 뽑기
- 09 조건별 갈림길
아홉 개는 일이 흘러가는 순서대로 놓았습니다. 먼저 데이터를 받는 세 가지(01 RSS·02 공개 API·03 웹훅)로 시작해, 정해진 시각에 돌리는 두 가지(04 주간 리포트·05 배치 반복)로 넘어가고, 여러 데이터를 합치고 고르는 세 가지(06 병합·07 정리·08 추출)를 지나, 마지막으로 조건에 따라 갈래를 나누는 한 가지(09 라우팅)로 끝납니다. 실제 자동화도 대개 이 순서로 커집니다 — 받고, 주기적으로 돌리고, 합치고 걸러서, 상황에 맞게 나눕니다.
01RSS 하루 요약
Schedule 트리거가 아침 7시마다 깨어나고(Manual Trigger 로도 바로 테스트됩니다) RSS Read 가 Hacker News 프론트페이지를 읽습니다. Limit 이 앞 10개만 남기고, Code 노드가 제목과 링크를 마크다운 리스트 하나로 묶어 digest 필드에 담습니다. 팀 아침 브리핑을 자동으로 돌리거나 관심 블로그 모아 보기용 리스트를 매일 받아보고 싶을 때 쓰는 조합입니다.
{
"name": "Build Digest",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"parameters": {
"jsCode": "const lines = $input.all().map(item => `- [${item.json.title}](${item.json.link})`);\nconst digest = '# Daily Digest\\n\\n' + lines.join('\\n');\nreturn [{ json: { digest } }];"
}
}
02공개 API → 표
HTTP Request 가 키 없는 open-meteo 날씨 API 를 부르면 Set 이 온도·풍속·시각 세 필드만 남기고 HTML 노드의 Convert to HTML Table 이 그걸 표로 바꿉니다. 이 노드는 출력 필드 이름이 html 이 아니라 table 입니다. 대시보드 위젯 하나를 채우거나 이메일 본문 표로 그대로 붙여 넣을 때 쓰기 좋습니다.
{
"name": "Build Table",
"type": "n8n-nodes-base.html",
"typeVersion": 1.2,
"parameters": {
"operation": "convertToHtmlTable",
"options": {
"capitalize": true,
"caption": "Seoul current weather"
}
}
}
03웹훅 검증 후 응답
Webhook 이 POST 를 받으면 IF 가 email·name 두 필드가 비어있지 않은지 검사해 true 면 Respond to Webhook 이 200 을, false 면 400 을 돌려줍니다. 이 항목은 가져오기까지만 확인했습니다 — 실행하려면 살아있는 웹훅 URL 이 있어야 하기 때문입니다. 폼 수신 엔드포인트나 외부 서비스 콜백을 받는 자리에 그대로 놓고 쓰는 뼈대입니다.
{
"conditions": [
{
"id": "c1",
"leftValue": "={{ $json.body.email }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
}
},
{
"id": "c2",
"leftValue": "={{ $json.body.name }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
}
}
],
"combinator": "and"
}
04주간 리포트 뼈대
Schedule 이 월요일 09:00 에 깨어나 HTTP 로 jsonplaceholder 의 글 목록을 가져옵니다. Aggregate 가 제목과 개수를 배열로 모으고 Markdown 노드가 그 배열로 리포트 문장을 만들어 report 필드에 넣으며, 시간대는 워크플로 설정에서 잡습니다. 주간 KPI 를 자동으로 뽑거나 운영 요약 문서를 매주 월요일 아침에 미리 받아두고 싶을 때 쓰는 뼈대입니다.
{
"name": "Build Report",
"type": "n8n-nodes-base.markdown",
"typeVersion": 1,
"parameters": {
"mode": "markdownToHtml",
"markdown": "={{ '# Weekly Report\\n\\n' + $json.postId.length + ' posts fetched this week.\\n\\n- ' + $json.title.slice(0, 5).join('\\n- ') }}",
"destinationKey": "report",
"options": {}
}
}
05묶음으로 돌리기
Code 가 25건을 만들면 Loop Over Items 가 5건씩 끊어 돌립니다. 매 배치마다 Set 이 배치 번호와 순번을 붙이고 다시 Loop Over Items 로 돌아가며(이 되돌림 연결이 없으면 한 번만 돌고 멈춥니다), 다 돌면 Aggregate 가 다시 하나로 합칩니다. 대량 발송처럼 건수가 많은 작업이나 API 호출 제한 대응이 필요한 경우에 이 형태를 그대로 쓰면 됩니다.
{
"name": "Loop Over Items",
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3,
"parameters": {
"batchSize": 5,
"options": {}
}
}
06두 소스 합치기
HTTP 두 개가 사용자와 글을 따로 가져오면 Merge 가 사용자의 id 와 글의 userId 를 기준으로 짝을 맞춰 Keep Matches 모드로 한 줄에 붙입니다. 필드 이름이 다른 두 소스를 합칠 때 쓰는 그대로입니다. 고객 데이터와 주문 결합이 필요하거나 스프레드시트 두 장을 하나로 잇는 두 시트 조인 작업에 그대로 쓸 수 있습니다.
{
"name": "Merge By User",
"type": "n8n-nodes-base.merge",
"typeVersion": 3.2,
"parameters": {
"mode": "combine",
"combineBy": "combineByFields",
"advanced": true,
"mergeByFields": {
"values": [
{
"field1": "id",
"field2": "userId"
}
]
},
"joinMode": "keepMatches",
"outputDataFrom": "both",
"options": {}
}
}
07중복 제거·걸러내기·정렬
Remove Duplicates 가 이메일 기준으로 중복을 지우고, Filter 가 점수 60 이상만 남기고, Sort 가 높은 점수부터 세웁니다. 데이터 정리에서 가장 자주 겹치는 세 동작을 한 줄에 놓았습니다. 리드 정리부터 랭킹 표를 만드는 일까지, 신청자 명단을 손으로 거르지 않고 자동으로 추릴 때 씁니다.
{
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "c1",
"leftValue": "={{ $json.score }}",
"rightValue": 60,
"operator": {
"type": "number",
"operation": "gte"
}
}
],
"combinator": "and"
},
"options": {}
}
08공개 페이지 제목 뽑기
HTTP 가 robots 가 허용하는 Hacker News 페이지를 텍스트로 받으면 HTML 노드가 .titleline a 선택자로 제목과 링크만 뽑고 Set 이 정리합니다. 로그인이 필요하거나 개인정보가 있는 페이지에는 이 방식을 쓰지 않습니다. 공지 감시처럼 페이지가 바뀌는지 주기적으로 확인하거나 공개 목록 수집이 필요할 때 이 방식을 씁니다.
{
"operation": "extractHtmlContent",
"sourceData": "json",
"dataPropertyName": "data",
"extractionValues": {
"values": [
{
"key": "title",
"cssSelector": ".titleline a",
"returnValue": "text",
"returnArray": true
},
{
"key": "link",
"cssSelector": ".titleline a",
"returnValue": "attribute",
"attribute": "href",
"returnArray": true
}
]
},
"options": {}
}
09조건별 갈림길
Code 가 주문 6건을 만들면 Switch 가 금액대로 세 갈래(50 미만·50~150·150 이상)로 나누고, 각 갈래의 Set 이 route 라벨을 붙인 뒤 Merge 가 다시 모읍니다. IF 가 두 갈래라면 Switch 는 이렇게 N 갈래입니다. 등급별 처리 기준을 정해두고 담당자 배정까지 자동으로 나누고 싶을 때 쓰는 형태입니다.
{
"mode": "rules",
"rules": {
"values": [
{
"conditions": {
"conditions": [
{
"id": "r1",
"leftValue": "={{ $json.amount }}",
"rightValue": 50,
"operator": {
"type": "number",
"operation": "lt"
}
}
],
"combinator": "and"
},
"outputKey": "small"
}
]
}
}
준비물 — 계정·권한·버전
아홉 개 다 준비물 행이 "없음"인데도 표가 필요한 이유는 등급과 n8n 버전이 항목마다 갈리기 때문입니다. 등급은 V0(구조)·V1(가져오기 확인)·V2(실행까지 확인) 세 단계로 재는데, 이 편은 03 만 V1 이고 나머지 여덟은 전부 V2 입니다.
| 항목 | 등급 | 준비물 | n8n 버전 |
|---|---|---|---|
| 01 RSS 하루 요약 | V2 | 없음 | 2.38.5 |
| 02 공개 API → 표 | V2 | 없음 | 2.38.5 |
| 03 웹훅 검증 후 응답 | V1 (가져오기까지 확인, 실행은 당신의 웹훅 URL 로) | 없음 | 2.38.5 |
| 04 주간 리포트 뼈대 | V2 | 없음 | 2.38.5 |
| 05 묶음으로 돌리기 | V2 | 없음 | 2.38.5 |
| 06 두 소스 합치기 | V2 | 없음 | 2.38.5 |
| 07 중복 제거·걸러내기·정렬 | V2 | 없음 | 2.38.5 |
| 08 공개 페이지 제목 뽑기 | V2 | 없음 | 2.38.5 |
| 09 조건별 갈림길 | V2 | 없음 | 2.38.5 |
가져오는 법은 세 가지입니다. n8n 캔버스에서 Ctrl/Cmd+V 로 JSON 텍스트를 그대로 붙여넣거나, 캔버스 메뉴의 Import from File 로 zip 안 파일을 고르거나, n8n CLI 라면 n8n import:workflow --input=파일.json 한 줄이면 됩니다. 가져온 뒤에는 캔버스 왼쪽 위 Test workflow 버튼(또는 Manual Trigger 노드의 재생 아이콘)을 눌러 그대로 실행해보면 됩니다. n8n 버전이 이 표보다 낮으면 typeVersion 오류가 나는데, 그때는 아래 함정 문단을 봅니다.
어디서 깨지는가 — 함정 하나
가장 많이 헷갈리는 지점은 노드 출력 필드 이름을 짐작하는 것입니다 — 02 항목의 HTML 노드는 얼핏 "html" 필드를 낼 것 같지만 Convert to HTML Table 오퍼레이션의 실제 출력 키는 table 이고, 이걸 실측하지 않고 짐작대로 썼다면 실행은 되는데 기대하던 필드가 없어서 다음 노드가 또 깨집니다. 이 zip 을 열 때 쓰는 비번은 jj9hgmc4 이고, 압축을 풀면 workflows/ 안에 아홉 개 JSON 이 그대로 들어 있습니다. typeVersion 도 같은 이유로 문제가 됩니다 — 짐작해서 적으면 오래된 n8n 에서 "typeVersion not supported" 로 돌아오므로, 설치된 n8n 이 실제로 지원하는 값을 확인하고 쓰는 습관이 낫습니다.
FAQ
n8n cloud 에서도 되나요?
됩니다. 이 워크플로들은 커뮤니티 노드나 계정이 필요한 자격증명을 쓰지 않아서 가져오기(Import) 메뉴로 그대로 올라갑니다. 03 만 실행하려면 n8n cloud 가 발급하는 실제 웹훅 URL 로 요청을 보내야 합니다.
내 n8n 버전이 다르면 어떻게 하나요?
typeVersion 오류가 나면 그 노드를 캔버스에서 새로 하나 만들어 export 해서 값을 확인한 뒤 낮춰 쓰면 됩니다. 이 zip 은 n8n 2.38.5(Node 24) 기준으로 가져오기·실행을 전부 확인했습니다.
키가 필요한 노드를 붙이려면?
HTTP Request 노드의 Authentication 옵션에서 자격증명을 추가하거나, 헤더에 {{ $env.API_KEY }} 같은 표현식을 넣어 환경변수로 관리하면 됩니다. 키를 워크플로 JSON 안에 직접 적어 공유하지 않는 게 n8n 공식 문서가 권하는 방식입니다.
n8n 을 처음 만져본다면 자동화 기둥 글 모음에서 이어지는 예제를 볼 수 있고, 이 사이트가 어떤 기준으로 검증하는지는 소개 페이지에 적어 두었습니다.