# Youtube Absorb

> 유튜브 영상을 분석해서 믿을 수 있는 보고로 바꿔주는 스킬 — "이 영상 요약해줘·분석해줘·정리해줘·흡수해줘·<유튜브 URL> 봐줘"가 나오면, 사용자가 스킬을 직접 부르지 않아도 이 스킬을 먼저 편다. 겉면 신뢰도 판정→전사(자막 기본·무료)→화면 프레임 대조→고정 양식 보고→다음 스텝 안내 순서. 환경 준비와 에러 해결은 사용자에게 시키지 않고 네가 한다.

- Skill: `promotoa/youtube-absorb` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add promotoa/youtube-absorb`
- Raw SKILL.md: https://api.skillmd.com/api/skills/promotoa/youtube-absorb/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: promotoa (https://skillmd.com/u/promotoa)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/promotoa/youtube-absorb

---


# youtube-absorb — 유튜브 영상을 보고로

이 스킬의 산출물은 파일이 아니라 **채팅 보고**다(전사 전문·선별 프레임은 재료로 남긴다 — §5).
영상 하나를 받아 ①믿을 만한 영상인지 ②알맹이가
무엇인지 ③화면에만 있던 정보까지 건져서, 사용자가 영상을 안 봐도 판단할 수 있게 보고하고 —
**그 내용에서 이어갈 수 있는 다음 스텝까지 안내한다.** "흡수"의 마지막 동작은 사용자마다 다르다:
영상 속 절차를 자기 환경에 들이는 것(스킬 흡수), 그 내용으로 새 절차를 만드는 것(스킬 창조),
주장을 검증하는 것, 정리해 남기는 것. 스킬의 일은 그 갈림길을 **찾아서** 구조적으로 안내하는
것이다 — 보고는 끝이 아니라 출발점이다.

## §0. 준비와 자기 교정 — 사용자에게 시키지 마라

이 스킬이 설치된 순간부터 **환경 준비와 문제 해결은 네 일**이다.

**준비(첫 호출 시)**:
1. **자가 점검**: `python --version`(3.9+) · `yt-dlp --version` · `ffmpeg -version`을 직접 확인.
   yt-dlp는 존재만이 아니라 **신선도까지** — 버전 날짜가 60일+ 낡았으면 묻지 말고 선제
   `pip install -U "yt-dlp[default,curl-cffi]"`(구버전은 403만이 아니라 옵션 파스 에러로도 즉사한다 — §4.
   `curl-cffi`는 브라우저 위장(impersonation) 부품 — 없으면 최신 yt-dlp도 미디어만 403이 난다).
2. **없으면 네가 설치한다**: OS에 맞게(`winget install ffmpeg` / `brew install ffmpeg` /
   `pip install -U "yt-dlp[default,curl-cffi]"` 등) 직접 실행하고, 결과를 한 줄로 보고한다.
3. 사용자 손이 정말 필요한 유일한 지점 = `--whisper` 모드의 OPENAI_API_KEY 발급(기본 모드는 불요).

**자기 교정(실행 중 — 이 스킬의 성질)**:
4. **에러가 나면 절차를 읊지 말고 네가 고친다** — yt-dlp 403이면 업데이트+재시도(§4),
   자막 없음이면 `--whisper` 전환 제안, SSL이면 환경 진단. 사용자가 할 일은 "고쳐줘" 한 마디까지다.
5. **부분 실패는 대안 경로로 스스로 갈아탄다** — 영상 스트림만 403이면 전사만으로 진행(§4),
   프레임이 0장이면 전사 단독 보고로. 포기가 아니라 강등이고, **무엇을 강등했는지 보고 서두에
   한 줄 밝힌다**("화면 판독은 이번에 못 했습니다 — 전사 기반 보고입니다").
6. 원칙: **막힌 지점을 사용자에게 되돌려주지 않는다.** 묻는 것은 취향·선택(§3)이지 장애가 아니다.
   전환을 물을지 스스로 할지의 판별 = **돈이 드는 전환만 묻는다**(`--whisper` = API 유료라 묻고,
   무료 대안 경로 강등은 스스로 — 위 5번).

## §1. 절차 (호출 = "이 영상 요약/분석/흡수해줘: <URL>")

1. **겉면 확인(전사 전·URL 단계)** — 제목·설명란은 `yt-dlp --dump-json`(다운로드 없는 메타 조회)으로,
   채널의 다른 영상 목록은 웹 접근(또는 채널 URL에 `yt-dlp --flat-playlist`)으로 보고 신뢰도 신호 3문을 돈다:

   | # | 질문 | 통과 신호 | 탈락 신호 |
   |---|---|---|---|
   | 1 | **공개된 산출물이 있나** | 지금 접속되는 서비스·앱·작품·리포지토리 | 산출물이 강의·전자책·멤버십뿐(= 이야기의 상품화) |
   | 2 | **틀리면 대가를 지불하는 자리인가** | 라이브 서비스·공개 작업물(버그·혹평이 본인에게 온다) | 강의·컨설팅(틀려도 비용 0) |
   | 3 | **못 하는 것을 말하나** | 한계·실패·미검증을 스스로 명시 | 한계는 스치거나, AI가 말한 걸 낭독 |

   ⚠️구독자 수는 품질 신호가 아니다(외모·후킹이 교란 변수).
   ⭐**판정은 라벨이지 필터가 아니다** — 탈락 신호가 나와도 **분석은 그대로 진행**한다. 판매 구조가
   강한 영상에도 유효한 인사이트는 실재할 수 있고, 그걸 건져서 ③절에서 검증된 사실/미검증으로
   가르는 것까지가 이 스킬의 일이다. **네 판단으로 내용을 걸러 숨기지 않는다** — 판정은 ①절에
   정직하게 싣고, 내용은 ②·③절에 온전히 싣는다.
   (유일한 예외 = 시간 배려: 영상이 매우 길고(1시간+) 3문 전멸이면 시작 전에 한 줄만 —
   *"겉면 신호가 약한 긴 영상인데, 전체 분석에 시간이 걸립니다. 진행할까요?"* 검열이 아니라 예고다.)

2. **기계 구간 — 실행**(처리 중인 다른 요청이 있으면 백그라운드로 · 없으면 그냥 기다리면 된다):
   ```bash
   python scripts/yt_absorb.py "<URL>"            # 기본: 자막 전사(무료·API 키 불필요) + 프레임
   python scripts/yt_absorb.py "<URL>" --light    # 전사만(화면 정보 포기 — §4 참조)
   python scripts/yt_absorb.py "<URL>" --whisper  # Whisper 정밀 전사(OPENAI_API_KEY 필요)
   ```
   (cwd = 이 스킬 폴더 · 20분 영상 ≈ 수 분)

3. **프레임 판독 — 3단 깔때기**(의미 판별자는 기계가 아니라 너다):
   기계가 장면전환 추출 → 중복 접기까지 해 두면, 너는 `sheet_*.jpg` **콘택트 시트(30장 격자)를
   전수 판독**해 의미 있는 칸만 고르고 그것만 원본 해상도로 정독한다.
   ⛔개별 프레임 150장을 하나씩 열지 말 것 — 비용이 대충 넘기게 만든다.

4. **표적 교정 — 화면이 정본이다**: 전사에서 고유명사·명령어·수치가 나오는 타임스탬프를
   `frames_index.md`로 역조회해 해당 프레임과 대조·교정한다. N = **교정한 발생 건수**(같은 오인이
   11번 나와 11번 고쳤으면 11 — 세션마다 자로 재도 같은 수가 나오게). 교정 후 transcript.md 헤더를
   "교정 전"→"교정 완료(N곳)"으로 — 프레임을 못 얻어 교정이 불성립이면 **"교정 불가(사유)"**로
   바꾼다("안 한 것"과 "못 한 것"을 뒤에 읽는 사람이 구별할 수 있게).
   선별 프레임만 `frames/`에 남기고 원시 프레임·시트는 삭제.

5. **트랙 판별(보고 쓰기 전 — 의무 스텝)**: 이 사용자가 어느 쪽인지 먼저 가른다. 이후의
   ⑤절과 다음 스텝(§3)이 전부 이 판별을 따른다.
   - **트랙 A(맥락 맞춤)** — 다음 중 **실물이 하나라도** 있을 때: ⓐ사용자가 자기 상황·작업을
     스스로 말했다 ⓑ대화에 사용자의 실제 작업물·프로젝트가 올라와 있다 ⓒ이 환경에 사용자가
     쌓아온 기록(메모리·CLAUDE.md류)이 있고 거기 이 주제와 닿는 내용이 있다.
   - **트랙 B(일반)** — 위가 없으면 전부 B다. 설치 직후의 백지 세션은 언제나 B다.
   - ⛔**자기 참조 금지**: 방금 설치·실행된 **이 스킬 자체와 설치·분석 행위는 사용자 맥락이
     아니다.** 백지 세션에서 유일하게 보이는 것이 스킬 자신이라 이 함정은 구조적으로 온다 —
     "이 스킬과 구조가 같다"류 문장이 나오려 하면 그것이 바로 B를 A로 오판한 신호다.
   - 트랙 A면 ⑤절("당신 상황에서는")을 쓰고, B면 그 절을 통째로 생략한다 — ⛔**지어내지
     않는다**(없는 맥락을 추정해 쓰는 것이 가장 나쁜 형태의 친절이다. 생략이 정답이지 실패가 아니다).

6. **보고 — §2 양식 그대로 채팅에.** 파일을 만들고 끝내지 마라. 사용자가 받는 것은 채팅이다.

## §2. 보고 양식 (이 스킬의 제품 — 절 순서 고정)

```markdown
## <영상 제목> — 분석 보고
> <채널> · <게시일> · <길이> · 전사 교정 N곳 · 화면 판독 M장
<강등이 있었으면 여기(헤더 바로 아래) 한 문장: "⚠️화면 판독은 이번 환경에서 못 했습니다 —
 전사 기반 보고입니다." 없으면 이 줄 생략. 교정이 불성립이면 헤더의 그 칸을 "전사 교정 불가(사유)"로>

