VC NewsHub 사례 뉴스가 AI 뉴스레터가 되는 과정

NewsHub: 흩어진 뉴스를 의미별로 묶어 뉴스레터로 보내기

NewsHub는 여러 뉴스 소스에서 기사를 가져온 뒤, 비슷한 기사끼리 묶고, LLM이 “이 묶음이 진짜 의미 있는 주제인가”를 검수하게 만든 시스템이다. 초보자에게는 뉴스 공장으로 설명하면 쉽다. 원재료는 기사, 컨베이어벨트는 파이프라인, 최종 상품은 뉴스레터다.

뉴스 수집 의미 좌표 변환 비슷한 기사 묶기 AI 검수 뉴스레터 초안
NewsHub Daily Monitor
오늘의 후보 토픽 데이터센터 냉각 시장 동향

수집된 기사 128개 중 의미가 가까운 기사 7개가 같은 묶음으로 올라왔다.

Naver

데이터센터 냉각 솔루션 수요 확대, 고효율 장비 경쟁 본격화

기사 제목과 본문이 임베딩되어 비슷한 주제 후보로 묶인다.

거리 0.12 cluster: cooling
Google RSS

AI 서버 증설로 냉각 인프라 투자가 늘어난다는 분석

키워드가 달라도 의미가 가까우면 같은 후보 묶음으로 올라온다.

거리 0.18 source: global
Global RSS

친환경 냉매와 전력 절감 기술이 장비 선택 기준으로 부상

LLM은 묶음이 실제 뉴스레터 주제로 쓸 만한지 keep/reject를 판단한다.

LLM: keep newsletter
수집 임베딩 클러스터링 LLM 검수 뉴스레터 초안

공개 강의용 안전 재현 화면이다. 실제 기사·구독자·운영 데이터 대신, 제목과 날짜가 있는 동일 카드 레이아웃으로 NewsHub 흐름을 보여준다.

이 앱은 무엇을 자동화하나

뉴스를 사람이 매일 훑어보는 일을 줄이기 위해, 수집부터 요약·발송까지 순서를 정해 둔 시스템이다.

Frontend

보여주는 화면

Next.js 화면이 토픽, 필터, 검색, 구독 설정을 보여준다. 프론트엔드는 손님이 보는 매장 진열대다.

Backend

일을 처리하는 주방

FastAPI와 cron 작업이 수집, 클러스터링, 요약, 뉴스레터 생성을 순서대로 실행한다.

DB

결과를 남기는 장부

기사, 토픽, 뉴스레터 초안, 구독자 설정, AI 비용 로그가 PostgreSQL에 저장된다.

뉴스 한 건이 뉴스레터가 되기까지

파이프라인은 일을 순서대로 흘려보내는 컨베이어벨트다. 각 단계가 맡은 역할만 이해하면 전체 구조가 잡힌다.

1 Crawling

Naver, Google RSS, Baidu, Global RSS, HR/ER RSS에서 새 기사를 가져온다.

2 Embedding

기사 제목과 본문을 의미 좌표로 바꾼다. 비슷한 기사는 좌표가 가까워진다.

3 Clustering

HDBSCAN이 가까운 기사를 먼저 묶고, LLM이 주제가 맞는지 검수한다.

4 Newsletter

Fact, Top Story, Headlines, Insights, Glossary를 단계별로 만든다.

5 Delivery

승인된 결과가 프론트 화면, 이메일, 운영 도구로 나간다.

앞에서 배운 단어가 여기서 어디에 쓰이나

실제 프롬프트 구조를 강의용으로 단순화하면

프롬프트는 AI에게 주는 작업지시서다. 여기서는 실제 운영 문구를 그대로 노출하지 않고, 구조와 판단 기준을 보이게 재작성했다.

클러스터 검수

기사 묶음이 진짜 주제인지 판단

역할: 뉴스 클러스터 검수자

입력:
- company_profile: 타깃 회사와 계열사 정보
- candidate_articles: 같은 주제로 묶인 기사 후보
- recent_topics: 최근 이미 만든 토픽 목록

판단 규칙:
- 타깃 회사가 주인공인지 확인한다.
- 단순 주가, 투자 의견, 광고성 문장은 reject한다.
- 같은 이야기가 최근 토픽에 있으면 중복으로 표시한다.

출력 JSON:
{
  "decision": "keep | reject | duplicate",
  "topic_title": "짧은 주제명",
  "relevance_score": 0.0,
  "reason": "판단 이유"
}
뉴스레터 작성

단계를 쪼개서 글쓰기

Stage 1. Fact extraction
  원문 기사에서 사실, 인물, 수치, 출처를 뽑는다.

Stage 2. Top Story
  가장 중요한 흐름 하나를 3문단으로 쓴다.

Stage 3. Headlines
  여러 토픽을 짧은 제목과 근거 문장으로 정리한다.

Stage 4. Insights
  단순 요약이 아니라 왜 중요한지 설명한다.

Stage 5. Glossary
  어려운 용어를 쉬운 한국어로 풀어준다.

호출과 결과값은 이렇게 생각하면 된다

API 호출은 식당 주문서와 비슷하다. 요청서에 재료와 원하는 결과를 적어 보내면, 응답서로 결과가 돌아온다.

요청

Embedding API 호출 예시

{
  "model": "text-embedding-3-small",
  "operation_type": "article_embedding",
  "input": [
    "A사가 신규 냉각 솔루션을 공개했다...",
    "A사의 데이터센터 장비 수주가 증가했다..."
  ]
}
결과

DB에 저장되는 핵심 결과

{
  "article_id": "article_1029",
  "embedding": "[0.018, -0.042, ...]",
  "nearest_topic": "data_center_cooling",
  "distance": 0.14,
  "usage_log": {
    "input_tokens": 128,
    "estimated_cost_usd": 0.00001
  }
}

LLM이 보는 책상 위 자료

컨텍스트는 AI 앞에 펼쳐진 책상이다. NewsHub는 기사 묶음, 회사 규칙, 최근 토픽, 출력 스키마를 책상 위에 올린다.

System Prompt

뉴스 검수자의 역할, 금지 규칙, JSON 출력 형식을 고정한다.

Company Context

타깃 회사, 계열사, 경쟁사, 제외해야 할 투자성 기사 기준을 넣는다.

Article Cluster

임베딩과 HDBSCAN으로 묶은 기사 제목·본문·출처를 넣는다.

Previous Topics

최근 만든 토픽을 넣어 중복 생성을 줄인다.

Answer

keep/reject, 토픽명, 근거, 비용 로그가 결과로 남는다.

이 사례에서 DB는 어떤 장부인가

장부역할초보자 비유
news_articles수집한 원문 기사 저장원재료 창고
news_topics묶어서 만든 뉴스 주제 저장분류된 상자
email_newsletters완성된 뉴스레터 저장완제품 박스
newsletter_research_log인사이트 조사 과정 기록조사 노트
llm_usage_logsAI 사용량과 비용 기록영수증철

수강생에게 이렇게 설명하면 쉽다

1. LLM부터 쓰지 않는다

먼저 임베딩과 클러스터링으로 후보를 줄인다. AI에게 모든 기사를 다 읽히면 비용이 커진다.

2. RAG는 검색만이 아니다

관련 기사와 최근 토픽을 찾아 컨텍스트에 넣는 것도 넓은 의미의 RAG 흐름으로 볼 수 있다.

3. 비용 로그는 필수다

AI 앱은 눈에 안 보이는 돈이 새기 쉽다. 그래서 모든 유료 호출에는 사용량 장부가 있어야 한다.

복사했습니다