한 줄 요약: RSS→Claude→텔레그램을 잇는 파이프라인을 완성하고, 메시지 포맷을 다듬고, 마지막에 “Schedule Trigger + Publish”로 사람 개입 없이 매일 오후 6시 자동 발송되게 만들었다.
이런 분께 도움이 돼요: n8n으로 AI 자동화를 만들고 있는데, “일단 버튼 눌러서 실행되는 것”에서 “매일 저절로 도는 것”으로 넘어가는 마지막 단계가 막막한 분.
Before — 오늘 아침까지는
RSS Read → Aggregate → Claude(Basic LLM Chain)까지는 며칠 전에 연결해서, 뉴스 기사에서 키워드·설명·사례를 뽑아내는 것까진 성공한 상태였다. 하지만 그 결과를 볼 수 있는 곳은 n8n 화면 안뿐이었고, 텔레그램으로는 아무것도 안 왔다. 게다가 “Execute workflow” 버튼을 직접 눌러야만 움직였다 — 자동화라고 부르기엔 사람 손이 계속 필요했다.
어떻게 했나
1. 만들기 전에 오픈소스부터 확인
바로 만들지 않고 먼저 물어봤다:
지금 만들려는 걸 직접 만들기 전에 확인하고 싶어.
이미 만들어져 있는 게(오픈소스) 있는지 최신 기준으로 찾아봐줘.
있으면 뭐가 있는지, 내 프로젝트에 쓸 만한지 알려줘.
n8n에 이미 공식 내장된 Telegram 노드가 있다는 걸 확인했고, RSS+AI+텔레그램 완성형 템플릿도 여러 개 있었지만, 이 프로젝트만의 섹터 분류·위키 자동 저장 기능은 어디에도 없어서 템플릿을 통으로 가져오지 않고 지금 워크플로우에 이어붙이기로 했다.
2. Telegram 노드 연결
Basic LLM Chain 뒤에 Telegram 노드를 추가하고 Resource: Message / Operation: Send Message로 설정했다. Credential(봇 토큰)과 Chat ID를 넣은 뒤, Text 칸은 타이핑하지 않고 왼쪽 INPUT 패널에 있던 text 필드를 그대로 드래그해서 연결했다 — 그러면 자동으로 {{ $json.text }} 표현식이 채워진다.
Execute step을 눌렀더니 실제로 텔레그램에 메시지가 도착했다. 첫 성공이었다.
3. 막힘 → 해결: 링크가 없다
메시지 포맷을 PRD에 정했던 대로(🔋 이모지 + 원문 링크) 다듬으려는데, 문제가 있었다. 지금 프롬프트는 기사 제목만 LLM에게 넘기고 있어서, 애초에 링크 정보 자체가 없었다:
기사 목록:
{{ $json.title.join('\n') }}
해결: Aggregate 노드에 link 필드를 하나 더 등록해서 title 배열과 나란히 link 배열도 함께 나오게 했다. 그다음 프롬프트의 기사 목록 부분을 “제목과 링크를 한 줄씩 짝지어 보여주는” 표현식으로 바꿨다:
기사 목록:
{{ $json.title.map((t, i) => `${i}. ${t} | ${$json.link[i]}`).join('\n') }}
그리고 프롬프트 출력 형식에 이모지와 원문 줄을 추가했다:
🔋 배터리
키워드: (핵심 단어 하나)
설명: (한 문장 설명)
사례: (실제 회사나 사례 한 문장)
원문: (고른 기사의 링크를 그대로)
4. 막힘 → 해결: 줄바꿈이 글자로 나옴
다시 실행해보니 내용은 다 맞는데, 텔레그램에 \n이라는 글자가 그대로 찍혀서 왔다. 진짜 줄바꿈이 아니라 Claude가 줄바꿈 자리에 문자 그대로 \n을 써버린 것. Telegram 노드의 Text 칸 표현식을 아래처럼 바꿔서, 글자로 된 \n을 실제 줄바꿈으로 바꾸도록 마지막에 한 번 더 정리했다:
{{ $json.text.replace(/\\n/g, '\n') }}
5. 첨부 문구 끄기 + 완전 자동화
Telegram 노드의 Additional Fields에서 “Append n8n Attribution”을 추가하고 꺼서, 메시지 밑에 자동으로 붙던 This message was sent automatically with n8n 문구를 없앴다.
마지막으로, 수동으로 눌러야 했던 “When clicking ‘Execute workflow’” 트리거 노드를 지우고, 그 자리에 Schedule Trigger를 넣어 매일(Days) 오후 6시(18:00)로 설정한 뒤 RSS Read 노드에 연결했다. 그리고 화면에 뜬 안내문(“이 스케줄은 Publish해야 실제로 작동합니다”)대로 Publish 버튼을 눌러 활성화했다.
After — 결과
- 텔레그램에 도착한 실제 메시지:
🔋 배터리 키워드: 냉각 설명: 40도 온수로 데이터센터를 냉각하는 혁신적인 기술이 처음 등장했다. 사례: 고효율 온수 냉각 시스템을 적용한 데이터센터가 구축되었다. 원문: https://www.hankyung.com/article/2026080446941 - 버튼을 눌러야만 돌아가던 워크플로우가 → 사람 개입 없이 매일 오후 6시 자동 발송되는 파이프라인이 됐다.
- (Tip: 여기에 실제 텔레그램 메시지 캡처를 넣으면 좋아요)
배운 것 / 재사용 자산
- 재사용 팁 1: n8n Aggregate 노드에 필드를 여러 개 등록하면 각각 배열로 나오는데, 같은 인덱스끼리는 순서가 유지된다 —
title[i]와link[i]처럼 짝지어 쓸 수 있다. - 재사용 팁 2: LLM이 줄바꿈을 실제 줄바꿈 대신 문자 그대로
\n으로 답할 때가 있다. 프롬프트를 붙잡고 씨름하기보다, 마지막에.replace(/\\n/g, '\n')한 줄로 정리하는 게 빠르다. - 알아둘 점: n8n에서 “저장”과 “Publish”는 다르다. Schedule Trigger 같은 자동 트리거는 Publish를 해야 실제로 작동한다.
- 한계: 지금 쓰는 RSS 피드가 배터리 전용이 아니라 IT 전체 뉴스라서, 진짜 배터리 기사가 없는 날은 AI가 제일 비슷한 걸 억지로 골라 답한다 (오늘도 데이터센터 냉각 기사가 배터리로 뽑혔다). 다음 할 일로 남겨뒀다.