GODRICH

마케팅 담당자가 업계 뉴스를 놓치지 않는 뉴스 모니터링 자동화 9가지

n8n 은 화면에서 상자(노드)를 선으로 이어 여러 서비스를 자동으로 연결하는 노코드 도구입니다. 마케팅·홍보 담당자가 매일 업계 뉴스를 놓치지 않는 게 일인데도 여러 사이트를 돌아다니다 지쳐 뉴스 모니터링 자동화를 찾아보신다면, 이 아홉 가지가 RSS 로 뉴스를 모으고 거르고 표로

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

이 아홉 가지는 뉴스를 다루는 실제 업무 흐름을 그대로 따라 배치했습니다. 하나의 소스를 받는 법(01)에서 출발해 여러 소스를 합치는 두 가지(02 이어붙이기·03 나눠 세기)로 넘어가고, 필요한 것만 골라내는 두 가지(04 키워드·05 날짜)를 지나, 결과를 다듬는 두 가지(06 중복 제거·07 표 만들기)를 거쳐, 조건에 따라 갈래를 나누는 한 가지(08)를 지나, 마지막으로 이 전부를 실제로 매일 돌아가게 묶는 한 가지(09)로 마무리됩니다. 뉴스 모니터링을 손으로 하다가 자동화로 옮길 때도 보통 이 순서로 하나씩 늘려갑니다.

01RSS 기본 읽기

관심 있는 사이트를 매번 들어가 확인하는 대신, RSS Read 노드가 최신 글 목록을 그대로 받아오고 Set 노드가 제목·링크·발행일 세 가지만 남겨 정리합니다. 관심 블로그 모니터링, 자동화 실습 첫 단계처럼 가장 단순한 형태로 자동화를 시작할 때 이 조합부터 씁니다.

RSS ReadSet → title/link/pubDateV2 실행 확인
{
  "name": "Keep Fields",
  "type": "n8n-nodes-base.set",
  "typeVersion": 3.5,
  "parameters": {
    "mode": "manual",
    "assignments": {
      "assignments": [
        { "name": "title", "value": "={{ $json.title }}", "type": "string" },
        { "name": "link", "value": "={{ $json.link }}", "type": "string" },
        { "name": "pubDate", "value": "={{ $json.pubDate }}", "type": "string" }
      ]
    }
  }
}

02두 RSS 합쳐서 최신순 정렬

RSS Read 두 개가 서로 다른 사이트를 각각 읽고 Merge 노드가 append 모드로 두 흐름을 그대로 이어붙인 뒤 Sort 가 최신 글부터 줄 세웁니다. 여러 매체 뉴스 한 곳에서 보기, 경쟁사 블로그 모니터링처럼 소스가 둘 이상으로 늘어나는 순간부터 필요해집니다.

RSS Read ×2Merge appendSort desc → V2 실행 확인
{
  "name": "Merge Append",
  "type": "n8n-nodes-base.merge",
  "typeVersion": 3.2,
  "parameters": {
    "mode": "append",
    "numberInputs": 2
  }
}

03여러 피드 건수 요약

02번이 두 소스를 하나의 흐름으로 섞는다면 이번엔 Aggregate 노드 두 개가 소스별로 제목을 따로 배열에 모으고 Code 노드가 소스마다 건수와 대표 제목 3개를 담은 요약 객체를 만듭니다. 소스별 발행량 비교, 주간 리포트 재료로 쓸 때는 섞기보다 나눠 세는 이 형태가 낫습니다.

RSS Read ×2Aggregate ×2 → Merge by positionCode 요약 → V2 실행 확인
{
  "name": "Build Summary",
  "type": "n8n-nodes-base.code",
  "typeVersion": 2,
  "parameters": {
    "jsCode": "const bbc = $json.bbcTitles || [];\nconst ars = $json.arsTitles || [];\nconst summary = {\n  bbc: { count: bbc.length, titles: bbc.slice(0, 3) },\n  ars: { count: ars.length, titles: ars.slice(0, 3) }\n};\nreturn [{ json: { summary } }];"
  }
}

04키워드로 걸러 상위 N개만

Filter 노드가 제목에 "ai" 라는 낱말이 대소문자 구분 없이 들어간 글만 남기고 Limit 이 그중 앞 3개만 자릅니다. 관심 주제만 알림 받기, 노이즈 줄이기가 목적이라면 전체를 다 보내는 대신 이렇게 먼저 좁혀야 합니다.

