개요
이 프로젝트는 동영상 플랫폼의 자동 생성 자막(Auto-generated Captions)을 다운로드하여 가독성이 높은 문단 형태로 정제하는 웹 및 CLI 기반 Python 어플리케이션입니다.
개발 배경 및 목적
이 프로젝트는 사용자가 동영상 자막을 2차 자료로 활용할 때 직면하는 불편함을 근본적으로 해결하기 위해 시작되었습니다.
-
배경: 자막 파일을 다운로드하기 위한 기술적 장벽과, 자동 생성 자막의 부정확한 구두점 및 잦은 줄 바꿈으로 인한 텍스트 데이터의 현저한 비가독성 문제
-
목적: 기술적 및 데이터 품질 문제를 극복하고, 문맥을 고려하여 라인을 병합하고 정제된 텍스트를 확보하여 자막 파일을 분석 작업에 곧바로 활용할 수 있도록 지원
기술 및 아키텍처
Bottle 기반의 웹 애플리케이션 및 CLI(Command-Line Interface) 도구로 구성되어 있으며, Gemini 협업 기반, 개발 기간은 총 1일 소요되었습니다.
기술 스택
- Python: 프로젝트의 주 언어
- youtube-transcript-api: 자막 추출의 핵심 라이브러리로 활용
- Bottle: 경량 웹 애플리케이션 프레임워크로, 빠르고 간단한 GUI 제공
- Pico: 웹 앱의 UI/UX를 위한 최소한의, 자동 테마(Auto-Theme)를 지원하는 CSS 프레임워크
시스템 구조
- 모듈 분리: 핵심 로직(ytcapt.py)과 웹 GUI(app.py)를 분리하여 코드의 유지보수 용이성 확보
- 캐시 관리: 동일 비디오 재요청 시 네트워크 접근 없이 7일간 캐시 데이터를 활용하여 트래픽 및 응답시간 단축
주요 로직
-
언어별 정제 규칙 적용: 한국어의 경우, ‘~습니다’, ‘~어요’, ‘~겠어요’ 등 활용형 종결어미 패턴을 휴리스틱 기반으로 설계하여 자막 라인 병합 기준을 확립
-
자동 생성 자막만 타겟팅: 다운로드 과정에서 품질이 높은 수동 자막 대신, 범용성 확보를 위해 모든 동영상에 존재하는 자동 생성 자막(automatic_captions)만 지정하여 추출
-
오류 처리: 특정 언어의 자막 다운로드시 발생하는 ‘HTTP 429: Too Many Requests’ 오류를 지역 제한(Region/IP Restriction) 문제로 명시하여 사용자에게 안내
사용 방법
프로젝트 주소: https://github.com/yoonbae81/ytcapt
웹 애플리케이션 (GUI)
- python app.py를 실행 후 http://localhost:8080/로 접속
- 동영상 또는 플레이리스트 URL 입력 후, 정제된 텍스트를 즉시 확인하고 다운로드
커맨드 라인 인터페이스 (CLI)
- 터미널에서 직접 실행하여 스크립트 자동화에 활용 가능
# 한국어 자막 추출 및 정제
python ytcapt.py "https://video_url/watch?v=XXXXXXXXXXX" -l ko
# 캐시 무시 강제 다운로드
python ytcapt.py "https://video_url/watch?v=XXXXXXXXXXX" --force-dl
활용 방안
ytcapt를 통해 정제된 텍스트는 단순 아카이빙을 넘어 다음과 같은 2차 지식 작업(Knowledge Work)에 활용할 수 있습니다.
- AI 분석 활용: 다운로드한 자막은 AI를 통한 분석 및 요약에 활용될 수 있으며,
- 메모 앱 연동: 한 발 더 나아가, Gemini CLI와 같은 AI Agent를 활용해 Logseq, Obsidian, Anki와 같은 메모 및 플래시카드 도구에 입력할 수 있도록 데이터 구조화 기능 개발중