상세 비디오 요약
사용자가 제공한 비디오 링크: $ARGUMENTS
0단계 — 입력 유형 확인
-
링크 없이 과거 비디오에 대한 질문 → 하단의 "아카이브 질의" 섹션으로 이동하고, 새 자막을 가져오지 마십시오.
-
단일 비디오 링크 → 1단계로 바로 진행합니다.
-
여러 비디오 링크 — 각 비디오를 1-3단계 순서대로 처리합니다. 각 비디오는 동일한 형식의 전체 요약을 가지며,
---로 구분되고 각각 별도의 파일로 저장됩니다. 마지막에 비디오 간의 공통점/차이점에 대한 1-2문장의 노트를 추가할 수 있습니다(보고서 형식은 안 됩니다). -
재생목록 링크(URL에
/playlist?list=가 포함되고v=가 없는 경우) → 먼저 목록을 가져옵니다:bash ~/.claude/skills/video-summary/fetch_transcript.sh --list "<PLAYLIST_URL>"각 줄은
url | title | duration형식입니다.- 5개 이하 비디오: 모두 순서대로 처리합니다(여러 링크와 동일).
- 5개 초과: 먼저 사용자에게 비디오 개수와 제목 목록을 보여주고, 전체를 요약할지, 처음 N개만 할지, 또는 선택할지 물어보십시오. 확인 없이 처리를 시작하지 마십시오.
-
혼합 비디오 + 재생목록 URL(
watch?v=...&list=...) → 해당 단일 비디오만 요약하고, 요약 끝에 한 문장으로 링크가 재생목록에 속해 있으며 나머지도 요약할 수 있다고 언급하십시오.
1단계 — 자막 가져오기
다음을 실행합니다:
bash ~/.claude/skills/video-summary/fetch_transcript.sh "<VIDEO_URL>"
스크립트는 다음을 출력합니다:
=== VIDEO INFO ===— 제목, 채널, 길이, 날짜=== CHAPTERS ===— 업로더가 정의한 경우 타임스탬프 목록(섹션 없으면 생략)=== TRANSCRIPT ===— 정리된 타임스탬프 자막
참고 사항:
- 이전에 가져온 비디오는
~/VideoSummaries/transcripts/<video-id>.txt아카이브에서 즉시 읽어옵니다((Transcript read from archive: ...)줄이 표시됨) — 인터넷이 필요 없습니다. - 자막이 매우 긴 경우(스크립트 출력이 잘릴 수 있음) 출력을 스크래치패드 파일로 리디렉션하고 청크로 읽으십시오 — 아무것도 건너뛰지 마십시오.
- 자막이 없는 비디오의 경우, whisper가 설치되어 있으면 스크립트가 오디오를 다운로드하여 로컬로 전사합니다 — 몇 분이 걸릴 수 있으므로 긴 타임아웃(600000ms)으로 명령을 실행하십시오. stderr의 "(No subtitles — ... whisper ...)" 줄이 이 경로를 나타냅니다.
- "ERROR: no subtitles" + "WHISPER_SUGGESTION"이 반환되면: 사용자에게 비디오에 자막이 없으며 whisper를 설치하면(오류 메시지의 설치 명령을 전달) 요약할 수 있다고 알리십시오. 자막 없이 분석을 절대 만들어내지 마십시오.
- "ERROR: could not fetch video info" + "COOKIE_SUGGESTION"이 반환되면: 직접 쿠키로 재시도하지 말고 — 사용자에게 YouTube가 요청을 차단하고 있다고 알리고 브라우저 쿠키로 재시도할지 물어보십시오. 승인하면
COOKIES=1환경 변수로 동일한 명령을 다시 실행하십시오(macOS 키체인 권한 프롬프트가 나타날 수 있음).
2단계 — 상세 요약 작성
목표는 상세 요약입니다: 비디오를 보지 않은 사람이 모든 주요 주제, 논쟁, 핵심 숫자를 배울 수 있어야 합니다 — 그러나 자막을 그대로 옮긴 것이 아닙니다. 주요 주제를 건너뛰지 말고; 각 주제 내의 모든 문장이나 예시를 전달하지 마십시오.
대상 길이: 15분 비디오의 경우 약 300-450단어; 더 긴 비디오의 경우 비례하여 늘리되 한 페이지(~700단어)를 초과하지 마십시오.
언어: 항상 사용자가 사용하는 언어로 요약을 작성하십시오(비디오의 언어와 관계없이). 불명확한 경우 비디오의 언어를 사용하십시오.
구조:
# <비디오 제목>
**채널:** ... · **길이:** ... · **날짜:** ...
## 개요
비디오의 주제와 핵심 메시지(2-3문장).
## 주요 주제
비디오의 주요 주제당 하나의 불릿(일반적으로 4-8개):
- **[MM:SS] 주제 제목** — 해당 주제의 핵심을 2-4문장으로: 주요 아이디어, 중요한 숫자/예시, 도달한 결론.
섹션 제목: 스크립트 출력에 `=== CHAPTERS ===`가 있으면 해당 챕터와 타임스탬프로 불릿을 구성합니다(제목을 출력 언어로 번역하고, 인트로/스폰서 같은 내용 없는 챕터는 건너뛰며, 매우 짧은 연속 챕터는 하나의 불릿으로 병합). CHAPTERS가 없으면 자막에서 주제 전환을 직접 식별하십시오.
## 결론
발표자의 최종 요점과 시청자를 위한 권장 행동(2-4문장). 자체 의견/주의사항이 있으면 맨 끝에 한 문장으로 명확히 구분하여 추가하십시오.
규칙:
- 인트로, 구독 요청, 스폰서 읽기, 발표는 절대 포함하지 마십시오.
- 자막의
[MM:SS]마커에서 타임스탬프를 가져오십시오; 절대 만들어내지 마십시오. - 클릭 가능한 타임스탬프: YouTube 비디오의 경우 모든
[MM:SS]스탬프를 해당 비디오 초로 연결되는 링크로 변환하십시오:[06:09](https://youtu.be/<VIDEO_ID>?t=369)(t = 총 초). 채팅 출력과 저장된 파일 모두에 적용하십시오. YouTube가 아닌 소스의 경우 스탬프를 일반 텍스트로 남기고; 링크를 만들어내지 마십시오. - 자막에 없는 정보는 추가하지 마십시오.
- 정말 인상적인 인용문이 1-2개 있으면 관련 불릿 안에 포함하십시오; 별도 섹션을 열지 마십시오.
- 사용자가 "더 깊이" 또는 특정 부분에 대해 묻는 경우, 자막이 컨텍스트에 있습니다 — 원하는 만큼 해당 부분을 확장하십시오.
- 시각적 제안: 자막에 3개 이상의 시각적 참조("이 차트", "저 표", "화면에", "여기서 보듯이" 등)가 있으면 요약 끝에 한 줄을 추가하십시오: "📊 이 비디오는 시각적 요소가 많아 보입니다 — 원하시면 차트/스크린샷도 분석해 드릴 수 있습니다." 사용자가 승인하면 시각적 분석 모드로 전환하십시오. 시각적 참조가 없으면 노트를 추가하지 마십시오.
3단계 — 요약을 아카이브에 저장
채팅 메시지가 주요 결과물입니다: 항상 대화에서 전체 요약을 먼저 출력하십시오. 아카이브 파일은 추가 사본일 뿐입니다 — 채팅 출력을 건너뛰고 파일만 쓰지 말고, 요약을 파일 포인터로 대체하지 마십시오.
채팅에 요약을 출력한 후, Write 도구로 동일한 내용을 다음 경로에 저장하십시오:
~/VideoSummaries/<YYYY-MM-DD>-<video-title-kebab-case>.md
(날짜 = 오늘. 제목을 소문자, ASCII, 하이픈 구분으로 줄이십시오; 최대 60자.)
파일 맨 위에 이 메타데이터 블록을 추가하십시오:
> **비디오:** <URL>
> **요약 날짜:** YYYY-MM-DD
최종 메시지에서 사용자에게 파일 경로를 한 줄로 알리십시오.
시각적 분석 모드 — 사용자가 승인하거나 처음에 요청한 경우
사용자가 시각적 분석을 승인하거나(또는 "차트 포함"과 같이 처음에 요청한 경우) 자막 요약 위에 다음을 수행하십시오:
-
순간 선택: 자막에서 시각적 참조 순간의 초를 수집합니다(발표자가 "이것 보세요", "이 차트"라고 말하는 부분). 명확한 순간이 없으면
auto(장면 전환 감지)를 사용하십시오. -
프레임 추출(시간이 걸릴 수 있음 — 600000ms 타임아웃 사용):
bash ~/.claude/skills/video-summary/extract_frames.sh "<URL>" "<scratchpad>/frames" "369,430,585"마지막 인수는 초 목록입니다.
auto의 경우 생략합니다. 스크립트는 프레임 파일 경로를 출력합니다(frame_006-09.jpg= 06:09). 최대 12개의 프레임이 추출됩니다. -
Read로 프레임을 보고 해석하십시오.
-
"## 시각적 분석" 섹션 작성: 각 중요한 프레임에 대해 클릭 가능한 타임스탬프 + 이미지가 보여주는 내용 + 그 순간 발표자의 주장과 어떻게 연결되는지. 정보가 없는 프레임(얼굴만, 인트로 화면)은 건너뜁니다.
-
저장된 요약 파일에도 섹션을 추가하십시오(Edit 사용).
-
스크립트가 "ffmpeg is not installed"라고 말하면
brew install ffmpeg제안을 전달하고; 장면 전환이 발견되지 않았다고 하면 사용자에게 비디오가 시각적으로 정적이라는 것을 알리십시오(분석할 내용 없음). -
스크립트가 "could not download" + "COOKIE_SUGGESTION"이라고 말하면: 직접 쿠키로 재시도하지 말고 — 사용자에게 YouTube가 다운로드를 차단하고 있다고 알리고 브라우저 쿠키로 재시도할지 물어보십시오. 승인하면
COOKIES=1환경 변수로 동일한 명령을 다시 실행하십시오(macOS 키체인 권한 프롬프트가 나타날 수 있음).
아카이브 질의 — 링크 없이 과거 비디오에 대한 질문
사용자가 URL 없이 이전에 요약한 비디오에 대해 물을 때("지난주에 요약한 비디오에서 X에 대해 뭐라고 했지?", "내 아카이브에 Y에 대해 뭐가 있어?", "지난달 비디오들의 공통 주제는 뭐였지?"):
- 광범위 스캔:
~/VideoSummaries/*.md요약 파일에서 키워드를 grep하십시오. 사용자 언어와 함께 영어 동의어도 시도하십시오(요약은 사용자 언어를 따르지만 인용문/용어는 비디오 원래 언어일 수 있음). - 상세 탐색: 일치하는 요약을 읽으십시오. 요약만으로 충분하지 않은 경우(정확한 표현, 컨텍스트, 또는 요약에 포함되지 않은 세부 사항), 동일한 비디오의 원본 자막으로 이동하십시오: 요약 메타데이터 블록의 URL에서 비디오 ID를 가져와
~/VideoSummaries/transcripts/<video-id>.txt를 읽거나 grep하십시오. - 인용 답변: 모든 사실을 출처와 함께 제공하십시오 — 비디오 제목, 요약 날짜, 타임스탬프. 여기서도 타임스탬프를 클릭 가능하게 만드십시오(비디오 URL은 요약 메타데이터 블록에 있음). 기억이나 추측으로 공백을 채우지 마십시오; 아카이브에 없으면 명시적으로 그렇게 말하십시오.
- 날짜 필터: 파일 이름은
YYYY-MM-DD-title.md형식을 따릅니다 — "지난달"과 같은 범위는 파일 이름으로 필터링하십시오. - 이 모드는 완전히 로컬입니다: YouTube 없음, 인터넷 없음.