
'삼성전자' 뉴스 수집 & 슬랙 전송 워크플로우 w/n8n
들어가며
n8n은 No-code/Low-code 자동화 플랫폼으로 다양한 서비스를 연결하여 워크플로우를 구성할 수 있습니다.
이 글에서는 n8n 입문 단계의 실습으로 '정해진 시간에 뉴스를 수집하고, 슬랙으로 전송하는 방법'을 소개합니다. 매일 아침 9시에 자동으로 '삼성전자' 뉴스를 수집하고, 슬랙으로 전송하는 n8n 워크플로우를 작업합니다. 실습 후, '삼성전자'뿐만 아니라 원하는 다른 키워드로 나만의 뉴스 자동 수집&슬랙 알림 워크플로우를 직접 구현할 수 있습니다.
*이 실습은 로컬 PC에서 실행되는 n8n을 기준으로 하며, PC가 켜져 있을 때만 자동화가 동작됩니다. 컴퓨터 전원 여부와 상관없이 늘 실행되는 워크플로우는 다음 포스팅에 이어 설명합니다.
현재 실습을 진행하는 환경은 다음과 같습니다. 또한, 이 글에서는 도커를 활용하여 n8n을 실행합니다.
- MacBook M2 Pro
- Docker Engine 28.0.4
- n8n 2.0.3
워크플로우 설계
본격적인 작업 전에, 우리가 필요한 작업을 정리하면 다음과 같습니다.

위의 과정을 순서대로 살펴보면 다음과 같습니다. 4개의 단계가 각각의 노드가 되고, 노드가 연결되어 워크플로우를 구성합니다.
1. 매일 아침 9시 실행 → Schedule Trigger 활용
이 워크플로우가 매일 아침 9시에 실행되도록 설정합니다.
2. "삼성전자" 뉴스 수집 → RSS Read 활용
구글 뉴스에서 ‘삼성전자’를 검색한 결과를 RSS 형식으로 수집합니다.
3. 전처리 → Code in JavaScript 활용
수집한 뉴스 중 상위 5개를 추출하고, 뉴스 제목을 누르면 기사로 이동할 수 있도록 링크를 포함한 텍스트 형태로 변환합니다.
4. 슬랙 메시지 전송 → HTTP Request 활용
슬랙 웹훅을 활용하여 메시지를 전송합니다.
슬랙 웹훅 준비
본격적인 워크플로우 작업 전에, 슬랙 메시지 전송을 위해 '슬랙 웹훅'이 필요합니다. '슬랙 웹훅'은 지정된 슬랙 채널로 메시지를 자동 전송할 수 있게 해주는 URL입니다. 슬랙 로그인 후 진행해 주세요:)
1. 슬랙 앱 목록을 확인할 수 있는 공식 링크로 접속합니다. 👉https://slack.com/apps
2. 브라우저에서 "Incoming Webhooks"를 검색 후, "수신 웹훅"을 클릭합니다.

3. "Slack에 추가" 버튼을 클릭합니다.

4. 메시지를 수신할 채널을 선택합니다.

5. Webhook URL을 복사합니다. 아래 워크플로우 작업 단계에 사용되므로 안전한 곳에 보관해 주세요. 해당 URL은 API Key와 동일한 민감 정보이므로 외부에 노출되지 않도록 유의해주세요!

n8n 실행
다음은 n8n 실행 단계입니다. 이 글에서는 도커를 활용하여 n8n을 실행하므로 도커 데스크톱이 꼭 실행 중이어야 합니다.
다음 코드를 터미널 창에서 실행합니다.
docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

