인터넷 아카이브의 휘발성 미디어로 가짜 라이브 케이블 TV 네트워크를 만들었습니다
I built a fake live cable TV network out of the Internet Archive's ephemeral media
핵심 요약
인터넷 아카이브 자료를 활용해 24시간 실시간으로 방송되는 가상의 케이블 TV 채널 'spelunkr'를 개발했습니다.
- 프로젝트 개요 — 인터넷 아카이브 영상을 활용해 24시간 동기화된 가상 케이블 TV 채널을 구축함
- 기술 스택 — Claude Code를 활용해 8만 7천 줄 규모의 코드를 작성하고 8개월간 개발함
- 주요 기능 — 실시간 시청 경험을 재현한 동기화 시스템과 타임라인 기반의 댓글 및 반응 기능 제공
- 향후 계획 — 90년대 스타일의 채팅방, 자동 자막 생성, 추가 채널 확장 등을 준비 중임

이름은 spelunkr라고 한다.
잊혀진 영상들을 테마별 "케이블 TV 채널"로 묶어서 24시간 내내 동기화된 스케줄로 틀어주는 채널이 (현재까지) 24개나 된다.
지금까지 모은 영상만 2,700시간 분량이고, 24시간 내내 돌아간다. 옛날 TV처럼 채널을 틀면 다른 시청자들과 똑같은 타이밍에 영상 중간부터 보게 되는 구조다.
코드베이스는 총 87,000줄 정도인데, 앱 코드가 24,000줄, CSS 13,000줄, 툴링 스크립트 28,000줄, 테스트 16,000줄, SQL 5,000줄로 구성돼 있다. 8개월 동안 커밋 670번 찍었고, 유닛 테스트 850개랑 브라우저 테스트 160개를 돌린다. 나한테는 진짜 애정이 담긴 프로젝트고, Claude로 뭘 만들 수 있을까 고민하다가 시간 날 때마다 틈틈이 키워온 결과물이다.
지난 8개월 동안 틈날 때마다 붙잡고 늘어졌는데, 순수 작업 시간만 따지면 한 30일 정도 될 거다. 거의 전부 Claude Code로 만들었다. 내부 구조는 대충 이렇다.
웹사이트의 모든 영상은 Internet Archive에서 직접 스트리밍된다. 플레이어는 Archive의 파일 주소를 가리키는 평범한 HTML <video> 요소다. iframe도 없고, 프록시도 없고, 재인코딩도 없고, 복사본도 없다. Spelunkr는 페이지(gzipped 기준 약 110KB의 자바스크립트), 작은 JSON 스케줄, 그리고 중간 광고용으로 쓸 퍼블릭 도메인이나 CC BY/BY-SA 음원 200곡 정도만 직접 서빙한다. 모든 영상 제목은 Archive에 있는 해당 테이프 페이지로 연결된다.
옛날 Adult Swim 감성을 살리려고 영상 중간중간에 채널 "범프(bump)" 광고도 넣었다.
채널은 Archive 검색 결과를 바탕으로 만든다. IA에 채널 하나를 꽉 채울 만큼 콘텐츠가 있는지 확인하고 구성한다. 어떤 채널은 "REWIND"라고 분류해 놨는데, 이건 보통 1993년 누군가의 VCR에 녹화된 실제 케이블 TV 방송을 2~6시간 분량으로 립(rip)한 거다. 공포물, 괴수물, 탐정 누아르, 서부극 전용 클래식 영화 채널도 있다. 심지어 'The Joy of Painting(밥 로스의 그림을 그립시다)' 전 에피소드를 다 찾아서 CH 12: HAPPY TREES라는 채널도 만들었다.
Claude가 모든 테이프를 검수해서 제대로 된 영상인지 확인하고, 설명이랑 정보, 스케줄까지 싹 다 짜준다. 채널마다 고유한 브랜딩이 있는데, 8가지 컬러 토큰으로 그린 32x32 픽셀 로고도 있고, 채널 고유의 광고용 보이스랑 음악 풀도 따로 있다.
채널에서 테이프를 순서대로 트는 방식은 세 가지다. 연도별(8개 채널), 랜덤(12개), 블록 로테이션(4개). 블록 로테이션은 한 프로그램 에피소드 몇 개 틀고, 다음 프로그램으로 넘어가는 식으로 계속 돌아간다.

