본문으로 건너뛰기
cccskills
무료GitHub에 공개

video-digest

Triage new videos, generate watch recommendations

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구YouTubeAWS
설치 방법 보기

포함된 파일(1)

  • SKILL.md12.2 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

/video-digest

Intelligently triage new videos from subscribed YouTube channels, process selectively based on relevance, and generate a daily digest with watch recommendations.

Usage

/video-digest                    # Full triage and processing
/video-digest --triage-only      # Score videos without processing
/video-digest --report           # Show current queue status
/video-digest --watched <video>  # Mark video as watched (removes from queue)

Examples

/video-digest
/video-digest --triage-only
/video-digest --watched "YouTube - AI Security Patterns"

Model Strategy

PhaseModelRationale
RSS fetchHaikuSimple data extraction
Title/desc triageHaikuFast relevance scoring
Worth ProcessingSonnetFull transcript analysis
Quick CaptureHaikuBrief summary only
Digest generationSonnetQuality recommendations

Instructions

Phase 1: Gather New Videos

Model: Haiku (parallel subagents)

  1. Read subscriptions from .claude/subscriptions.yaml

  2. For each channel (in parallel), fetch RSS feed:

    https://www.youtube.com/feeds/videos.xml?channel_id={{channel_id}}
    

    Use WebFetch with prompt: "Extract video entries: title, video_id, published_date, description (first 500 chars)"

  3. Identify new videos:

    • Compare video IDs against last_video_id
    • Select videos published since last check
    • If first check, take only most recent video
  4. Collect candidates with basic metadata:

    • video_id, title, description, duration (if available)
    • channel_name, channel_trust_score, always_watch

Phase 2: Rapid Triage

Model: Haiku

For each candidate video, compute triage score:

Scoring Algorithm

TRParentCorpE_SCORE = (
    PROJECT_RELEVANCE * 0.35 +    # 0-100
    DOMAIN_RELEVANCE * 0.25 +     # 0-100
    FRESHNESS_BOOST * 0.20 +      # 0-100
    CHANNEL_TRUST * 0.20          # 0-100 (from trust_score * 5)
)

Relevance Matching

Project Relevance (read .claude/context/projects.md):

Match title + description against project keywords:

ProjectKeywords
BetaERPSystem, MRO, Swiss-AS, EWS, modernisation, aviation, maintenance
AlphaSAP, DataPlatform, data products, Kafka, Datasphere, integration
AlertHubAWS Bedrock, AI agents, safety, incident, LLM, Claude
DeltaAircraftMfg, Gatelink, EFB, aircraft, AvionicsVendor, avionics
Cyber Upliftsecurity, IAM, compliance, LLD, AWS security, threat
DataPlatformdata platform, Snowflake, analytics, data engineering

Domain Relevance (read .claude/rules/tag-taxonomy.md domain/ section):

Match against domain keywords:

  • domain/engineering: systems, architecture, design, modernisation
  • domain/data: analytics, data products, streaming, Kafka, databases
  • domain/cloud: AWS, Azure, infrastructure, serverless, containers
  • domain/security: IAM, encryption, compliance, threats, vulnerabilities
  • domain/ai: LLM, agents, machine learning, Claude, GPT, automation

Freshness Boost:

  • Check if topic keywords appear in notes modified in last 14 days
  • Higher score = more recently active topics
  • Use Graph search: node .claude/scripts/graph-query.js --search="<keywords>" --since=$(date -v-14d +%Y-%m-%d) --json

Channel Trust:

  • Use trust_score from subscriptions.yaml (0-20, default 10)
  • Scale to 0-100 by multiplying by 5

Boost Keywords

Apply additional boosts from triage_settings.boost_keywords:

boost_keywords:
  - keyword: "architecture"
    boost: 10
  - keyword: "Claude Code"
    boost: 15

Never Process Keywords

Skip videos containing triage_settings.never_process_keywords:

never_process_keywords:
  - "reaction"
  - "drama"
  - "podcast"
  - "unboxing"

Duration Filtering

Skip videos outside minimum_duration / maximum_duration thresholds.

Category Assignment

CategoryScore RangeAction
Must Watch80-100Flag for user with reasoning
Worth Processing50-79Full /youtube processing
Quick Capture25-49Weblink only, brief summary
Skip0-24Log reason, no files created

