VC NewsHub 사례 뉴스가 AI 뉴스레터가 되기까지

실전 사례 01 · 뉴스 공장

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

매일 쏟아지는 기사를 사람이 다 읽을 수는 없다. NewsHub는 기사를 모아 의미가 가까운 것끼리 묶고, AI가 “이 묶음이 진짜 쓸 만한 주제인가”를 검수한 뒤 뉴스레터로 만들어 보낸다. 원재료는 기사, 컨베이어벨트는 파이프라인, 완제품은 뉴스레터다.

뉴스 수집 임베딩 비슷한 기사 묶기 AI 검수 비용 영수증철
NewsHub Daily Monitor
오늘의 후보 토픽
데이터센터 냉각 시장 동향

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

Naver
데이터센터 냉각 솔루션 수요 확대, 고효율 장비 경쟁 본격화
거리 0.12cluster: cooling
Google RSS
AI 서버 증설로 냉각 인프라 투자가 늘어난다는 분석
거리 0.18키워드가 달라도 묶인다
Global RSS
친환경 냉매와 전력 절감 기술이 장비 선택 기준으로 부상
LLM 검수: keep뉴스레터로 이동

공개 강의용 안전 재현 화면. 실제 기사·구독자·운영 데이터 대신 같은 레이아웃으로 흐름만 보여준다.

한 줄 지도

이 앱은 “매일 뉴스 훑어보기”를 자동화한다

부품은 수업에서 본 그대로다. 화면(매장), 주방(백엔드), 장부(DB)가 각자 역할을 맡는다.

화면 · Frontend

보여주는 매장

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

주방 · Backend

일하는 주방

FastAPI와 예약 작업(cron)이 수집 → 묶기 → 요약 → 뉴스레터 생성을 정해진 순서로 돌린다.

장부 · DB

남기는 장부

기사, 토픽, 뉴스레터 초안, 구독 설정, AI 비용 영수증이 PostgreSQL 장부에 남는다.

Pipeline

뉴스 한 건이 뉴스레터가 되기까지 — 색을 읽어보자

파이프라인은 컨베이어벨트다. 수업의 색 약속 그대로, 보라=외부 도구, 파랑=자료, 주황=AI, 초록=저장이다.

  1. 1 수집 (Crawling)

    Naver, Google RSS, Baidu, Global RSS 창구에서 새 기사를 받아온다.

  2. 2 임베딩

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

  3. 3 묶기 (Clustering)

    가까운 기사끼리 먼저 기계적으로 묶는다. AI를 부르기 전에 후보를 줄이는 체다.

  4. 4 AI 검수·작성

    LLM이 묶음을 keep/reject 판정하고, 통과한 주제로 뉴스레터 초안을 쓴다.

  5. 5 발송·기록

    화면, 이메일로 나가고 기사·토픽·비용이 전부 장부에 남는다.

개념 연결

수업에서 배운 단어가 여기서 하는 일

카드를 누르면 해당 교시로 돌아가 복습할 수 있다.

Prompt

AI에게 주는 작업지시서 — 구조만 공개 버전

실제 운영 문구 대신, “판단 기준을 어떻게 적어주는가”가 보이도록 재작성했다.

클러스터 검수

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

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

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

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

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

글쓰기를 5단계로 쪼갠다

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

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

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

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

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

포인트: 한 번에 다 시키지 않고,
앞 단계의 결과가 다음 단계의 근거가 된다.
호출 → 결과

주문서와 응답서는 이렇게 생겼다

5교시에서 본 API 주문 창구 그대로다. 요청서에 재료를 적어 보내면 응답서로 결과가 온다.

요청 · 주문서

임베딩 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
  }
}
Context

검수하는 순간, AI의 책상 위에는 이게 올라가 있다

2교시의 책상 그대로다. 색을 보면 어떤 종이가 자료(파랑)이고 어떤 종이가 AI의 답(주황)인지 보인다.

기본 규칙

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

회사 규칙 자료

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

기사 묶음 자료

임베딩과 클러스터링으로 묶인 기사들의 제목·본문·출처.

최근 토픽 자료

이미 만든 토픽 목록. 같은 주제를 두 번 만들지 않게 한다.

AI의 답

keep/reject 판정, 토픽 제목, 판단 근거 — 그리고 비용 영수증 한 장.

DB 장부

NewsHub의 장부들

6교시에서 배운 “역할별 장부 나누기”가 실전에서는 이렇게 된다.

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

이 사례에서 가져갈 세 가지

1. AI부터 부르지 않는다

임베딩과 묶기로 후보를 먼저 줄인다. 모든 기사를 AI에게 읽히면 토큰 비용이 폭발한다.

2. 판단 기준을 글로 준다

“좋은 기사만 골라줘”가 아니라 “주가 기사는 빼, 중복이면 표시해”처럼 기준을 명시해야 결과가 안정된다.

3. 비용 영수증은 필수

AI 앱은 돈이 조용히 샌다. 모든 유료 호출은 llm_usage_logs 영수증철에 남긴다.

복사했습니다