| name | youtube-transcript |
| description | YouTube 발화 정본 추출. 시간 조각 자막을 YouTube 원본 >> 경계로만 조립해 ~/org/transcript에 denote md로 저장. turn 시작은 <!-- [m:ss] -->. LLM 재작성 없음. transcript.js 기본 + ytdlp 폴백. |
YouTube Transcript
YouTube 자동/수동 자막을 발화 정본 md로 가져온다.
요약이 아니다. LLM 문장 교정도 아니다. 코드 레벨 조립만 한다.
정본 계약
| 한다 | 안 한다 |
|---|
원본 cue 텍스트 보존 (uh, 반복, [laughter]) | LLM 재작성 / 마침표 발명 |
YouTube가 넣은 >> 경계로만 turn 분리 | 발화자 이름 추정·라벨 |
| YAML front matter에 영상 메타 | 본문에 보이는 [0:00] 접두 |
turn 시작 <!-- [m:ss] --> (HTML 주석) | SRT/VTT 포맷 출력 |
~/org/transcript/ denote md 저장 | |
>>가 없으면 긴 덩어리로 남긴다. 없는 경계를 만들지 않는다.
Setup
cd {baseDir}
npm install
방법 1: transcript.js (기본)
{baseDir}/transcript.js <video-id-or-url>
{baseDir}/transcript.js <video-id-or-url> --lang en
{baseDir}/transcript.js <video-id-or-url> --no-save
{baseDir}/transcript.js <video-id-or-url> --outdir ~/org/transcript
{baseDir}/transcript.js <video-id-or-url> --list
stderr에 Saved: <path>가 찍힌다. stdout은 헤더+본문 전체.
방법 2: transcript-ytdlp.sh (폴백)
transcript.js 실패 시. 쿠키 자동 감지. 같은 정본 계약.
{baseDir}/transcript-ytdlp.sh <video-id-or-url>
{baseDir}/transcript-ytdlp.sh <video-id-or-url> --lang en
{baseDir}/transcript-ytdlp.sh <video-id-or-url> --list
{baseDir}/transcript-ytdlp.sh <video-id-or-url> --no-save
oracle / datacenter 참고
- 주거 IP(thinkpad)에서는
transcript.js가 쿠키 없이 되는 경우가 많다.
- 오라클(클라우드 IP)에서는 JS 경로가 막히고 ytdlp + 쿠키가 본선이다.
- 쿠키 파일:
~/cookies.txt (컨테이너 마운트 /home/node/cookies.txt, rw).
Netscape 포맷에 LOGIN_INFO가 있어야 한다. yt-dlp --cookies-from-browser chrome은
이 필드를 빠뜨리는 경우가 있어, thinkpad에서 browser-cookie3로 export 한 뒤 scp 한다.
- yt-dlp ≥ 2026.8.19 +
--remote-components ejs:github 필요(스크립트가 자동 포함).
컨테이너 재빌드 전 임시 갱신: docker exec -u root openclaw-gateway pip install -U --break-system-packages 'yt-dlp>=2026.8.19'.
출력 예
파일명: 20260811T095500--gurudev-on-the-future-of-humanity__transcript_youtube.md
---
title: "Gurudev on the Future of Humanity"
date: 2026-08-11T09:55:00+09:00
tags: ["transcript", "youtube"]
identifier: "20260811T095500"
source: "https://youtu.be/ZBJkxUcgYa8"
video_id: ZBJkxUcgYa8
channel: "Mo Gawdat"
lang: en
duration: 25:26
cues: 597
turns: 154
---
<!-- [0:00] -->
Do you believe that we are all [music] designed for some kind of a mission in life that
<!-- [0:04] -->
definitely there is certain uh [music] preset missions for all of us amenities or [music] uh instruments we need we end up getting that
<!-- [0:15] -->
when we align with what that mission
<!-- [m:ss] --> — 에디터/미리보기에서 주석(흐리게). 발화 텍스트와 시각적으로 분리
- 저장 루트:
~/org/transcript (실체: ~/sync/org/transcript). md 가든 정책에 맞춘 Denote id 축 편입
판단 기준
- 먼저
transcript.js
- 실패 →
transcript-ytdlp.sh
- 둘 다 실패 → summarize
--extract 또는 transcribe(Whisper)
에이전트 활용
- 스크립트 실행 →
Saved: 경로 확인 → 필요 시 파일 read
- 영어 자막이 기본. 한국어 자막을 직접 받지 않는다 — en 받아 에이전트가 번역/분석
- 정본을 고치거나 화자를 붙여 쓰지 않는다. 원본 조립본을 근거로 둔다
Notes
youtube-transcript-plus의 offset/duration 단위는 초
- oracle 등 다른 기기:
~/org/transcript 경로와 npm install 전제
--lang en 기본. 자동생성 영어 포함