본문 바로가기

인공지능(AI) 이론과 코드/6. 자연어처리(NLP)

[Python] YouTube Transcript API로 자막 가져오기

 

youtube-transcript-api는 유튜브 동영상의 자막(보면 자동 생성된 자막 포함)을 손쉽게 꺼내 쓸 수 있게 해주는 파이썬 라이브러리입니다. Selenium 같은 복잡한 도구도 필요 없어, 브라우저를 띄우지 않고 바로 자막을 가져올 수 있습니다. 공식 문서는 다음 링크를 참고해주시기 바랍니다. (PyPI)

설치는 딱 한 줄

pip install youtube-transcript-api

별도 설정 없이 바로 쓸 수 있어서 매우 간편해요.(PyPI)

API 활용

from youtube_transcript_api import YouTubeTranscriptApi

transcript = YouTubeTranscriptApi().fetch("비디오ID")
  • transcript는 시간(start, duration)과 텍스트(text)가 담긴 스니펫 리스트 또는 FetchedTranscript 객체입니다.(PyPI)
  • 기존 get_get_transcript 함수가 fetch 로 변경되었습니다.
    YouTubeTranscriptApihas no attribute 'get_transcript' 또는 transcriptapi 자막을 가져오는 중 오류 발생: type object 'youtubetranscriptapi' has no attribute 'get_transcript' 발생시.

다음과 같은 형태로 수정하시면 됩니다.

from youtube_transcript_api import YouTubeTranscriptApi

ytt_api = YouTubeTranscriptApi()
ytt_api.fetch(video_id)

 

예시 구조:

[
  {'text': '안녕하세요', 'start': 0.0, 'duration': 2.0},
  {'text': '만나서 반가워요', 'start': 2.0, 'duration': 3.0},
  ...
]

 

원하는 언어로 받고 싶을 땐?

YouTubeTranscriptApi().fetch("비디오ID", languages=['de', 'en'])
  • 먼저 독일어(de)를, 없으면 영어(en) 자막을 받고 싶을 때 이렇게 순서대로 시도해요.(PyPI)

 

자막 리스트부터 보고 싶다면?

anno = YouTubeTranscriptApi().list("비디오ID")
  • TranscriptList 객체가 반환되고, 여기서 언어별 필터링이나 수동/자동 자막 판별도 가능해요.(PyPI)
transcript = anno.find_transcript(['en'])
transcript.fetch()
  • 만약 자동 생성된 자막만 보고 싶다면:
  • transcript = anno.find_generated_transcript(['en'])
  • 수동 자막만 보고 싶다면:
  • transcript = anno.find_manually_created_transcript(['en'])

 

CLI도 지원해서 터미널에서 바로 사용 가능

youtube_transcript_api 비디오ID1 비디오ID2 --languages en de --json > subs.json
  • JSON 형식으로 저장하고 싶으면 --json 옵션을 붙이면 됩니다.(PyPI)

 

주의할 점

유튜브 내부 구현 방식(공식 API가 아닌 루트)을 활용한 만큼, 언제 어떻게 작동이 바뀔 수 있다는 점만 참고해 주세요.(PyPI)

 

정리 한눈에 보기

기능 설명

설치 pip install youtube-transcript-api
기본 호출 fetch("비디오ID")로 자막 가져오기
언어 지정 languages=['de','en'] 등으로 우선순위 지정
자막 목록 확인 list() 후 find_transcript() 등 필터링 가능
CLI 사용 youtube_transcript_api ... --json
제약 비공식 API이므로 언젠가 작동이 바뀔 수 있음

 

마무리

이 라이브러리 덕분에 날짜 수업, 강의, 뉴스 등 다양한 유튜브 영상을 텍스트로 활용하기 너무 쉬워졌어요. 반복해서 많은 자막을 빠르게 얻고 싶거나, 자동화 파이프라인에 넣고 싶다면 추천합니다.  더 나아가, 이 자막을 LangChain을 이용해 요약하거나 검색 가능한 문서로 RAG 구성도 가능하니 활용해보시길 추천드립니다.

 

아래 Colab Script 도 첨부로 넣어두었습니다.

https://colab.research.google.com/drive/1Jz3tBzmJRn7xS3tsVDD8jviayK9Ai_aX?usp=sharing

 

LLM으로 유튜브 영상 TEXT 가져와서 번역 및 요약.ipynb

Colab notebook

colab.research.google.com