Filter contains(대소문자 무시)Limit 3V2 실행 확인
{
  "conditions": {
    "options": { "caseSensitive": false, "version": 2 },
    "conditions": [
      {
        "leftValue": "={{ $json.title }}",
        "rightValue": "ai",
        "operator": { "type": "string", "operation": "contains" }
      }
    ],
    "combinator": "and"
  }
}

05최근 N일 안 글만 남기기

Filter 노드가 dateTime 조건의 after 연산자로 pubDate 를 현재 시각에서 3일 뺀 값과 비교해 최근 글만 남깁니다. 주간 정리에서 오래된 글 제외, 최신성 보장이 필요할 때 날짜만으로 거르는 이 방식을 씁니다.

Filter dateTime after$now.minus(days:3)V2 실행 확인
{
  "conditions": [
    {
      "leftValue": "={{ $json.pubDate }}",
      "rightValue": "={{ $now.minus({ days: 3 }) }}",
      "operator": { "type": "dateTime", "operation": "after" }
    }
  ],
  "combinator": "and"
}

06실행마다 새 글만 남기기

Remove Duplicates 의 Remove Items Processed in Previous Executions 오퍼레이션이 링크를 기준으로 이전 실행에서 이미 본 글을 걸러내고 Set 이 새 글에 isNew 표시를 답니다. 매일 같은 시간 실행해도 중복 알림 없이 새 글만 전달하고 싶을 때, 한 번 실행 안에서의 중복 제거로는 부족하고 실행과 실행 사이의 기억이 필요합니다.

Remove Duplicatesscope: workflowV2 실행 확인
{
  "name": "Remove Seen Links",
  "type": "n8n-nodes-base.removeDuplicates",
  "typeVersion": 2,
  "parameters": {
    "operation": "removeItemsSeenInPreviousExecutions",
    "logic": "removeItemsWithAlreadySeenKeyValues",
    "dedupeValue": "={{ $json.link }}",
    "options": { "scope": "workflow" }
  }
}

07표로 만드는 뉴스 다이제스트

Limit 이 앞 8개만 남긴 뒤 HTML 노드의 Convert to HTML Table 오퍼레이션이 그대로 표로 바꿉니다. 이메일 본문에 뉴스 표 넣기, 대시보드 위젯처럼 사람이 훑어보기 좋은 형태가 필요할 때 목록보다 표가 낫습니다.

Limit 8HTML convertToHtmlTableV2 실행 확인
{
  "name": "Build Table",
  "type": "n8n-nodes-base.html",
  "typeVersion": 1.2,
  "parameters": {
    "operation": "convertToHtmlTable",
    "options": {
      "capitalize": true,
      "caption": "Fox News latest headlines"
    }
  }
}

08키워드로 갈래 나누기

Switch 가 제목에 든 낱말로 ai·security(또는 breach)·그 외 세 갈래로 나누고 각 갈래의 Set 이 route 라벨을 붙인 뒤 Merge 가 다시 모읍니다. 주제별 채널로 자동 분류 발송, 알림 라우팅처럼 갈래가 셋 이상으로 늘어나면 IF 하나로는 감당이 안 됩니다.

Switch 3 routesfallbackOutput: extraV2 실행 확인
{
  "mode": "rules",
  "rules": {
    "values": [
      {
        "conditions": {
          "conditions": [
            { "leftValue": "={{ $json.title }}", "rightValue": "ai",
              "operator": { "type": "string", "operation": "contains" } }
          ]
        },
        "outputKey": "ai"
      }
    ]
  },
  "options": { "fallbackOutput": "extra", "renameFallbackOutput": "other" }
}

09매일 정해진 시각에 다이제스트 발송

Schedule 이 매일 08:00 에 깨어나고(Manual Trigger 로도 바로 테스트됩니다) RSS Read 가 최신 글을 가져와 Aggregate 가 제목·링크 배열로 모으면 Markdown 이 그 둘을 짝지어 digest 필드에 담습니다. 매일 아침 팀 채널에 뉴스 다이제스트, 개인 알림 봇으로 실제로 쓰려면 예약 실행과 수동 테스트가 같은 흐름 안에 있어야 합니다.

Schedule triggerAtHour 8 + ManualAggregate → MarkdownV2 실행 확인
{
  "name": "Build Digest",
  "type": "n8n-nodes-base.markdown",
  "typeVersion": 1,
  "parameters": {
    "mode": "markdownToHtml",
    "markdown": "={{ '# Daily Digest\\n\\n' + $json.title.map((t, i) => '- [' + t + '](' + $json.link[i] + ')').join('\\n') }}",
    "destinationKey": "digest"
  }
}

