일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 확산 모델
- AI
- 오블완
- ChatGPT
- 멀티모달
- 일론 머스크
- 감정 표현
- OpenAI
- 강화 학습
- 이미지 생성
- 오픈AI
- 인공지능
- 우분투
- 딥러닝
- 강화학습
- 자연어 처리
- Stable Diffusion
- 다국어 지원
- 실시간 렌더링
- tts
- 휴머노이드 로봇
- 트랜스포머
- PYTHON
- LLM
- 메타
- 티스토리챌린지
- XAI
- 오픈소스
- 생성형AI
- AI 기술
- Today
- Total
AI 탐구노트
[Python] 영상 다 보지 말고, 핵심만 뽑아보자! -Youtube 영상에서 스크립트 추출하기 본문
유튜브에는 전문가들이 쏟아내는 수많은 지식과 정보가 넘쳐납니다. 하지만 영상 길이는 대부분 20분, 길게는 1시간을 훌쩍 넘기기도 하죠. '내용은 궁금한데, 전부 다 볼 시간은 없다'는 고민, 누구나 한 번쯤 해보셨을 겁니다.
그럴 때 바로 '스크립트'와 'AI 요약'의 조합이 강력한 해결책이 됩니다. 유튜브가 제공하는 '자동 자막(스크립트)'을 텍스트로 추출하면, 전체 영상을 재생하지 않고도 내용을 빠르게 훑어보고, 필요한 부분만 골라볼 수 있습니다. 여기에 AI 요약 기능까지 활용하면, 전문가 영상도 몇 분 만에 핵심만 쏙쏙 정리할 수 있게 되죠.
이번 글에서는 유튜브 스크립트를 활용해 짧은 시간에 많은 정보를 효율적으로 처리하는 방법, 그리고 실제로 AI와 함께 어떤 방식으로 요약과 정리를 할 수 있는지를 소개합니다. 시간은 없지만, 지식은 쌓고 싶은 분들께 꼭 필요한 팁이 될 거예요.
Youtube 스크립트란?
Youtube 스크립트(Youtube Transcript)는 유튜브 동영상에서 제공되는 '자막 데이터(Transcript)'를 말합니다. 이 자막은 영상 업로더가 직접 등록한 ‘수동 자막(Manual Caption)’, 유튜브가 음성을 인식해 자동으로 생성한 ‘자동 생성 자막(Auto-generated Caption)’ 두 종류가 있으며, 이를 통해 동영상의 주요 내용을 텍스트 형태로 쉽게 확인할 수 있습니다.
Youtube 스크립트 추출 방법
1️⃣ 필요한 패키지
Youtube 스크립트(자막)를 추출하려면 아래 파이썬 패키지가 필요합니다. 이미 Youtube에서 가져가세요 하면서 제공해 주고 있습니다.
- youtube-transcript-api : 자막을 추출하기 위한 라이브러리
$ pip install youtube-transcript-api
2️⃣ 추출 코드
1) 스크립트 추출
스크립트 추출을 위한 코드는 다음과 같습니다. 생각보다 많이 단순합니다. 내용을 보면 아시겠지만 대부분 자막이 없거나 자동자막인 경우를 처리하기 위한 코드일 뿐 실제 정상적으로 있다면 딱 한 줄입니다!
(업데이트: youtube_transcript_api가 업데이트되면서 기존 방식이 동작하지 않는 부분이 있어서 수정된 코드로 대체했습니다)
from youtube_transcript_api import YouTubeTranscriptApi
def fetch_transcript(video_id, language="ko"):
"""
유튜브 video_id와 언어코드로 자막(스크립트) 텍스트를 반환합니다.
FetchedTranscriptSnippet 객체의 text 속성을 읽는 최신 방식.
"""
try:
transcript_list = YouTubeTranscriptApi.list_transcripts(video_id)
transcript = None
lang_info = "" # 기본값
# 우선 한국어 수동 자막을 찾는다.
try:
transcript = transcript_list.find_transcript([language])
except Exception:
# 없으면 자동 생성 자막을 찾는다.
try:
transcript = transcript_list.find_generated_transcript([language])
except Exception:
# 그래도 없으면 첫 번째 사용 가능한 자막 사용
try:
transcript = next(iter(transcript_list))
lang_info = transcript.language_code # 예: 'en'
except Exception:
return "Error: No transcript available."
# transcript.fetch() 결과에서 text 속성만 추출
transcript_data = transcript.fetch()
text_list = []
for entry in transcript_data:
if hasattr(entry, 'text'):
if entry.text:
text_list.append(entry.text)
elif isinstance(entry, dict) and 'text' in entry:
text_list.append(entry['text'])
full_text = ' '.join(text_list)
return f"[{lang_info}] {full_text}"
except Exception as e:
return f"Error fetching transcript: {e}"
2) 영상 제목 추출
위의 코드는 스크립트를 잘 뽑아내지만 정작 스크립트 내에는 영상의 제목이 없습니다. 그러므로 하나의 영상이 아니라 복수의 영상을 가져와서 제목을 파일명으로 해서 저장하고 싶을 때는 별도로 제목을 추출하는 코드가 필요합니다. 다음은 그 코드입니다.
import requests
from bs4 import BeautifulSoup
def get_youtube_title_alternative(video_url):
try:
response = requests.get(video_url)
response.raise_for_status()
soup = BeautifulSoup(response.text, "html.parser")
title = soup.find("meta", property="og:title")
return title["content"] if title else "Error: Title not found in the page"
except Exception as e:
return f"Error fetching title: {e}"
Youtube 스크립트 추출 시 유의사항
- 자막이 없는 영상도 많습니다!
→ 수동 자막, 자동 생성 자막 모두 없으면 추출할 수 없습니다. - 자동 생성 자막만 있는 경우, 반드시 find_generated_transcript로 접근해야 합니다.
- 언어 코드를 정확히 지정해야 합니다. 제 경우 대상이 한글 영상이 대부분이라 기본값은 'ko'로 설정해 두었습니다.
예) 'ko' : 한국어, 'en' : 영어 - 일부 영상은 저작권, 비공개, 또는 지역 제한 등으로 자막 추출이 불가능할 수 있습니다.
- 유튜브/구글의 정책 변화나 라이브러리 버전에 따라 동작이 달라질 수 있으니, 최신 버전을 사용하는 것이 좋습니다.
- 영상의 자막이 "자동 번역" 형태로만 제공되는 경우에는 일부 언어에서 추출이 되지 않을 수 있습니다.
'DIY 테스트' 카테고리의 다른 글
[바이브코딩] 수도쿠 게임 만들어보기 (3) | 2025.06.10 |
---|---|
[우분투] PDF 파일 용량 압축하기 - GhostScrpt 이용 (0) | 2025.06.09 |
WhisperX를 이용한 간이 회의 녹취 프로그램 만들어보기 (0) | 2025.05.23 |
자신만의 폰트 제작 - 2) MX-Font를 이용해 자신만의 손글씨 만들기 (0) | 2025.05.13 |
영상 기반 강물의 표면 유속 측정 (0) | 2025.05.04 |