Install
openclaw skills install @bonniegeng-max/video-digest把一段视频变成能读的笔记——公开字幕抓进本地私有缓存,按时间戳产出 Quick / Deep / Research 三档笔记,每句都能定位回原片。适合"三十分钟的视频只想花三分钟"和"口播内容想存成可检索文字"。Turn a video into timestamped Quick / Deep / Research notes from public captions or a supplied transcript, cached privately per user. Use when the user shares a video link and wants a summary, deep notes, or a citation-ready excerpt; also when they ask whether captions are available or why transcript fetching fails.
openclaw skills install @bonniegeng-max/video-digestTurn a YouTube video or supplied transcript into a useful reading artifact:
The bundled fetch helper retrieves public metadata and subtitles; Research mode may additionally verify selected claims with public sources. The agent creates the semantic notes from these inputs.
Bundled components are deliberately separate:
fetch_video.py --doctor checks the local dependency and optional network readiness.fetch_video.py retrieves public metadata and subtitles into the declared temporary cache.fetch_video.py --retrieve-video returns timestamped excerpts from that cache by validated video ID.references/output-modes.md to create the semantic notes.Invoke when the user:
A bare YouTube URL is enough only when the message is clearly asking the assistant to process that video. Do not activate when a link is merely cited, shared as a reference, requested for playback or download, or included as one source inside an unrelated task.
Do not invoke for:
Respond in the language of the user's current request. If unclear, ask once. Preserve quotations in their original language and add a translation only when useful.
Bundled scripts emit machine-readable JSON, status codes, and transcript text rather than a localized natural-language interface. Explain their results in the language of the user's current request.
| Request signal | Mode | Default output |
|---|---|---|
| Bare link, “总结”, “讲了什么”, “值不值得看” | Quick | One-screen decision card |
| “深读”, “完整笔记”, “论证过程”, “详细整理” | Deep | Timestamped structured notes |
| “核验”, “查证”, “research”, “是真的吗” | Research | Deep notes plus selected claim verification |
| Two or more links | Batch Quick | One Quick card per video |
If the requested depth is ambiguous, use Quick as the content mode. Still follow host confirmation requirements for package installation, file creation, and every other state-changing action.
Run the read-only doctor before the first URL fetch in a session:
python3 <skill_dir>/scripts/fetch_video.py --doctor
Add --network only when a network diagnosis is needed. If a local proxy should be tested, pass its loopback port explicitly with --proxy-port; Doctor does not scan local ports. Doctor never installs packages or changes configuration.
If the pinned dependency is missing, show the exact repair command:
python3 -m venv .venv
.venv/bin/python -m pip install --require-hashes -r <skill_dir>/requirements.lock
Do not install anything without explicit user approval.
Run:
python3 <skill_dir>/scripts/fetch_video.py "<youtube-url>"
For a local proxy, pass only the loopback port:
python3 <skill_dir>/scripts/fetch_video.py "<youtube-url>" --proxy-port 7890
The script:
yt-dlp Python API directly;meta.json and transcript.txt to a private per-user cache under the system temporary directory;The cache hierarchy must be owned by the current user with 0700 directory permissions. Cache files use atomic replacement, 0600 permissions, and reject symbolic links. Temporary cache is not a durable archive. Create a user-visible note file only when the user explicitly requests one.
If the user provides transcript text or a transcript file, skip YouTube fetching. Treat it as User-provided transcript and preserve any timestamps already present.
Do not stop at “unsupported.” Offer the smallest viable fallback:
Follow references/output-modes.md.
Keep it to one screen:
Include:
Video statement and Author opinion as separate labels;Do not call a statement a verified fact merely because it appears in the video.
Start from Deep, then verify only material claims that affect the conclusion.
Supported, Partly supported, Contradicted, or Not verified.For each video provide:
Compare videos only on common dimensions.
The retrieval script accepts a video ID, never an arbitrary file path:
python3 <skill_dir>/scripts/fetch_video.py --retrieve-video <video-id> --keyword "attention"
python3 <skill_dir>/scripts/fetch_video.py --retrieve-video <video-id> --at 3:20
python3 <skill_dir>/scripts/fetch_video.py --retrieve-video <video-id> --list
It reads only transcripts created under the managed temporary cache. Quote the relevant timestamp range in the answer.