brunch

Day 6: 유튜브 채널 데이터 자동 수집하기

유튜브 채널 데이터, 이제는 기간·키워드별로 자동 수집해보자

by 채박사

지난번에는 시간 아끼자는 마음 하나로 유튜브 요약 웹앱을 만들었었다.

https://brunch.co.kr/@kk2daddy/18

여러 개의 링크나 파일을 한꺼번에 분석해서 요약해주는 기능이었다. 그런데 실제로 써보니, 요약만으로는 채널 전체의 ‘흐름’을 파악하긴 어렵다는 생각이 들었다.

특정 키워드가 등장한 맥락이나 시기별 변화, 콘텐츠의 스타일 변화 같은 건 요약문만으로는 한계가 있었다.
프롬프트를 맞춤 설정해서 ChatGPT에 넣으면 어느 정도 해결되긴 하지만,
매번 10개 제한, 한땀 한땀 붙여넣기하는 게 너무 번거로웠다.

그래서 아예 새로운 툴을 만들었다.
이름도 없고, UI도 단순하지만, 지금 내가 필요한 기능은 확실히 담았다.


FXPHldm33jNM0%3D


프로젝트 목적

유튜브 채널 하나에 대해
“어떤 키워드가 언제부터 언제까지 어떤 톤으로 반복적으로 언급되는가?”
를 파악하고 싶었다.

이를 위해 필요한 건 ‘요약’이 아니라 ‘구조화된 데이터’였다.
그래서 이번에는 콘텐츠 수집과 필터링에 중점을 뒀다.


기능 개요

YouTube 채널 수집

채널 ID (UC로 시작) 또는 핸들(@username) 입력만으로 해당 채널의 전체 영상 목록 자동 수집 >> 핸들 입력 시 자동으로 채널 ID로 변환되도록 처리

자막 다운로드 & 처리

다국어 자막 지원 (한국어 우선, 없으면 영어 등 대체 시도) >> 자막은 DB와 캐시에 저장해서 중복 다운로드 방지

강력한 필터 기능

날짜 필터: 시작일~종료일로 원하는 기간 설정 >> 키워드 필터: 제목/설명/자막까지 포함된 멀티 레벨 검색 >> 특정 키워드가 나온 영상만 골라내어 자막 추출 가능

출력 형식 선택 가능

단일 파일 다운로드 >> 월별 / 분기별 / 연도별 분리 저장

웹 기반 GUI

Flask로 간단한 웹 인터페이스 제공 >> 실시간 작업 진행 상태 시각화 >> 다운로드 가능한 파일 목록 제공

예외 상황 대응

자막 없는 영상 자동 필터링 >> 날짜 형식 오류, 타임존 처리 >> 채널 정보 미리보기 기능 포함


작동 화면

첫 화면에서는 채널 핸들 또는 ID, 검색 키워드, 기간만 입력하면 된다.

tempImageU0QQQa.heic

'데이터 수집 시작'을 누르면 영상 목록이 수집되고 자막 다운로드가 시작된다.

tempImageZ1ddmp.heic

모든 자막은 선택한 기간 단위로 정리되어 파일로 저장된다.
(월별, 분기별, 연도별 선택 가능)

tempImageDfP3A0.heic

저장된 파일을 열어보면 위와 같이 저장이 된 것을 확인할 수 있다.


왜 요약 기능은 제외했을까?

이번 프로젝트에서는 요약 기능은 일부러 제외했다.
요약 기능을 붙이는 건 어렵지 않다. GPT API 붙이고, 프롬프트 설계만 하면 된다.
하지만 요약을 자동으로 다 돌리면 API 비용이 꽤 크다.

그래서 지금은 데이터를 다운로드해서 필요한 시점에만 요약하는 방향으로 두었다.
이건 비용을 고려한 전략적 판단이었다.


이 프로젝트의 다음 단계는?

멀티채널 분석 기능 확장
(현재는 채널 1개씩, 나중에는 여러 채널을 동시에 비교할 수 있도록)

자막 내 감정 분석 / 톤 분류 기능 시도

요약 자동화 및 클러스터링: 동일 주제를 다룬 영상 묶기

기능이 많아지고 구조가 커지면 다시 통합의 문제를 만나겠지만,
그때는 지금 만든 모듈들을 함수로 가져와 유기적으로 붙일 계획이다.


마무리

이번 프로젝트도 ‘나에게 필요한 도구’를 만든다는 단순한 동기에서 시작했다.
시간은 오래 걸렸지만, 그만큼 데이터가 어떻게 쌓이고 흘러가는지 눈에 보이기 시작했다.
완벽하진 않지만, 필요할 때마다 꺼내 쓰는 도구함 같은 프로젝트가 되기를 바란다.


#YouTubeData #AI도구개발 #GenAI #자막분석 #개발로그 #개인개발자


keyword
작가의 이전글AI 시대 글쓰기의 중요성