### ① 한 줄 판정
<이 영상이 무엇이고, 믿을 만한가 — 신뢰도 3문 결과를 정직하되 정중하게.
 판매 퍼널 성격이 강하면 그 사실이 첫 문장에 온다.>

### ② 핵심 내용 (타임스탬프 앵커)
- [mm:ss] <주장/절차> — <한 줄>
<사용자가 영상을 안 봐도 되게. 이 절이 "요약해줘"에 대한 정면 응답이다.>

### ③ 알맹이 vs 껍데기
| 내용 | 분류 | 근거 |
| ... | 검증된 사실 / 미검증 주장 / 과장·후킹 | <영상 속 증거 또는 그 부재> |
<구성 비율을 한 줄로: "20분 중 실질 정보 ~7분, 나머지는 서사·반복" 식.>

### ④ 화면에만 있던 것
<말로 설명하지 않고 화면에만 지나간 정보 — 코드·설정값·화면 구성·수치.
 전사만으로는 못 얻는, 이 스킬의 차별 층. 없으면 "없음">

### ⑤ 당신 상황에서는 (조건부 — §1-5에서 맥락이 보였을 때만 · 없으면 절 생략)
<영상의 내용을 이 사용자의 보이는 맥락에 비춘 시사점 2~3줄 — "지금 하시는 Y 기준으로 보면,
 영상의 X는 이미 하고 계신 것 / 어긋나는 것 / 새로 시도해볼 것" 식. 일반론 금지 —
 이 절의 모든 문장은 사용자의 실물(대화·프로젝트)을 가리켜야 한다.>

