Project · 04 / 04
IT 뉴스 · SNS 큐레이션 자동화
매일 쏟아지는 IT 정보 중 읽을 가치가 있는 것만 남기기 위해 만든 자동화 파이프라인입니다. Docker로 자체 호스팅한 n8n이 RSSHub·Browserless를 통해 IT 매거진·SNS·유튜브를 수집하고, gpt-4o-mini가 주니어 개발자 관점에서 0~10점을 매깁니다. 수집(Phase 1)과 발송(Phase 2)을 n8n 내장 DataTable로 분리해 비동기화했고, 점수 상위 항목만 Discord로 발송한 뒤 발송 상태를 갱신해 중복 발송을 차단합니다.
- 기간
- 2026년 (개인 프로젝트, 운영 중)
- 역할
- 개인 프로젝트 · 자동화 설계/운영 · 기여도 100% · 설계/구현/운영 전담
- 스택
- n8n · OpenAI gpt-4o-mini · Docker · RSSHub · Browserless · Cloudflare Tunnel · Discord
- —IT 매거진(ITWorld·GeekNews·요즘IT)·SNS·유튜브 3종 소스 병렬 수집
- —LLM 페르소나 + 날짜 가중치로 0~10점 자동 평가
- —수집/발송을 DataTable로 분리해 비동기화, 중복 발송 차단
- —폴백 우선순위(SNS → 뉴스 → 영상) 기반 순차 발송

문제 상황
IT 뉴스·SNS·유튜브는 매일 쏟아지지만, 직접 훑어보는 데 드는 시간이 실제로 얻는 것보다 컸다.
대부분은 한 번 소비하고 끝나는 트렌드거나 이미 아는 내용이다. 그래서 목표를 "모아서 보여주기"가 아니라 "골라서 보내주기" 로 잡았다. 수집은 시작일 뿐이고, 핵심은 읽을 가치를 판단하는 기준을 만드는 것이었다.
제약도 분명했다. 개인이 운영하므로 서버·AI 호출 비용을 최소로 유지해야 했고, SNS는 공개 피드조차 RSS를 제공하지 않아 별도 수집 경로가 필요했다.
해결
수집·평가·발송을 각각 다른 문제로 보고 따로 설계했다.
자체 호스팅 n8n에 수집 보조 컨테이너를 붙임
docker-compose 한 벌로 n8n(워크플로우 엔진 · 내장 DataTable을 상태 저장소로), RSSHub + Browserless(RSS를 제공하지 않는 SNS 공개 피드를 RSS로 변환), Cloudflare Tunnel(포트를 열지 않고 대시보드 접근)을 함께 띄웠다.
SaaS 자동화 도구는 실행 횟수 과금이라 매일 도는 파이프라인에는 비용이 누적된다. 이미 운영 중인 홈서버에 컨테이너를 얹는 쪽이 비용·통제권 모두 유리했다.

페르소나를 고정하고, 성격에 따라 채점 기준을 나눔
LLM에 "주니어 개발자를 위해 큐레이션하는 시니어 엔지니어" 역할을 부여해 평가 관점을 고정했다. 관점이 흔들리면 점수가 매번 달라진다.
- Type A (CS·아키텍처·네트워크·OS 등 기초 지식) — 오래돼도 가치가 떨어지지 않으므로 작성일로 감점하지 않는다
- Type B (프레임워크·AI 등 트렌드) — 시간이 지나면 무가치해지므로 오래된 것은 점수를 강하게 낮춘다
"최신순"으로는 CS 기초 글이 영원히 묻히고 "점수순"만으로는 철 지난 트렌드가 올라온다. 두 축을 분리한 게 핵심이다. Structured Output Parser로 JSON 형식을 강제해 후속 노드의 파싱 에러도 차단했다.

수집과 발송을 DataTable로 끊어 놓음
수집·평가는 백그라운드에서 돌며 결과를 is_sent: false 로 쌓아 두고, 발송은 별도 트리거가 그 창고에서 꺼내 간다. 수집이 느려져도 발송이 막히지 않는다.
SNS → 뉴스 → 영상 폴백 우선순위
미발송 항목을 순서대로 조회해 먼저 걸리는 하나만 발송한다. 모든 채널을 한꺼번에 쏟아내지 않아 알림 피로가 없고, 한 채널이 비어도 보낼 거리가 남는다.
Sort(점수 내림차순) → Limit 으로 회차당 개수를 제한하고, 마크다운으로 포맷해 Discord 웹훅으로 보낸 뒤 해당 항목만 is_sent: true 로 갱신해 생명주기를 닫는다.
결과
- 3종 소스
- 뉴스 · SNS · 영상 병렬 수집
- 0~10점
- LLM 평가 후 기준 넘는 것만 발송
- 중복 발송 0
- DataTable 생명주기로 차단
매일 무인으로 수집 → 평가 → 발송이 돌아가며, 아키텍처는 노드 단위로 문서화해 재구성이 가능하도록 남겼다.