준비물

아홉 개 다 준비물 행이 "없음"인데도 표가 필요한 이유는 n8n 버전이 낮으면 typeVersion 오류가 날 수 있기 때문입니다. 등급은 V0(구조)·V1(가져오기 확인)·V2(실행까지 확인) 세 단계로 재는데, 이 편은 아홉 개 전부 V2 입니다.

항목 등급 준비물 n8n 버전
01 RSS 기본 읽기 V2 없음 2.38.5
02 두 RSS 합쳐서 최신순 정렬 V2 없음 2.38.5
03 여러 피드 건수 요약 V2 없음 2.38.5
04 키워드로 걸러 상위 N개만 V2 없음 2.38.5
05 최근 N일 안 글만 남기기 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 캔버스를 열어 두고 zip 안 JSON 파일 내용을 복사해 Ctrl/Cmd+V 로 붙여넣어도 되고, 캔버스 우측 상단 메뉴의 Import from File 로 파일 자체를 선택해도 됩니다. 서버에 직접 배포해 놓고 쓰는 경우라면 n8n import:workflow --input=파일.json 명령 하나로 끝납니다. 어느 쪽이든 들어온 뒤에는 좌측 상단의 실행 버튼을 눌러 곧바로 결과를 확인할 수 있습니다.

어디서 깨지는가

가장 조용히 사람을 속이는 함정은 06번에서 겪었습니다 — Set 노드에 "원래 필드도 같이 남기기"(Include Other Input Fields) 옵션을 켜려고 그 값을 Options 블록 안에 넣었더니, 실행은 성공(exit 0)했는데 title 필드만 조용히 사라지고 isNew 만 남았습니다. 실제로는 이 옵션이 Options 블록 안이 아니라 mode·assignments 와 같은 층인 노드 최상위 파라미터라, 잘못된 자리에 넣으면 n8n 이 그냥 기본값(false)으로 무시해버립니다. 압축 파일을 풀 때 묻는 암호는 xu26t3qn 이며, 풀고 나면 workflows/ 폴더 안에 항목 아홉 개의 JSON 이 각각 파일로 들어 있습니다. 06번의 Remove Duplicates 도 비슷하게 헷갈리기 쉬운데, 실행 사이의 기억(cross-execution scope)을 쓰다 보니 같은 워크플로를 테스트로 여러 번 돌릴수록 "새 글" 로 잡히는 항목이 줄어들어 결국 0건이 되고, 그러면 뒤에 연결된 Set 노드 자체가 아예 실행되지 않아 isNew 필드가 통째로 빠지는 현상도 겪었습니다.

FAQ

n8n cloud 에서도 되나요?

문제없습니다. 아홉 개 다 별도 계정 연결이나 서드파티 노드 설치 없이 표준 노드만으로 짜여 있어 Import 메뉴에 바로 붙습니다. 다만 09번 Schedule Trigger 가 실제로 매일 자동 실행되게 하려면 워크플로를 Active 상태로 바꿔 둬야 합니다.

내 n8n 버전이 다르면 어떻게 하나요?

버전 차이로 typeVersion 이 안 맞는다는 메시지가 뜨면, 같은 종류의 노드를 지금 쓰는 n8n 화면에서 직접 하나 만들어 export 파일을 열어 그 안의 숫자를 확인한 다음 그 값으로 바꿔 넣으면 됩니다. 이번 zip 의 아홉 개는 Node 24 위에서 도는 n8n 2.38.5 로 가져오기와 실행 둘 다 실제로 마쳤습니다.

자바스크립트를 몰라도 06번을 따라 만들 수 있나요?

충분히 가능합니다. 03번 하나만 Code 노드를 쓰고 나머지 여덟 개는 화면의 드롭다운과 입력창만으로 완성되기 때문입니다. 06번 역시 Remove Duplicates 노드에서 오퍼레이션과 로직을 마우스로 고르는 게 전부이고, 옵션별 의미는 n8n 공식 문서에서 더 자세히 볼 수 있습니다.

n8n 이 낯설다면 자동화 카테고리에 다른 예제들이 더 있고, 여기 올라오는 워크플로를 어떤 절차로 검증하는지는 소개 페이지에서 볼 수 있습니다.

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

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