YouTube 구독 채널 조회 방식 결정

Outcome (완료 조건)

YouTube 구독 채널 자동 ingest 파이프라인의 Step 1: 구독 채널 목록 조회 방식을 운영 안정성 기준으로 확정한다. 1차 방식은 yt-dlp --cookies-from-browser chrome 파일럿으로 검증하고, 실패 시 수동 화이트리스트 또는 YouTube Data API v3 전환 기준을 남긴다.

Why This Project

상위 프로젝트 유튜브-구독채널-자동수집의 첫 번째 의사결정 지점이다. 구독 채널 조회 방식이 불안정하면 이후 화이트리스트 생성, 최근 10일 영상 조회, /ingest-youtube 정기 실행 전체가 흔들리므로, 자동화 전에 접근 방식과 fallback을 분리해 안정성을 확보한다.

Context

상위 프로젝트의 Step 1은 다음 선택지를 검토한다.

옵션판단이유
A. yt-dlp --cookies-from-browser chrome1차 권장현재 환경에 yt-dlp가 설치되어 있고, 추가 OAuth 설정 없이 빠른 파일럿 검증 가능
B. YouTube Data API v3보류OAuth, API 프로젝트, 토큰 저장, quota 관리가 필요해 초기 검증 단계에서는 과함
C. 수동 CSV/Markdown 입력보조안쿠키 접근 실패 시 즉시 우회 가능하며 운영 안정성이 높음

현재 확인된 환경:

  • 작업공간: /Users/a03298/projects/jyp-garden/30-Work
  • yt-dlp: /opt/homebrew/bin/yt-dlp, 버전 2026.03.17
  • Python: 3.9.6

결정안

권장 결정

A → C → B 순서로 진행한다.

  1. A: yt-dlp --cookies-from-browser chrome로 구독 채널 후보 1회 추출 파일럿
  2. C: 쿠키 접근 실패 또는 결과 품질 불량 시 수동 화이트리스트 작성
  3. B: 장기 운영에서 계정 연동 자동화가 필요할 때 YouTube Data API v3로 전환

파일럿 절차

1. 구독 채널 후보 추출 테스트

yt-dlp \
  --cookies-from-browser chrome \
  --flat-playlist \
  --dump-single-json \
  "https://www.youtube.com/feed/channels"

성공 시 결과에서 채널명, 채널 URL, channel_id를 추출해 후보 파일로 저장한다.

system/config/youtube-channels-candidates.json

2. 화이트리스트 승인 게이트

후보 전체를 자동 ingest 대상에 넣지 않는다. 사람이 IT/AI/바이브코딩 관련 채널만 승인해 whitelist 컬럼을 ✅로 표시한다.

system/config/youtube-channels-candidates.md

후보 파일의 whitelist 컬럼에서 ✅ 표시된 채널만 ingest 대상으로 사용한다.

운영 원칙

구독 목록 조회는 매일 자동화하지 않는다.

최초 1회 / 월 1회 / 신규 구독 반영 필요 시
→ 구독 채널 후보 추출
→ 사람 승인
→ 화이트리스트 갱신

정기 자동화는 candidates 파일에서 ✅ 표시된 채널만 대상으로 한다.

candidates.md의 whitelist=✅ 채널
→ 최근 10일 영상 조회
→ 중복 체크
→ /ingest-youtube 호출

Risks

식별된 리스크

  • R1 (Major): Chrome 쿠키 접근 실패 → 대응: 수동 CSV/Markdown 화이트리스트로 즉시 우회
  • R2 (Major): YouTube 로그인 세션 만료 → 대응: 구독 조회는 정기 자동화에서 제외하고 월간/수동 갱신으로 제한
  • R3 (Major): 비관련 구독 채널 포함 → 대응: 화이트리스트 승인 게이트 필수
  • R4 (Minor): YouTube Data API 전환 시 OAuth/Quota 부담 → 대응: 파일럿 실패 또는 장기 운영 요구 발생 시에만 전환

Next Actions

Actions (완료)

  • yt-dlp --cookies-from-browser chrome 명령으로 구독 채널 후보 추출 가능 여부 테스트 ✅ 2026-05-06
  • 성공 시 youtube-channels-candidates 생성 ✅ 2026-05-06 (64개 채널, whitelist ✅ 18개)
  • candidates 파일에서 whitelist 컬럼 직접 검토·조정 ✅ 2026-05-12 (패스트캠퍼스 제외, 17개로 조정)
  • 장기 운영 필요성이 확인되면 YouTube Data API v3 도입 여부 재검토 ✅ 2026-05-12 (불필요, launchd + yt-dlp로 안정적 운영)

Artifacts

산출물

  • youtube-channels-candidates — 전체 64개 구독 채널 후보 + whitelist ✅ 표시 (최종 17개)
  • system/scripts/youtube-auto-ingest.py — A안 기반 자동 수집 스크립트
  • ~/Library/LaunchAgents/com.jyp-garden.youtube-auto-ingest.plist — 매일 11:50 정기 실행 설정

Progress

2026-05-06 — 검토 결과 서브 프로젝트 등록

  • Step 1 검토 결과를 서브 프로젝트로 분리했다.
  • 1차 권장안은 yt-dlp --cookies-from-browser chrome 파일럿이며, 운영 정착은 승인된 화이트리스트 기준으로 제한한다.

2026-05-06 — 파일럿 실행

  • yt-dlp --cookies-from-browser chrome 구독 채널 64개 추출 성공 → youtube-channels-candidates 생성
  • IT/AI/바이브코딩 채널 18개 선별 및 whitelist ✅ 컬럼으로 통합 관리
  • youtube-auto-ingest.py 첫 실행: 17채널 순회, 31개 신규 영상 발견
  • claude -p 방식 성능 이슈 확인 (영상 1개당 5분+), 11개 처리 후 중단
  • 버그 2건 수정: 타임아웃 5→10분, 날짜 미확인 영상 필터 추가

2026-05-12 — 운영 검증 완료 및 최종 확정

  • A안(yt-dlp --cookies-from-browser chrome) 운영 검증 완료
    • launchd 정기 실행: 매일 11:50 정상 작동
    • 누적 수집: 84개 영상 (5월 5~12일)
    • 안정성: ✅ 5월 8일 이후 정상 (초기 인증 오류 해결)
  • Whitelist 품질 개선: 패스트캠퍼스 제외 (비관련 콘텐츠) → whitelist 18개 → 17개 최적화
  • YouTube Data API v3 도입 불필요: yt-dlp + launchd + 월간 수동 갱신으로 충분
  • 프로젝트 성과:
    • 조회 방식 확정 (A안)
    • Fallback 기준 수립 (R1~R4 리스크 관리)
    • 운영 원칙 실제 입증 (최초 추출 → 월간 갱신 가능)
    • 서브 프로젝트 완료 조건 달성