🚀 2026 스타트업 컨퍼런스

사라지는 데이터에 대처하는 우리의 자세: 나만의 유튜브 아카이브 구축기

사라지는 데이터에 대처하는 우리의 자세: 나만의 유튜브 아카이브 구축기

김현수·2026년 1월 4일·3

삭제되는 유튜브 학습 자료에 대비하여 yt-dlp와 Bash 스크립트를 활용해 나만의 체계적인 로컬 지식 아카이브를 구축하는 방법과 데이터 주권의 중요성을 소개합니다.

솔직히 고백하자면, 제 유튜브 '나중에 볼 동영상' 목록은 이미 디지털 무덤이 되었습니다. 언젠가 봐야지 하고 담아두었던 3년 전의 컨퍼런스 발표 영상, 레거시 시스템 마이그레이션 튜토리얼, 그리고 영감을 주었던 테크 토크들이 어느 날 들어가 보면 '삭제된 동영상입니다'라는 회색 문구로 변해있는 경험, 개발자라면 누구나 한 번쯤 겪어보셨을 겁니다. 인터넷은 영원할 것 같지만, 생각보다 훨씬 휘발성이 강한 공간이더군요. 특히 학습 자료가 절실한 주니어 시절, 아껴두었던 튜토리얼이 사라졌을 때의 그 막막함은 이루 말할 수 없었습니다.

처음에는 저도 필요할 때마다 yt-dlp 같은 커맨드 라인 도구를 사용해 영상을 하나씩 다운로드했습니다. 하지만 이 방식은 치명적인 단점이 있었습니다. 바로 '정리'가 안 된다는 것이었죠. 급하게 받은 파일들은 다운로드 폴더에 쌓여만 갔고, 파일명 뒤에는 알 수 없는 해시값들이 붙어 있어 나중에 검색조차 쉽지 않았습니다. 마치 변수명을 a1, temp2로 지어놓은 스파게티 코드를 보는 기분이었습니다. 데이터를 소유하는 것보다 더 중요한 건, 그 데이터를 언제든 꺼내볼 수 있도록 구조화하는 것이라는 사실을 뼈저리게 느꼈습니다.

그러다 최근 깃허브에서 꽤 흥미로운 Bash 스크립트 하나를 발견했습니다. yt-playlist-downloader라는 직관적인 이름의 이 도구는 제가 겪던 '정리'의 문제를 아주 심플한 엔지니어링으로 해결하고 있었습니다. 화려한 GUI도 없고, 복잡한 데이터베이스를 연동하지도 않습니다. 그저 yt-dlpFFmpeg라는 검증된 오픈소스 도구를 기반으로, 쉘 스크립트가 갖춰야 할 미덕인 '자동화'와 '일관성'에 집중한 프로젝트였습니다.

이 스크립트의 핵심은 playlists.txt라는 설정 파일에 있습니다. 보통의 다운로더들이 URL만 나열하는 것과 달리, 이 도구는 채널 이름|플레이리스트 URL 형식을 사용합니다. 파이프(|) 하나로 구분된 이 구조가 가져오는 변화는 놀랍습니다. 스크립트는 이 채널 이름을 디렉터리 명으로 사용하여 폴더를 자동으로 생성하고, 그 안에 해당 플레이리스트의 영상들을 차곡차곡 정리해 넣습니다. 개발자가 가장 좋아하는 '관심사의 분리'가 파일 시스템 레벨에서 이루어지는 셈이죠.

또한, 파일명 처리 방식이 매우 마음에 들었습니다. 기본적으로 유튜브 영상을 다운로드하면 영상 ID가 파일명에 포함되어 지저분해지기 십상인데, 이 스크립트는 플레이리스트 제목/영상 제목.mp4와 같이 우리가 직관적으로 이해할 수 있는 깔끔한 네이밍 컨벤션을 강제합니다. 여기에 더해 '스마트 싱크' 기능을 통해 이미 다운로드된 파일은 건너뛰도록 설계되어 있어, 크론(cron) 탭에 등록해두고 매일 밤 실행시켜도 대역폭이나 리소스 낭비가 없습니다. 멱등성(Idempotency)을 보장하려는 노력이 엿보이는 대목입니다.

물론, 단순히 스크립트를 실행한다고 끝나는 것은 아닙니다. yt-dlp가 필수적으로 설치되어 있어야 하고, 고화질 영상과 오디오를 병합하기 위한 FFmpeg 설정도 필요합니다. 때로는 유튜브의 차단을 피하기 위해 쿠키 파일을 별도로 추출해서 넣어줘야 하는 번거로움도 존재합니다. 하지만 이러한 과정 자체가 우리에게는 리눅스 환경에서의 파일 입출력과 프로세스 제어를 이해하는 좋은 공부가 됩니다.

우리는 클라우드의 편리함에 익숙해져 있지만, 내 로컬 스토리지에 잘 정리된 지식 라이브러리를 구축하는 것은 또 다른 안정감을 줍니다. 외부 API의 변경이나 서비스 종료에 휘둘리지 않고, 내가 큐레이션 한 지식을 온전히 내 통제하에 두는 것. 이것이야말로 엔지니어가 가져야 할 데이터 주권에 대한 태도가 아닐까요? 오늘 저녁에는 커피 한 잔 내려놓고, 흩어져 있는 여러분만의 학습 목록을 텍스트 파일 하나로 정리해 보는 건 어떨지 권해드립니다.

김현수
김현수10년 차 시니어 개발자

SI의 척박한 땅에서 시작해 빅테크의 대규모 트래픽까지 경험한 생존형 개발자입니다. '화려한 기술'보다 '퇴근을 보장하는 안정성'을 신봉하며, 주니어들의 삽질을 방지하기 위해 펜을 들었습니다.

김현수님의 다른 글

댓글 0

첫 번째 댓글을 남겨보세요!