Phase 3: Selective Processing

Model: Sonnet (parallel for Worth Processing tier)

Must Watch (80-100)

Do NOT process automatically. Instead:

  1. Update video queue (.claude/video-queue.yaml):

    must_watch:
      - video_id: "abc123"
        title: "Video Title"
        url: "https://youtube.com/watch?v=abc123"
        channel: "Channel Name"
        score: 92
        first_recommended: "2026-02-05T08:00:00Z"
        always_watch_channel: false
        reasoning:
          - "Directly relevant to [[Project - AlertHub]] - discusses AI agent security"
          - "Knowledge gap: No vault content on 'AI firewall' patterns"
          - "Channel trust: 2.8 nodes/video historical yield"
        potential_nodes: 4
    
  2. Include in digest with full reasoning

Worth Processing (50-79)

Launch parallel /youtube processing:

  1. For each video in this tier, invoke /youtube <url>:

    • Follow full /youtube skill workflow
    • Create YouTube node with transcript analysis
    • Spawn Concept/Pattern nodes as appropriate
  2. Track results:

    • Count spawned nodes
    • Update processing_stats in subscriptions.yaml

Quick Capture (25-49)

Model: Haiku

Create minimal Weblink note:

Filename: Weblink - {{sanitised title}}.md

---
type: Reference
title: "{{title}}"
url: "{{youtube_url}}"
domain: youtube.com
createdAt: "{{ISO timestamp}}"
description: "{{brief summary from description}}"
created: { { DATE } }
modified: { { DATE } }
tags:
  - video
  - activity/research

relatedTo: []
---

# {{title}}

**Channel:** {{channel name}}
**Duration:** {{duration}}
**Source:** [Watch on YouTube]({{url}})

## Summary

{{2-3 sentence summary based on title and description}}

## Relevance

Quick captured due to moderate relevance (score: {{score}}/100).

_Full processing not warranted based on triage criteria._

Skip (0-24)

Log to digest only. No files created.

Phase 4: Queue Management

Check Must Watch Expiry

  1. Read .claude/video-queue.yaml

  2. For each video in must_watch:

    • If always_watch_channel: true → Keep in must_watch
    • If age > must_watch_expiry_days (default 5) → Move to backlog
  3. Update queue file with moves

Backlog Structure

backlog:
  - video_id: "ghi789"
    title: "Older Video"
    url: "https://youtube.com/watch?v=ghi789"
    channel: "Some Channel"
    expired_from_must_watch: "2026-02-05"
    original_score: 85
    reasoning:
      - "Was relevant to [[Project - Beta]]"

Phase 5: Generate Digest

Model: Sonnet

