자체 YouTube 영상 자막 추출 도구 구축: Next.js 14, TypeScript, Node.js 기반의 개발 여정
🤖 AI 추천
웹 개발자, 프론트엔드 개발자, 백엔드 개발자, SaaS 제품 개발자, 자동화 도구 개발에 관심 있는 개발자
🔖 주요 키워드

핵심 기술
이 콘텐츠는 개발자가 유료 YouTube 자막 추출 도구에 대한 불만에서 시작하여, Next.js 14 (App Router), TypeScript, Tailwind CSS, Node.js를 활용하여 자체적으로 빠르고 무료인 자막 추출 서비스를 구축한 경험을 공유합니다. API 연동, 웹 스크래핑, 사용자 경험(UX) 개선 등 풀스택 개발 전반의 실질적인 내용을 다룹니다.
기술적 세부사항
- 프론트엔드: Next.js 14 (App Router), TypeScript, Tailwind CSS, React Hook Form을 사용하여 간결하고 반응적인 사용자 인터페이스를 구축했습니다.
- 백엔드: Next.js API Routes, Node.js를 기반으로 YouTube Transcript API를 활용하여 자막 데이터를 추출합니다.
- 주요 라이브러리:
youtube-transcript
(자막 추출),get-video-id
(YouTube ID 추출),react-youtube
(영상 플레이어 연동)를 사용했습니다. - 자막 추출 로직: YouTube의 다양한 자막 형식(자동 생성, 수동, 다국어)을 처리하며,
youtube-transcript
라이브러리를 사용하여 동영상 ID로 자막을 가져옵니다. - 타임스탬프 처리: 추출된 자막 데이터에 타임스탬프를 보존하고, 이를 사용자 친화적인 형식으로 포맷합니다 (
formatTime
함수 활용). - 인터랙티브 자막: 자막을 클릭하면 해당 시점으로 비디오를 이동시키는 기능 (
react-youtube
라이브러리 활용)을 구현했습니다. - SRT 형식 변환: 자막 데이터를 SRT 자막 파일 형식으로 변환하는 기능 (
generateSRT
,formatTimeForSRT
함수)을 추가했습니다. - 오류 처리 및 검증: 유효하지 않은 YouTube URL 검증 (
isValidYouTubeUrl
함수) 및 일반적인 오류 처리 메커니즘을 구현했습니다. - 성능 최적화: API 호출 효율성을 높이기 위한 Rate Limiting (in-memory) 및 캐싱 전략 (
cache
Map 활용)을 도입했습니다. - SEO 최적화:
next/head
(Next.js 13 이전) 또는metadata
객체(Next.js 13+)를 사용하여 검색 엔진 최적화를 위한 메타데이터 (제목, 설명, 키워드)를 설정했습니다. - 코드 분할:
next/dynamic
을 활용하여 컴포넌트의 동적 임포트를 구현하여 초기 로딩 성능을 개선했습니다.
개발 임팩트
- 유료 서비스 대비 무료 대안을 제공하여 사용자 비용 절감 효과를 가져옵니다.
- 간결한 UI와 타임스탬프 클릭 기능으로 사용자 경험을 크게 향상시킵니다.
- SRT 파일 생성 기능으로 다양한 활용성을 제공합니다.
- Rate Limiting 및 캐싱으로 서비스 안정성과 효율성을 높여줍니다.
- SEO 최적화를 통해 서비스 가시성을 확보합니다.
커뮤니티 반응
글에는 특정 커뮤니티 반응이 직접적으로 언급되지 않았으나, '개발자로서 얼마든지 만들 수 있지 않을까?'라는 생각에서 시작하여 실제 사용자 10,000명 이상을 확보하고 500,000개 이상의 자막을 추출하는 등 성공적인 서비스로 성장시킨 경험 자체가 커뮤니티로부터 긍정적인 반응을 얻을 만한 요소입니다.
📚 관련 자료
youtube-transcript
본문에서 직접적으로 사용된 라이브러리로, YouTube 영상의 자막을 추출하는 핵심 기능을 제공합니다. 개발자가 이 라이브러리를 활용하여 서비스의 기반을 마련했음을 보여줍니다.
관련도: 98%
next-learn-dashboard
Next.js 14 App Router의 실제 적용 사례를 보여주는 예제 저장소입니다. 본문에서 언급된 Next.js 14 App Router의 사용법 및 구조에 대한 이해를 돕는 데 관련이 있습니다.
관련도: 70%
react-hook-form
본문에서 프론트엔드 구축에 사용된 주요 라이브러리 중 하나입니다. 폼 상태 관리 및 유효성 검사를 효율적으로 처리하는 방법을 보여주며, 본문의 프론트엔드 구현과 직접적인 연관이 있습니다.
관련도: 85%