YouTube Transcript Extractor
pendingby Michael Loh
Extract YouTube transcripts and generate AI-powered summaries using cloud or local LLMs.
YouTube Transcript Extractor
An Obsidian plugin that extracts YouTube video transcripts, generates AI-powered summaries using local or cloud LLMs, and saves formatted notes to your vault.
Features
- Extract YouTube transcripts without API keys
- Generate summaries using local LLMs (Ollama, LM Studio, llama.cpp) or cloud providers (OpenAI, Anthropic, OpenRouter)
- Mobile-compatible with cloud LLM providers
- Customizable templates with variable substitution
- Flexible settings for metadata, naming, and error handling
- Multiple entry points: command palette, ribbon icon, context menu
- Status bar progress feedback
Installation
From Obsidian Community Plugins (Recommended)
- Open Settings > Community Plugins
- Disable Safe Mode
- Browse and search for "YouTube Transcript Extractor"
- Install and enable the plugin
Manual Installation
- Download the latest release from GitHub
- Extract files to
.obsidian/plugins/ytextract/in your vault - Reload Obsidian
- Enable plugin in Settings > Community Plugins
Usage
Extract a Video
Command Palette:
- Press
Ctrl/Cmd + P - Type "Extract YouTube Video"
- Paste YouTube URL
- Click Extract
Ribbon Icon:
- Click YouTube icon in left sidebar
- Paste URL and extract
Context Menu:
- Select YouTube URL in editor
- Right-click > "Extract YouTube Video"
Configuration
File Management
- Default folder: Where to save extracted videos (e.g., "YouTube")
- Naming pattern: File naming with variables:
{date},{title},{channel},{id}- Example:
{date} - {title}creates "2025-11-05 - Video Title.md"
- Example:
- Template file path: Path to custom template file (leave empty for default)
- File exists behavior: What to do when file already exists
- Append number to filename
- Prompt for overwrite
Video Metadata Fields
Control which metadata fields are included in your notes:
- Include upload date: Video upload date
- Include duration: Video duration
- Include view count: Number of views
- Include description: Full video description
- Include channel URL: Link to the channel
- Include thumbnail URL: Video thumbnail image URL
LLM Configuration
Provider Selection:
- LLM Provider: Choose from:
- Local Providers: Ollama, LM Studio, llama.cpp (desktop only)
- Cloud Providers: OpenAI, Anthropic, OpenRouter (works on mobile!)
- Custom: Configure your own endpoint
- Auto-detect endpoint: Automatically find available local LLM server (local providers only)
- API Key: Secure password-masked input for cloud providers
- LLM Endpoint: API endpoint URL (auto-configured for cloud providers)
- Model name: Model to use (e.g., "llama2", "gpt-4o-mini", "claude-3-5-haiku-20241022")
Cloud Provider Models:
- OpenAI: gpt-4o-mini (default), gpt-4o, gpt-3.5-turbo
- Anthropic: claude-3-5-haiku-20241022 (default), claude-3-5-sonnet-20241022
- OpenRouter: anthropic/claude-3.5-haiku (default), access to 100+ models
System Prompt:
- Custom system prompt: Customize the prompt sent to the LLM
- Default: "Summarize the following transcript concisely and suggest relevant tags"
Output Options:
- Generate summary: Create a text summary
- Generate key points: Extract main points as bullet list
- Generate tags: Suggest relevant tags
- Generate questions: Generate discussion questions
Advanced:
- Request timeout (ms): Timeout for LLM requests in milliseconds (default: 30000)
Error Handling
Error behavior: How to handle errors during extraction
- Stop on error: Don't create file if any step fails
- Save partial data: Save note with whatever data was successfully retrieved
- Skip failed steps with warning: Continue extraction, skip failed parts with warning
Template Variables
Available variables for custom templates:
Video Metadata
{{title}}- Video title{{url}}- Full YouTube URL{{channel}}- Channel name{{upload_date}}- Upload date (if enabled){{duration}}- Video duration (if enabled){{view_count}}- View count (if enabled){{description}}- Video description (if enabled){{channel_url}}- Channel URL (if enabled){{thumbnail_url}}- Thumbnail URL (if enabled)
LLM Outputs
{{llm_summary}}- AI-generated summary{{llm_key_points}}- Key points as bullet list{{generated_tags}}- Suggested tags (YAML array format for frontmatter){{generated_tags_hashtags}}- Suggested tags with # prefix (for document body){{llm_questions}}- Generated questions
Note on Tags: Use {{generated_tags}} in YAML frontmatter to avoid "Type mismatch" errors. Use {{generated_tags_hashtags}} in the document body if you want hashtag-style tags like #machine-learning #ai-development.
Transcript
{{transcript}}- Plain text transcript{{transcript_timestamped}}- Transcript with timestamps
Other
{{extraction_date}}- Date when transcript was extracted (YYYY-MM-DD format)
Default Template
If no custom template is specified, the plugin uses this default:
---
title: {{title}}
url: {{url}}
channel: {{channel}}
date: {{upload_date}}
duration: {{duration}}
tags: {{generated_tags}}
---
# {{title}}
## Summary
{{llm_summary}}
---
## Key Points
{{llm_key_points}}
---
## Personal Notes
---
## Transcript
{{transcript}}
Requirements
- Obsidian v0.15.0 or higher
- For AI summaries, choose one:
Mobile Usage
The plugin works on mobile devices using cloud LLM providers:
- Install the plugin on your mobile vault
- Open Settings > YouTube Transcript Extractor
- Select a cloud provider (OpenAI, Anthropic, or OpenRouter)
- Enter your API key
- Extract videos normally via the command palette or ribbon icon
Note: Local LLM providers (Ollama, LM Studio, llama.cpp) are only available on desktop.
Support
- Report issues: GitHub Issues
- Author: Michael Loh
- Website: https://www.e-maginaryarts.com
License
MIT
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.