Feat: [main] news-summary-bot 완성
All checks were successful
news-summary-bot-cicd / build_push_deploy (push) Successful in 11m43s
All checks were successful
news-summary-bot-cicd / build_push_deploy (push) Successful in 11m43s
This commit is contained in:
54
CLAUDE.md
Normal file
54
CLAUDE.md
Normal file
@@ -0,0 +1,54 @@
|
||||
# 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
|
||||
|
||||
## 빌드 & 실행
|
||||
|
||||
```bash
|
||||
# 로컬 개발
|
||||
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` 호출
|
||||
|
||||
요청 바디:
|
||||
```json
|
||||
{"video_url": "https://youtu.be/xxx", "title": "영상 제목"}
|
||||
```
|
||||
`API_SECRET` 설정 시 헤더에 `X-Api-Secret` 포함.
|
||||
Reference in New Issue
Block a user