### ⑥ 다음 스텝 — 이 영상에서 이어갈 수 있는 것
1. **<가장 유의미한 제안>** — <그 자리에서 실행 가능한 한 문장. §3에서 도출>
2. **<두 번째 제안>** — <한 문장>
<2~3개 · ⭐트랙을 따른다(§1-5): 트랙 B(일반·기본값)는 §3-B의 대화 액션 결(더 궁금한 곳·주제 잇기·
 계속 쓰기 — 개발 어휘 금지)로, 트랙 A는 ⑤절 맥락에서 첫 제안이 나온다 · 마지막 줄은
 "어느 쪽이든 말씀 주세요 — 바로 시작합니다" 결의 열린 마감>
```

**보고 언어 규칙(품질 계약)**: 영상을 안 본 사람이 그대로 이해되게 쓴다 — 전문용어는 첫 등장에
반 줄 풀이를 붙이고, 이 스킬·환경의 내부 사정(스크립트 이름·경로 일반)은 보고에 올리지 않는다.
예외 둘: ⓐ헤더의 "교정 N곳·판독 M장" — 신뢰 신호. **M = 선별해 원본 정독한 수**이고, 전수 훑기
경로(저해상 시트 등)를 썼으면 갈라 병기한다("판독 12장(+저해상 시트 150장 전수)") ⓑ**보관물 위치
한 줄은 보고 말미에 허용**("전사 전문은 <위치>에 남아 있습니다" — 사용자의 것인데 존재를 모르면 안 된다).
⭐**위치는 복붙 계약이다**: 축약(`...`)·`~`·상대경로 금지 — 실행해 확인한 **절대경로 전체를 그대로**
적고(Windows면 `C:\Users\<실제 이름>\...` 실경로), 한 줄을 덧붙인다: "이 주소를 파일 탐색기(폴더 창)
주소창에 붙여넣으면 열립니다." 사용자가 복사해서 들어가 볼 수 없는 경로 안내는 안내가 아니다.
중심은 ②절이고, 길이는 영상 규모에 비례한다(20분 영상 기준 ~60줄을 넘으면 요약이 아니라 이사다).

**절 번호는 표기다**: ⑤절을 생략하면 다음 스텝을 ⑤로 붙여 내보낸다 — 사용자에게 빠진 번호를
보이지 않는다(①②③④⑥은 오탈자로 읽힌다). 강등 고지의 자리는 위 양식의 헤더 바로 아래 슬롯이다.

## §3. 다음 스텝 안내 — 마무리가 아니라 출발 안내다 (⭐2트랙 — §1-5의 판별을 따른다)

보고 ⑥절의 일 = **이 영상에서 이어갈 수 있는 가장 유의미한 다음 스텝을 찾아 제안**하는 것.
닫는 인사가 아니다 — 문을 여는 안내다.

### 트랙 B(일반) — 기본값이다. 주제 연관의 현실적인 대화 액션으로

상대는 "영상 링크 하나 던진 사람"이다. 그에게 현실적인 다음 걸음은 도구 작업이 아니라
**이 영상을 붙잡고 대화를 잇는 것**이다. 제안 2~3개를 이 결로:
1. **더 궁금한 곳 열기** — 보고에서 압축한 부분 중 파고들 가치가 있는 곳을 집어 제안한다:
   "③절에서 미검증으로 남긴 ○○ 부분, 더 풀어서 설명드릴까요?" / "④절의 그 화면, 실제로
   어떻게 쓰는 건지 궁금하시면 단계별로 설명드릴게요."
2. **주제로 잇기** — 영상이 남긴 화두를 구체로 집어 대화를 제안한다: "이 영상이 말한 ○○,
   실제로 해볼 만한 건지 같이 따져볼까요?" / "○○가 처음이시면 뭐부터 보면 되는지부터
   이야기해볼까요?"
3. **계속 쓰기** — "다른 영상도 링크만 주시면 같은 방식으로 봐드립니다 — 쌓아둔 것 중
   하나 던져보세요." (원하면 "이 보고를 파일로 저장해드릴까요?"를 곁들인다.)
⛔**개발 어휘 금지**: 커밋·레포·검증·교차 분석·스킬 흡수/창조·세팅 같은 말은 쓰지 않는다 —
같은 제안도 일반 어휘로 입힌다("따라 하실 수 있게 하나씩 안내해드릴까요"). 예외는 하나:
**사용자가 먼저 그 어휘를 쓴 경우**뿐이다.

### 트랙 A(맥락 맞춤) — ⑤절을 쓴 세션만

⭐**맥락 사슬을 끊지 마라**: 첫 제안은 반드시 ⑤절의 그 맥락에서 나온다 — 맥락 시사점을
말해 놓고 일반론 제안으로 돌아가면 사슬이 거기서 끊긴다. 후보군 — 이 영상이 남긴 것이 무엇인가:
- **절차·도구를 보여줬다** →
  · **실행 동행**: "영상의 X 절차, 지금 같이 따라 해볼까요? 제가 단계마다 챙기겠습니다"
  · **환경 세팅**: "X를 이 환경에 세팅해드릴까요?"
  · 스킬을 스스로 다루는 사용자면 — **스킬 흡수**("영상이 소개한 그 스킬을 검토해 설치할까요?") ·
    **스킬 창조**("이 절차를 반복해 쓰시게 스킬로 만들어드릴까요?")
- **주장·수치를 남겼다** → **검증**: "핵심 주장 N개, 실제로 맞는지 확인해볼까요?"
- **인사이트·관점을 남겼다** → **정리 산출물** · **적용 대조**("지금 하시는 Y에 대조해볼까요?")
- **시리즈·채널의 일부다** → **심화·교차**: "관련 영상 N개를 더 분석해 교차 검증해볼까요?"
이 후보군은 상한이 아니다 — 영상이 특이하면 거기 맞는 제안을 지어라.
("스킬을 스스로 다루는 사용자"의 판별 = 설치 행위가 아니라 **스킬을 이름으로 부르거나 만들거나
고른 이력**. 유튜브 보고 한 줄 복붙으로 설치만 한 사용자는 트랙 B다.)

### 공통 규칙

1. **제안은 영상 내용에서 도출한다** (붙박이 메뉴 금지) — 트랙 B의 1·2번도 반드시 이 영상의
   구체 내용을 집어야 한다("더 궁금한 것 있으세요?" 같은 백지 질문은 안내가 아니다).
2. **구체가 친절이다** — 각 제안은 그 자리에서 실행 가능한 한 문장으로.
3. 사용자가 "여기까지"를 고르는 것은 언제나 자유다 — 단 그 문은 **네가 내밀 목록이 아니라
   사용자가 스스로 닫는 것**이다. 네 목록은 전진 방향만 담는다.

## §4. 함정 (도구의 성질 — 실측으로 쌓인 것)

- **자동 자막 = 인사이트 층에서 Whisper와 근접 급**(실측·한국어 토킹헤드 표본) — 핵심 주장·논리
  구조·절차 도출은 동등하게 나온다. 열세는 고유명사·수치의 받아쓰기 층에 국한되는데, 그 층은
  어차피 §1-4 프레임 교정(화면이 정본)으로 잡는다. 그래서 기본 경로가 자막(무료)이다.
  정밀 타임스탬프·자막 없는 영상은 `--whisper`.
- **화면 속 코드는 어떤 전사에도 없다** — 말로 설명 안 한 설정값·명령어는 프레임 판독이 유일한
  회수 경로. `--light`는 이 층을 포기하는 선택임을 알고 쓸 것.
- **병목은 기계가 아니라 판독** — 프레임 전수 정독 금지(콘택트 시트 → 표적 교정).
  20분 영상에 총 ~10분이 기준선(초과하면 방식이 새는 것).
- **yt-dlp는 부패하는 도구다** — 구버전(60일+)이면 메타는 되는데 미디어 다운로드만 403이 난다.
  처방 순서: ①`pip install -U "yt-dlp[default,curl-cffi]"` ①-b **`yt-dlp --list-impersonate-targets`가
  전부 `unavailable`이면 `curl-cffi`가 빠진 것** — 유튜브 추출기가 브라우저 위장을 요구해 최신 yt-dlp·deno가
  있어도 미디어만 403이 난다(자막 다운로드 로그의 `WARNING: … no impersonate target is available`이 단서·
  2026-09 실측: 이 한 줄 설치로 즉시 통과) ②그래도 403이면 JS 런타임 **deno** 설치(최근 유튜브 추출은
  JS 런타임 없이는 deprecated) ③403이 간헐로 남으면 진단으로 빠지지 말고 2~3회 재시도 먼저.
  ④⭐**①~③을 다 갖췄는데도 403이 지속되면**(메타·자막은 통과·미디어만 전멸) — 도구가 아니라 **환경이
  미디어 서버를 막는 것**이다(회사망·제한망 실측). 재시도를 낭비하지 말고 §0-5대로 전사 단독으로
  강등하라. 화면 흐름이 꼭 필요하면 유튜브 **스토리보드**(저해상 미리보기 타일·다른 서버라 통과할
  때가 있음)가 대안이다 — 장면 구성은 보이지만 잔글씨는 못 읽는다는 한계를 보고에 밝힐 것.
- **영상 스트림만 403이고 오디오·자막은 통과하는 반쪽 실패가 실재** — 스크립트가 자동으로
  light 강등해 전사를 살린다(프레임 실패가 전사를 인질로 잡지 않는다).
- **ffmpeg 9.0이 `-vsync`를 제거했다 — 조용한 0장의 정체**(실측·2026-08 winget Gyan.FFmpeg 9.0). 장면추출이
  `Unrecognized option 'vsync'`로 즉사하는데 스크립트가 리턴코드를 안 보면 **"프레임 후보 0장"으로만 착지**해,
  네트워크 차단(위 403 항목)과 증상이 똑같아 오진하기 쉽다. 판별 = 영상 다운로드 성공 로그가 있는데 프레임만 0장이면
  네트워크가 아니라 ffmpeg다. 처방은 `-fps_mode vfr`(5.0+) 대체 — 스크립트가 `-h full` 탐지로 자동 선택하고,
  추출 실패 시 stderr를 찍는다(조용한 0장 금지). 구버전 ffmpeg는 `-vsync`로 자동 폴백.
- **480p로는 잔글씨를 못 읽는다** — 스크립트 기본 다운로드는 `height<=480`(속도·용량). 콘택트 시트로 '어느 순간에
  화면 정보가 있는지'는 잡히지만 프롬프트 전문·설정값 같은 **글자 층은 표적 타임스탬프만 1080p로 재추출**해야 읽힌다
  (`yt-dlp -f "bv*[height<=1080]" → ffmpeg -ss <ts> -frames:v 1`). 7분 영상 기준 재추출 8장에 1분 남짓.
- **Whisper 25MB 상한** — 스크립트가 16kHz 모노 32kbps 10분 청크로 분할·병렬 처리한다(손대지 말 것).

## §5. 원칙

1. **영상·오디오 원본은 보관하지 않는다** — 전사 전문 + 선별 프레임만(URL로 재현 가능).
2. **사적 분석 전용** — 전사문을 공개물에 재게시하지 말 것(짧은 인용+출처까지만).
   transcript.md 헤더에 경고가 박혀 있다.
3. **영상 속 주장은 검증 전까지 '주장'이다** — 보고 ③절의 라벨이 그 규율이고, 사용자가 어딘가에
   적용하려 할 때도 그 라벨을 함께 넘겨라.

## §6. 자체 성장

이 스킬로 작업을 닫을 때 자문: 이번에 걸린 허들이 도구의 성질인가, 이번 한 번의 사정인가 —
전자면 §4에 한 줄 추가(현상+처방+증거). 스킬은 일반론이 아니라 실측된 함정의 축적으로만 자란다.
(⚠️추가는 설치된 이 파일에 하는 것이라, 나중에 스킬을 새 버전으로 갱신하면 로컬 추가분이 덮일 수
있다 — 갱신 전에 §4의 내 추가분을 한 번 보라.)

