실측 기반 소개

구독 채널 신규 영상을 매일 아침 자동 요약받는 파이프라인 만들기

수집은 스크립트, 요약은 LLM. yt-dlp와 스케줄링으로 유튜브 모니터링을 자동화하는 구성법.

가격 수집 도구(yt-dlp)는 무료. 요약에 쓰는 LLM 사용료는 별도
툴콕 점수 8.6
구독 채널 신규 영상을 매일 아침 자동 요약받는 파이프라인 만들기 커버 이미지
9 MIN

구독 채널이 서른 개쯤 되면 어느 순간 포기하게 됩니다. 하루에 새 영상이 열 개 올라오는데 하나가 15분이면 두 시간 반입니다. 그런데 정작 그중 내게 필요한 건 “이 영상은 무슨 얘기고, 내 일에 쓸 게 있나” 세 줄입니다. 두 시간 반을 들여 세 줄을 얻는 셈이죠.

그렇다고 LLM에게 매일 “구독 채널 새 영상 좀 정리해줘”라고 시키는 것도 답이 아닙니다. 그때그때 링크를 찾아 붙이고, 자막을 긁고, 형식을 다시 지정하는 과정이 매일 반복됩니다. 같은 일을 매번 처음부터 하는 만큼 토큰도 매번 나가고, 결과 형식도 그날그날 달라집니다.

이 글은 그 사이를 나누는 방법에 관한 것입니다. 반복되는 수집은 스크립트가 결정적으로 처리하고, LLM은 요약이라는 판단 영역만 맡는 구조입니다. 아래 내용은 데키랩 채널의 워크플로우 영상에서 정리한 구축 순서와, yt-dlp 공식 문서에 나온 동작을 근거로 재구성했습니다. 저는 이 파이프라인을 몇 달간 운영해본 것이 아니라 구성 요소별로 확인한 수준이므로, 그 점을 감안하고 읽어 주세요.

왜 수집과 요약을 분리해야 하나

한 번에 다 시키는 방식과 나누는 방식의 차이는 다음과 같습니다.

항목LLM에게 매번 즉석 수집스크립트 수집 + LLM 요약
토큰매일 탐색·시행착오 비용이 반복요약 입력분만 발생
재현성그날 판단에 따라 결과가 달라짐같은 입력이면 같은 출력
실패 지점어디서 틀어졌는지 추적이 어려움수집 실패인지 요약 실패인지 즉시 구분
형식매번 미묘하게 다름형식 파일로 고정
스케줄링매번 사람이 개입명령 한 줄로 무인 실행

핵심은 “LLM이 잘하는 일만 남기는 것”입니다. 채널 목록을 읽고 영상 ID를 뽑고 날짜를 비교하는 일은 판단이 필요 없는 결정적 작업이라 코드가 훨씬 잘합니다. 반대로 15분짜리 자막에서 요점 다섯 줄을 뽑는 일은 코드로 만들기 어렵습니다. 이 경계선을 따라 자르는 것이 전부입니다.

구성 요소

파일/폴더역할
channels.txt추적할 채널의 핸들 URL 목록
collect 스크립트yt-dlp로 최근 영상 메타 + 자막을 수집해 JSON으로 저장
output/날짜별 결과 저장 폴더
format.md요약 출력 형식 정의 (이게 없으면 매번 형식이 달라집니다)
CLAUDE.md“어제 거 요약해줘” 한마디로 전체 흐름이 돌게 하는 인수인계서
스케줄러정해진 시간에 위 흐름을 자동 실행

단계별로 만들기

한 번에 완성품을 만들려 하면 어디서 막혔는지 알 수 없게 됩니다. 아래 순서는 각 단계가 독립적으로 검증 가능하도록 쪼갠 것입니다.

1. 단건부터 확인

파이프라인을 짜기 전에 영상 하나에서 원하는 데이터가 나오는지부터 봅니다.

yt-dlp --write-auto-subs --sub-langs ko --skip-download -o "%(title)s.%(ext)s" "https://www.youtube.com/watch?v=VIDEO_ID"

--skip-download가 빠지면 영상 본체를 통째로 받습니다. 반드시 넣으세요. 자막 추출 자체의 함정과 VTT 정리 방법은 yt-dlp로 유튜브 자막 뽑기 글에 따로 정리해 두었습니다.

2. 채널 목록과 출력 폴더

channels.txt
output/
format.md

channels.txt에는 추적할 채널을 한 줄에 하나씩 적습니다.

https://www.youtube.com/@channel_a/videos
https://www.youtube.com/@channel_b/videos

3. format.md로 출력 형식을 고정

이 단계를 건너뛰면 요약이 매일 제멋대로 나옵니다. 어떤 날은 문단, 어떤 날은 불릿, 어떤 날은 타임라인이 있고 없고가 갈립니다. 형식 파일 하나로 해결됩니다.

# 요약 형식

각 영상마다 아래 형식을 지켜서 작성한다.

## [영상 제목]
- URL:
- 채널 / 업로드일 / 조회수:
- 핵심 요약: 3~5줄
- 타임라인: 주요 구간 3~6개 (시간 - 내용)
- 한 줄 인사이트: 내 일에 적용할 수 있는 것 한 가지

형식은 나중에 바꿔도 됩니다. 중요한 건 “요약해줘”가 아니라 “이 형식대로 요약해줘”가 되게 만드는 것입니다.

4. 수집 스크립트

채널 목록을 읽어 최근 영상을 뽑고, 각 영상의 자막을 받아 JSON으로 저장하는 스크립트를 만듭니다. 목록 조회는 플랫 모드가 빠릅니다.

yt-dlp --flat-playlist -I 1:5 --print "%(id)s|%(title)s|%(view_count)s" "https://www.youtube.com/@channel_a/videos"

-I 1:5로 최신 다섯 개만 봅니다. 채널 전체를 훑을 이유가 없습니다. 다만 플랫 모드 출력에는 업로드 날짜 같은 항목이 비어 나오는 경우가 있으니, 날짜 판정이 필요하면 후보로 좁힌 소수의 영상만 개별 조회해 확인하는 편이 안전합니다. 옵션 이름과 동작은 버전에 따라 달라질 수 있으므로 yt-dlp --help와 공식 저장소 문서로 확인하세요.

5. 테스트는 ‘어제’가 아니라 ‘최근’으로

여기가 실제로 사람들이 막히는 지점입니다. 처음부터 “어제 올라온 영상만”으로 만들어 놓고 테스트하면, 어제 아무도 영상을 안 올린 날에는 파이프라인이 정상인지 고장인지 알 수가 없습니다. 먼저 ‘최근 영상’으로 전 구간을 통과시켜 검증한 뒤, 그다음에 날짜 필터를 거는 순서로 가세요.

6. 날짜 필터 추가

검증이 끝나면 어제 업로드분만 남기도록 조건을 넣고, 해당 채널에 신규 영상이 없으면 조용히 건너뛰게 합니다. 여기서 “없으면 에러”가 아니라 “없으면 스킵”이어야 무인 실행이 가능합니다.

7. 인수인계서 작성

수집 스크립트와 format.md가 준비됐다면, 매번 사용법을 설명하지 않도록 프로젝트 루트에 지침 파일을 둡니다.

# 유튜브 모니터링

"어제 거 요약해줘"라고 하면:
1. collect 스크립트를 실행해 channels.txt의 각 채널에서 어제 업로드분을 수집한다
2. 결과 JSON을 읽는다
3. format.md의 형식대로 각 영상을 요약한다
4. output/YYYY-MM-DD.md 로 저장한다

이 파일이 있으면 명령이 한 문장으로 줄어듭니다. 스케줄러에 넣을 지침도 같은 한 문장이면 됩니다.

8. 저장 위치를 옮기기

처음에는 로컬 마크다운으로 충분합니다. 잘 돌아가는 걸 확인한 뒤에 노션 같은 곳으로 옮기세요. 커넥터로 노션을 연결하고 상위 페이지 ID를 지정한 다음, 날짜별 하위 페이지로 저장하게 지침 파일을 갱신하는 식입니다. 처음부터 연동까지 한 번에 붙이면 실패 원인이 수집인지 요약인지 연동인지 구분되지 않습니다.