Add ## Video Digest section to today's daily note.

  1. Find daily note: Check both formats:
    • Daily/{{year}}/{{YYYY-MM-DD}}.md (actual format used)
    • Daily/{{year}}/Daily - {{YYYY-MM-DD}}.md (documented format)
  2. Create if missing: Use /daily skill
  3. Insert digest section (before ## End of Day Review if present, otherwise at end)

Digest Template

## Video Digest

_Generated at {{timestamp}}_

### 📊 Summary

| Category         | Count | Action                       |
| ---------------- | ----- | ---------------------------- |
| Must Watch       | {{n}} | Review recommendations below |
| Worth Processing | {{n}} | Auto-processed               |
| Quick Capture    | {{n}} | Weblink created              |
| Skipped          | {{n}} | Not relevant                 |

### 🎯 Must Watch

{{For each must-watch video:}}

#### [[YouTube - {{title}}]] _(not yet created)_

**Channel:** {{channel}} | **Duration:** {{duration}} | **Score:** {{score}}/100

**Why watch:**
{{For each reasoning point:}}

- {{reasoning}}

**If skipped:** Will extract ~{{potential_nodes}} concepts including {{top concepts}}

---

### ✅ Auto-Processed

| Video | Channel | Score | Nodes Created |
| ----- | ------- | ----- | ------------- |

{{For each processed video:}}
| [[YouTube - {{title}}]] | {{channel}} | {{score}} | {{nodes_count}} |

### 📎 Quick Captures

{{For each quick capture:}}

- [[Weblink - {{title}}]] - {{brief reason}}

### ⏭️ Skipped

| Video | Channel | Reason |
| ----- | ------- | ------ |

{{For each skipped video:}}
| "{{title}}" | {{channel}} | {{skip_reason}} |

{{If backlog not empty:}}

### ⏳ When You Get Time (Backlog)

Videos that expired from Must Watch after {{expiry_days}} days:

| Video | Channel | Original Score | Days in Queue |
| ----- | ------- | -------------- | ------------- |

{{For each backlog video:}}
| [[YouTube - {{title}}]] | {{channel}} | {{score}} | {{days}} |

Phase 6: Update State

  1. Update subscriptions.yaml:

    • Set last_checked to current timestamp
    • Set last_video_id to most recent video per channel
    • Increment processing_stats counters
  2. Update video-queue.yaml:

    • Add new must-watch videos
    • Move expired videos to backlog
    • Remove watched videos (via --watched flag)

Handling --watched Flag

When invoked as /video-digest --watched <video>:

  1. Parse video identifier (title or video_id)
  2. Search must_watch and backlog in queue
  3. Remove matching entry
  4. Confirm removal

Handling --report Flag

When invoked as /video-digest --report:

  1. Read .claude/video-queue.yaml
  2. Display summary:
Video Queue Status
==================

Must Watch: {{count}}
{{For each:}}
  - "{{title}}" ({{channel}}) - Score: {{score}} - {{days_old}} days old

Backlog: {{count}}
{{For each:}}
  - "{{title}}" ({{channel}}) - Expired {{days_ago}} days ago

Last Digest: {{timestamp}}

Handling --triage-only Flag

When invoked as /video-digest --triage-only:

  • Execute Phases 1-2 only
  • Output scoring results without processing
  • Do not update subscriptions.yaml (except last_checked)
  • Useful for testing triage algorithm

Quality Standards

  • Always generate digest in daily note
  • Always provide reasoning for must-watch recommendations
  • Always update queue state after execution
  • Never process must-watch automatically (user should decide)
  • Never create duplicate YouTube nodes for already-processed videos
  • Use UK English throughout
  • Update subscriptions.yaml after every run
  • Track spawned nodes for trust score calibration

Example Output

For a run with 2 channels, 8 new videos:

Video Digest Results
====================

Checked 2 channels, found 8 new videos.

📊 Triage Results:
  Must Watch: 1
    - "AI Security for Autonomous Agents" (IndyDevDan) - Score: 92
  Worth Processing: 2
    - "AWS Bedrock Deep Dive" - Score: 68
    - "Kafka Streaming Patterns" - Score: 55
  Quick Capture: 2
  Skipped: 3

✅ Processed 2 videos:
  - [[YouTube - AWS Bedrock Deep Dive]] → 2 concepts, 1 pattern
  - [[YouTube - Kafka Streaming Patterns]] → 1 concept

📎 Created 2 quick captures:
  - [[Weblink - Tech News Weekly]]
  - [[Weblink - Developer Productivity Tips]]

📝 Updated today's daily note with digest.
📋 1 video added to must-watch queue.

Error Handling

  • RSS fetch fails: Log warning, continue to next channel
  • Transcript unavailable: Process with description-only analysis
  • Daily note missing: Create using /daily skill
  • Queue file missing: Create with empty arrays
  • Config missing: Use default thresholds

Related Skills

  • /rss-check - Channel subscription management
  • /youtube - Full video processing
  • /daily - Daily note creation
  • /schedule - Scheduled execution setup

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Batch populate summary fields using content analysis

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

DavidROliverBA/ArchitectKB542026년 3월 2일 업데이트

auto-tag

무료

Batch auto-tag untagged notes using content analysis

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

DavidROliverBA/ArchitectKB542026년 3월 2일 업데이트

Generate C4 architecture diagrams from system notes

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

DavidROliverBA/ArchitectKB542026년 3월 2일 업데이트

canvas

무료

Create and edit Obsidian Canvas files for architecture visualization

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

DavidROliverBA/ArchitectKB542026년 3월 2일 업데이트

Check Outlook inbox and update daily note with message summary

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

DavidROliverBA/ArchitectKB542026년 3월 2일 업데이트

commit

무료

Stage and commit vault changes with UK English conventional commit messages

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

DavidROliverBA/ArchitectKB542026년 3월 2일 업데이트

DavidROliverBA의 스킬 모두 보기

이 스킬의 문제 신고