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
내부적으로:
- URL 감지 → YouTube 트랜스크립트 추출
- 트랜스크립트 → 마크다운 정제
- 이후 기존 파이프라인과 동일
기술 결정: 트랜스크립트 어디서 가져오나
옵션 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 팟캐스트 지원 예정 🥞