Skip to content

Silence-view/yt-learner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

yt-learner

Turn any YouTube video into structured knowledge that Claude remembers

Paste a link. Get study-grade notes with timestamps, topic segmentation,
and key insights saved to Claude's memory for future conversations.

Claude Code Plugin License: MIT Version Python Pipeline Languages


Table of Contents

Why yt-learner?

Most transcript tools give you a wall of text. yt-learner gives you knowledge.

Feature Raw Transcript Generic Summarizer yt-learner
Timestamps Per-line clutter None Section-level navigation
Topic segmentation None Basic Duration-adaptive
Study-grade prose No Bullet dumps Flowing academic notes
Obsidian integration No No YAML + callouts + wikilinks
Claude memory No No Learns for future sessions
Error handling None Generic 9 YouTube-specific error types
Multi-language Single Single 6 languages, priority fallback
Batch processing No No Playlist support

The difference: yt-learner doesn't just transcribe — it refines, segments, structures, and integrates video knowledge into Claude's persistent memory. After processing a video, Claude genuinely knows what was taught and can reference it in future conversations.


How It Works

You share a YouTube link. Claude does the rest:

You:    "Learn from this: https://youtube.com/watch?v=dQw4w9WgXcQ"

Claude: Extracts transcript → Cleans & refines → Segments into topics →
        Structures as Obsidian notes → Saves key insights to memory →
        Presents summary with top insights and timestamps

Trigger phrases (English + Italian):

  • "watch this", "learn from this video", "what does this video say"
  • "transcribe this", "take notes from YouTube"
  • "riassumi questo video", "impara da questo video"
  • Any message containing a youtube.com or youtu.be URL

Pipeline Architecture

                    yt-learner Pipeline
    ┌─────────────────────────────────────────────┐
    │                                             │
    │  Phase 1: EXTRACT                           │
    │  ├── Parse URL/ID (6 URL formats + bare ID) │
    │  ├── Check available languages               │
    │  ├── Fetch transcript via API                │
    │  └── Get video metadata (title, channel)     │
    │                                             │
    │  Phase 2: REFINE                            │
    │  ├── Fix punctuation & disfluencies          │
    │  ├── Correct technical terms                 │
    │  ├── Identify speaker changes                │
    │  └── Segment into topics (duration-adaptive) │
    │                                             │
    │  Phase 3: STRUCTURE                         │
    │  ├── YAML frontmatter (hierarchical tags)    │
    │  ├── Abstract callout (written LAST)         │
    │  ├── Core concepts table (5-12 entries)      │
    │  ├── Topic sections (flowing prose + [!tip]) │
    │  ├── Key takeaways (actionable insights)     │
    │  ├── Resources mentioned (table)             │
    │  ├── Connections (wikilinks)                  │
    │  └── Raw transcript (collapsible <details>)  │
    │                                             │
    │  Phase 4: LEARN                             │
    │  ├── Identify novel insights                 │
    │  ├── Create memory entries                   │
    │  └── Connect to existing knowledge           │
    │                                             │
    │  Phase 5: DELIVER                           │
    │  ├── Summary banner                          │
    │  ├── Top 3-5 insights with timestamps        │
    │  └── Follow-up action menu                   │
    │                                             │
    └─────────────────────────────────────────────┘

Phase Details

Phase Input Output Techniques
Extract YouTube URL Raw JSON transcript youtube-transcript-api v1.2.4+, 6 URL patterns, language priority fallback
Refine Raw transcript Clean, segmented text Disfluency removal, technical term correction, pause-based topic detection
Structure Refined text Obsidian .md note YAML frontmatter, callouts, wikilinks, section timestamps, collapsible raw transcript
Learn Structured note Memory entries Novel insight detection, domain relevance scoring, cross-reference to existing knowledge
Deliver All above User-facing summary Banner card, top insights with timestamps, follow-up action menu

Output Format

yt-learner produces Obsidian-native Markdown notes with:

YAML Frontmatter

title: "Video Title"
tags:
  - type/video
  - topic/machine-learning
  - status/processed
source: youtube
video_id: "dQw4w9WgXcQ"
channel: "Channel Name"
duration: "45:30"

Note Sections

Section Purpose Style
[!abstract] Self-contained video summary 3-5 flowing sentences
Core Concepts Quick reference table 5-12 self-contained definitions
Notes (by topic) Full knowledge content Flowing prose with [!tip], [!example], [!warning] callouts
Key Takeaways Actionable insights Bold lead-in bullets in [!tip] callout
Resources Tools/books mentioned Table: Resource, Type, Context
Connections Knowledge graph links [[wikilinks]] to related vault notes
Raw Transcript Source of truth Collapsible <details> with all timestamps

Writing Style

The notes follow a strict academic-analytical voice:

  • Third person, impersonal — "The key advantage is..." not "He says the advantage is..."
  • Flowing prose — paragraphs, not bullet dumps
  • Timestamps at section level only### Topic [MM:SS - MM:SS], not per-line
  • Caveated and qualified — "suggests", "consistent with", not overclaiming

Installation

Claude Code Marketplace

/plugin marketplace add Silence-view/yt-learner
/plugin install yt-learner@yt-learner

npx skills

npx skills add git@github.com:Silence-view/yt-learner.git

Manual Installation

Claude Code

Clone this repository and add it to your Claude Code plugins:

git clone https://github.com/Silence-view/yt-learner.git ~/.claude/plugins/local/yt-learner

