youtube-absorb — 유튜브 영상을 보고로
이 스킬의 산출물은 파일이 아니라 채팅 보고다(전사 전문·선별 프레임은 재료로 남긴다 — §5). 영상 하나를 받아 ①믿을 만한 영상인지 ②알맹이가 무엇인지 ③화면에만 있던 정보까지 건져서, 사용자가 영상을 안 봐도 판단할 수 있게 보고하고 — 그 내용에서 이어갈 수 있는 다음 스텝까지 안내한다. "흡수"의 마지막 동작은 사용자마다 다르다: 영상 속 절차를 자기 환경에 들이는 것(스킬 흡수), 그 내용으로 새 절차를 만드는 것(스킬 창조), 주장을 검증하는 것, 정리해 남기는 것. 스킬의 일은 그 갈림길을 찾아서 구조적으로 안내하는 것이다 — 보고는 끝이 아니라 출발점이다.
§0. 준비와 자기 교정 — 사용자에게 시키지 마라
이 스킬이 설치된 순간부터 환경 준비와 문제 해결은 네 일이다.
준비(첫 호출 시):
- 자가 점검:
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이 난다). - 없으면 네가 설치한다: OS에 맞게(
winget install ffmpeg/brew install ffmpeg/pip install -U "yt-dlp[default,curl-cffi]"등) 직접 실행하고, 결과를 한 줄로 보고한다. - 사용자 손이 정말 필요한 유일한 지점 =
--whisper모드의 OPENAI_API_KEY 발급(기본 모드는 불요).
자기 교정(실행 중 — 이 스킬의 성질):
4. 에러가 나면 절차를 읊지 말고 네가 고친다 — yt-dlp 403이면 업데이트+재시도(§4),
자막 없음이면 --whisper 전환 제안, SSL이면 환경 진단. 사용자가 할 일은 "고쳐줘" 한 마디까지다.
5. 부분 실패는 대안 경로로 스스로 갈아탄다 — 영상 스트림만 403이면 전사만으로 진행(§4),
프레임이 0장이면 전사 단독 보고로. 포기가 아니라 강등이고, 무엇을 강등했는지 보고 서두에
한 줄 밝힌다("화면 판독은 이번에 못 했습니다 — 전사 기반 보고입니다").
6. 원칙: 막힌 지점을 사용자에게 되돌려주지 않는다. 묻는 것은 취향·선택(§3)이지 장애가 아니다.
전환을 물을지 스스로 할지의 판별 = 돈이 드는 전환만 묻는다(--whisper = API 유료라 묻고,
무료 대안 경로 강등은 스스로 — 위 5번).
§1. 절차 (호출 = "이 영상 요약/분석/흡수해줘: ")
겉면 확인(전사 전·URL 단계) — 제목·설명란은
yt-dlp --dump-json(다운로드 없는 메타 조회)으로, 채널의 다른 영상 목록은 웹 접근(또는 채널 URL에yt-dlp --flat-playlist)으로 보고 신뢰도 신호 3문을 돈다:# 질문 통과 신호 탈락 신호 1 공개된 산출물이 있나 지금 접속되는 서비스·앱·작품·리포지토리 산출물이 강의·전자책·멤버십뿐(= 이야기의 상품화) 2 틀리면 대가를 지불하는 자리인가 라이브 서비스·공개 작업물(버그·혹평이 본인에게 온다) 강의·컨설팅(틀려도 비용 0) 3 못 하는 것을 말하나 한계·실패·미검증을 스스로 명시 한계는 스치거나, AI가 말한 걸 낭독 ⚠️구독자 수는 품질 신호가 아니다(외모·후킹이 교란 변수). ⭐판정은 라벨이지 필터가 아니다 — 탈락 신호가 나와도 분석은 그대로 진행한다. 판매 구조가 강한 영상에도 유효한 인사이트는 실재할 수 있고, 그걸 건져서 ③절에서 검증된 사실/미검증으로 가르는 것까지가 이 스킬의 일이다. 네 판단으로 내용을 걸러 숨기지 않는다 — 판정은 ①절에 정직하게 싣고, 내용은 ②·③절에 온전히 싣는다. (유일한 예외 = 시간 배려: 영상이 매우 길고(1시간+) 3문 전멸이면 시작 전에 한 줄만 — "겉면 신호가 약한 긴 영상인데, 전체 분석에 시간이 걸립니다. 진행할까요?" 검열이 아니라 예고다.)
기계 구간 — 실행(처리 중인 다른 요청이 있으면 백그라운드로 · 없으면 그냥 기다리면 된다):
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단 깔때기(의미 판별자는 기계가 아니라 너다): 기계가 장면전환 추출 → 중복 접기까지 해 두면, 너는
sheet_*.jpg콘택트 시트(30장 격자)를 전수 판독해 의미 있는 칸만 고르고 그것만 원본 해상도로 정독한다. ⛔개별 프레임 150장을 하나씩 열지 말 것 — 비용이 대충 넘기게 만든다.표적 교정 — 화면이 정본이다: 전사에서 고유명사·명령어·수치가 나오는 타임스탬프를
frames_index.md로 역조회해 해당 프레임과 대조·교정한다. N = 교정한 발생 건수(같은 오인이 11번 나와 11번 고쳤으면 11 — 세션마다 자로 재도 같은 수가 나오게). 교정 후 transcript.md 헤더를 "교정 전"→"교정 완료(N곳)"으로 — 프레임을 못 얻어 교정이 불성립이면 **"교정 불가(사유)"**로 바꾼다("안 한 것"과 "못 한 것"을 뒤에 읽는 사람이 구별할 수 있게). 선별 프레임만frames/에 남기고 원시 프레임·시트는 삭제.트랙 판별(보고 쓰기 전 — 의무 스텝): 이 사용자가 어느 쪽인지 먼저 가른다. 이후의 ⑤절과 다음 스텝(§3)이 전부 이 판별을 따른다.
- 트랙 A(맥락 맞춤) — 다음 중 실물이 하나라도 있을 때: ⓐ사용자가 자기 상황·작업을 스스로 말했다 ⓑ대화에 사용자의 실제 작업물·프로젝트가 올라와 있다 ⓒ이 환경에 사용자가 쌓아온 기록(메모리·CLAUDE.md류)이 있고 거기 이 주제와 닿는 내용이 있다.
- 트랙 B(일반) — 위가 없으면 전부 B다. 설치 직후의 백지 세션은 언제나 B다.
- ⛔자기 참조 금지: 방금 설치·실행된 이 스킬 자체와 설치·분석 행위는 사용자 맥락이 아니다. 백지 세션에서 유일하게 보이는 것이 스킬 자신이라 이 함정은 구조적으로 온다 — "이 스킬과 구조가 같다"류 문장이 나오려 하면 그것이 바로 B를 A로 오판한 신호다.
- 트랙 A면 ⑤절("당신 상황에서는")을 쓰고, B면 그 절을 통째로 생략한다 — ⛔지어내지 않는다(없는 맥락을 추정해 쓰는 것이 가장 나쁜 형태의 친절이다. 생략이 정답이지 실패가 아니다).
보고 — §2 양식 그대로 채팅에. 파일을 만들고 끝내지 마라. 사용자가 받는 것은 채팅이다.
§2. 보고 양식 (이 스킬의 제품 — 절 순서 고정)
## <영상 제목> — 분석 보고
> <채널> · <게시일> · <길이> · 전사 교정 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개를 이 결로:
- 더 궁금한 곳 열기 — 보고에서 압축한 부분 중 파고들 가치가 있는 곳을 집어 제안한다: "③절에서 미검증으로 남긴 ○○ 부분, 더 풀어서 설명드릴까요?" / "④절의 그 화면, 실제로 어떻게 쓰는 건지 궁금하시면 단계별로 설명드릴게요."
- 주제로 잇기 — 영상이 남긴 화두를 구체로 집어 대화를 제안한다: "이 영상이 말한 ○○, 실제로 해볼 만한 건지 같이 따져볼까요?" / "○○가 처음이시면 뭐부터 보면 되는지부터 이야기해볼까요?"
- 계속 쓰기 — "다른 영상도 링크만 주시면 같은 방식으로 봐드립니다 — 쌓아둔 것 중 하나 던져보세요." (원하면 "이 보고를 파일로 저장해드릴까요?"를 곁들인다.) ⛔개발 어휘 금지: 커밋·레포·검증·교차 분석·스킬 흡수/창조·세팅 같은 말은 쓰지 않는다 — 같은 제안도 일반 어휘로 입힌다("따라 하실 수 있게 하나씩 안내해드릴까요"). 예외는 하나: 사용자가 먼저 그 어휘를 쓴 경우뿐이다.
트랙 A(맥락 맞춤) — ⑤절을 쓴 세션만
⭐맥락 사슬을 끊지 마라: 첫 제안은 반드시 ⑤절의 그 맥락에서 나온다 — 맥락 시사점을 말해 놓고 일반론 제안으로 돌아가면 사슬이 거기서 끊긴다. 후보군 — 이 영상이 남긴 것이 무엇인가:
- 절차·도구를 보여줬다 → · 실행 동행: "영상의 X 절차, 지금 같이 따라 해볼까요? 제가 단계마다 챙기겠습니다" · 환경 세팅: "X를 이 환경에 세팅해드릴까요?" · 스킬을 스스로 다루는 사용자면 — 스킬 흡수("영상이 소개한 그 스킬을 검토해 설치할까요?") · 스킬 창조("이 절차를 반복해 쓰시게 스킬로 만들어드릴까요?")
- 주장·수치를 남겼다 → 검증: "핵심 주장 N개, 실제로 맞는지 확인해볼까요?"
- 인사이트·관점을 남겼다 → 정리 산출물 · 적용 대조("지금 하시는 Y에 대조해볼까요?")
- 시리즈·채널의 일부다 → 심화·교차: "관련 영상 N개를 더 분석해 교차 검증해볼까요?" 이 후보군은 상한이 아니다 — 영상이 특이하면 거기 맞는 제안을 지어라. ("스킬을 스스로 다루는 사용자"의 판별 = 설치 행위가 아니라 스킬을 이름으로 부르거나 만들거나 고른 이력. 유튜브 보고 한 줄 복붙으로 설치만 한 사용자는 트랙 B다.)
공통 규칙
- 제안은 영상 내용에서 도출한다 (붙박이 메뉴 금지) — 트랙 B의 1·2번도 반드시 이 영상의 구체 내용을 집어야 한다("더 궁금한 것 있으세요?" 같은 백지 질문은 안내가 아니다).
- 구체가 친절이다 — 각 제안은 그 자리에서 실행 가능한 한 문장으로.
- 사용자가 "여기까지"를 고르는 것은 언제나 자유다 — 단 그 문은 네가 내밀 목록이 아니라 사용자가 스스로 닫는 것이다. 네 목록은 전진 방향만 담는다.
§4. 함정 (도구의 성질 — 실측으로 쌓인 것)
- 자동 자막 = 인사이트 층에서 Whisper와 근접 급(실측·한국어 토킹헤드 표본) — 핵심 주장·논리
구조·절차 도출은 동등하게 나온다. 열세는 고유명사·수치의 받아쓰기 층에 국한되는데, 그 층은
어차피 §1-4 프레임 교정(화면이 정본)으로 잡는다. 그래서 기본 경로가 자막(무료)이다.
정밀 타임스탬프·자막 없는 영상은
--whisper. - 화면 속 코드는 어떤 전사에도 없다 — 말로 설명 안 한 설정값·명령어는 프레임 판독이 유일한
회수 경로.
--light는 이 층을 포기하는 선택임을 알고 쓸 것. - 병목은 기계가 아니라 판독 — 프레임 전수 정독 금지(콘택트 시트 → 표적 교정). 20분 영상에 총 ~10분이 기준선(초과하면 방식이 새는 것).
- yt-dlp는 부패하는 도구다 — 구버전(60일+)이면 메타는 되는데 미디어 다운로드만 403이 난다.
처방 순서: ①
pip install -U "yt-dlp[default,curl-cffi]"①-byt-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이 간헐로 남으면 진단으로 빠지지 말고 23회 재시도 먼저. ④⭐**①③을 다 갖췄는데도 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. 원칙
- 영상·오디오 원본은 보관하지 않는다 — 전사 전문 + 선별 프레임만(URL로 재현 가능).
- 사적 분석 전용 — 전사문을 공개물에 재게시하지 말 것(짧은 인용+출처까지만). transcript.md 헤더에 경고가 박혀 있다.
- 영상 속 주장은 검증 전까지 '주장'이다 — 보고 ③절의 라벨이 그 규율이고, 사용자가 어딘가에 적용하려 할 때도 그 라벨을 함께 넘겨라.
§6. 자체 성장
이 스킬로 작업을 닫을 때 자문: 이번에 걸린 허들이 도구의 성질인가, 이번 한 번의 사정인가 — 전자면 §4에 한 줄 추가(현상+처방+증거). 스킬은 일반론이 아니라 실측된 함정의 축적으로만 자란다. (⚠️추가는 설치된 이 파일에 하는 것이라, 나중에 스킬을 새 버전으로 갱신하면 로컬 추가분이 덮일 수 있다 — 갱신 전에 §4의 내 추가분을 한 번 보라.)