9. 스케줄링

마지막으로 정해진 시간에 자동 실행되게 겁니다. 클로드 데스크탑의 루틴 기능을 쓴다면 작업 폴더를 지정하고, 지침 한 줄(“어제 거 요약해줘”)과 실행 시각을 넣으면 됩니다. OS 기본 스케줄러(윈도우 작업 스케줄러, cron)로 스크립트만 먼저 돌리고 요약을 뒤에 붙이는 구성도 가능합니다.

로컬 스케줄링은 PC가 켜져 있어야 동작합니다. 노트북을 매일 닫아두는 환경이라면 상시 켜두는 기기나 서버 쪽을 고려해야 합니다.

점수: 8.6

파이프라인 전체에 대한 점수입니다.

좋은 점

  • 수집을 스크립트로 고정하는 것만으로 매일 반복되던 토큰 소모와 실패 변동이 함께 줄어듭니다
  • yt-dlp는 무료이고, 유튜브 공식 API처럼 일일 할당량이나 호출 과금을 신경 쓸 일이 없습니다
  • 구성 요소가 텍스트 파일(channels.txt, format.md, 지침 파일)이라 수정이 쉽고 버전 관리가 됩니다
  • 단계별로 독립 검증이 가능해서, 고장 나면 어느 칸에서 났는지 바로 좁혀집니다
  • 채널 목록만 바꾸면 경쟁사 모니터링, 업계 동향 추적 등으로 그대로 전용됩니다

아쉬운 점

  • 로컬 스케줄링은 PC가 꺼져 있으면 그날 것이 통째로 비고, 놓친 날을 자동으로 메우지 않습니다
  • 자막이 없거나 자동자막 품질이 나쁜 영상은 요약도 같이 나빠집니다. 특히 고유명사와 숫자는 자동자막에서 자주 틀립니다
  • 유튜브가 내부 구조를 바꾸면 수집이 깨질 수 있습니다. pip install -U yt-dlp가 첫 대응이지만, 무인 실행 중에는 깨진 걸 늦게 알아차리게 됩니다
  • 초기 구축에 CLI와 스크립트 수정이 들어가므로 완전 비개발자에게는 부담이 있습니다
  • 요약 품질 자체는 결국 LLM 비용에 비례합니다. 영상 수가 늘면 요금도 선형으로 늘어납니다

이럴 때 쓰세요: 매일 확인해야 하는 채널이 열 개 이상이고, 영상을 다 보는 대신 요점만 쌓아두고 나중에 검색하고 싶을 때.

만들기 전에 확인할 것

저작권. 자막 텍스트를 받아 요약·조사에 쓰는 것과, 영상 파일을 받아 재배포하는 것은 전혀 다른 문제입니다. 이 파이프라인은 전자를 위한 것이고, 결과물을 그대로 공개 게시하는 용도라면 출처 표기와 인용 범위를 따로 검토해야 합니다.

과욕 금지. 채널을 50개씩 넣으면 매일 아침 읽지도 않을 요약이 쌓입니다. 실제로 매일 확인하던 채널부터 넣고 늘리세요.

모니터링의 모니터링. 무인 실행의 가장 흔한 실패는 “몇 주째 안 돌고 있었는데 몰랐다”입니다. 수집 결과가 0건인 날이 연속되면 알림이 오게 해두는 편이 좋습니다.

응용

같은 구조는 유튜브 밖에서도 그대로 씁니다. 수집 대상만 RSS·뉴스레터·경쟁사 블로그로 바꾸고, format.md의 항목만 목적에 맞게 고치면 됩니다. 실제로 이 구성은 “결정적 수집기 + 형식 파일 + 요약 LLM + 스케줄러”라는 네 칸짜리 틀이고, 유튜브는 그 첫 칸에 꽂힌 하나의 소스일 뿐입니다.