Codex CLI

git clone https://github.com/Silence-view/yt-learner.git
cp -r yt-learner/skills/ ~/.codex/skills/

OpenCode

git clone https://github.com/Silence-view/yt-learner.git ~/.opencode/skills/yt-learner

Python Dependency

The skill requires youtube-transcript-api (v1.2.0+):

pip install youtube-transcript-api

Or let Claude install it automatically on first use — the skill will detect the missing dependency and offer to install it.


Usage

Basic — Just Paste a Link

You: "https://youtube.com/watch?v=VIDEO_ID"

Claude will automatically detect the YouTube URL, invoke yt-learner, and produce structured notes.

Explicit Invocation

You: "Learn from this video: https://youtu.be/VIDEO_ID"
You: "Transcribe and take notes from https://youtube.com/watch?v=VIDEO_ID"
You: "Riassumi questo video: https://youtube.com/watch?v=VIDEO_ID"

Specify Language

You: "Transcribe this in Italian: https://youtube.com/watch?v=VIDEO_ID"

Batch Processing

You: "Process these videos and create an index:
     - https://youtube.com/watch?v=ID1
     - https://youtube.com/watch?v=ID2
     - https://youtube.com/watch?v=ID3"

Direct Script Usage

The Python extractor can also be used standalone:

# Extract transcript as JSON
python scripts/yt_transcript.py "https://youtube.com/watch?v=VIDEO_ID" -f json -o transcript.json

# List available languages
python scripts/yt_transcript.py --list-languages "https://youtube.com/watch?v=VIDEO_ID"

# Extract in specific languages with priority
python scripts/yt_transcript.py "VIDEO_ID" -l it en es -f timestamped

# Install the dependency
python scripts/yt_transcript.py --install

Configuration

Language Priority

Default language priority: it, en, es, fr, de, pt. Override per-request:

python scripts/yt_transcript.py "URL" -l en fr de

Output Formats

Format Flag Description
JSON -f json Full structured data with metadata
Text -f text Plain text, all snippets joined
Timestamped -f timestamped [MM:SS] text per line

Topic Segmentation Strategy

Automatic segmentation adapts to video duration:

Duration Topics Approach
< 10 min 2-4 Fine-grained, almost every shift
10-30 min 4-8 Major theme changes
30-60 min 6-12 Grouped related sub-topics
> 60 min 10-20 Chapter-level, processed in chunks

Error Handling

The skill handles all YouTube API error types with user-friendly messages:

Error Cause Response
DependencyMissing youtube-transcript-api not installed Offers to install via pip
TranscriptsDisabled Video owner disabled subtitles Explains the limitation
NoTranscriptFound No transcript in requested languages Lists available languages, retries
VideoUnavailable Private, deleted, or region-locked Explains possible causes
TooManyRequests YouTube rate limiting Suggests waiting
InvalidURL Unrecognized URL format Lists supported formats
PoTokenRequired YouTube bot detection Suggests retry later
RequestBlocked IP or network blocked Suggests VPN/different network
IpBlocked IP banned by YouTube Suggests VPN/proxy

File Structure

yt-learner/
├── .claude-plugin/
│   ├── plugin.json          # Plugin manifest (name, version, keywords)
│   └── marketplace.json     # Marketplace listing metadata
├── skills/
│   └── yt-learner/
│       ├── SKILL.md          # Main skill definition (290 lines)
│       ├── scripts/
│       │   └── yt_transcript.py   # Python transcript extractor (334 lines)
│       └── references/
│           ├── refinement-guide.md     # Transcript cleanup & segmentation guide
│           └── video-note-template.md  # Obsidian note template & style rules
├── README.md                # This file
├── LICENSE                  # MIT License
└── CHANGELOG.md             # Version history

Requirements

Requirement Version Purpose
Python 3.9+ Runs the transcript extractor
youtube-transcript-api 1.2.0+ YouTube transcript API (instance-based)
Claude Code Latest Skill execution environment

Important: This skill uses the new instance-based API introduced in youtube-transcript-api v1.2.0. The old static methods (YouTubeTranscriptApi.get_transcript()) were removed. The extractor uses YouTubeTranscriptApi().fetch() which is the correct current API.


Supported URL Formats

The extractor handles all common YouTube URL patterns:

  • https://www.youtube.com/watch?v=VIDEO_ID
  • https://youtu.be/VIDEO_ID
  • https://youtube.com/embed/VIDEO_ID
  • https://youtube.com/shorts/VIDEO_ID
  • https://youtube.com/live/VIDEO_ID
  • https://youtube.com/v/VIDEO_ID
  • VIDEO_ID (bare 11-character ID)

Compatibility

This plugin follows the Agent Skills specification and works with:

  • Claude Code — full marketplace support
  • Codex CLI — copy skills/ to ~/.codex/skills/
  • OpenCode — clone to ~/.opencode/skills/
  • Any skills-compatible agent — standard SKILL.md format

Contributing

Contributions are welcome. Please:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/your-feature)
  3. Commit your changes
  4. Push to the branch
  5. Open a Pull Request

Areas for Contribution

  • Additional output templates (e.g., Notion, Logseq)
  • Support for non-YouTube video platforms
  • Improved speaker diarization
  • Chapter detection from video descriptions
  • Integration with video chapter markers

License

MIT — Andre, 2026

About

Claude Code plugin — Turn any YouTube video into structured knowledge notes with timestamps, topic segmentation, and Claude memory integration

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages