← 프로젝트 목록
완성

반도체·배터리·AI 뉴스 키워드 요약봇

매일 3번 반도체·배터리·AI 뉴스에서 공통 키워드를 뽑아 텔레그램으로 보내고, 학습위키 용어 사전에 자동으로 쌓아주는 봇

시작 2026-07-25 · #n8n #텔레그램 #RSS #Claude API #GitHub API #GCP

지금 상태 (2026-09-03 기준) — PRD에서 정한 MVP 4개 항목이 전부 작동 중입니다. 구글 클라우드 무료 VM에 n8n을 직접 설치해서, 제 컴퓨터가 꺼져 있어도 하루 3번 알아서 돕니다.

9월 3일에 근거 기사 링크가 엉뚱한 기사를 가리키던 버그를 잡고, 텔레그램·위키가 쓰던 LLM 노드를 하나로 합쳤습니다. 자세한 내용은 링크 88개 전수 검증 사례글에 정리했습니다.

무엇을

매일 세 번(9시·12시·18시), 반도체·배터리·AI 세 섹터의 뉴스를 훑어서 그날 공통으로 뜨는 키워드를 뽑고, 설명과 실제 사례를 붙여 텔레그램으로 보내주는 봇입니다. 같은 키워드가 동시에 이 사이트의 학습위키 용어 사전에도 자동으로 저장돼서, 쓰면 쓸수록 저만의 반도체·배터리·AI 용어 사전이 자랍니다.

의료기기 업계에서 반도체·배터리·AI 분야로 이직을 준비하고 있는데, 이 분야 뉴스는 양이 너무 많아서 하나하나 다 읽고 분석할 시간이 없습니다. 그런데 여러 기사를 보면 그날그날 공통으로 뜨는 키워드가 있습니다 (예: 배터리 뉴스면 “전고체 배터리”). 이 키워드만 잡아 부연 설명과 사례를 받으면, 짧은 시간에 트렌드를 따라갈 수 있습니다. 지식도 쌓고, 이직 면접·포트폴리오에서 “제가 만들어 쓰고 있습니다”라고 보여줄 수도 있습니다.

지금 어떻게 돌아가나 (2026-09-03)

전체 흐름

n8n 워크플로 하나로 돌아갑니다. 기사 수집부터 Claude 호출까지 하나로 공유하고, 그 결과를 텔레그램 가지위키 저장 가지가 나눠 씁니다.

Schedule Trigger (매일 9시·12시·18시)

RSS Read × 3  (세 매체 동시 수집)

Merge (Append, 3 inputs)

Remove Duplicates (기사 link 기준, 지난 실행에서 보낸 건 제외)

Aggregate (title · link 두 배열로 묶기)

Wiki_LLM (Claude, JSON 출력 — 섹터별 용어·유형·설명·사례·기사번호)
   ├─→ [위키 가지] Code(섹터 분리 + 번호→링크 조회)
   │        → GitHub API GET (현재 문서+sha 읽기)
   │        → Code (기존 용어면 동향 갱신, 새 용어면 섹션 추가)
   │        → GitHub API PUT (커밋)
   └─→ [텔레그램 가지] Code(문장 조립 + 번호→링크 조회) → Telegram 발송

처음엔 텔레그램용·위키용 LLM 노드를 따로 뒀는데, 같은 기사 목록을 두 번 물어보는 낭비였습니다. 게다가 두 번 물으니 텔레그램과 위키에 서로 다른 키워드가 뜰 수 있었습니다. 9월 3일에 하나로 합쳐서 Claude 호출이 하루 6번 → 3번으로 절반이 됐고, 두 곳이 항상 같은 키워드를 말하게 됐습니다.

RSS 소스 (3개, 실제 작동 확인 완료)

매체피드 URL가져오는 건수역할
ZDNet Koreahttps://feeds.feedburner.com/zdkorea30IT 전반·보안·AI
한국경제 (IT·과학)https://www.hankyung.com/feed/it50산업·기업 동향
디일렉 (THE ELEC)https://www.thelec.kr/rss/allArticle.xml50반도체·배터리 전문

세 피드 다 반도체/배터리/AI로 미리 나뉘어 있지 않아서, Claude가 기사 내용을 보고 섹터를 분류합니다. 디일렉을 넣은 뒤로 “배터리 섹터에 기사가 없습니다”가 뜨던 문제가 해결됐습니다.

텔레그램 메시지 포맷 (섹터별로 3블록 반복)

🔋 배터리
키워드: 전고체 배터리
설명: 액체 전해질 대신 고체를 써서 화재 위험을 줄인 배터리
사례: 삼성SDI, 2027년 양산 목표 발표
원문: [기사 링크]

이 메시지는 Claude가 직접 쓰는 게 아니라, Claude가 낸 JSON을 Code 노드가 문장으로 조립합니다. 그래야 링크를 프로그램이 붙일 수 있습니다(바로 아래 참고).

원문 링크는 AI가 쓰지 않습니다

처음엔 Claude에게 기사 목록을 제목 | 링크 형태로 보여주고 “고른 기사의 링크를 그대로 써라”고 시켰습니다. 그런데 링크가 엉뚱한 기사를 가리키는 일이 계속 생겼습니다. 130줄짜리 목록에서 비슷하게 생긴 URL을 잘못 베낀 겁니다.

지금은 이렇게 바꿨습니다.

  1. 프롬프트에 링크를 아예 안 보여줍니다. [0] 기사 제목 처럼 번호만 붙여서 줍니다.
  2. Claude는 기사번호와 기사제목만 답합니다. (URL을 쓰지 말라고 명시)
  3. Code 노드가 Aggregate의 원본 배열에서 그 번호의 진짜 링크를 꺼내 붙입니다.

번호가 한 칸 밀려도 제목으로 다시 찾는 안전망을 3단으로 뒀고, 그래도 못 찾으면 그 섹터는 저장하지 않습니다. 틀린 링크를 남기느니 하루 건너뛰는 쪽을 택했습니다.

학습위키 자동 저장

n8n이 GitHub Contents API로 이 사이트 저장소에 직접 커밋합니다. 섹터마다 문서 한 개씩, 총 3개가 계속 자랍니다.

용어 하나가 저장되는 형태는 이렇습니다.

커밋이 올라가면 Vercel이 자동으로 재배포해서, 몇 분 안에 이 사이트에 반영됩니다.

실행 환경

구글 클라우드(GCP) 무료 VM에 n8n을 직접 설치(셀프호스팅)해서 씁니다.

항목내용
OSDebian 13
설치 방식Docker (n8nio/n8n, 포트 5678, --restart unless-stopped)
시간대Asia/Seoul
접근 제어방화벽에서 제 IP만 허용
LLMClaude API (Anthropic Chat Model 노드)

메모리가 1GB뿐이라 n8n이 조용히 죽는 문제가 있었는데, 스왑 1GB를 붙여서 해결했습니다. docker psUp으로 멀쩡해 보이는데 접속만 안 되는 증상이라 원인 찾는 데 제일 오래 걸렸습니다.

발송 스케줄

매일 9시 · 12시 · 18시 하루 3회 (0 9,12,18 * * *). PRD 원안은 오후 6시 1회였지만, 위키 저장이 붙고 나니 촘촘한 쪽이 낫다고 판단해서 3회로 유지하고 있습니다.

기능 요구사항 (MVP) — 4/4 완료

원안(PRD)에서 바뀐 것

만들면서 실제로 부딪혀 바꾼 것들입니다. 왜 바꿨는지까지 남겨둡니다.

항목PRD 원안 (2026-07-30)지금바꾼 이유
실행 환경내 PC에 npx n8n 로컬 설치GCP 무료 VM 셀프호스팅컴퓨터를 켜둬야만 돌아가는 제약이 실제로 발목을 잡음. 오라클 클라우드를 먼저 시도했다가 카드 결제 단계에서 막혀 GCP로 선회
RSS 소스한국경제 + 비즈니스포스트 2개ZDNet Korea + 한국경제 + 디일렉 3개비즈니스포스트는 User-Agent가 비면 403인데 n8n RSS Read 노드로는 UA를 못 바꿈. 배터리 기사가 자주 비어서 전문 매체(디일렉)를 추가
발송 횟수오후 6시 1회9시·12시·18시 3회위키에도 쌓이게 되면서, 촘촘히 도는 편이 사전이 빨리 자람
위키 저장 단위개념 페이지에 키워드별 저장섹터별 문서 3개에 누적키워드마다 문서를 만들면 문서 수가 무한정 늘어남. 텔레그램도 섹터별로 나눠 보내고 있어서 구조를 통일
위키 동향 갱신기존 동향 + 새 기사를 LLM이 재요약오늘 뽑은 사례 문장으로 덮어쓰기LLM 호출을 아끼려고 1차 버전은 단순하게 감. 항상 최신이라 실용상 문제는 없음 — 업그레이드 과제로 남김
원문 링크LLM이 고른 기사의 링크를 그대로 출력LLM은 기사번호만, 링크는 Code 노드가 조회긴 목록에서 비슷한 URL을 잘못 베끼는 일이 잦았음. 링크 88개를 전수 확인해보니 27개가 엉뚱한 기사를 가리킴
LLM 노드텔레그램용·위키용 2개하나로 통합 (Wiki_LLM)같은 기사 목록을 두 번 묻는 낭비였고, 두 곳의 키워드가 달라질 수 있었음. Claude 호출 6회 → 3회

