npx skills add ...
npx skills add ai-native-camp/camp-2 --skill content-digest
This skill should be used when the user asks to "콘텐츠 정리", "아티클 요약", "PDF 학습", "영상 정리", "트윗 정리", "digest", "summarize", "정리해줘", or provides a YouTube URL, X/Twitter URL (x.com, twitter.com), webpage URL, or PDF file for analysis. Supports YouTube (transcript), X/Twitter (via fetch-tweet skill), webpage (full content via browser), and PDF (text + image per page). Generates Quiz-First learning with 9 questions across 3 difficulty levels.
npx skills add ai-native-camp/camp-2 --skill content-digest
콘텐츠 → Quiz-First 학습 → 선택적 깊이 탐색 → 근본 개념 확장.
Task Agent 기반 설계: 긴 컨텍스트는 subagent가 처리하고, 메인 세션은 최종 결론만 소비
| 타입 | 추출 방법 | 저장 경로 |
|---|---|---|
| YouTube | Task agent (yt-dlp + 정제) | research/digests/youtube/ |
| X/Twitter | fetch-tweet 스킬 (api.fxtwitter.com) | research/digests/tweet/ |
| Webpage | Task agent (browser + 정제) | research/digests/web/ |
| Task agent (Read + 정제) | research/digests/pdf/ |
입력 패턴에 따라 콘텐츠 타입 자동 결정:
| 패턴 | 타입 |
|---|---|
youtube.com, youtu.be | YouTube |
x.com, twitter.com | X/Twitter |
http://, https:// (기타) | Webpage |
.pdf 파일 경로 |
명확하지 않으면 사용자에게 확인:
메인 세션의 context를 보호하면서 긴 콘텐츠를 처리
Task Agent 불필요 - fetch-tweet 스크립트로 직접 추출 (짧은 콘텐츠)
JSON 응답에서 활용할 필드:
tweet.text: 트윗 본문tweet.author: 작성자 정보 (name, bio, followers)tweet.likes/retweets/views: 인게이지먼트tweet.quote: 인용 트윗 (있을 경우 동일 구조)tweet.media: 첨부 이미지/영상트윗은 짧으므로 Task Agent 없이 메인 세션에서 직접 처리.
인용 트윗이 있으면 함께 포함하여 분석.
저장 경로: research/digests/tweet/{YYYY-MM-DD}-{author}-{short-topic}.md
정제 결과: 순수 영어 텍스트만 남음 (시간, 번호, 중복 없음)
추출된 텍스트에서 핵심 키워드 5-10개 식별 후:
경로: research/digests/{type}/{YYYY-MM-DD}-{sanitized-title}.md
Task Agent 완료 후:
메인 세션은 정제된 md 파일만 읽음 → context 효율 극대화
목적: 정보 갭 생성 → 주의력 프라이밍 → 능동적 학습 유도
핵심 주제만 질문: 사소한 세부사항이나 숫자가 아닌, 콘텐츠의 핵심 메시지와 직결되는 내용만 출제
결과 md 파일의 "Quiz 재료" 섹션을 활용하여 3문제 출제:
결과 처리:
Pre-Quiz 결과에 따라 사용자에게 선택지 제공:
Pre-Quiz 오답과 관련된 섹션만 추출:
3단계 × 3문제. AskUserQuestion으로 각 단계 진행.
출제 원칙: 모든 문제는 콘텐츠의 핵심 주제와 직결되어야 함. 지엽적 세부사항, 날짜, 통계 수치는 출제 금지.
| 단계 | 난이도 | 출제 기준 |
|---|---|---|
| 1 | 기본 | 핵심 메시지, 주요 개념 |
| 2 | 중급 | 개념 간 관계, 근거 연결 |
| 3 | 심화 | 사례 분석, 적용, 구체적 데이터 |
문제 유형 상세: references/quiz-patterns.md
즉각 피드백: 각 단계 완료 후 정답/해설 즉시 제공
"왜?" 질문이 깊은 처리를 유발 (76% vs 69% 정답률 향상)
퀴즈 완료 후, 핵심 개념에 대해 심화 질문:
선택된 개념에 대해:
콘텐츠 너머의 기초 지식 확장
기존 지식과 연결할 때 학습 효과 극대화
research/digests/ 폴더의 기존 다이제스트 스캔:
기본 콘텐츠는 Phase 2에서 이미 저장됨. 여기서는 학습 결과만 추가.
모드 선택 없음. 항상 Quiz-First로 진행.
연구에 따르면 학습 전 테스트가 9-12% 향상 효과를 가져오며, 요약을 먼저 보면 이 효과가 사라짐.
사용자가 "요약만", "퀴즈 없이" 등을 요청해도:
--list-subs: 자막 목록 확인--cookies-from-browser chrome: 로그인 필요 시항상 claude-in-chrome 사용. WebFetch 사용 금지.
scripts/extract_metadata.sh - YouTube 메타데이터 추출scripts/extract_transcript.sh - YouTube 자막 추출references/quiz-patterns.md - 퀴즈 문제 유형 상세references/deep-research.md - Deep Research 워크플로우references/learning-science.md - 학습 과학 연구 근거이 워크플로우는 다음 연구에 기반:
Pretesting Effect (Richland et al., Roediger & Karpicke)
Information Gap Theory (Loewenstein, 1994)
Elaborative Interrogation (Dunlosky et al., 2013)
PACE Framework (Gruber et al., 2019)
상세: references/learning-science.md
Task:
subagent_type: "general-purpose"
description: "콘텐츠 추출 및 분석"
prompt: |
## 목표
{URL/파일경로}에서 콘텐츠를 추출하고 분석하여 md 파일로 저장
## 단계 (순서 중요)
1. 콘텐츠 추출 (타입별 방법 적용)
2. 텍스트 정제 (번호, 시간 제거 → 영어만 추출)
3. 핵심 키워드 추출 (5-10개)
4. 웹 리서치 (키워드별 WebSearch)
5. **핵심 요약 생성** (3-5문장)
6. **주요 인사이트 도출** (3개)
7. **퀴즈 재료 생성** (요약/인사이트 기반으로 핵심 주제만)
8. md 파일 저장
## 출력 경로
research/digests/{type}/{YYYY-MM-DD}-{sanitized-title}.md# 트윗 원문 + 인게이지먼트 데이터 추출
python3 .claude/skills/fetch-tweet/scripts/fetch_tweet.py "{URL}" --json# 1. 자막 추출
yt-dlp --write-auto-sub --sub-lang "en" --skip-download \
--convert-subs vtt -o "%(title)s" "{URL}"
# 2. VTT → 순수 텍스트 변환
sed -E 's/^[0-9]+$//' | \ # 번호 제거
sed -E 's/[0-9]{2}:[0-9]{2}:[0-9]{2}.*//g' | \ # 타임스탬프 제거
sed -E 's/<[^>]+>//g' | \ # HTML 태그 제거
tr -s '\n' | \ # 빈 줄 정리
grep -v '^$' # 빈 줄 삭제1. mcp__claude-in-chrome__tabs_context_mcp
2. mcp__claude-in-chrome__tabs_create_mcp
3. mcp__claude-in-chrome__navigate: url="{URL}"
4. mcp__claude-in-chrome__get_page_text: tabId={tabId}
5. 스크롤 후 추가 콘텐츠 확인Read: file_path="{PDF 경로}"WebSearch (병렬 실행):
- "{키워드1} explained"
- "{키워드2} research"
- "{저자/발표자} {주제}"
- "{핵심개념} fundamentals"---
title: {콘텐츠 제목}
type: {youtube|web|pdf}
url: {URL 또는 파일경로}
author: {저자/채널명}
date: {발행 날짜}
processed_at: {처리 일시}
keywords: [{키워드1}, {키워드2}, ...]
---
# {콘텐츠 제목}
## 핵심 요약
{3-5문장 요약}
## 주요 인사이트
1. **{인사이트1}**: 설명
2. **{인사이트2}**: 설명
3. **{인사이트3}**: 설명
## 웹 리서치 결과
### {키워드1}
- 발견 내용 요약
- 출처: {URL}
### {키워드2}
- 발견 내용 요약
- 출처: {URL}
## 원문 (정제됨)
{번호/시간 제거된 순수 텍스트}
## Quiz 재료 (Pre-Quiz + 본 Quiz용)
> **생성 순서**: 반드시 위의 "핵심 요약"과 "주요 인사이트"를 먼저 작성한 후, 이를 기반으로 퀴즈 생성
> **출제 원칙**: 핵심 주제만 출제. 날짜, 통계, 지엽적 세부사항 제외.
### 기본 레벨 (3문제 후보)
- Q1: {핵심 개념/메시지 관련}
- Q2: {주요 원칙 관련}
- Q3: {저자 핵심 주장 관련}
### 중급 레벨 (3문제 후보)
- Q4: {개념 간 관계}
- Q5: {근거와 논리 연결}
- Q6: {핵심 아이디어 비교}
### 심화 레벨 (3문제 후보)
- Q7: {실제 적용/응용}
- Q8: {핵심 원리의 확장}
- Q9: {저자 관점의 함의}Read: file_path="research/digests/{type}/{YYYY-MM-DD}-{sanitized-title}.md"AskUserQuestion:
questions:
- question: "[Pre-Quiz] 이 콘텐츠에서 다룰 것 같은 핵심 개념은?"
header: "PQ1"
options: [4개 선택지]
- question: "[Pre-Quiz] 저자가 강조할 것 같은 메시지는?"
header: "PQ2"
options: [4개 선택지]
- question: "[Pre-Quiz] 이 주제에서 가장 중요한 원칙은?"
header: "PQ3"
options: [4개 선택지]AskUserQuestion:
questions:
- question: "어떤 콘텐츠를 먼저 보시겠습니까?"
header: "Content"
options:
- label: "틀린 문제 관련 섹션만"
description: "Pre-Quiz에서 틀린 부분의 답을 찾아보기"
- label: "핵심 인사이트 3개"
description: "콘텐츠의 가장 중요한 포인트만"
- label: "전체 요약 + 인사이트"
description: "종합적인 콘텐츠 분석"
- label: "바로 본 퀴즈로"
description: "요약 없이 9문제 퀴즈 진행"## 핵심 인사이트 3개
1. **[키워드]**: 1-2문장 설명
2. **[키워드]**: 1-2문장 설명
3. **[키워드]**: 1-2문장 설명## 요약
{3-5문장}
## 인사이트
### 핵심 아이디어
### 적용 가능한 점AskUserQuestion:
questions:
- question: "다음 중 더 깊이 이해하고 싶은 개념은?"
header: "Deep Dive"
multiSelect: true
options:
- label: "{개념 A}"
description: "왜 이것이 중요한지 탐구"
- label: "{개념 B}"
description: "이것의 근본 원리 이해"
- label: "{개념 C}"
description: "실제 적용 사례 확장"
- label: "바로 다음 단계로"
description: "현재 이해 수준으로 충분"검색 쿼리:
- "{핵심 개념} fundamentals explained"
- "{핵심 개념} 기초 원리"
- "{이론/방법론} research paper original"
- "{저자/발표자} other works recommendations"## Foundation Expansion
### 이 콘텐츠의 기초가 되는 개념들
| 개념 | 설명 | 출처 |
|------|------|------|
| {기초 개념 1} | 1줄 설명 | {URL} |
| {기초 개념 2} | 1줄 설명 | {URL} |
### 더 깊이 들어가려면
- **선수 지식**: {이 콘텐츠를 완전히 이해하려면 알아야 할 것}
- **후속 학습**: {이 콘텐츠 다음에 볼 만한 것}
- **관련 연구**: {학술적 배경}