Files
news-summary-bot/CLAUDE.md
sm4640 dc4656e452
All checks were successful
news-summary-bot-cicd / build_push_deploy (push) Successful in 11m43s
Feat: [main] news-summary-bot 완성
2026-03-24 12:19:54 +09:00

1.8 KiB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

프로젝트 개요

YouTube 뉴스/경제 채널의 새 영상을 감지하면 자막을 추출하고 Claude API로 요약한 뒤 Discord로 전송하는 봇.

  • 영상 감지: n8n RSS 트리거 (외부)
  • 요약 처리: FastAPI 앱 (이 레포)
  • 배포: Docker Hub → OCI 서버에서 docker-compose pull

빌드 & 실행

# 로컬 개발
pip install -r requirements.txt
uvicorn app.main:app --reload

# Docker
docker build -t nkey/news-summary-bot .
docker compose up

아키텍처

n8n(RSS 감지) → POST /api/news/summarize → 자막 추출 → Claude 요약 → Discord 웹훅

  • app/main.py — FastAPI 엔드포인트 (/api/news/summarize, /api/news/health)
  • app/transcript.py — YouTube 자막 추출 (youtube-transcript-api)
  • app/summarizer.py — Claude Sonnet 4.6으로 요약 생성
  • app/discord.py — Discord 웹훅 전송
  • app/config.py — 환경변수 설정 (pydantic-settings)

환경변수

ANTHROPIC_API_KEY, DISCORD_WEBHOOK_URL 필수. API_SECRET은 선택(n8n → FastAPI 인증용).

n8n 워크플로우

RSS Feed Trigger (채널A) ──┐
                           ├→ Merge → HTTP Request (POST /api/news/summarize)
RSS Feed Trigger (채널B) ──┘
  • RSS Feed Trigger: 채널별 RSS URL로 새 영상만 감지 (중복 방지 내장, Poll Time으로 주기 설정)
  • Merge: 두 채널의 새 영상을 하나의 리스트로 합침
  • HTTP Request: 각 영상마다 POST <서버IP>/api/news/summarize 호출

요청 바디:

{"video_url": "https://youtu.be/xxx", "title": "영상 제목"}

API_SECRET 설정 시 헤더에 X-Api-Secret 포함.