Step‑by‑Step: Claude Code를 활용한 YouTube 연구 에이전트 구축
YouTube를 보며 오후 시간을 잊은 채 엉뚱한 영상들을 탐색하다가, 정작 저장할 가치가 있는 영상을 잊어버린 경험이 있다면, 당신만 그런 것이 아닙니다. 최고의 영상을 찾아 요약하고, 핵심 인용문을 추출하고, 통찰력이 담긴 부분의 타임스탬프를 찍어 필요할 때마다 빠르게 출처를 알려주는 지칠 줄 모르는 비서가 있다고 상상해 보세요. 이것이 바로 YouTube 연구 에이전트가 할 수 있는 일입니다. 이 단계별 가이드에서는 소음보다 신호를 원하는 크리에이터, 분석가, 학생 및 열정적인 학습자를 위해 설계된 Claude Code를 사용하여 실용적인 YouTube 연구 에이전트를 구축합니다.
실용적이고 직접적인 경로를 따릅니다. 아키텍처, 코드, 프롬프트 및 안전 장치를 다룹니다. 그 과정에서 나중에 바꿀 수 있는 의견을 제시합니다. 마지막에는 YouTube를 검색하고, 스크립트를 수집하고, 여러 비디오에 걸쳐 추론하고, 깔끔한 연구 보고서를 생성할 수 있는 작업 에이전트를 갖게 됩니다.
구축할 내용 (및 그 이유)
- 목표: 다음을 수행할 수 있는 YouTube 연구 에이전트:
- 스크립트 가져오기 (자동 캡션 또는 타사 제공)
- 검색을 위해 콘텐츠를 청크(Chunk)로 나누고 임베딩
- Claude Code를 사용하여 다중 비디오 통찰력 종합
- 구조화된 노트 출력: 요약, 주장, 타임스탬프, 인용문 및 출처
- 기본 키워드: "Claude Code를 활용한 YouTube 연구 에이전트 구축"
- 형식: 실행 가능한 코드와 프롬프트가 포함된 단계별 튜토리얼
- 출력: 프로그래밍 방식으로 사용할 수 있는 Markdown 연구 보고서 + JSON
중요한 이유: YouTube는 강연, 강의, 데모 및 토론의 가장 큰 공개 지식 기반입니다. 그러나 노이즈가 많습니다. Claude Code로 YouTube 연구 에이전트를 구축하면 몇 시간이 아닌 몇 분 만에 수십 개의 비디오에서 통찰력을 집계할 수 있습니다.
한눈에 보는 아키텍처
첫 번째 버전을 간단하고 강력하게 유지합니다.
- 입력: 연구 쿼리 (예: "2025년 LLM 에이전트 아키텍처"), 선택적 제약 조건 (날짜 범위, 채널, 기간)
- YouTube 검색: YouTube Data API v3 (또는 SerpAPI 대체)
- 스크립트: YouTube Transcript API; 사용할 수 없는 경우 ASR (예: Whisper)로 대체
- 청크(Chunk) 나누기: 문장 인식 분할 (약 800–1,200 토큰)
- 임베딩: 로컬 또는 호스팅된 임베딩 모델 사용 (예:
text-embedding-3-large, nomic-embed-text 또는 bge-large)
- 벡터 저장소: 속도를 위해 로컬
FAISS; Pinecone, Weaviate 또는 Qdrant로 교체 가능
- 추론: 제어된 루프 내에서 오케스트레이션, 도구 사용, 합성 및 코드 실행을 위한 Claude Code
- 출력: 인용문, 타임스탬프 및 점수가 포함된 Markdown 보고서 + JSON 인덱스
데이터 흐름: 쿼리 → 검색 → 메타데이터 가져오기 → 스크립트 → 청크(Chunk) 나누기 → 임베딩 → 상위 K개 검색 → Claude Code 합성 → 보고서.
전제 조건 및 설정
- API 키:
YOUTUBE_API_KEY, ANTHROPIC_API_KEY (Claude Code용)
- 선택 사항:
OPENAI_API_KEY 또는 로컬 임베딩
google-api-python-client, youtube-transcript-api
faiss-cpu, numpy, pandas, tiktoken (또는 sentencepiece)
requests, pydantic, tenacity
pip install google-api-python-client youtube-transcript-api faiss-cpu numpy pandas requests pydantic tenacity anthropic tiktoken
환경 변수:
export YOUTUBE_API_KEY=YOUR_YT_KEY
export ANTHROPIC_API_KEY=YOUR_ANTHROPIC_KEY
1단계: 필터로 YouTube 검색
YouTube를 검색하고 구조화된 메타데이터(제목, 채널, 게시일, 기간, 조회수(사용 가능한 경우) 및 videoId)를 반환합니다.
# file: yt_search.py
from googleapiclient.discovery import build
import os
YOUTUBE_API_KEY = os.environ — channel, date\n\n"
"---\n"
"JSON schema: {\"claims\":[{\"claim\":str,\"support\":[{\"video_id\":str,\"start\":float,\"end\":float}]}]}\n"
)
def call_claude(goal: str, passages: list[dict]):
passages_str = "\n\n".join(
f"[rank {p['rank']} | score {p['score']:.3f}] (vID={p.get('video_id','?')}, {p.get('start',0):.1f}-{p.get('end',0):.1f})\n{p['text']}"
for p in passages
)
msg = client.messages.create(
model="claude-3-5-sonnet-20240620",
max_tokens=1800,
temperature=0.2,
system=SYSTEM_PROMPT,
messages=[
{"role": "user", "content": USER_TEMPLATE.format(goal=goal, passages=passages_str)}
])
return msg.content[0].text
Claude Code로 YouTube 연구 에이전트를 구축할 때 유용한 프롬프트 팁:
- 사람이 읽을 수 있는 형식과 기계가 읽을 수 있는 형식 모두로 구조화된 출력을 요청합니다.
6단계: 모두 함께 연결
쿼리 → 검색 → 스크립트 → 청크(Chunk) → 임베딩 → 검색 → 합성으로 연결해 보겠습니다.
# file: run_agent.py
from yt_search import search_youtube
from transcripts import fetch_transcript
from chunking import transcript_to_docs
from embeddings import VectorStore
from orchestrator import call_claude
from datetime import datetime
def build_corpus(query: str, max_videos=8):
results = search_youtube(query, max_results=max_videos)
corpus_docs = []
for r in results:
tx = fetch_transcript(r["video_id"]) or []
if not tx:
continue
docs = transcript_to_docs(tx)
for d in docs:
d.update({
"video_id": r["video_id"],
"title": r["title"],
"channel": r["channel"],
"url": r["url"],
})
corpus_docs.extend(docs)
return corpus_docs
def research(query: str, k=12):
corpus = build_corpus(query)
if not corpus:
return "No transcripts available."
vs = VectorStore
vs.add(corpus)
passages = vs.search(query, k=k)
md = call_claude(query, passages)
timestamp = datetime.utcnow.isoformat
return f"<!-- generated {timestamp} UTC -->\n\n" + md
if __name__ == "__main__":
print(research("LLM agents for YouTube research"))
Claude Code를 사용한 YouTube 연구 에이전트의 이 기본 버전은 인용문과 함께 다중 비디오 통찰력을 검색, 검색 및 합성합니다. 임베딩을 업그레이드하고 캐싱을 추가하여 프로덕션 준비를 완료하십시오.
더욱 훌륭하게 만들기 위한 7가지 업그레이드
- 고품질 임베딩으로 교체하고 BM25 키워드 검색을 추가합니다. 하이브리드는 틈새 용어에 대한 더 많은 리콜을 제공하고 추상적인 주제에 대한 더 나은 정확도를 제공합니다.
- 댓글, 좋아요/싫어요 비율 및 채널 권한을 가져옵니다. 상위 100개 후보에 대한 재순위 지정기(교차 인코더)를 추가합니다.
- Claude Code를 사용하여 연구 계획을 제안합니다. 하위 질문, 가설 및 범위 확인. 범위 임계값이 충족될 때까지 반복적으로 실행합니다.
- 각 주장에 대해 지지 및 반박 스니펫을 기록합니다. 보고서에 둘 다 제시합니다. 신뢰도 점수를 추가합니다.
- 자막 또는 Whisper 단어 타이밍을 통해 장면 감지를 사용합니다. 컨텍스트 희석을 피하기 위해 글로벌 합성 전에 섹션별로 요약합니다.
- 쿼리당 스크립트, 임베딩 및 보고서를 저장합니다. 사용자가 필터를 조정할 때 재사용합니다. 비디오 ID별로 중복 제거를 추가합니다.
- Markdown, PDF 및 JSON을 내보냅니다. 이메일 또는 Slack으로 전달합니다. 타임스탬프를 클릭 가능한
?t=mmss 링크로 렌더링합니다.
재사용 가능한 프롬프트
Claude Code로 YouTube 연구 에이전트를 구축하는 동안 이러한 템플릿을 사용하십시오.
시스템: 당신은 꼼꼼한 연구 에이전트입니다. 여러 YouTube 스크립트를 종합합니다. [vID @ mm:ss]로 인라인으로 인용하고 URL이 포함된 출처 섹션을 포함합니다. Markdown 요약과 타임스탬프 지원이 포함된 JSON 페이로드를 모두 반환합니다.
사용자: 연구 목표: {topic}
제약 조건: {audience or scope}에 집중; {date range} 내의 출처 선호; 불일치 포함.
후보 구절 (순위):
{retrieved_passages}
출력: 요약 → 주요 통찰력 (글머리 기호) → 주목할 만한 인용문 (타임스탬프 포함) → 모순 및 격차 → 출처. 그런 다음 JSON {"claims": ...}
안전 장치 및 윤리
- 제작자의 권리 존중: 원본 비디오에 연결하고 대량의 원문 스크립트를 게시하지 마십시오.
- 투명성 유지: 타임스탬프 및 비디오 ID를 사용하여 주장의 출처를 표시합니다.
- 과도한 요약 방지: 뉘앙스를 보존합니다. 캡션이 자동 생성되었고 노이즈가 많을 가능성이 있는 경우 플래그를 지정합니다.
- 민감한 주제를 신중하게 처리: 불확실성을 강조하고 다양한 출처를 찾습니다.
문제 해결: 일반적인 문제 및 수정
- Whisper로 대체; 다른 언어를 시도하십시오. 비디오가 지역 차단되었는지 확인하십시오.
- 임베딩 업그레이드; BM25 추가; 청크(Chunk) 겹침 증가; 상위 K개 매개변수 조정.
- 엄격한 인용 스키마 적용; 지원되지 않는 주장에 불이익을 줍니다. 검색된 청크(Chunk)에 정확한 타임스탬프가 있는지 확인하십시오.
- 적극적으로 캐시;
max_results 감소; 일괄 처리 요청; tenacity로 백오프를 추가합니다.
- 섹션별로 요약; 최대 토큰 수 제한; 명시적 개요가 있는 계획 프롬프트 사용.
품질 측정
- 레이블이 지정된 세트와 비교한 검색된 청크(Chunk)의 정밀도@K
- 신뢰도 비율: 검증 가능한 타임스탬프 지원이 있는 주장의 비율
예: "벡터 데이터베이스 설명" 연구
- 쿼리: "개발자를 위한 2025년 벡터 데이터베이스 설명"
- 필터: 2023년 이후 비디오, 6–30분 길이
- 결과: 에이전트는 6개의 비디오를 인용하고, HNSW와 IVF‑PQ의 장단점을 강조하고, 비용/리콜을 논의하고, 벤치마크에 연결합니다. 모순 섹션에서는 공급업체 주장과 오픈 소스 결과를 비교합니다.
참고: 워크플로 내에서 자동화
문서와 코드에서 작업하는 경우 마지막 단계를 자동화할 가치가 있습니다. 작은 CLI는 야간 쿼리를 실행하고 Markdown 요약을 지식 기반에 드롭할 수 있습니다. 스프린트 연구를 위해 문제 템플릿에 연결할 수도 있습니다.
주목할 가치가 있습니다. 워크플로가 이미 브라우저 사이드바 또는 AI 어시스턴트에 있는 경우 Sider.AI와 같은 도구를 사용하면 연구 루프를 간소화할 수 있습니다. 주제를 선택하고, 검색을 실행하고, 스크립트를 캡처하고, 작업하는 바로 그곳에서 Claude 기반 요약을 초안할 수 있습니다. 이렇게 하면 컨텍스트 전환을 절약하고 Claude Code로 YouTube 연구 에이전트를 구축하는 것이 팀에 훨씬 더 실용적일 수 있습니다. 주요 내용
- Claude Code로 YouTube 연구 에이전트를 구축하는 것은 비디오를 실행 가능한 요약으로 바꾸는 데 매우 효과적인 방법입니다.
- 최소 스택: YouTube API + 스크립트 + 청크(Chunk) 나누기 + 임베딩 + FAISS + Claude 합성.
- 업그레이드 경로: 하이브리드 검색, 재순위 지정, 계획 루프 및 엄격한 인용 추적.
- 간단하게 시작하고, 신뢰도를 측정하고, 안정성을 향해 반복합니다.
다음 단계
FAQ
Q1:Claude Code로 YouTube 연구 에이전트 구축을 어떻게 시작합니까?
YouTube 검색으로 시작하여 스크립트를 가져오고, 콘텐츠를 청크(Chunk)로 나누고, 벡터 저장소에 포함하고, Claude Code를 사용하여 결과를 종합합니다. 위의 가이드는 작업 파이프라인을 조립하기 위한 단계별 코드를 제공합니다.
Q2:YouTube 연구 에이전트에 가장 적합한 라이브러리는 무엇입니까?
검색에는 YouTube Data API, 캡션에는 youtube-transcript-api, 벡터 검색에는 FAISS, Claude Code 호출에는 Anthropic SDK를 사용합니다. 임베딩을 OpenAI, Nomic 또는 BGE로 교체할 수 있습니다.
Q3:정확한 인용 및 타임스탬프를 어떻게 보장합니까?
청크(Chunk)를 나누는 동안 시작/종료 타임스탬프를 유지하고 Claude Code에 [video_id @ mm:ss]를 인용하도록 요구합니다. 게시하기 전에 인용된 타임스탬프가 검색된 청크(Chunk)에 있는지 확인합니다.
Q4:이 에이전트를 비공개 또는 미등록 비디오에 사용할 수 있습니까?
예, 액세스 권한이 있고 스크립트를 가져오거나 로컬 ASR (예: Whisper)을 실행할 수 있는 경우. 항상 권한을 존중하고 저작권이 있는 콘텐츠를 배포하지 마십시오.
Q5:팀을 위해 이 YouTube 연구 에이전트를 어떻게 확장할 수 있습니까?
캐싱, 공유 벡터 저장소, 작업 대기열 및 예약된 실행을 추가합니다. Slack 또는 위키와 통합하고 연구원 워크플로를 간소화하기 위해 Sider.AI와 같은 브라우저 기반 어시스턴트를 고려하십시오.