con un clic
video-digest
Triage new videos, generate watch recommendations
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
Triage new videos, generate watch recommendations
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
Generate C4 architecture diagrams from system notes
Create and edit Obsidian Canvas files for architecture visualization
Visualize system dependencies and relationships
Analyse architecture diagrams and flowcharts
Generate architecture diagrams using Python diagrams library
Batch populate summary fields using content analysis
| name | video-digest |
| context | orchestrate |
| description | Triage new videos, generate watch recommendations |
| model | opus |
| hooks | {"Stop":[{"type":"command","command":"test -f \"Daily/$(date +%Y)/Daily - $(date +%Y-%m-%d).md\" && grep -q \"## Video Digest\" \"Daily/$(date +%Y)/Daily - $(date +%Y-%m-%d).md\"","statusMessage":"Verifying digest in daily note"}]} |
Intelligently triage new videos from subscribed YouTube channels, process selectively based on relevance, and generate a daily digest with watch recommendations.
/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)
/video-digest
/video-digest --triage-only
/video-digest --watched "YouTube - AI Security Patterns"
| Phase | Model | Rationale |
|---|---|---|
| RSS fetch | Haiku | Simple data extraction |
| Title/desc triage | Haiku | Fast relevance scoring |
| Worth Processing | Sonnet | Full transcript analysis |
| Quick Capture | Haiku | Brief summary only |
| Digest generation | Sonnet | Quality recommendations |
Model: Haiku (parallel subagents)
Read subscriptions from .claude/subscriptions.yaml
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)"
Identify new videos:
last_video_idCollect candidates with basic metadata:
Model: Haiku
For each candidate video, compute triage score:
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)
)
Project Relevance (read .claude/context/projects.md):
Match title + description against project keywords:
| Project | Keywords |
|---|---|
| Beta | ERPSystem, MRO, Swiss-AS, EWS, modernisation, aviation, maintenance |
| Alpha | SAP, DataPlatform, data products, Kafka, Datasphere, integration |
| AlertHub | AWS Bedrock, AI agents, safety, incident, LLM, Claude |
| Delta | AircraftMfg, Gatelink, EFB, aircraft, AvionicsVendor, avionics |
| Cyber Uplift | security, IAM, compliance, LLD, AWS security, threat |
| DataPlatform | data platform, Snowflake, analytics, data engineering |
Domain Relevance (read .claude/rules/tag-taxonomy.md domain/ section):
Match against domain keywords:
domain/engineering: systems, architecture, design, modernisationdomain/data: analytics, data products, streaming, Kafka, databasesdomain/cloud: AWS, Azure, infrastructure, serverless, containersdomain/security: IAM, encryption, compliance, threats, vulnerabilitiesdomain/ai: LLM, agents, machine learning, Claude, GPT, automationFreshness Boost:
node .claude/scripts/graph-query.js --search="<keywords>" --since=$(date -v-14d +%Y-%m-%d) --jsonChannel Trust:
trust_score from subscriptions.yaml (0-20, default 10)Apply additional boosts from triage_settings.boost_keywords:
boost_keywords:
- keyword: "architecture"
boost: 10
- keyword: "Claude Code"
boost: 15
Skip videos containing triage_settings.never_process_keywords:
never_process_keywords:
- "reaction"
- "drama"
- "podcast"
- "unboxing"
Skip videos outside minimum_duration / maximum_duration thresholds.
| Category | Score Range | Action |
|---|---|---|
| Must Watch | 80-100 | Flag for user with reasoning |
| Worth Processing | 50-79 | Full /youtube processing |
| Quick Capture | 25-49 | Weblink only, brief summary |
| Skip | 0-24 | Log reason, no files created |
Model: Sonnet (parallel for Worth Processing tier)
Do NOT process automatically. Instead:
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
Include in digest with full reasoning
Launch parallel /youtube processing:
For each video in this tier, invoke /youtube <url>:
/youtube skill workflowTrack results:
processing_stats in subscriptions.yamlModel: 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._
Log to digest only. No files created.
Read .claude/video-queue.yaml
For each video in must_watch:
always_watch_channel: true → Keep in must_watchmust_watch_expiry_days (default 5) → Move to backlogUpdate queue file with moves
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]]"
Model: Sonnet
Add ## Video Digest section to today's daily note.
Daily/{{year}}/{{YYYY-MM-DD}}.md (actual format used)Daily/{{year}}/Daily - {{YYYY-MM-DD}}.md (documented format)/daily skill## End of Day Review if present, otherwise at end)## 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}} |
Update subscriptions.yaml:
last_checked to current timestamplast_video_id to most recent video per channelprocessing_stats countersUpdate video-queue.yaml:
--watched flag)When invoked as /video-digest --watched <video>:
must_watch and backlog in queueWhen invoked as /video-digest --report:
.claude/video-queue.yamlVideo 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}}
When invoked as /video-digest --triage-only:
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.
/daily skill/rss-check - Channel subscription management/youtube - Full video processing/daily - Daily note creation/schedule - Scheduled execution setup