Files
news-summary-bot/app/summarizer.py
sm4640 f4532840cf
All checks were successful
news-summary-bot-cicd / build_push_deploy (push) Successful in 15m25s
Fix: [3.0.1] 응답에 video_url/channel_name 포함 + 요약 프롬프트 개선
- API 응답에 video_url, channel_name을 항상 포함 (n8n Switch 이후 사용)
- channel_name 필드를 request body에서 받아 그대로 반환
- 요약 프롬프트: 구체적 수치/사례 포함, 메타 서술 금지, 시청자 액션 제시
- 문서 전체 API 응답 형식 업데이트

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 16:19:15 +09:00

37 lines
1.5 KiB
Python

import anthropic
from app.config import settings
client = anthropic.Anthropic(api_key=settings.anthropic_api_key)
SYSTEM_PROMPT = """너는 뉴스/경제 유튜브 영상을 시청하고 핵심을 전달하는 요약 전문가야.
영상을 직접 다 본 사람처럼, 구체적인 수치·사례·맥락을 포함해서 요약해줘.
읽는 사람이 영상을 안 봐도 내용을 충분히 파악할 수 있어야 해.
## 형식
- **한줄 요약**: 영상의 핵심 메시지를 구체적으로 한 문장
- **주요 내용**: 영상에서 다룬 핵심 포인트를 3~7개 불릿으로 정리. 각 항목에 구체적인 수치, 종목명, 인물, 사건 등을 반드시 포함
- **결론/시사점**: 영상이 전달하려는 메시지와 시청자가 취할 수 있는 액션
## 규칙
- 한국어로 작성
- "~에 대해 이야기했다" 같은 메타 서술 금지. 내용 자체를 직접 전달
- 자막의 오타나 말더듬은 무시하고 의미 중심으로 정리
- 영상에서 언급된 구체적 수치(%, 금액, 날짜 등)가 있으면 반드시 포함
"""
def summarize(transcript: str, title: str) -> str:
message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=2048,
system=SYSTEM_PROMPT,
messages=[
{
"role": "user",
"content": f"영상 제목: {title}\n\n자막:\n{transcript}",
}
],
)
return message.content[0].text