video-analyzelisted
Install: claude install-skill jsb4702-glitch/verification-harness
# video-analyze
영상은 raw 입력을 그대로 LLM에 못 넣는다. 이 스킬은 두 경로로 그 벽을 넘는다 — 데이터 민감도에 따라 갈린다.
## ⛔ 가장 먼저: 민감도 분기 (이게 경로를 정한다)
영상에 **수출통제 대상·사내기밀·개인정보**가 섞일 가능성이 조금이라도 있나?
- **있거나 / 모르겠으면 → 로컬 경로 (기본값).** 데이터가 외부로 1바이트도 안 나간다.
- **확실히 일반 공개영상(튜토리얼·뉴스·제품홍보 등)일 때만 → Gemini 경로.** 더 빠르고 싸지만 **영상이 Google로 전송**된다.
판단이 애매하면 사용자에게 **"이 영상 외부(Google) 전송해도 되는 일반자료 맞나?"** 한 줄 물어보고 결정하라. 기본은 항상 안전한 로컬이다. 이건 하네스 L3 수출통제 게이트와 직결된다 — 민감영상을 Gemini로 보내는 사고를 원천 차단하는 게 이 스킬의 1순위 규율.
## 최초 1회: 의존성 확인
로컬 경로는 venv가 필요하다. `scripts/.venv` 가 없으면 먼저:
```bash
bash scripts/setup.sh
```
(ffmpeg 필요 + yt-dlp·faster-whisper를 pip venv에 설치. brew는 Xcode 라이선스로 막힐 수 있어 venv를 쓴다.) Gemini 경로는 `~/.config/secrets.env` 의 `GEMINI_API_KEYS` 만 있으면 된다(setup 불필요). 키는 AQ 형식이어야 한다 — 구형 AIza 표준키는 2026-09 부터 거부된다. 단일 `GEMINI_API_KEY` 도 로테이터가 읽지만 폴백 경로다.
---
## 경로 A: 로컬 (민감자료 / 기본)
```bash
python3 scripts/local_analyze.py "<URL 또는 파일경로>" --out <작업디렉토리>
```
주요 옵션:
- `--model small` (기본). 한국어 전문용어는 `small` 권장. `base`는 빠르지만 부정확, `medium`은 정확하나 느림.
- `--hint "도메인 용어..."` — **이게 한국어 전사 품질의 핵심.** whisper는 동음이의 한자어(계수↔개수, 변위↔편의)와 외래 전문어(게르마늄)를 자주 틀리는데, 도메인 용어를 힌트로 주면 거의 100% 회복된다. 기본값은 기계설계 용어. 영상 주제가 다르면 그에 맞는 용어로 바꿔 줘라(예: 의료·법률·SW).
- `--min-frames 4` — 씬검출이 이보다 적게 잡으면(긴 정적 영상) 균등간격으로 자동 보강한다.
- `--lang ko|en|auto` (기본 auto).
스크립트는 JSON을 stdout으로 낸다: `frames`(추출된 프레임 절대경로 배열), `transcript`(타임스탬프별 음성), `frame_method`.
**그다음 네가 할 일 (중요):** 스크립트는 시각 해석을 안 한다. 반환된 `frames` 경로들을 **Read 툴로 직접 열어** 화면 내용(객체·텍스트·도표·UI)을 판독하고, `transcript`