GODRICH

n8n 워크플로우 예제 9종 — 계정 없이 바로 돌아가는 JSON

n8n은 코드를 안 짜고도 여러 서비스를 이어 붙여 일을 자동으로 시키는 도구입니다. AI로 뭔가 만들어보려다 이 이름을 처음 접한 분들을 위해, 계정도 API 키도 없이 그대로 가져와 돌려볼 수 있는 n8n 워크플로우 예제 9개를 정리했습니다.

자동 재생 · 눌러서 해당 항목으로 · 전부 한 zip

아홉 개는 일이 흘러가는 순서대로 놓았습니다. 먼저 데이터를 받는 세 가지(01 RSS·02 공개 API·03 웹훅)로 시작해, 정해진 시각에 돌리는 두 가지(04 주간 리포트·05 배치 반복)로 넘어가고, 여러 데이터를 합치고 고르는 세 가지(06 병합·07 정리·08 추출)를 지나, 마지막으로 조건에 따라 갈래를 나누는 한 가지(09 라우팅)로 끝납니다. 실제 자동화도 대개 이 순서로 커집니다 — 받고, 주기적으로 돌리고, 합치고 걸러서, 상황에 맞게 나눕니다.

01RSS 하루 요약

Schedule 트리거가 아침 7시마다 깨어나고(Manual Trigger 로도 바로 테스트됩니다) RSS Read 가 Hacker News 프론트페이지를 읽습니다. Limit 이 앞 10개만 남기고, Code 노드가 제목과 링크를 마크다운 리스트 하나로 묶어 digest 필드에 담습니다. 팀 아침 브리핑을 자동으로 돌리거나 관심 블로그 모아 보기용 리스트를 매일 받아보고 싶을 때 쓰는 조합입니다.

Schedule + ManualRSS Read → Limit → CodeV2 실행 확인
{
  "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 입니다. 대시보드 위젯 하나를 채우거나 이메일 본문 표로 그대로 붙여 넣을 때 쓰기 좋습니다.

HTTP RequestSet → HTMLV2 실행 확인
{
  "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 이 있어야 하기 때문입니다. 폼 수신 엔드포인트나 외부 서비스 콜백을 받는 자리에 그대로 놓고 쓰는 뼈대입니다.

WebhookIF → RespondV1 가져오기 확인
{
  "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 를 자동으로 뽑거나 운영 요약 문서를 매주 월요일 아침에 미리 받아두고 싶을 때 쓰는 뼈대입니다.

Schedule triggerAtHour 9Aggregate → MarkdownV2 실행 확인
{
  "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 호출 제한 대응이 필요한 경우에 이 형태를 그대로 쓰면 됩니다.

Loop Over Items 5AggregateV2 실행 확인
{
  "name": "Loop Over Items",
  "type": "n8n-nodes-base.splitInBatches",
  "typeVersion": 3,
  "parameters": {
    "batchSize": 5,
    "options": {}
  }
}

06두 소스 합치기

HTTP 두 개가 사용자와 글을 따로 가져오면 Merge 가 사용자의 id 와 글의 userId 를 기준으로 짝을 맞춰 Keep Matches 모드로 한 줄에 붙입니다. 필드 이름이 다른 두 소스를 합칠 때 쓰는 그대로입니다. 고객 데이터와 주문 결합이 필요하거나 스프레드시트 두 장을 하나로 잇는 두 시트 조인 작업에 그대로 쓸 수 있습니다.

HTTP ×2Merge combine by fieldV2 실행 확인
{
  "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 가 높은 점수부터 세웁니다. 데이터 정리에서 가장 자주 겹치는 세 동작을 한 줄에 놓았습니다. 리드 정리부터 랭킹 표를 만드는 일까지, 신청자 명단을 손으로 거르지 않고 자동으로 추릴 때 씁니다.

Remove DuplicatesFilter ≥60 → SortV2 실행 확인
{
  "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 이 정리합니다. 로그인이 필요하거나 개인정보가 있는 페이지에는 이 방식을 쓰지 않습니다. 공지 감시처럼 페이지가 바뀌는지 주기적으로 확인하거나 공개 목록 수집이 필요할 때 이 방식을 씁니다.

HTTP → HTML extractCSS 선택자V2 실행 확인
{
  "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 갈래입니다. 등급별 처리 기준을 정해두고 담당자 배정까지 자동으로 나누고 싶을 때 쓰는 형태입니다.

Switch 3 routesSet ×3 → MergeV2 실행 확인
{
  "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 을 처음 만져본다면 자동화 기둥 글 모음에서 이어지는 예제를 볼 수 있고, 이 사이트가 어떤 기준으로 검증하는지는 소개 페이지에 적어 두었습니다.

압축 비밀번호를 입력하세요

비밀번호는 이 글 본문 안에 있습니다. 읽다 보면 나옵니다.