Install
openclaw skills install video-2-skillAutomatically extracts subtitles, visual frames, and operational workflows from technical tutorial videos, generating structured and reusable AI workflow Skill documentation. 自动从技术教程视频提取字幕、画面和操作流程,生成结构化可复用的 AI 工作流 Skill 文档。
openclaw skills install video-2-skillvideo_to_skill_extractor
把技术教程视频自动转换为可复用的 AI 工作流 Skill。
本 Skill 用于让 OpenClaw / Codex / AI Agent 自动理解一个视频的内容,包括:
最终输出一个新的 Skill 文档,用于指导后续 AI Agent 执行相同类型的任务。
典型用途:
当用户提出以下请求时,应调用本 Skill:
用户至少需要提供以下一种输入:
视频网址
例如:
https://www.bilibili.com/video/BV1p8DeBtEbH/
也可以提供:
本地视频文件路径
音频文件路径
字幕文件路径
视频截图目录
视频标题
视频主题
用户希望生成的 Skill 方向
推荐输入格式:
{
"video_url": "https://www.bilibili.com/video/BV1p8DeBtEbH/",
"video_theme": "Vibecoding 遇到 Bug 怎么修?新手必看的 AI 改bug指南",
"target_skill_name": "vibecoding_bugfix_debug_skill",
"target_user": "Codex / OpenClaw / AI Agent",
"output_language": "zh-CN"
}
本 Skill 必须在输出目录中生成以下文件:
output/
├── 01_video_metadata.json
├── 02_transcript_raw.txt
├── 03_transcript_clean.md
├── 04_visual_notes.md
├── 05_ocr_notes.md
├── 06_timeline.json
├── 07_extracted_principles.md
├── 08_generated_skill.md
├── 09_evidence_map.json
└── 10_debug_report.md
其中最重要的是:
08_generated_skill.md
这是最终可以安装到 OpenClaw 的 Skill 文件。
AI 不得仅根据视频标题、简介或用户描述编造 Skill。
必须尽可能提取:
如果某部分无法获取,必须在报告中说明。
长视频必须分段处理。
推荐策略:
视频 → 分段 → 每段摘要 → 每段提取规则 → 全局合并 → 生成 Skill
输出内容中必须区分:
【视频明确提到】
【画面证据显示】
【AI合理推断】
【无法确认】
最终 Skill 不能只是普通摘要。
必须包含:
执行任务时,应创建如下目录结构:
video_to_skill_workspace/
├── raw/
│ ├── video.mp4
│ ├── audio.wav
│ ├── subtitle.srt
│ ├── subtitle.vtt
│ ├── info.json
│ └── thumbnail.jpg
├── frames/
│ ├── frame_00001.jpg
│ ├── frame_00002.jpg
│ └── ...
├── ocr/
│ ├── frame_00001.json
│ ├── frame_00002.json
│ └── ...
├── transcript/
│ ├── transcript_raw.txt
│ ├── transcript_clean.md
│ └── transcript_segments.json
├── timeline/
│ └── timeline.json
├── notes/
│ ├── visual_notes.md
│ ├── extracted_principles.md
│ └── evidence_map.json
└── output/
├── generated_skill.md
└── debug_report.md
首先读取用户输入,识别:
{
"video_url": "",
"local_video_path": "",
"target_skill_name": "",
"target_domain": "",
"output_language": "",
"user_goal": ""
}
如果用户没有指定 Skill 名称,则根据视频主题自动生成。
示例:
视频主题:
Vibecoding 遇到 Bug 怎么修?新手必看的 AI 改bug指南
自动生成 Skill 名称:
vibecoding_bugfix_debug_skill
优先尝试获取:
推荐命令:
yt-dlp \
--cookies-from-browser chrome \
--write-info-json \
--write-thumbnail \
--skip-download \
-o "video_to_skill_workspace/raw/%(id)s.%(ext)s" \
"<VIDEO_URL>"
如果失败,记录错误到:
output/debug_report.md
错误记录格式:
## Video Metadata Fetch Failed
- URL:
- Command:
- Error:
- Possible reason:
- Suggested fallback:
优先使用 yt-dlp:
yt-dlp \
--cookies-from-browser chrome \
--write-info-json \
--write-thumbnail \
--write-subs \
--write-auto-subs \
--sub-lang "zh-Hans,zh-CN,zh,en" \
-f "bv*+ba/best" \
-o "video_to_skill_workspace/raw/video.%(ext)s" \
"<VIDEO_URL>"
如果 Bilibili 下载失败,尝试:
yt-dlp \
--cookies-from-browser chrome \
-f "best" \
-o "video_to_skill_workspace/raw/video.%(ext)s" \
"<VIDEO_URL>"
如果仍然失败,则生成 fallback 指南:
# fallback_manual_steps.md
视频无法自动下载。
请用户手动执行以下任一方式:
1. 使用浏览器下载视频
2. 使用 Bilibili 客户端缓存视频
3. 使用录屏工具录制视频
4. 将视频保存为:
video_to_skill_workspace/raw/video.mp4
然后重新运行本 Skill。
使用 ffmpeg 从视频中提取 16kHz 单声道音频:
ffmpeg -y \
-i video_to_skill_workspace/raw/video.mp4 \
-vn \
-ac 1 \
-ar 16000 \
video_to_skill_workspace/raw/audio.wav
如果视频格式不是 mp4,应自动识别实际文件:
find video_to_skill_workspace/raw -type f \( -name "*.mp4" -o -name "*.mkv" -o -name "*.webm" \)
优先级:
1. 视频自带字幕
2. 平台自动字幕
3. Whisper / WhisperX ASR 转写
4. 其他本地 ASR
如果存在 .srt 或 .vtt 文件,则先转换为纯文本:
python3 scripts/clean_subtitle.py \
--input video_to_skill_workspace/raw/subtitle.srt \
--output video_to_skill_workspace/transcript/transcript_raw.txt
如果没有字幕,使用 ASR。
推荐 WhisperX:
whisperx \
video_to_skill_workspace/raw/audio.wav \
--language zh \
--output_dir video_to_skill_workspace/transcript \
--output_format json srt txt
如果 WhisperX 不可用,尝试 Whisper:
whisper \
video_to_skill_workspace/raw/audio.wav \
--language Chinese \
--output_dir video_to_skill_workspace/transcript
清洗内容包括:
清洗后输出:
transcript/transcript_clean.md
格式:
# Transcript Clean
## 00:00 - 00:30
作者介绍本视频主题:Vibecoding 遇到 Bug 后如何让 AI 高效修复。
## 00:31 - 01:20
作者指出新手常见问题:让 AI 直接扫描整个项目,导致 token 消耗巨大,并且容易改坏无关代码。
默认每 5 秒抽一帧:
ffmpeg -y \
-i video_to_skill_workspace/raw/video.mp4 \
-vf "fps=1/5,scale=1280:-1" \
video_to_skill_workspace/frames/frame_%05d.jpg
如果支持 scene detection,则额外抽取画面变化明显的帧:
ffmpeg -y \
-i video_to_skill_workspace/raw/video.mp4 \
-vf "select='gt(scene,0.3)',scale=1280:-1" \
-vsync vfr \
video_to_skill_workspace/frames/scene_%05d.jpg
对每张关键帧执行 OCR。
重点识别:
输出格式:
{
"frame": "frame_00001.jpg",
"time_estimate": "00:00:05",
"ocr_text": "...",
"contains_code": true,
"contains_error": false,
"contains_terminal": true,
"contains_ai_chat": true
}
保存到:
ocr/frame_00001.json
对每张关键帧生成结构化分析。
提示词模板:
你正在分析一个技术教程视频的关键帧。
请根据图片内容输出结构化 JSON。
重点关注:
1. 画面中是否有代码?
2. 画面中是否有终端命令?
3. 画面中是否有报错信息?
4. 画面中是否有 AI 编程工具界面?
5. 画面中是否有网页、后台、编辑器或项目目录?
6. 画面中是否显示某种操作步骤?
7. 这张画面对理解视频方法论有什么帮助?
输出 JSON:
{
"frame": "",
"estimated_time": "",
"scene_type": "",
"visible_objects": [],
"visible_text": "",
"code_or_error": "",
"operation": "",
"teaching_point": "",
"possible_skill_rule": "",
"confidence": "high | medium | low"
}
输出到:
notes/visual_notes.md
把以下信息按时间合并:
输出:
timeline/timeline.json
格式:
[
{
"start": "00:00",
"end": "00:30",
"speech_summary": "",
"visual_summary": "",
"ocr_summary": "",
"main_topic": "",
"teaching_point": "",
"candidate_skill_rule": "",
"evidence": {
"transcript": "",
"frames": [],
"ocr": []
},
"confidence": "high"
}
]
从 timeline 中提取可复用原则。
必须分类:
# Extracted Principles
## 1. 核心观点
## 2. 操作流程
## 3. 常见错误
## 4. 推荐做法
## 5. 禁止做法
## 6. 可转化为 Skill 的规则
## 7. 可转化为提示词的表达
## 8. 仍不确定的信息
每条原则必须带证据来源:
### 原则 1:不要让 AI 一开始扫描整个项目
- 类型:视频明确提到 / AI推断
- 证据:00:35-01:20 的讲解 + 画面中出现项目目录
- 可转化规则:Debug 时先读取报错日志和相关文件,不允许全项目扫描
- 置信度:高
最终 Skill 文件必须符合以下结构:
# Skill: <skill_name>
## 1. Purpose
## 2. When to Use
## 3. Inputs
## 4. Outputs
## 5. Core Rules
## 6. Workflow
## 7. Forbidden Actions
## 8. Checklist
## 9. Prompt Templates
## 10. Verification
## 11. Failure Handling
## 12. Output Format
生成文件:
output/08_generated_skill.md
生成:
output/09_evidence_map.json
格式:
{
"skill_rule": "不要让 AI 一开始扫描整个项目",
"source_type": "transcript + visual",
"time_range": "00:35-01:20",
"evidence_text": "",
"frame_ids": ["frame_00007.jpg", "frame_00008.jpg"],
"confidence": "high"
}
每次执行结束必须生成:
output/10_debug_report.md
内容包括:
# Debug Report
## Input
- Video URL:
- Local file:
- Target Skill:
## Environment
- yt-dlp:
- ffmpeg:
- ASR:
- OCR:
- Vision model:
## Steps Completed
- [ ] Metadata fetched
- [ ] Video downloaded
- [ ] Audio extracted
- [ ] Transcript generated
- [ ] Frames extracted
- [ ] OCR completed
- [ ] Visual notes completed
- [ ] Timeline generated
- [ ] Principles extracted
- [ ] Skill generated
## Errors
## Fallbacks Used
## Final Output
## Remaining Risks
执行本 Skill 时禁止:
本 Skill 仅用于:
不得用于:
最终输出应以“摘要、方法论、规则、流程、提示词”为主,避免复刻原视频内容。
最终生成的 Skill 应该:
不要写成普通文章。
当完成 transcript、visual notes、timeline 后,使用以下提示词生成最终 Skill:
你是一个 OpenClaw / Codex Skill 设计专家。
我已经从一个技术教程视频中提取了以下内容:
1. 视频元信息
2. 清洗后的字幕
3. 关键帧视觉分析
4. OCR结果
5. 时间轴 timeline
6. 提取出的方法论 principles
7. 证据映射 evidence map
请你基于这些材料生成一个可安装到 OpenClaw 的 Skill。
要求:
1. Skill 必须是 Markdown 格式。
2. Skill 名称为:<TARGET_SKILL_NAME>
3. Skill 面向对象:OpenClaw / Codex / AI Agent。
4. Skill 必须可执行,不要写成普通总结。
5. 必须包含:
- Purpose
- When to Use
- Inputs
- Outputs
- Core Rules
- Workflow
- Forbidden Actions
- Checklist
- Prompt Templates
- Verification
- Failure Handling
- Output Format
6. 每条关键规则必须能追溯到视频证据。
7. 视频明确讲到的内容,标注为【视频明确提到】。
8. 由画面推断出的内容,标注为【画面推断】。
9. AI补充的工程化建议,标注为【AI工程化补充】。
10. 不要编造视频中没有的信息。
11. 不要输出完整视频逐字稿。
12. 最终 Skill 使用中文。
如果视频主题与 Vibecoding、AI 编程、修 Bug、Debug 有关,则最终 Skill 应重点提取以下方向:
AI 修 Bug 的正确流程
如何减少 token 消耗
如何避免 AI 扫描整个项目
如何让 AI 先读日志
如何让 AI 做最小修改
如何让 AI 验证修复结果
如何形成 Debug Report
如何沉淀经验
生成的目标 Skill 可以命名为:
vibecoding_bugfix_debug_skill
如果最终要生成的是 Debug Skill,则结构建议如下:
# Skill: vibecoding_bugfix_debug_skill
## Purpose
指导 AI Agent 在 Vibecoding 项目中高效修复 Bug,减少 token 浪费,避免无目标扫描整个项目。
## When to Use
- 网站报错
- 构建失败
- 页面空白
- API失败
- 登录失败
- 后台配置无法影响前端
- 用户反馈某功能异常
- AI 修改代码后引入新 Bug
## Core Rules
1. 先看错误日志,不要先扫全项目。
2. 先看最近修改,不要重构系统。
3. 先提出假设,再读取文件。
4. 只读取最小相关文件集合。
5. 每次只修一个问题。
6. 修改前说明将修改哪些文件。
7. 修改后必须运行验证命令。
8. 失败后生成 Debug Report。
## Workflow
### Step 1: Collect Evidence
读取:
- 报错日志
- build log
- browser console
- network error
- git diff
- package.json
### Step 2: Classify Bug
判断属于:
- frontend
- backend
- database
- auth
- API
- config
- dependency
- deployment
### Step 3: Select Minimal Files
只读取与 bug 直接相关的文件。
### Step 4: Create Hypothesis
输出:
{
"bug": "",
"likely_cause": "",
"files_to_read": [],
"files_to_modify": [],
"verification": ""
}
### Step 5: Patch
只做最小修复。
### Step 6: Verify
运行:
npm run build
npm run lint
npm test
### Step 7: Report
输出 Debug Report。
安装本 Skill 后,可以用以下提示词测试:
请调用 video_to_skill_extractor skill,分析这个视频并生成一个 OpenClaw/Codex 可用的 debug skill:
视频地址:
https://www.bilibili.com/video/BV1p8DeBtEbH/
视频主题:
Vibecoding 遇到 Bug 怎么修?新手必看的 AI 改bug指南
目标:
把视频中的方法论提炼成一个用于 AI 编程项目修 Bug 的 skill,重点解决:
1. AI 修 Bug 时 token 消耗过大
2. AI 盲目扫描整个项目
3. AI 修改无关代码
4. AI 不验证修复结果
5. AI 无法沉淀 debug 经验
请输出:
1. 视频内容摘要
2. 时间轴
3. 方法论提取
4. 最终 Skill:vibecoding_bugfix_debug_skill.md
5. debug_report.md
如果视频无法下载:
不要终止任务。
生成 fallback_manual_steps.md。
要求用户手动放入 video.mp4 后继续。
如果没有字幕:
使用 ASR。
如果 ASR 失败:
只基于画面 OCR 和用户提供的视频主题生成低置信度分析,并明确标注“不完整”。
如果画面分析失败:
只基于字幕生成 Skill,并明确标注“未完成画面分析”。
如果字幕和画面都无法获取:
不得生成最终 Skill。
只能输出失败报告。
执行完成后,回复用户:
已完成 video_to_skill_extractor 处理。
生成文件:
1. output/03_transcript_clean.md
2. output/04_visual_notes.md
3. output/06_timeline.json
4. output/07_extracted_principles.md
5. output/08_generated_skill.md
6. output/09_evidence_map.json
7. output/10_debug_report.md
最终 Skill:
output/08_generated_skill.md
注意:
以下部分为视频明确提到:
- ...
以下部分为画面推断:
- ...
以下部分为 AI 工程化补充:
- ...
在结束前,必须检查:
[ ] 是否获取了视频标题?
[ ] 是否获取了视频时长?
[ ] 是否提取了字幕或 ASR?
[ ] 是否清洗了文案?
[ ] 是否抽取了关键帧?
[ ] 是否做了 OCR?
[ ] 是否生成了视觉分析?
[ ] 是否建立了时间轴?
[ ] 是否提取了方法论?
[ ] 是否区分了明确内容与推断内容?
[ ] 是否生成了最终 Skill?
[ ] 是否生成了 debug_report?
[ ] 是否避免大段复制原视频内容?
[ ] 是否标记了不确定信息?
本 Skill 可以调用以下工具,但不强制全部存在:
yt-dlp
ffmpeg
python3
whisper
whisperx
pytesseract
opencv-python
Pillow
Playwright
本地或远程视觉大模型
本地或远程文本大模型
如果需要自动安装依赖,可生成:
#!/usr/bin/env bash
set -e
echo "Installing video_to_skill_extractor dependencies..."
if command -v brew >/dev/null 2>&1; then
brew install yt-dlp ffmpeg tesseract
fi
python3 -m pip install --upgrade yt-dlp openai-whisper pillow opencv-python pytesseract playwright
python3 -m playwright install chromium
echo "Done."
注意:
在受 PEP 668 限制的 Python 环境中,不要强行全局 pip install。
应使用 venv。
推荐 venv 安装:
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install yt-dlp openai-whisper pillow opencv-python pytesseract playwright
python -m playwright install chromium
把技术视频变成 AI Agent 能执行、能复用、能沉淀的工作流 Skill,而不是只做普通视频摘要。
---
安装完成后,你可以直接对 OpenClaw 说:
```text
请调用 video_to_skill_extractor,分析这个 B 站视频:
https://www.bilibili.com/video/BV1p8DeBtEbH/
目标是生成一个用于 Codex / OpenClaw 修复网站 Bug 的 debug skill。
不要只总结视频,要提取可执行流程、禁止行为、提示词模板和验证步骤。
`