에러 없이 실행되었다면, 다음과 같이 터미널에 출력된 링크(http://localhost:5678)를 확인할 수 있습니다. 해당 링크에서 n8n 워크플로우를 생성하고, 수정하고, 실행할 수 있습니다. 링크 접속 후, 아이디와 비밀번호를 입력하면 워크플로우 작업을 위한 준비는 모두 완료됐습니다.

워크플로우 생성
다음은 워크플로우 생성입니다. 설계 단계에서 확인했듯이 우리는 총 4개의 노드가 필요합니다. 각 노드를 차례대로 작업하며 워크플로우를 구성해 보겠습니다.

"Create Workflow"를 클릭하여 새로운 워크플로우를 생성합니다.

화면 상단에서 워크플로우 이름을 변경 후 저장합니다.

1. 첫 번째 노드: "매일 아침 9시에 실행"
첫 번째 노드는 "매일 아침 9시에 실행"하는 트리거를 설정해야 합니다. "Add first step.."를 클릭 후, 검색창에 "schedule"을 입력하여 "Schedule Trigger"를 선택합니다.
Schedule Trigger 노드는 워크플로우가 실행될 시간을 정하는 역할을 합니다. 특정 시간에 자동으로 작업을 시작할 수 있습니다.

매일 아침 9시에 실행할 계획이므로 다음과 같이 설정합니다. 박스 상단의 "Execute step"을 클릭하여 해당 노드를 테스트합니다.

2. 두 번째 노드: "삼성전자 구글 뉴스 RSS Feed 수집"
두 번째 노드는 "삼성전자 뉴스 수집"입니다. 검색창에 "RSS"를 입력하여 "RSS Read"를 선택합니다.
RSS Read 노드는 외부 뉴스 데이터를 n8n으로 가져오는 역할을 합니다. Google News RSS를 사용하면 별도의 API 키 없이 뉴스를 수집할 수 있습니다.

삼성전자 구글 뉴스 URL은 다음과 같습니다. 만약 다른 검색어로 변경한다면, URL에서 'q=삼성전자' 부분만 원하는 검색어로 변경하면 됩니다.
https://news.google.com/rss/search?q=삼성전자&hl=ko&gl=KR&ceid=KR:ko
하지만, 위의 URL에는 한글이 포함되어 있어 URL 인코딩으로 변환해야 합니다. 구글에 "URL 인코딩 변환"을 검색하여, 다음과 같이 변환합니다.

https://news.google.com/rss/search?q=%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90&hl=ko&gl=KR&ceid=KR:ko
파라미터에서 URL 입력 칸에 위의 URL을 입력 후, "Execute step"으로 해당 단계를 테스트합니다.

정상적으로 실행된다면, OUTPUT에 다음과 같은 결과를 확인할 수 있습니다.

3. 세 번째 노드: 전처리
세 번째 노드는 수집한 뉴스를 원하는 형식으로 전처리하는 단계입니다. 검색창에 "code"를 입력하여 다음과 같이 "Code in JavaScript"를 선택합니다.
Code 노드는 가져온 데이터를 원하는 형태로 가공하는 역할을 합니다. 여기서는 뉴스 목록에서 상위 5개만 추출하고, 슬랙에 보낼 메시지 형식으로 변환합니다.


JavaScript 입력 칸에 다음 코드를 그대로 복사-붙여 넣기 합니다.

const maxItems = 5; // 최신 뉴스 5개만 추출
const items = $input.all(); // RSS에서 들어온 모든 기사
const picked = items.slice(0, maxItems);
const lines = picked.map((it, idx) => {
const j = it.json || {};
const title = j.title || '';
const link = j.link || j.guid || '';
return `*${idx+1}.* <${link}|${title}>`;
});
const now = new Date().toLocaleString('ko-KR', { timeZone: 'Asia/Seoul' });
const message = `📬 오늘의 삼성전자 뉴스 (${now})\n` + (lines.length ? lines.join('\n') : '_관련 뉴스를 찾지 못했습니다._');
return [{ json: { message } }];
"Execute step"을 클릭하여 해당 노드를 테스트합니다. 정상적으로 실행된다면, OUTPUT에 다음과 같은 결과를 확인할 수 있습니다.

4. 마지막 노드: 슬랙 메시지 전송
마지막(네 번째) 노드는 슬랙 메시지 전송을 위한 단계입니다. 검색창에 "http request"를 입력 후, "HTTP Request"를 선택합니다.
HTTP Request 노드는 외부 서비스에 데이터를 전송하는 역할을 합니다. 여기서는 슬랙 웹훅 URL로 뉴스 메시지를 보내 슬랙 채널에 전송합니다.

파라미터를 다음과 같이 설정합니다.
- Method: POST
- URL: 위에서 준비한 슬랙 웹훅 Slack Webhook URL을 입력합니다.
- Send Body: ✅ 체크
- JSON/RAW Parameters: JSON 선택
- Body Parameters: { "text": "{{$json.message}}" }


"Execute step"을 클릭하여 해당 노드를 테스트합니다. 정상적으로 실행된다면, 다음과 같이 "ok"가 출력되고, 슬랙 메시지도 확인할 수 있습니다.


워크플로우 완성
완성된 워크플로우는 다음과 같습니다. 하단의 "Execute workflow"를 클릭하여 전체 워크플로우를 테스트합니다. 아무 이상이 없다면, 성공입니다!

화면 상단의 "Publish"를 클릭하면, 워크플로우가 활성화됩니다. 이제 매일 아침 9시에 '삼성전자' 뉴스를 슬랙으로 받을 수 있습니다.

하지만, 위의 과정은 로컬 환경에서 실행되는 자동화 워크플로우이므로 컴퓨터가 꺼지거나 절전 모드일 경우 워크플로우도 중지됩니다. 컴퓨터 종료 여부와 상관없이 늘 실행되는 자동화 워크플로우는 다음 포스팅에서 이어 설명하겠습니다:D
'개발' 카테고리의 다른 글
| [자바스크립트 입문 #6] 함수 선언과 호출 - function (0) | 2026.01.22 |
|---|---|
| [자바스크립트 입문 #5] 반복문 기초 - for, while (0) | 2025.12.08 |
| [바이브코딩] 윈도우 Windows 환경에서 Codex CLI 사용 방법 (2) | 2025.10.19 |
| [자바스크립트 입문 #4] 조건문 - if, else, else if (4) | 2025.10.13 |
| [개념] 쿠키 vs 캐시: 개념부터 차이까지 (2) | 2025.09.28 |