video-summarizer
Download videos from URLs (YouTube, Bilibili, and any yt-dlp supported platform), transcribe speech to text using Whisper, generate a structured summary, and save both the summary and full transcript as linked Obsidian notes. Use this skill whenever the user wants to summarize a video, transcribe video content, extract key points from a video, or save video notes to Obsidian. Also trigger when the user shares a video URL and asks for analysis, notes, or a recap.
Best use case
video-summarizer is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Download videos from URLs (YouTube, Bilibili, and any yt-dlp supported platform), transcribe speech to text using Whisper, generate a structured summary, and save both the summary and full transcript as linked Obsidian notes. Use this skill whenever the user wants to summarize a video, transcribe video content, extract key points from a video, or save video notes to Obsidian. Also trigger when the user shares a video URL and asks for analysis, notes, or a recap.
Teams using video-summarizer should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/video-summarizer/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How video-summarizer Compares
| Feature / Agent | video-summarizer | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Download videos from URLs (YouTube, Bilibili, and any yt-dlp supported platform), transcribe speech to text using Whisper, generate a structured summary, and save both the summary and full transcript as linked Obsidian notes. Use this skill whenever the user wants to summarize a video, transcribe video content, extract key points from a video, or save video notes to Obsidian. Also trigger when the user shares a video URL and asks for analysis, notes, or a recap.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
SKILL.md Source
# Video Summarizer
Convert video URLs into structured summaries and full transcripts, saved as linked notes in Obsidian.
## Prerequisites
- `yt-dlp` installed and available in PATH
- `ffmpeg` installed and available in PATH
- `whisper` (OpenAI) installed at `~/.whisper-venv/` with `turbo` model. If missing, install: `python3 -m venv ~/.whisper-venv && source ~/.whisper-venv/bin/activate && pip install openai-whisper`
- `obsidian` CLI installed (via obsidian-cli skill)
- Obsidian must be running
If any dependency is missing, tell the user what's missing and stop.
## Workflow
### Step 1: Extract video metadata
Before downloading, get the video title and metadata for naming:
```bash
yt-dlp --print title --print channel --print upload_date "%VIDEO_URL%"
```
Parse the output: first line = title, second line = author, third line = upload date (YYYYMMDD).
Clean the title for use as a filename: replace `/ \ : * ? " < > |` with `-`, collapse multiple hyphens, trim leading/trailing hyphens and spaces.
### Step 2: Download video
Download to a temp directory:
```bash
mkdir -p /tmp/video-summarizer
yt-dlp -o "/tmp/video-summarizer/%(title)s.%(ext)s" "%VIDEO_URL%"
```
### Step 3: Extract audio
Use ffmpeg to extract audio as mp3:
```bash
ffmpeg -i "/tmp/video-summarizer/VIDEO_FILENAME" -vn -acodec libmp3lame -q:a 2 "/tmp/video-summarizer/audio.mp3" -y
```
### Step 4: Transcribe with Whisper
Run Whisper to produce a txt transcript. Use `--language zh` for Chinese content (Bilibili, Douyin, etc.). For YouTube or other platforms where the language is unknown, omit `--language` to let Whisper auto-detect.
```bash
source ~/.whisper-venv/bin/activate && whisper "/tmp/video-summarizer/audio.mp3" --model turbo --language zh --output_format txt --output_dir /tmp/video-summarizer
```
Read the resulting `.txt` file to get the full transcript.
### Step 5: Generate structured summary
Based on the transcript, create a summary with this structure:
```
## 一句话核心
(一句话概括视频最核心的观点或主题)
## 主要论据
(按要点列出 3-5 个关键论据或信息点,每个用加粗标题开头)
## 关键信息
(用表格整理视频中出现的具体数据、概念、工具、人名等结构化信息)
```
Write the summary in the same language as the video content. If the transcript is in Chinese, write the summary in Chinese.
### Step 6: Save to Obsidian
Create two notes in Obsidian's `Inbox/` folder, linked via wikilinks.
**Summary note:** `Inbox/{clean-title}-视频总结.md`
```markdown
---
title: "{video title}"
source: "{video URL}"
author: "{channel name}"
date: {YYYY-MM-DD}
tags:
- video-summary
type: video-summary
---
# {video title}
> [!info] 来源
> 作者:{channel name}
> 链接:[{video URL}]({video URL})
> 日期:{YYYY-MM-DD}
## 一句话核心
{one-line core point}
## 主要论据
1. **{point 1 title}** — {description}
2. **{point 2 title}** — {description}
3. **{point 3 title}** — {description}
## 关键信息
| 项目 | 内容 |
|------|------|
| ... | ... |
---
> 完整逐字稿见 [[{clean-title}-逐字稿]]
```
**Transcript note:** `Inbox/{clean-title}-逐字稿.md`
```markdown
---
title: "{video title} - 逐字稿"
source: "{video URL}"
author: "{channel name}"
date: {YYYY-MM-DD}
tags:
- video-transcript
type: video-transcript
---
# {video title} - 逐字稿
> [!info] 来源
> 作者:{channel name}
> 链接:[{video URL}]({video URL})
> 日期:{YYYY-MM-DD}
视频总结见 [[{clean-title}-视频总结]]
---
{full transcript text}
```
Use the `obsidian` CLI to create both files:
```bash
obsidian create path="Inbox/{clean-title}-视频总结.md" content="{content}" silent
obsidian create path="Inbox/{clean-title}-逐字稿.md" content="{content}" silent
```
### Step 7: Cleanup
Remove all temp files:
```bash
rm -rf /tmp/video-summarizer
```
### Step 8: Report to user
Tell the user:
1. Both notes have been saved to Obsidian
2. The note names and paths
3. A brief one-line summary of the video content
## Notes
- For long videos (>30 min), Whisper turbo may take a while. Warn the user if the video is long.
- If yt-dlp fails, the URL may not be supported or may require authentication. Tell the user.
- If Whisper fails, check that it's installed and the turbo model has been downloaded (first run downloads ~1.5GB).
- The `obsidian create` command uses `\n` for newlines in the content parameter.Related Skills
weekly-report
周报生成助手专门负责将用户输入的工作内容整理成符合格式要求的规范周报,并支持转换为 Word 文档。当用户要求生成周报、整理个人工作内容、或请求转成 Word 文档时,**必须**调用此技能。即使只提到"写一下这周的工作"、"帮我整理一下工作内容"等模糊表述,也应该使用此技能。
twitter-algorithm-optimizer
Analyze and optimize tweets for maximum reach using Twitter's open-source algorithm insights. Rewrite and edit user tweets to improve engagement and visibility based on how the recommendation system ranks content.
tavily
AI-optimized web search via Tavily API. Returns concise, relevant results for AI agents.
summarize
Summarize URLs or files with the summarize CLI (web, PDFs, images, audio, YouTube).
skill-market
Use this skill to find, explore, and install new skills from the Zerone Skill Market (https://api.zerone.market/api). Trigger this when the user asks to "add a skill", "install a skill", "browse skills", or mentions a skill name that is not currently installed.
skill-creator
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
self-improvement
Captures learnings, errors, and corrections to enable continuous improvement. Use when: (1) A command or operation fails unexpectedly, (2) User corrects Claude ('No, that's wrong...', 'Actually...'), (3) User requests a capability that doesn't exist, (4) An external API or tool fails, (5) Claude realizes its knowledge is outdated or incorrect, (6) A better approach is discovered for a recurring task. Also review learnings before major tasks.
reports-summary
专业的周报汇总助手,负责将团队成员的周报整理成标准格式的汇总报告,并支持转换为 Word 文档。当用户提及"周报"、"汇总"、"总结"、"报告整理",或需要处理 .docx 周报文件、生成团队工作汇总、将 Markdown 转为 Word 文档时,**必须**调用此技能。即使只提到"看看这周的工作"、"整理一下大家的工作内容"等模糊表述,也应该使用此技能。
customaize-agent:prompt-engineering
Use this skill when you writing commands, hooks, skills for Agent, or prompts for sub agents or any other LLM interaction, including optimizing prompts, improving LLM outputs, or designing production prompt templates.
proactive-agent
Transform AI agents from task-followers into proactive partners that anticipate needs and continuously improve. Now with WAL Protocol, Working Buffer, Autonomous Crons, and battle-tested patterns. Part of the Hal Stack 🦞
playwright-skill
Complete browser automation with Playwright. Auto-detects dev servers, writes clean test scripts to /tmp. Test pages, fill forms, take screenshots, check responsive design, validate UX, test login flows, check links, automate any browser task. Use when user wants to test websites, automate browser interactions, validate web functionality, or perform any browser-based testing.
openclaw-config-guard
Audit and safely repair OpenClaw configuration with deterministic validation, backups, rollback, and change reporting. Use when asked to review or modify `openclaw.json`, check whether OpenClaw can still start, safely fix startup-blocking config errors, or audit OpenClaw config before deciding on changes.