
사실 유튜브 쇼츠 채널 하려고 오래 생각만 했어요.
7년차 프론트엔드 개발자인데, 콘텐츠 만드는 건 다른 문제예요. 아이디어는 있는데 대본을 어떻게 써야 할지 막막했어요. 유튜브 쇼츠는 30초 안에 사람을 붙잡아야 하는데, 그 짧은 시간 안에 후킹 멘트, 핵심 내용, 좋아요 유도, 댓글 유도, 구독 유도까지 다 넣으려면 구조가 있어야 하거든요. 그 구조를 매번 생각하는 게 귀찮아서 계속 미뤘어요.
근데 어느 날 생각이 달라졌어요. "대본을 쓰는 게 귀찮은 거라면, 그냥 안 쓰면 되는 거 아닌가? Claude API 연결해서 자동으로 만들게 하면."
그래서 만든 게 이 파이프라인이에요.

파이프라인이 하는 일
한 줄로 요약하면 이래요. YouTube 영상 URL 하나 넣으면, 쇼츠 3~5개 분량의 업로드 가능한 패키지가 MD 파일로 나와요.
패키지 안에 뭐가 들어있냐면요.
- 쇼츠 구간 (시작 타임스탬프 ~ 끝 타임스탬프)
- CapCut TTS용 후킹 멘트 (영상 앞 3초에 붙이는 것)
- 유튜브 제목 (20자 이내)
- 좋아요 유도 멘트
- 댓글 유도 질문
- 구독 유도 멘트
- 썸네일 문구 (10자 이내)
- 유튜브 설명란 전체 (출처 표기 포함)
- 해시태그 15개
이걸 사람이 만들면 하나에 30분~1시간이에요. 영상 보고, 어느 구간이 좋은지 판단하고, 멘트 짜고, 설명란 쓰고, 해시태그 찾고… 근데 파이프라인 돌리면 영상 하나에 2~3분 만에 MD 파일이 나와요.
기술 스택
# 사용 라이브러리
import anthropic # Claude API
from googleapiclient.discovery import build # YouTube Data API v3
from youtube_transcript_api import YouTubeTranscriptApi # 자막 추출
import yt_dlp # 클립 다운로드 (선택)
import cv2 # 썸네일 프레임 추출 (선택)
핵심은 두 개예요. YouTube API로 영상 정보랑 자막을 가져오고, Claude API로 그 자막을 분석해서 쇼츠 구간이랑 멘트를 만들어요.
실제로 써보니 전체 흐름 중에 Claude API 분석 단계가 제일 핵심이에요. 자막 타임스탬프 전체를 프롬프트에 넣고, "이 중에서 쇼츠로 만들기 좋은 구간 3~5개 뽑아줘"라고 하면 Claude가 선별 이유까지 같이 써줘요. 그냥 타임스탬프만 주는 게 아니라 "이 구간이 왜 좋은지"까지 나오니까 검토할 때 편해요.
자동 스캔 모드
처음엔 video_id를 하나씩 수동으로 넣는 방식이었어요. 근데 쓰다 보니 번거로워서 채널 자동 스캔 모드를 추가했어요.
# 자동 모드 실행
python run_pipeline.py
# 특정 채널 스캔
python run_pipeline.py @채널핸들
# 수동으로 video_id 지정
python run_pipeline.py dQw4w9WgXcQ abc123xyz
자동 모드는 channels.json에 설정해둔 채널을 스캔해서, 최근 N일 이내 영상 중 조회수 필터를 통과한 것들을 순서대로 분석해요. 채널별로 "최소 조회수 1만 이상만", "키워드 포함된 것만" 이런 조건을 설정할 수 있어요.
실제로 써보니 아침에 파이프라인 한 번 돌리면, 그날 분석 가능한 영상들이 MD 파일로 쌓여 있어요. 채널 들어가서 영상 찾는 시간이 없어졌어요.

