실측 기반 소개

브라우저로 안 되던 유튜브 자막, yt-dlp로 7,267자 뽑았습니다

유튜브 자막 API가 빈 응답만 주던 영상에서 자막 전문을 추출한 방법. 실제 명령어와 VTT 정리 스크립트까지.

도구 yt-dlp
가격 무료 (오픈소스)
툴콕 점수 9.4
브라우저로 안 되던 유튜브 자막, yt-dlp로 7,267자 뽑았습니다 커버 이미지
4 MIN

유튜브 영상을 정리하려면 자막이 필요합니다. 그런데 브라우저에서 자막 트랙 주소(timedtext)를 직접 호출하면 HTTP 200에 본문은 0바이트가 돌아옵니다. 트랙 목록은 정상적으로 보이는데 내용만 비어 있는 상태죠.

같은 영상에서 yt-dlp로는 한국어 자동자막 7,267자를 그대로 받았습니다. 이 글은 그 과정을 정리한 것입니다.

결론부터

pip install yt-dlp
yt-dlp --write-auto-subs --sub-langs ko --skip-download -o "제목.%(ext)s" "https://www.youtube.com/watch?v=VIDEO_ID"

이 한 줄이면 제목.ko.vtt 파일이 생깁니다. 영상은 받지 않고 자막만 가져오기 때문에 몇 초면 끝납니다.

옵션이 하는 일

옵션역할
--write-auto-subs자동 생성 자막을 받습니다. 사람이 단 자막은 --write-subs
--sub-langs ko언어 지정. ko,en 처럼 여러 개도 가능
--skip-download영상 본체는 받지 않음 — 이게 없으면 수백 MB를 받습니다
-o "제목.%(ext)s"파일명 템플릿

함정 하나: srt 변환은 FFmpeg가 필요합니다

--convert-subs srt를 붙이면 이런 에러가 납니다.

ERROR: Preprocessing: ffmpeg not found. Please install or provide the path

다만 에러가 나도 VTT 파일은 이미 저장된 뒤라 실제로는 문제가 없습니다. FFmpeg를 따로 깔기 싫다면 변환 옵션을 빼고 VTT를 직접 정리하는 편이 빠릅니다.

VTT 정리 스크립트

VTT에는 타임코드와 중복 줄이 잔뜩 들어 있어서, 요약에 쓰려면 텍스트만 남겨야 합니다.

import re, pathlib

txt = pathlib.Path('제목.ko.vtt').read_text(encoding='utf-8')
lines = []
for line in txt.splitlines():
    if '-->' in line or line.startswith(('WEBVTT', 'Kind:', 'Language:')) or not line.strip():
        continue
    clean = re.sub(r'<[^>]+>', '', line).strip()
    if clean and (not lines or lines[-1] != clean):
        lines.append(clean)

print(' '.join(lines))

자동자막은 같은 문장이 여러 번 반복되므로 lines[-1] != clean 비교로 연속 중복을 걸러내는 게 핵심입니다. 이 처리를 거치면 122KB짜리 VTT가 7,267자 본문으로 줄어듭니다.

채널 단위로도 됩니다

영상 하나가 아니라 채널 전체 목록이 필요하면:

yt-dlp --flat-playlist --print "%(id)s|%(title)s|%(duration)s|%(view_count)s" "https://www.youtube.com/@채널핸들/videos"

61개 영상 목록을 몇 초 만에 받아서, 그중 필요한 것만 골라 자막을 추출하는 식으로 씁니다.

윈도우에서 한글이 깨지면 PYTHONUTF8=1을 앞에 붙이거나 출력을 파일로 저장한 뒤 UTF-8로 읽으세요.

점수: 9.4

좋은 점

  • 브라우저로 막히는 케이스를 그대로 뚫습니다. 설치는 pip install 한 줄
  • 유튜브 공식 API와 달리 일일 할당량·과금이 없습니다
  • 채널·재생목록 단위 배치가 쉬움

아쉬운 점

  • srt 변환·포맷 병합 등 후처리는 FFmpeg 별도 설치 필요
  • 유튜브가 내부 구조를 바꾸면 간헐적으로 깨집니다 → pip install -U yt-dlp가 첫 대응
  • CLI라 비개발자에게는 진입장벽이 있음

이럴 때 쓰세요: 영상 내용을 텍스트로 정리·검색·요약해야 할 때. 자막만 받는 용도라면 대안이 마땅치 않습니다.

저작권에 대해

타인의 콘텐츠를 내려받는 일에는 저작권 문제가 따릅니다. 저는 요약·연구 목적의 자막 텍스트직접 만들었거나 허용된 콘텐츠에 한해 사용합니다. 영상 파일 자체를 받아 재배포하는 용도로는 쓰지 마세요.