jacewiki 🌳

youtubewc

최근 수정 시각: 2026-07-10 22:26:46

분류: | 음악 | 미디어

1. 개요

youtubewc(Cloudflare 프로젝트명 youtubemusicwc)는 YouTube Music 재생목록을 소재로 곡을 겨루게 하는 이상형 월드컵 겸 ELO 랭킹 앱이다. 자신의 재생목록을 불러와 토너먼트로 취향을 정렬하고, 그 결과를 전 사용자 공통의 글로벌 리더보드로 누적하며, AI가 붙인 곡 라벨을 바탕으로 자연어 조건만으로 새 플레이리스트를 뽑아 다시 YouTube에 발행할 수 있다.

원래 Flask/Jinja 기반 파이썬 앱이었으나 Cloudflare Worker + 정적 SPA 구조로 전면 이식되었고[1], 프론트엔드는 번들러 없는 브라우저 네이티브 ES 모듈로 구성된 PWA다. UI는 Claude.ai 톤의 웜 베이지 + 브라운 디자인 토큰에 다크 모드와 모바일 반응형을 갖춘 리디자인을 거쳤다.

youtubewc 홈 화면 — 재생목록을 토너먼트로 돌려 곡 순서를 찾는다는 소개와 주요 기능 바로가기

이 문서는 앱 전체를 소개하는 대문이다. 각 기능의 구체적인 역할과 사용법은 아래 개별 문서로 나뉘어 있다.

2. 기능 한눈에 보기

문서 무엇을 하는가
월드컵 · 랭킹 모드 재생목록을 토너먼트로 돌려 Elo로 곡 순위를 매긴다. 2·5·10곡 대결과 25곡 티어 모드, 일반/FAST 토너먼트, 세션 인사이트.
글로벌 ELO 리더보드 전 사용자 결과가 누적된 전체 곡의 Elo 순위. 통계·검색·AI 라벨 상세를 한곳에서.
자연어 플레이리스트 자연어 조건만 주면 AI가 라벨을 근거로 곡을 골라 플레이리스트를 만들고 YouTube에 발행한다.
큐레이션 빌더 리더보드를 곡 풀로 삼아 사람이 직접 곡을 골라 순서를 정하고 YouTube로 발행한다.
AI 곡 라벨링 AI가 각 곡에 분위기·장르 등 라벨을 붙인다. 리더보드 상세와 자연어 생성의 재료.
곡 바인딩 같은 곡의 여러 영상 버전을 하나로 묶어 순위 분산과 중복을 정리한다.
에이전트 API 외부 자동화(Claude Code 스킬 등)가 Bearer 인증으로 라벨링·플레이리스트를 대량 처리하는 API.

3. 시작하기

앱은 크게 세 갈래로 쓴다.

  1. 취향 정렬 — Google 계정으로 로그인해 자신의 YouTube 재생목록을 불러오고, 월드컵으로 곡을 겨뤄 Elo 순위를 만든다. 결과는 자동으로 글로벌 리더보드에 누적된다.
  2. 플레이리스트 만들기 — 순위가 쌓이면 youtubewc/큐레이션 빌더로 직접 곡을 골라 순서를 짜거나, youtubewc/자연어 플레이리스트로 "잔잔한 게임 OST" 같은 조건을 주고 AI에게 맡겨 새 재생목록을 만들어 YouTube에 발행한다.
  3. 정리·자동화 — 같은 곡의 중복 버전은 youtubewc/곡 바인딩으로 묶고, 대량 곡 라벨링·플레이리스트 생성은 youtubewc/에이전트 API로 앱 바깥에서 자동화한다.

리더보드와 큐레이션 빌더의 곡 풀·순위 조회는 로그인 없이도 열람할 수 있지만, 재생목록 불러오기·월드컵 진행·플레이리스트 발행처럼 개인 계정과 쓰기가 필요한 기능은 로그인이 필요하다.

4. 기술 스택

5. 개발 배경

파이썬 Flask 앱에서 출발해 Cloudflare Worker + 정적 SPA로 이식된 뒤, 2026년 3~4월 nightly 개발 라인에서 큐레이션 빌더·에이전트 API·Claude.ai 톤 리디자인·모바일 반응형이 추가되었다. 2026년 7월 초 master → main 브랜치 모델 정리와 nightly 머지·프로덕션 배포를 마쳤고[2], 이어서 전면 리팩토링으로 vitest 단위 테스트 + 헤드리스 스모크 안전망을 신설하고, 대형 JS/CSS를 페이지별 모듈로 분할했으며, 비로그인 상태의 콘솔 에러를 0으로 정리하고 자연어 생성·순서 업데이트 등의 UX 동선을 다듬었다.

브랜치 모델은 main(프로덕션) / nightly/날짜(개발 라인) / legacy(구 Flask 앱) / archive/* 태그(실험 보존)로 나뉜다.

6. 링크

  1. [1]구 Flask/Jinja 구현은 저장소의 legacy 브랜치에 보관되어 있다.
  2. [2]고유 커밋이 CRLF 노이즈뿐이던 옛 master는 삭제하고 archive/master-wip-2026-07-02 태그로 박제, 폐기된 실험은 archive/* 태그로 보존한다.