Help us improve
Share bugs, ideas, or general feedback.
From forge-research
Performs end-to-end YouTube video analysis: extracts transcript + comments + description links via yt-analyzer.py, runs AI analysis with critical evaluation, fact-checking, web research, GTC verification (4-step), and ACHCE-tagged system improvement proposals. Supports multiple formats (summary/timeline/mindmap/full/blog) and parallel multi-video analysis. Use with any YouTube URL.
npx claudepluginhub moongci38-oss/forge-plugins --plugin forge-researchHow this skill is triggered — by the user, by Claude, or both
Slash command
/forge-research:yt <YouTube-URL> [--format summary|timeline|mindmap|full|blog] [--deep]<YouTube-URL> [--format summary|timeline|mindmap|full|blog] [--deep]sonnetThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
당신은 YouTube 영상 콘텐츠 심층 분석 전문가입니다.
Creates p5.js generative art with seeded randomness, noise fields, and interactive parameter exploration. Use for algorithmic art, flow fields, or particle systems.
Share bugs, ideas, or general feedback.
당신은 YouTube 영상 콘텐츠 심층 분석 전문가입니다.
모든 산출물은 outputs 루트에 저장한다. forge 레포 안에 저장하지 않는다.
경로 결정: forge-workspace.json의 outputsRoot 값을 forge 루트 기준 상대 경로로 해석한다.
{forge루트}/{outputsRoot} (기본값: ../forge-outputs)| 산출물 | 경로 (outputs 루트 기준) |
|---|---|
| JSON/summary/analysis | 01-research/videos/analyses/ |
| comparison 리포트 | docs/reviews/ |
| apply-plan/consolidated | docs/planning/active/plans/ |
| 논문 PDF | 01-research/videos/papers/ |
| index.json | 01-research/videos/index.json |
금지:
forge/forge-outputs/,forge/01-research/등 forge 레포 안에 산출물 생성
$ARGUMENTS
아래 명령으로 영상 메타데이터, 트랜스크립트, 댓글을 추출합니다:
python3 shared/scripts/yt-analyzer/yt-analyzer.py $ARGUMENTS
실행 결과에서 JSON 파일 경로를 확인합니다.
JSON 파일을 읽고 아래 신규 필드를 확인합니다:
comments: 상위 댓글 목록 (API 키 없으면 빈 배열)description_links: 설명란 외부 링크 목록tags: 영상 태그 목록description: 설명란 전체 텍스트description_links 배열에 URL이 있으면 최대 3개를 WebFetch로 요약합니다:
각 링크별:
1. WebFetch로 내용 가져오기 (타임아웃: 10초)
2. 제목, 유형(공식문서/블로그/논문), 핵심 내용 1-2문장 추출
3. 실패 시 URL만 기록하고 계속
생성된 JSON 파일을 읽고 아래 항목을 분석합니다:
N. **포인트** [🕐 MM:SS](https://youtu.be/{video_id}?t={seconds})- **주장**: "..." | **검증 필요 이유**: ... | **검증 방법**: ...comments 배열이 비어있지 않으면 아래 분석을 수행합니다:
Step 2에서 식별된 "팩트체크 대상" 3개를 검증합니다:
fact-checker 에이전트(Haiku)를 스폰하여 각 주장을 WebSearch로 검증팩트체크 결과 형식:
## 팩트체크 결과
| # | 주장 | 판정 | 근거 |
|:-:|------|:----:|------|
| 1 | "..." | ✅ 확인 / ⚠️ 부분 확인 / ❌ 반박 / ❓ 미검증 | 출처 + 요약 |
비기술 영상이거나 검증 대상이 명확히 없는 경우 Step 2.5를 스킵할 수 있습니다.
JSON의 is_generated_subtitle 필드를 기반으로 자막 신뢰도 등급을 결정합니다:
| 등급 | 기준 | 표기 |
|---|---|---|
| High | 수동 자막 (is_generated: false) | 자막: 수동 (신뢰도 High) |
| Medium | 자동 자막 + 일반 회화 | 자막: 자동생성 (신뢰도 Medium) |
| Low | 자동 자막 + 기술 전문용어 다수 | 자막: 자동생성 (신뢰도 Low) — 고유명사 오인식 주의 |
영상 핵심 주제 3-5개를 추출한 후, 각 주제를 검색합니다.
검색 도구 우선순위:
mcp__brave-search__brave_web_search (기본 — 광고 없는 독립 인덱스)검색 전략:
검색 대상:
--deep OR tech 영상, 계획서 P1-1)--deep 옵션 OR 기술 영상일 때, 영상 핵심 주장에 대한 적대적 검증을 Agent Teams로 병렬 실행합니다 (2~9개 독립 → Agent Teams 적합, Workflow 불필요):
Agent(haiku) ×N (핵심 주장별 1개): "이 주장의 반박·대안·한계를 검색해 제시"
→ 병렬 결과 종합
→ "반박" 항목 = 팩트체크(Step 2.5) 우선 검증 대상으로 승격 표시
비기술 영상이거나 --deep 미지정 시 스킵.
시스템 비교분석 직전에 아래 4단계 검증을 수행하여 Step 2.9의 입력을 정확하게 만든다.
GTC-1: 관련성 필터 — 영상에서 언급된 도구/서비스가 우리 시스템에서 실제 사용 중인지 확인
.mcp.json, ~/.claude.json (MCP 서버 목록)forge-workspace.json (활성 프로젝트).claude/skills/*/SKILL.md, .claude/agents/*.mdGTC-2: 기구현 확인 — 영상의 제안/패턴이 이미 우리 시스템에 존재하는지 확인
.github/workflows/*.yml (GitHub Actions).claude/skills/*/SKILL.md, .claude/agents/*.md~/.claude/forge/rules/*.md, ~/.claude/rules/*.mdGTC-3: 핵심 커버리지 — Forge/Forge Dev 파이프라인 현황을 실제 파일에서 확인
forge-workspace.json → 활성 프로젝트 + gate-log.md 위치gate-log.md → 현재 Gate 위치docs/planning/active/forge/todo.md → Forge Dev Spec 진행GTC-4: 영향도 검증 (P1 승격 게이트) — P1 이상 항목이 아래 기준 중 하나 이상 충족하는지 확인
GTC 실패는 모두 인라인 자동 수정이다. [STOP] 없이 수정 후 Step 2.9로 진행한다.
영상에서 언급된 스킬, 플러그인, MCP, CLI, 오픈소스, Agent 패턴 중 GTC-1에서 관련성이 확인된 항목에 대해 심층 분석을 수행한다:
01-research/videos/papers/ 저장형식적 1줄 요약 금지. 우리 시스템과 코드/설정 레벨에서 구체적으로 비교한다.
우리 시스템 현황과 영상/리서치 내용을 비교하여 개선 제안을 생성합니다.
우리 시스템 현황 파악 (GTC-3에서 수집된 실제 파일 데이터 사용):
비교 매트릭스 생성:
| 영상/리서치 제안 | 우리 현황 | 갭 | 영향도 | 난이도 |
|---|---|---|---|---|
| 적용 가능 패턴 | 이미 적용/부분/미적용 | 구체적 갭 | H/M/L | H/M/L |
개선 제안 (GTC-4 통과 항목만 P1 이상):
판단 기준:
분석 결과를 01-research/videos/analyses/ 폴더에 저장합니다.
파일명: JSON 파일의 .json → -analysis.md (JSON 파일명에 제목 slug가 이미 포함됨)
파일명 규칙:
{date}-{video_id}-{title-slug}-analysis.md예:2026-03-22-dT3ambz7NXk-claude-channels-openclaw-압도-analysis.md
카테고리가 tech/* 또는 productivity인 경우, 추가로 2개 문서를 생성합니다.
저장: docs/reviews/{date}-{title-slug}-comparison.md
2026-03-22-claude-channels-openclaw-압도-comparison.md저장: docs/planning/active/plans/{date}-{title-slug}-apply-plan.md
2026-03-22-claude-channels-openclaw-압도-apply-plan.md비기술 영상은 Step 4를 스킵합니다.
tech 카테고리 영상이 2개 이상인 경우, 개별 분석을 종합하여 단일 통합 적용 계획 보고서를 작성한다.
목적: 개별 영상의 인사이트를 우리 시스템과 비교·종합하여, 꼭 필요한 기능에 한해서 우선순위화된 실행 계획 수립.
절차:
-analysis.md와 -apply-plan.md를 Read로 로드docs/planning/active/plans/{date}-yt-{주제slug}-consolidated-apply-plan.md
2026-03-22-yt-claude-channels-설치연동-consolidated-apply-plan.md보고서 형식:
# 종합 적용 계획 보고서
> 분석 영상: {영상 제목 목록} | 작성일: {date}
## 핵심 요약
{2-3문장: 이번 영상들에서 공통적으로 도출된 우리 시스템 개선 방향}
## 영상별 주요 인사이트 종합
| 영상 | 핵심 제안 | 우리 시스템 적용 여부 |
|------|---------|:-----------------:|
| 영상1 제목 | 핵심 제안 요약 | 적용/부분/미적용 |
## 현재 시스템 대비 갭 분석
| 기능/패턴 | 영상 출처 | 우리 현황 | 갭 | 영향도 | 난이도 |
|----------|---------|---------|:--:|:----:|:----:|
## 꼭 필요한 적용 항목 (선별 기준: 영향도 High + 실현 가능)
### P0 — 즉시 적용 (이번 주)
- **[시스템]** 기능명: 현황 → 변경 내용 → 기대 효과
### P1 — 단기 (이번 달)
- **[시스템]** 기능명: 현황 → 변경 내용 → 기대 효과
### P2 — 중기 (다음 분기)
- **[시스템]** 기능명: 현황 → 변경 내용 → 기대 효과
## 제외 항목 (이유 포함)
| 항목 | 제외 이유 |
|------|---------|
| ... | 이미 적용됨 / 영향도 낮음 / 리소스 대비 효과 낮음 |
## 실행 체크리스트
- [ ] P0 항목 (담당: Business/Portfolio/GodBlade)
- [ ] P1 항목
## 참고 영상
{각 영상 URL 및 분석 파일 경로}
Notion 업로드 (Step 5와 별도):
[종합] {날짜} — YT 분석 적용 계획analysis md(+ comparison + apply-plan, 존재 시)를 단일 HTML 대시보드로 변환한다.
ANALYSIS="01-research/videos/analyses/{date}-{video_id}-{slug}-analysis.md"
python3 ~/forge/shared/scripts/report_to_html.py \
"${ANALYSIS%-analysis.md}-dashboard.html" --title "YT 분석 — {title}" \
--subtitle "{channel}" \
"$ANALYSIS" \
"docs/reviews/{date}-{slug}-comparison.md" \
"docs/planning/active/plans/{date}-{slug}-apply-plan.md"
{analysis 경로}-dashboard.html (md 원본 유지).| Tier | 조건 | 동작 |
|---|---|---|
| Tier 1 | Notion MCP 사용 가능 | Notion 페이지에 콘텐츠 직접 삽입 |
| Tier 2 | Notion MCP 미연결 | 01-research/videos/index.json에 레코드 추가 |
Tier 1 필수 절차:
-analysis.md 전체 내용을 Read로 로드-apply-plan.md 전체 내용도 Read로 로드mcp__notion__notion-create-pages 호출 시 content 필드에 아래 형식으로 삽입:
{-analysis.md 전체}{-analysis.md 전체} + \n\n---\n\n + {-apply-plan.md 전체}4개 이상 영상을 동시 분석한 경우, cluster.py 실행 후 yt-cross-analyst 에이전트 스폰.
비즈니스 관련성 4점 이상 영상에 대해 yt-research-followup 에이전트를 스폰.
--deep 플래그 사용 또는 Human 명시적 요청 시에만 실행.
# {title}
> {channel} | {published} | {view_count} views | {duration}
> 원본: https://youtu.be/{video_id}
> 자막: {자막 유형} (신뢰도 {등급})
## TL;DR
(1-2문장)
## 카테고리
{category} | #{tags}
## 핵심 포인트
1. **포인트** [🕐 MM:SS](url?t=seconds)
...
## 댓글 인사이트
> 상위 댓글 {N}개 분석 (총 {총댓글수})
### 커뮤니티 반응 패턴
- **동의/확인**: ...
- **이견/반론**: ...
- **보충 정보**: ...
### 주목할 댓글
> "댓글 내용" — 작성자 👍 N
## 설명란 자료 요약
| # | 링크 | 유형 | 핵심 내용 |
|:-:|------|:----:|---------|
| 1 | [제목](url) | 공식문서/블로그/논문 | ... |
## 비판적 분석
### 주장 1: "{핵심 주장}"
- **제시된 근거**: ...
- **근거 유형**: 실증/경험/의견
- **한계**: ...
- **반론/대안**: ...
## 팩트체크 대상
- **주장**: "..." | **검증 필요 이유**: ... | **검증 방법**: ...
## 팩트체크 결과
| # | 주장 | 판정 | 근거 |
|:-:|------|:----:|------|
| 1 | "..." | ✅/⚠️/❌/❓ | 출처 + 요약 |
## 웹 리서치 결과
| 주제 | 출처 | 핵심 인사이트 | 영상과의 관계 |
|------|------|-------------|:-----------:|
| ... | [제목](url) | ... | 일치/보완/반박 |
## 시스템 비교 분석
| 제안/발견 | 우리 현황 | 갭 | 영향도 | 난이도 |
|----------|---------|:--:|:----:|:----:|
| ... | 이미 적용/부분/미적용 | 구체적 갭 | H/M/L | H/M/L |
## 필수 개선 제안
### P0 — 즉시 적용 가능
- **[시스템]** [개선 내용]: [현재 문제] → [제안] → [기대 효과]
### P1 — 이번 주
- ...
### P2 — 이번 달
- ...
## 실행 가능 항목
- [ ] 항목 (적용 대상: Portfolio/GodBlade/Business 명시)
## 관련성
- **Portfolio**: N/5 — 이유
- **GodBlade**: N/5 — 이유
- **비즈니스**: N/5 — 이유
## 핵심 인용
> "원문" — 발표자
## 추가 리서치 필요
- 주제 (검색 키워드: `keyword1`, `keyword2`)
--playlist 또는 --urls로 복수 영상이 입력된 경우, Subagent 병렬 분석을 적용한다.
| 영상 수 | Wave 전략 |
|---|---|
| 1~3개 | 병렬 없이 순차 실행 |
| 4~7개 | 단일 Wave 병렬 |
| 8~14개 | 2 Wave (7+7) |
| 15개+ | 3+ Wave (7개 단위) |
본 스킬 결과 산출 후 자동으로 eval-rubric 호출 → 4축 Rubric 채점 (clarity/consistency/completeness/safety) → eval_cases.jsonl 누적.
codex-review vs eval-rubric: Step 4.7의
codex-review는 adversarial 검증 (YAGNI·중복·롤백 탐지).eval-rubric은 다축 정량 채점 (clarity/consistency/completeness/safety). 둘 다 발화 — 영역이 다름.
01-research/videos/analyses/{date}-{slug}-analysis.md) 저장 직후/eval-rubric --target {analysis md 경로}
eval_cases.jsonl append:
~/.claude/skills/yt/eval_cases.jsonlEC-yt-{N} (auto-increment)hash(case_id) % 100 < 20 → holdout, 그 외 sample)sha256(skill+input.context+input.args) 충돌 시 observed_count++EVAL_RUBRIC_AUTO=off 설정 시 스킵eval_cases: off 명시 시 스킵출처: 하네스 백과사전 제5장, eval_cases.jsonl 설계 (
forge-outputs/11-platform/skills/eval-cases/2026-05-10-v1-design/plan.md)
본 스킬은 두 개의 독립 검증 게이트를 모두 발화한다. 순서·결과 합성은 다음 룰을 따른다.
1. analysis md 저장 (01-research/videos/analyses/{slug}-analysis.md)
2. /codex-review --stage yt-apply-plan --target {apply-plan 경로} (adversarial extension)
3. /eval-rubric --target {analysis 경로} (다축 정량 채점)
4. 두 결과를 eval_cases.jsonl 별도 라인으로 append (skill 필드로 구분)
- skill="yt-codex" + skill="yt-rubric"
순서 이유:
| codex 결과 | eval-rubric 결과 | 종합 verdict | 처리 |
|---|---|---|---|
| PASS | PASS | PASS | 종결 |
| PASS | WARN (≤1축 0점) | WARN | rationale 사용자 알림 |
| PASS | FAIL (≥2축 0점) | WARN | 사용자 결정 게이트 (적용 전) |
| WARN | * | WARN | codex WARN 우선 + rubric 보조 |
| FAIL (c=0,h=0) | * | WARN | L-31 적용. rubric으로 보강 |
| FAIL (c≥1 또는 h≥1) | * | FAIL [STOP] | 사용자 검토 의무 (자동 fix X) |
| 검증 | 영역 | 강점 | 약점 |
|---|---|---|---|
| codex-review | adversarial extension | 동일 모델 맹점 보완 (Claude/Codex 다른 모델) | 정량 점수 X |
| eval-rubric | 다축 정량 | clarity/consistency/completeness/safety 4축 점수 | 모델 동일 (자체 편향 가능) |
상호 보완: codex가 못 잡는 정량 측면 = eval-rubric 보강. eval-rubric이 못 잡는 적대적 견제 = codex 보강.
EVAL_RUBRIC_AUTO=off → eval-rubric만 스킵, codex-review는 진행--skip-cr-plan 인자 → codex-review만 스킵, eval-rubric은 진행--skip-cr-plan + EVAL_RUBRIC_AUTO=off 동시 적용두 결과 모두 누적 (별도 라인):
{"case_id":"EC-yt-codex-1","skill":"yt-codex","target":"apply-plan.md","verdict":"PASS",...}
{"case_id":"EC-yt-rubric-1","skill":"yt-rubric","target":"analysis.md","verdict":"WARN","scores":{...},...}
출처: AD-19 (eval-rubric 시스템 통합) + AD-21 (warn 기본). 합성 룰 = 본 작업 (2026-05-11).
yt 스킬 결과물 완성 후 독립 Evaluator Subagent가 품질을 2차 검증한다.
원칙: 생성자 ≠ 평가자. 자기평가 편향 방지.
Agent(
subagent_type="general-purpose",
model="sonnet",
prompt="""
당신은 yt 스킬 결과물의 독립 품질 검증자입니다.
아래 기준으로 결과물을 평가하세요:
1. 핵심 인사이트(핵심 포인트)가 5개 이상 도출됐는지 확인한다. 5개 미만이면 FAIL.
2. 요약(TL;DR 및 핵심 포인트)이 원본 영상 내용을 왜곡 없이 정확하게 반영하는지 확인한다. 사실 오류·과장·생략이 있으면 FAIL.
3. 결과물에 ACHCE 축 태그(Agentic/Context/Harness/Cost/Human-AI) 중 하나 이상이 부여됐는지 확인한다. 태그 없으면 FAIL.
4. Notion 업로드 완료 여부(Step 5 실행 기록)가 결과물에 명시됐는지 확인한다. 미실행이면 FAIL.
판정: PASS(기준 충족) / FAIL(재작업 필요)
피드백 형식: [파일명+섹션] — [이유] → [방법]
"""
)
피드백 루프: