Install
openclaw skills install @bonniegeng-max/video-digest视频深读——把没时间看的 YouTube 视频提炼成中文结构化笔记:概述主要内容、按主题整理成文、区分🧱事实与💭观点、附原链接+时间戳可跳回,支持追问深挖与内容平台选题素材。仅在用户提供 YouTube 链接/视频 ID 或明确说「视频深读 <链接>」时使用。抓 YouTube 字幕→中文笔记(默认中文,用户可指定其他输出语言),落盘可复用。笔记生成由执行本 skill 的 AI 按模板完成,脚本只负责抓取。英文 AI/科技/访谈/TED/讲座效果最佳。需要 python3 + yt-dlp + 网络可达 YouTube(本机代理或可直连)。
openclaw skills install @bonniegeng-max/video-digest把"没时间看的 YouTube 优质视频"变成「能 5 分钟读完、可跳回原片、可追问深挖、可当选题素材」的中文结构化笔记。适合英文 AI/科技类长视频、访谈、讲座。
仅当用户消息里出现 YouTube 链接/视频 ID,或明确说「视频深读 <链接>」时才激活。示例形态:
youtube.com/watch?v= / youtu.be/ / youtube.com/shorts/ 开头的链接dQw4w9WgXcQ)如果用户只是泛泛说"总结这个视频""这个视频讲了什么"而没有给链接/ID:先请用户提供链接,不要自行猜测或触发抓取。抓取前脚本会再次校验 URL 属于 YouTube 域名,非 YouTube 输入直接拒绝。
丢一条链接即可(模式 A)。示例:
多条链接(≥2)自动走模式 B 批量扫描。
本 skill 只用以下能力,且用途单一:抓 YouTube 字幕 → 落盘中文笔记。
scripts/fetch_video.py(内部调 yt-dlp)与 scripts/retrieve.py(检索),不执行任意其它命令~/Documents/video-notes/<频道>/<video-id>/,可用 --out 指定);retrieve.py 只读取用户在会话中明确指定的 transcript 路径(默认约定在笔记输出目录内),越界路径会打印透明提示HTTPS_PROXY/https_proxy 作为代理候选;代理 URL 打印/落盘前会脱敏(剥掉 userinfo,凭据绝不落盘);无凭据代理的命令行参数里不含任何敏感值「抓字幕 → 中文笔记」由两部分协作完成,这是设计而非缺失:
references/note_template.md,完成结构化笔记、事实/观点分层、追问检索作答、选题角度——笔记能力以提示词规范实现,落在 SKILL.md 与模板文件里--direct 跳过代理探测~/.workbuddy/binaries/python/envs/default/bin/python);若提示找不到,安装:pip install yt-dlp# 单条(模式 A)
python <skill_dir>/scripts/fetch_video.py "<youtube_url>"
# 批量(模式 B,多条一次抓,代理只探测一次)
python <skill_dir>/scripts/fetch_video.py url1 url2 url3
# 复用存档(已有 transcript 则跳过,模式 C 追问前用)
python <skill_dir>/scripts/fetch_video.py "<url>" --skip-existing
# 直连(不走代理探测;海外网络或企业出口可直连 YouTube 时用)
python <skill_dir>/scripts/fetch_video.py "<url>" --direct
# 可选参数: --out <目录>(默认 ~/Documents/video-notes) --langs en,zh
脚本产出(~/Documents/video-notes/<频道>/<video-id>/):
meta.json — 标题/频道/时长/简介/原链接/章节(chapters)/字幕语言transcript.txt — 带 [MM:SS] 时间戳的连贯文本(已做 ASR 滚动窗口融合去重,每行≈1 个完整语义句块)退出码:0 成功/跳过 | 2 环境不可用(代理/yt-dlp) | 3 视频不可达 | 4 无字幕。stdout 关键行:PROXY:、NET:(直连模式)、✓ OK、⏭ 跳过、⚠ 无字幕、✗ ERROR、DIR:。批量时单条失败不中断,末尾有汇总。
example_ted_conversation.md — TED 演讲(手动字幕,11min):完整深读笔记范本example_vllm_shorts.md — YouTube Shorts(自动字幕,3min):短视频轻量笔记范本~/Documents/video-notes/<频道>/<video-id>/note.md,结构与样张一致跑抓取脚本拿 meta + transcript(脚本会打印进度,正常单条约 10-30 秒)
读 transcript(若 >30k token 先切块小节概述再合并,见"长视频")
按 references/note_template.md 模板产出中文笔记,对话内交付
把笔记存为 <video-notes>/<频道>/<video-id>/note.md(脚本已建好目录,直接写文件),供模式 C 复用
落盘后回读校验:确认 note.md 确实写入且非空(文件存在 + 字符数 > 0)。校验失败要如实告知"笔记未成功落盘",不要假装已存
追加索引行:在 ~/Documents/video-notes/INDEX.md 末尾追加一行(文件不存在则先写表头),方便日后翻找已深读的视频:
| 日期 | 频道 | 标题 | 时长 | 原链接 | 笔记 |
|---|---|---|---|---|---|
| 2026-09-05 | 3Blue1Brown | 注意力机制 | 22:00 | https://youtu.be/... | 3Blue1Brown/9-Jl0dxWQs8/note.md |
用户丢多条链接(≥2 条)时:
批量优先建议:告诉用户一次别超过 5 条,抓取较慢(每条 10-60s,走代理时更慢)。
用户基于已提炼的视频追问("他对 X 的论证是什么""3:20 那句展开讲"):
~/Documents/video-notes/<频道>/<video-id>/transcript.txt 是否已有;没有则先跑抓取脚本(--skip-existing 保险)scripts/retrieve.py 从 transcript 定位原文:
python <skill_dir>/scripts/retrieve.py <transcript.txt> "关键词" # 关键词 ±上下文(默认前后 1 行)
python <skill_dir>/scripts/retrieve.py <transcript.txt> "关键词" --ctx 3 # 自定义上下文行数
python <skill_dir>/scripts/retrieve.py <transcript.txt> --at 3:20 # 3:20 前后 30 秒(默认窗口)
python <skill_dir>/scripts/retrieve.py <transcript.txt> --at 3:20 --window 90 # 自定义窗口
python <skill_dir>/scripts/retrieve.py <transcript.txt> --list # 时间戳分布索引
--list 看时间戳分布再用 --at 定位。每条模式 A 笔记的「📌 可写角度」区块产出 2-3 个可发布的选题钩子:
[MM:SS] 语义分段(每段 ~10 分钟),逐段让 LLM 出小节要点,再合并成终稿。合并时保留下每个要点的原始时间戳meta.json 的 chapters 字段含官方分节(start/end/title),提炼时优先参考它做大纲草稿,再结合字幕补细节——比纯听字幕分节准MM:SS(≥1 小时为 H:MM:SS),中文笔记里用同样的标记,方便用户跳回--langs en,zh 偏好自动挑(同语言下手动字幕优先于自动字幕);如该视频只有别的语言字幕,脚本会抓取并如实标注,主 Agent 判断是否值得提炼--direct--at 定位