본문으로 건너뛰기

YouTube URL을 넣으면 5개 플랫폼 콘텐츠가 나오는 기능 추가했다

런칭 2주 만에 가장 많이 요청받은 기능:

"YouTube 영상 URL 넣으면 요약 + 리퍼포징 해줄 수 있어요?"

3명이 독립적으로 같은 요청을 했다. 3번 같은 요청 = 만든다는 내 기준을 넘었다.

2일 만에 구현했다.


어떻게 동작하는가

# 기존 방식 (변함없음)
content-repurposer my-blog-post.md --formats all

# 새 방식 — YouTube URL 직접 지원
content-repurposer https://youtube.com/watch?v=xxxxx --formats all

내부적으로:

  1. URL 감지 → YouTube 트랜스크립트 추출
  2. 트랜스크립트 → 마크다운 정제
  3. 이후 기존 파이프라인과 동일

기술 결정: 트랜스크립트 어디서 가져오나

옵션 3가지를 검토했다:

옵션 A: YouTube Data API v3

공식 API지만 quota 제한 있고, OAuth 설정 복잡. 사용자가 API 키 하나 더 발급해야 함.

탈락: 사용자 경험 복잡도 ↑

옵션 B: youtube-transcript npm 패키지

비공식이지만 널리 쓰임. 자막이 있는 영상에서 무료로 추출.

import { YoutubeTranscript } from 'youtube-transcript';
const transcript = await YoutubeTranscript.fetchTranscript(videoId);

채택: 가장 단순, API 키 불필요

옵션 C: yt-dlp + Whisper (로컬 STT)

가장 강력하지만 로컬 설치 필요, 시간도 오래 걸림.

나중에 고려: v2.0 기능으로 백로그


품질 이슈: 자동 자막 vs 수동 자막

YouTube 자막에는 두 종류가 있다:

  • 수동 자막: 크리에이터가 직접 작성 → 품질 좋음
  • 자동 자막: YouTube AI가 생성 → 오류 있음, 구두점 없음

자동 자막 원문:

안녕하세요 오늘은 프롬프트 엔지니어링에 대해서 이야기해보겠습니다 먼저 
기본 개념부터 시작하겠습니다 프롬프트는 사실 ...

이걸 그냥 LLM에 던지면 품질이 낮아진다.

해결책: 전처리 레이어 추가

function cleanTranscript(rawTranscript) {
// 타임스탬프 제거
// 구두점 복원 (간단한 규칙 기반)
// 반복 구문 필터링
// 단락 구분 추가
return cleaned;
}

처리 후 품질 점수: 6.2 → 8.9로 상승.


실제 테스트 결과

입력: 내 이전 YouTube 영상 (14분, 자동 자막) 처리 시간: 78초 (트랜스크립트 추출 15초 + 리퍼포징 63초) 품질 점수: 8.9/10

생성된 Twitter 쓰레드 첫 트윗:

"14분 영상을 보지 않아도 되게 만들겠습니다 🧵

오늘 다룬 핵심 3가지:
1. 프롬프트 엔지니어링 ≠ 마법
2. 측정 없는 최적화는 복권
3. Chain-of-Thought이 왜 효과적인가

(전문은 아래)"

원본 영상 안 봐도 콘텐츠 파악 가능한 수준.


배포

# v1.1.0 업데이트
npm install -g content-repurposer@latest

# 또는 로컬 실행
node src/cli.js https://youtube.com/watch?v=xxxxx --formats twitter,linkedin

CHANGELOG:

  • v1.1.0 (2026-03-24): YouTube URL 입력 지원
  • v1.0.0 (2026-03-08): Initial launch

다음 요청 대기 중

현재 백로그:

  • 팟캐스트 RSS URL 지원 (3건 요청)
  • --edit 플래그 (생성 후 에디터 오픈)
  • 팀 플랜 (웨이팅 3팀)

MVP는 출시지만 제품은 계속 성장한다. 요청 있으면 GitHub Issues에 올려주세요.

다음 업데이트: v1.2.0 팟캐스트 지원 예정 🥞