해결하는 문제
사용자가 어시스턴트에 YouTube 링크를 붙여 넣으면, 거부하거나 제목만 보고 지어내거나 긴 영상에서 실패합니다. 리서치, 영업, 고객 지원용 에이전트를 만드는 팀에게는 YouTube가 바뀔 때마다 깨지는 스크레이퍼를 유지보수하지 않고도 어떤 영상이든 모델이 추론할 수 있는 텍스트로 바꿔 주는 믿을 만한 방법이 필요합니다.
첫 버전에 넣을 기능
- 모든 YouTube URL이나 영상 ID로 모델이 호출할 수 있는 도구
- 출처 인용을 위한 깔끔한 자막 텍스트와 타임스탬프 세그먼트
- 영어 외 영상을 위한 언어 선택 및 번역
- 긴 영상을 모델 컨텍스트에 맞추기 위한 청크 분할
- 같은 영상을 두 번 가져오지 않도록 하는 캐싱
단계별 개발 방법
- 01
연동 방식 선택
어시스턴트가 Model Context Protocol을 지원한다면 MCP 서버를 연결하세요. 도구가 자동으로 나타납니다. 지원하지 않는다면 /transcribe를 호출하는 함수 도구를 정의하세요.
- 02
도구 인터페이스 정의
영상 URL과 선택적 언어를 입력으로 받고, 자막 텍스트와 시작 시간이 포함된 세그먼트 목록을 반환합니다.
- 03
긴 영상 처리
컨텍스트 윈도보다 긴 영상은 세그먼트를 청크로 나눠 각각 요약한 뒤 답하거나, 질문과 관련된 청크만 검색해 사용하세요.
- 04
출처 인용
사용자가 모든 주장을 검증할 수 있도록 세그먼트의 타임스탬프를 인용하라고 모델에 지시하세요.
스타터 코드
이 아이디어는 "레시피 1: 영상 하나를 넣고 구조화된 결과 받기" 패턴을 기반으로 합니다. 채널, 프롬프트, 저장소는 원하는 대로 바꿔 쓰세요.
import requests
API = "https://www.youtubetranscript.dev/api/v2"
HEADERS = {"Authorization": "Bearer yt_sk_live_YOUR_KEY"}
res = requests.post(f"{API}/transcribe", headers=HEADERS, json={
"video": "https://www.youtube.com/watch?v=VIDEO_ID",
"format": {"timestamp": True, "paragraphs": True},
}).json()
transcript = res["data"]["transcript"]
print(transcript["text"][:500]) # plain text for your LLM prompt
for seg in transcript["segments"][:3]: # timestamps for deep links
print(seg["start"], seg["text"])만들 가치가 있는 이유
대개는 독립 제품이라기보다 기능입니다. 기존 어시스턴트, 봇, 코파일럿을 눈에 띄게 더 유용하게 만들어 줍니다. 독립 제품으로 낸다면, 공유된 영상에 대한 질문에 답하는 Slack이나 Discord 봇을 워크스페이스당 과금할 수 있습니다.
피해야 할 실수
- 3시간짜리 자막을 프롬프트 하나에 통째로 넣기: 대신 청크 단위로 검색하거나 요약하세요.
- 타임스탬프를 버리기: 답변을 검증할 수 없게 됩니다.
- 자막을 캐싱하지 않고 인기 영상을 반복해서 가져오기.
이 아이디어에 대한 질문
ChatGPT나 Claude가 YouTube 영상을 읽을 수 있나요?
자체적으로는 안정적이지 않습니다. 자막 도구나 MCP 서버를 연결하면 자막이 있는 모든 공개 영상의 전체 자막을 읽을 수 있습니다.
MCP 서버란 무엇인가요?
Model Context Protocol은 AI 어시스턴트에 도구를 제공하는 표준 방식입니다. 저희 MCP 서버는 호환되는 어시스턴트가 별도 코드 없이 호출할 수 있는 자막 도구를 제공합니다.
아주 긴 영상은 어떻게 처리하나요?
타임스탬프 세그먼트를 청크로 나눈 뒤, 각 청크를 요약하거나 사용자 질문과 관련된 청크만 검색해 사용하세요.