아리안네 채널의 퍼스트 디센던트 시즌3 EP4 패치 리뷰 영상을 NotebookLM으로 정리한 뒤,
그 정리본을 /ppt-builder 스킬로 다시 한 번 가공해 16:9 게이밍 다크 톤의 슬라이드 덱으로 만든 흐름입니다.
youtube_7nDMxJsdwPw/summary.mdnlm notebook create 후 nlm source add --url로 YouTube URL 직접 투입. 노트북 ID는 alias yt7로 단축.
nlm source content로 8,443자 한글 트랜스크립트 추출 (병렬로 nlm report create --format "Briefing Doc"). 보고서는 영문 구조화 분석으로 깔끔하게 산출.
당초 yt-dlp + ffmpeg로 프레임 추출하려 했으나 YouTube의 PO token 검증으로 yt-dlp 다운로드 차단, 그리고 arm64 ffmpeg 바이너리 부재로 두 경로 모두 실패.
→ 대안: Playwright로 YouTube 페이지를 직접 열고 video.currentTime seek 후 canvas.drawImage(video)로 11개 챕터 중간 프레임을 추출. 광고·플레이어 UI 없이 깔끔하게 캡처됨.
yt-dlp의 --print "%(chapters)j"로 영상의 11개 챕터 시간 정보를 받아, 각 챕터 중간 지점을 스크린샷 타임스탬프로 사용. 자동으로 의미 있는 프레임 선택.
Briefing Doc + 트랜스크립트 + 11개 스크린샷을 합쳐 한 챕터 = 한 섹션 + 스크린샷 + 타임스탬프 점프 링크 구조의 summary.md 완성. 인용구 박스로 리뷰어 발언 강조.
tfd-s3e4-review/tfd-s3e4-review.pptx/ppt-builder 스킬 호출 + 디자인 결정대본(summary.md)은 있으나 디자인 시스템 미지정. AskUserQuestion으로 두 가지 결정 — "Gaming dark + cyan accent" 및 한 챕터·1슬라이드 (13장) 채택.
1920×1080 슬라이드 13장을 vertical stack으로 작성. :root에 디자인 토큰 14개 정의. 챕터 슬라이드는 좌측 타이틀+불릿 / 우측 720×405 스크린샷 / 하단 ▶ YouTube 링크 패턴.
→ HTML이 빠르게 iterate되고 typography가 deterministic → PPT 좌표 추측 작업을 최소화.
python3 -m http.server로 로컬 서버 띄우고 Playwright로 14,600px 길이 fullpage PNG 캡처. PIL로 40 + i*1120 오프셋에서 슬라이드별 1080px 박스를 13장 잘라냄.
s02의 11개 카드 그리드가 슬라이드 하단을 60px 초과. card padding 24→18, row gap 24→18로 줄여 정확히 fit. HTML만 수정하면 PPT는 그대로 미러링되므로 빠름.
HTML과 동일한 좌표계(px(N) = Inches(N/144))로 13개 slide_NN_* 함수 작성. 스크린샷은 add_picture로 삽입, 불릿 마커는 회전 정사각형, 핵심 멘트는 cyan 강조 인용구.
osascript으로 tell application "Keynote" ... export as slide images 호출 → 13개 PNG export → PIL로 HTML과 side-by-side 비교 시트 생성. 어긋남 없이 design parity 확인.
15 KB7 KB · NotebookLM 영문 보고서21 KB · 한글 원문11개 · 854×4801.1 MB · 편집 가능28 KB · 미러재실행 가능 빌더토큰 명세4.5 MB · 13쌍 대조