Claude API 프롬프트 구조
파이프라인에서 제일 공들인 부분이에요. Claude한테 자막 데이터를 어떻게 넘기느냐에 따라 결과물 품질이 완전히 달라지거든요.
prompt = f"""당신은 유튜브 쇼츠 전문 편집자입니다.
아래 영상 정보를 분석해 쇼츠로 만들기 좋은 구간 3~5개를 선별해주세요.
## 영상 정보
제목: {meta.get('title', '')}
조회수: {meta.get('view_count', 0):,}
## 자막 (타임스탬프 포함)
{transcript_fmt}
## 선별 기준
1. 핵심 주장/폭로/발표 구간
2. 감정적으로 강한 발언 구간
3. 30~60초 내 완결, 독립적으로 이해 가능한 구간
4. 첫 3초에 들어갈 강렬한 후킹 멘트 포함 여부
"""
실제로 써보니 "선별 기준"을 명시하는 게 결과물에 크게 영향을 줘요. 기준 없이 그냥 "좋은 구간 뽑아줘"라고 하면 너무 평범한 구간이 나왔어요. 기준을 구체적으로 쓸수록 쇼츠에 어울리는 구간이 나왔고, 후킹 멘트 퀄리티도 올라갔어요.
응답은 JSON으로만 받아요. 텍스트 없이 JSON만 요청하는 게 파싱할 때 훨씬 안정적이에요. 가끔 Claude가 JSON 앞뒤로 설명을 붙이는 경우가 있어서, 코드에서 { 부터 } 사이만 추출하는 안전망도 달아뒀어요.
Discord 알림까지 붙였어요
파이프라인 돌리고 결과가 나오면 Discord 채널에 알림이 와요.
def _notify_discord(results: list[dict]) -> None:
webhook_url = os.getenv("DISCORD_WEBHOOK_URL", "")
# 분석 완료된 영상 목록 + 쇼츠 개수 요약을 Discord에 전송
실제로 써보니 이게 의외로 유용해요. 파이프라인을 백그라운드로 돌려놓고 다른 일 하다가, Discord 알림 오면 결과 확인하는 방식으로 쓰고 있어요. "쇼츠 3개 | 구간: 02:14, 07:33, 15:02" 이런 식으로 요약이 오니까 MD 파일 열기 전에 이미 어떤 구간인지 알 수 있어요.

마무리 — 아예 안 하던 걸 시작하게 됐어요
파이프라인 만들기 전엔 유튜브 쇼츠를 아예 안 만들고 있었어요. 대본 쓰는 게 막막해서요. 근데 지금은 파이프라인 돌리면 업로드 직전 단계까지 패키지가 나와요. 아이디어에서 완성까지 걸리는 시간이 하루에서 즉시로 바뀐 거예요.
더 정확히 말하면, "시간이 걸리는 게 아니라 막막함이 문제"였어요. 파이프라인이 그 막막함을 없애줬어요. 구간 선별도 Claude가 하고, 멘트도 Claude가 초안 잡아주니까, 제가 할 건 검토하고 업로드하는 거예요.

개발자로서 가장 재밌었던 건, 이 파이프라인 자체를 만드는 과정도 바이브코딩이었다는 거예요. 구조 설계 말하고, Claude가 코드 초안 잡아주고, 제가 로직 다듬는 방식으로 짰어요. 만드는 도구를 만드는 데도 그 도구를 썼어요.
'개발 실무' 카테고리의 다른 글
| Claude 시작하기 — 가입부터 첫 대화까지 (0) | 2026.05.24 |
|---|---|
| ChatGPT 시작하기 — 가입부터 첫 대화까지 (0) | 2026.05.23 |
| Claude Cowork에 Figma MCP 연결해서 카드뉴스 만들기 (0) | 2026.05.21 |
| 7년차 개발자의 첫 바이브코딩 경험담 | 게임 기획만 말했는데 배포까지! (0) | 2026.05.20 |
| AI 쓰면서 개발 실력이 줄고 있는 것 같아요 [7년차 프론트엔드 개발자의 솔직한 고백] (0) | 2026.05.19 |