유튜브 링크를 줘도 못 봅니다
Claude는 웹페이지를 읽고 코드를 돌리지만, 영상은 입력으로 받지 못합니다. 링크를 붙여넣으면 제목으로 추측하거나 자막 일부만 보고 답합니다. 화면에 무엇이 떠 있었는지는 모릅니다.
/watch는 그 구멍을 메웁니다. 영상을 Claude가 볼 수 있는 형태로 바꿔서 건네줍니다 — 화면은 이미지 여러 장으로, 말은 시각이 붙은 자막으로. 그래서 "설명에 따르면"이 아니라 본 대로 답합니다.
안에서 무슨 일이 일어나나
| 단계 | 도구 | 하는 일 |
|---|---|---|
| ① 받기 | yt-dlp | URL이면 임시 폴더에 내려받습니다. 로컬 파일이면 그대로 씁니다 |
| ② 프레임 | ffmpeg | 길이에 맞춰 장수를 자동으로 정해 JPEG로 뜹니다 (기본 가로 512px) |
| ③ 자막 | yt-dlp / Whisper | 원본 자막을 먼저 씁니다. 없으면 소리만 뽑아 Whisper API로 받아씁니다 |
| ④ 읽기 | Claude | 프레임 파일을 Read로 열면 이미지로 보입니다. 자막과 시각을 맞춰 답합니다 |
| ⑤ 정리 | — | 더 물어볼 게 없으면 작업 폴더를 지웁니다 |
지원 대상은 yt-dlp가 되는 곳 전부입니다 — YouTube · Vimeo · TikTok · X · Loom 등. 로컬 파일은 .mp4 .mov .mkv .webm.
붙이는 방법
Claude Code에서는 마켓플레이스를 등록하고 플러그인을 설치합니다.
/plugin marketplace add bradautomates/claude-video /plugin install watch@claude-video
준비물은 ffmpeg와 yt-dlp 두 가지입니다. 처음 /watch를 부르면 스킬이 먼저 점검하고, 없으면 설치 방법을 알려줍니다 — macOS는 brew로 자동 설치, Windows·Linux는 실행할 명령을 출력합니다.
| 항목 | 필요한 때 | 비용 |
|---|---|---|
| ffmpeg · yt-dlp | 항상 | 무료 |
| 원본 자막 | 영상에 자막이 있으면 자동으로 사용 | 무료 |
| Whisper API 키 | 자막이 없는 영상에만 — 화면 녹화, 일부 짧은 영상 | Groq 권장 · OpenAI 가능 |
키는 ~/.config/watch/.env에 저장됩니다. 키 없이 쓰려면 --no-whisper를 붙이면 되고, 이때 자막 없는 영상은 화면만 보게 됩니다.
링크 뒤에 질문을 붙인다
/watch https://youtu.be/abc123 30초 지점에서 무슨 일이 일어나? /watch https://youtu.be/abc123 이 영상 요약해줘 /watch ./bug-repro.mp4 화면이 언제 깨지는지 찾아줘 /watch https://vimeo.com/123 발표자가 언급한 도구를 목록으로 정리해줘
실무에서 자주 쓰는 쪽은 셋입니다. 남의 콘텐츠 분석(도입 3초를 어떻게 열었나), 버그 화면 녹화 진단(어느 프레임에서 깨지나), 긴 영상 요약(20분을 안 보고 끝내기).
구간을 찍으면 훨씬 정확해집니다
영상이 길면 전체를 듬성듬성 훑는 것보다 그 30초를 촘촘히 보는 쪽이 낫습니다. 시각은 SS · MM:SS · HH:MM:SS 아무 형식이나 됩니다.
/watch <url> --start 2:15 --end 2:45 # 2분 15초부터 45초까지 /watch video.mp4 --start 50 --end 60 # 50초~60초 /watch <url> --start 1:12:00 # 1시간 12분부터 끝까지
| 옵션 | 하는 일 |
|---|---|
| --start / --end | 구간 지정. 자막도 같은 구간만 잘라 씁니다 |
| --max-frames N | 장수 상한을 낮춰 토큰을 아낍니다 |
| --resolution W | 프레임 가로폭 (기본 512). 화면의 글자를 읽혀야 할 때만 1024 |
| --fps F | 초당 장수 직접 지정 (최대 2장) |
| --whisper groq|openai | 받아쓰기 백엔드를 고정합니다 |
| --no-whisper | 받아쓰기를 끕니다 — 화면만 봅니다 |
길수록 성기게 봅니다
비용의 대부분은 프레임 이미지입니다. 그래서 길이에 따라 장수를 자동으로 조절하고, 초당 2장 · 총 100장을 넘기지 않습니다.
| 영상 길이 | 프레임 | 체감 |
|---|---|---|
| 30초 이하 | 약 30장 | 촘촘 — 거의 모든 순간 |
| 30초 ~ 1분 | 약 40장 | 촘촘 |
| 1 ~ 3분 | 약 60장 | 무난 |
| 3 ~ 10분 | 약 80장 | 성김 |
| 10분 초과 | 100장 | 경고가 뜹니다 — 구간을 찍는 게 낫습니다 |
512px 80장이면 대략 5만~8만 토큰입니다. --resolution 1024로 올리면 프레임당 토큰이 네 배가 되니, 슬라이드나 터미널 글자를 읽혀야 할 때만 쓰세요.
알아둘 한계
| 한계 | 대응 |
|---|---|
| 10분이 넘으면 성긴 스캔 | --start / --end로 구간 지정 |
| Whisper 업로드 25MB (모노 16kHz 기준 약 50분) | 구간을 좁히거나 자막 있는 원본 사용 |
| 로그인이 필요한 비공개 영상은 불가 | 파일을 내려받아 로컬 경로로 넘기기 |
| 같은 영상을 다시 물어보면 재실행 낭비 | 이미 문맥에 있으니 그냥 이어서 물어보면 됩니다 |
- 왜 링크만으로는 안 되는지 설명할 수 있다
- 플러그인을 설치하고 /watch를 한 번 실행했다
- ffmpeg · yt-dlp 준비를 마쳤다
- --start / --end로 구간을 찍어봤다
- 자막이 없을 때만 소리가 밖으로 나간다는 것을 안다