앞으로 다듬을 것

여기까지 해결된 것


하루 단위로 잘게 쪼갠 세부 실행계획은 4주 세부 실행계획에서 확인할 수 있어요. 자세한 4주 로드맵은 학습위키에서 확인할 수 있어요.

만든 과정

처음 만들어서 실제로 굴러가게 하기까지의 기록

  1. 01 코딩 몰라도 하루 만에 내 사이트 배포하기 (GitHub + Vercel) 회원가입부터 배포까지 전부 AI에게 시켜서, 로컬에만 있던 사이트에 진짜 인터넷 주소를 달았다. 2026-07-25
  2. 02 GitHub Desktop과 AI가 동시에 건드려서 생긴 git 오류, 이렇게 풀었다 이미 저장했는데요? — AI에게 커밋을 부탁했다가 발견한 뜻밖의 충돌과, 잠긴 파일을 안전하게 푸는 법. 2026-07-25
  3. 03 n8n으로 RSS→Claude→텔레그램 파이프라인 완성해서 매일 오후 6시 자동 발송까지 만들기 버튼을 눌러야만 돌아가던 워크플로우를, 포맷 다듬기·오류 수정·자동 스케줄 설정까지 거쳐 완전 자동으로 만든 하루 2026-08-05
  4. 04 3섹터 키워드 분류 완성 + 로컬 삽질 끝에 n8n 클라우드로 24시간 작동 전환하기 배터리 하나만 뽑던 프롬프트를 반도체·배터리·AI 3섹터 분류로 업그레이드하고, 로컬 컴퓨터+작업 스케줄러로 24시간 작동을 시도하다 네 번 막힌 끝에 n8n 클라우드 무료체험으로 갈아탄 하루 2026-08-12
  5. 05 4주 회고 — 뉴스 하나하나 붙잡고 있던 나에서, 키워드로 트렌드를 읽는 나로 PRD와 비교해 뭘 이뤘고 뭘 못 이뤘는지, n8n과 씨름한 과정, 이번 챌린지의 한계, 그리고 활동이 끝난 뒤에도 이어갈 계획을 정리한 4주 회고 2026-08-12
  6. 06 n8n이 GitHub에 직접 글을 쓰게 만들기 — 매일 자라는 용어 사전 자동화 텔레그램으로만 흘려보내던 뉴스 키워드를 위키에 영구 저장하도록 만든 하루. "1년 뒤에도 안 길어지는 구조"를 먼저 설계하고, GitHub API 연동 과정에서 만난 조용한 버그 4개를 잡아 PRD MVP의 마지막 항목을 끝냈다 2026-08-24

개선 기록

완성 후 직접 쓰면서 고치고 더한 것들

  1. 01 용어 사전에 용어가 아닌 게 쌓였다 — 봇에게 "용어 vs 이슈"를 가르친 하루 자동으로 자라던 용어 사전에 "K배터리 소재 경쟁력" 같은 분석성 항목이 섞이기 시작했다. 라벨을 넓히는 대신 봇의 출력에 "유형" 한 칸을 더 만들어, 사이트와 n8n 워크플로를 같은 기준으로 쪼갰다 2026-08-27
  2. 02 근거 기사 링크가 엉뚱한 기사를 가리키고 있었다 — 링크 88개 전수 검증기 위키에 자동으로 쌓이던 "근거 기사" 링크를 눌러봤더니 LFP 배터리 항목에서 K9 자주포 기사가 열렸다. 원인은 AI에게 URL을 받아 적게 한 구조였다. 매체별 오배정률로 가설을 검증하고, 링크를 프로그램이 붙이도록 구조를 바꾼 뒤, 과거 링크 88개를 전부 열어 대조했다 2026-09-03