← 返回 Skills 市场
ajayhao

Video Summarizer(视频摘录+Notion存档)

作者 haozhenjie · GitHub ↗ · v1.0.10 · MIT-0
cross-platform ⚠ suspicious
263
总下载
2
收藏
1
当前安装
11
版本数
在 OpenClaw 中安装
/install video-summarizer
功能描述
将 B 站/YouTube/小红书/抖音视频转换为结构化 Notion 总结文档,自动上传截图,一键推送 Notion
安全使用建议
This skill appears to do what it says: download videos, transcribe/analyze with a third‑party AI (DashScope), upload screenshots to Aliyun OSS, and optionally push results to Notion. Before installing: - Do not put production or broad-scoped secrets into ~/.openclaw/.env. Create a dedicated OSS sub-account/key with only PutObject/GetObject on a single bucket and, if possible, set an IP whitelist. - Treat DASHSCOPE_API_KEY, GROQ_API_KEY and NOTION_API_KEY as sensitive — use test or throwaway keys for initial evaluation. Transcripts and extracted text are sent to DashScope/Groq. - Bilibili cookies are stored in ~/.cookies/bilibili_cookies.txt; these contain session tokens. Only generate/use them on a machine you control and delete them when not needed. - The skill requires making uploads public-read for OSS images (SKILL.md recommends public-read). If that is unacceptable for your data/privacy, do not provide a public bucket or modify the upload script to keep objects private. - Review the scripts (especially douyin_downloader.py, video-summarize.sh, upload-to-oss.py, and push-to-notion.py) and test in an isolated environment (VM/container) with non-sensitive videos before use. - If you need higher assurance, ask the maintainer for a signed release or a provenance link (source repo/homepage) — the package lists a GitHub URL in docs but the skill registry entry shows 'unknown' source and no homepage; this lowers confidence and you may prefer to run it in a sandbox first.
功能分析
Type: OpenClaw Skill Name: video-summarizer Version: 1.0.10 The video-summarizer skill bundle is a complex tool for processing video content across multiple platforms (Bilibili, YouTube, etc.) and pushing results to Notion. While it appears legitimate and the developer has explicitly addressed command injection vulnerabilities in the `CHANGELOG.md` (v1.0.8), the `video-summarize.sh` script still employs risky patterns, such as passing shell variables directly into Python heredocs and shell commands, which could be exploited via crafted video URLs. The skill handles sensitive session tokens (Bilibili cookies) and requires several high-privilege API keys (Aliyun OSS, Notion, DashScope). Because it possesses broad system/network capabilities and handles sensitive credentials without robust input sanitization in all shell-to-script transitions, it meets the threshold for a suspicious classification despite the lack of clear malicious intent.
能力标签
requires-sensitive-credentials
能力评估
Purpose & Capability
Declared binaries (ffmpeg, yt-dlp) and Python dependencies (requests, oss2, python-dotenv, biliup) are appropriate for downloading videos, extracting audio, transcribing, uploading to OSS and calling an AI API. Required env vars (DASHSCOPE_API_KEY and ALIYUN_OSS_*) directly map to the AI analysis and OSS upload features described. The use of biliup for Bilibili cookies is declared and present in scripts.
Instruction Scope
SKILL.md and scripts instruct the agent to: read ~/.openclaw/.env, possibly read/write ~/.cookies/bilibili_cookies.txt, download videos (yt-dlp or custom douyin downloader), extract audio, send transcript/subtitles/metadata to DashScope (DASHSCOPE API) and optionally to Groq for transcription, upload screenshots to Aliyun OSS, and optionally call Notion. These actions are consistent with the skill's purpose but involve sending user content and metadata to third-party services and writing sensitive cookies/API keys to disk — the behaviour is expected but privacy-sensitive and should be used with appropriate keys and test data.
Install Mechanism
Install metadata proposes platform package managers (brew/apt) for ffmpeg and yt-dlp and pip packages for Python dependencies. No arbitrary binary downloads or obscure URLs are used in the install spec. The pip packages are standard for this functionality (requests, oss2, python-dotenv, biliup).
Credentials
Required env variables (DASHSCOPE_API_KEY and ALIYUN_OSS_AK/SK/Bucket/Endpoint) are proportionate to the described capabilities. However, ALIYUN_OSS_AK/SK are powerful credentials — the skill requests full access info to a bucket and SK is sensitive; the README/ SKILL.md recommends minimal-permission buckets but you must enforce that. Notion and GROQ keys are optional (documented). The skill reads ~/.openclaw/.env and writes cookie files to ~/.cookies — both contain sensitive tokens and session data.
Persistence & Privilege
The skill does not request always:true or other elevated platform privileges. It stores configuration and cookie files under user home but does not alter other skills or global agent settings. Autonomous invocation is allowed (platform default) but not combined with unusual privileges in this package.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install video-summarizer
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /video-summarizer 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.10
- 抖音流程优化:douyin_downloader.py 现已移除硅基流动依赖,转为主流程一致的 Groq API + 本地降级语音转录方式。 - 更新外部服务端点说明,明确抖音下载不再依赖第三方转录服务,全部自有实现。 - 环境变量说明补充,明确 GROQ_API_KEY 现已统一适用于抖音转录。 - 文档多处细化平台说明,确保各模块功能一致性与用户认知同步。 - 版本号更新为 1.0.10,发布日期修正为 2026-04-14。
v1.0.9
video-summarizer 1.0.9 - 更新了文档说明,细化了 Groq API 为可选加速方案,未配置时自动降级到本地 Faster-Whisper。 - 明确了 数据库 ID、Groq API Key 等变量均为可选,默认本地转录不受影响。 - 优化了环境变量和配置说明,使必选与可选项分界更清晰。 - 版本号提升至 1.0.9,发布日期为 2026-04-12。
v1.0.8
**Version 1.0.8 Changelog** - 增加了「安全与隐私说明」部分,详细介绍敏感数据和外部服务调用风险,以及推荐最小权限配置 - 安装依赖新增 `biliup`,优化 Python 依赖提示 - 环境变量需求补充了 `ALIYUN_OSS_ENDPOINT` - 配置说明针对 Groq API 转录做了更详细的网络说明 - 文档整体结构更清晰,细化了敏感信息、API Key 和 OSS Bucket 的安全建议
v1.0.7
# Changelog - v1.0.7 **发布日期**: 2026-04-07 **上一版本**: v1.0.6 (2026-04-06) --- ## 🎯 版本概述 v1.0.7 是一个 **B 站登录与 Cookies 支持完善** 版本,专注于修复 B 站扫码登录流程和 yt-dlp Cookies 参数传递问题,确保 B 站视频处理能够绕过 412 风控限制。 **核心改进**: - ✅ 修复 B 站扫码登录 Cookies 路径检测 - ✅ 支持 biliup 新格式 Cookie 转换 - ✅ 全链路添加 yt-dlp `--cookies` 参数 - ✅ 保留 Cookie 原始过期时间 --- ## 🐛 Bug 修复 ### 1. B 站扫码登录 Cookies 路径检测失败 **问题**: `biliup login` 在**当前工作目录**生成 `cookies.json`,但脚本检查的是 `~/.config/biliup/cookies.json`,路径不匹配导致检测失败。 **修复方案**: - 修改 `bili-login.sh` 在脚本目录执行 `biliup login` - 直接检查 `$SCRIPT_DIR/cookies.json` - 增加预期路径提示,便于排查 **修改文件**: `scripts/bili-login.sh` (第 8-42 行) **代码改动**: ```bash # 修改前 BILIUP_COOKIE="$HOME/.config/biliup/cookies.json" biliup login if [[ ! -f "$BILIUP_COOKIE" ]]; then echo "❌ 登录失败" fi # 修改后 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" BILIUP_COOKIE="$SCRIPT_DIR/cookies.json" cd "$SCRIPT_DIR" biliup login if [[ ! -f "$BILIUP_COOKIE" ]]; then echo "❌ 登录失败,未找到 cookies.json" echo " 预期路径:$BILIUP_COOKIE" exit 1 fi ``` --- ### 2. Cookie 转换不支持 biliup 新格式 **问题**: `convert-bili-cookie.py` 只支持旧格式 `{"cookie": {...}}`,不支持 biliup 新格式 `{"cookie_info": {"cookies": [...]}}`,导致转换后 0 个 Cookie。 **修复方案**: - 支持 3 种 Cookie 格式(新格式、旧格式、兼容模式) - 从 `cookie_info.cookies` 数组提取 Cookie - 保留原始过期时间(`expires` 字段) **修改文件**: `scripts/convert-bili-cookie.py` (第 17-62 行) **代码改动**: ```python # 修改前 cookies = data.get('cookie', {}) if not cookies: cookies = data expire_time = int(time.time()) + 7776000 # 硬编码 90 天 # 修改后 cookies_dict = {} # 格式 1: cookie_info.cookies 数组(biliup 新格式) cookie_info = data.get('cookie_info', {}) if cookie_info and 'cookies' in cookie_info: for cookie in cookie_info['cookies']: name = cookie.get('name', '') value = cookie.get('value', '') if name and value: cookies_dict[name] = value # 格式 2: cookie 对象(旧格式) # 格式 3: 直接就是 cookie 字典(兼容模式) # 保留原始过期时间 expires_map = {} for cookie in cookie_info['cookies']: name = cookie.get('name', '') expires = cookie.get('expires', 0) if name and expires: expires_map[name] = expires expire_time = expires_map.get(field, int(time.time()) + 7776000) ``` **测试验证**: ```json // 输入:biliup 新格式 { "cookie_info": { "cookies": [ {"name": "SESSDATA", "value": "...", "expires": 1791038234} ] } } // 输出:Netscape 格式 .bilibili.com TRUE / TRUE 1791038234 SESSDATA ... ``` --- ### 3. yt-dlp 缺少 --cookies 参数(412 风控) **问题**: B 站视频处理时,yt-dlp 调用未传递 Cookies 参数,导致 412 风控错误。 **影响范围**: - Step 1: 元数据获取(`--dump-json`) - Step 2: 视频下载(`-f best`) - Step 3: 字幕下载(`--write-auto-sub`) **修复方案**: - 所有 yt-dlp 调用增加 Cookies 检查 - 有 Cookies 文件时添加 `--cookies` 参数 - 无 Cookies 文件时保持原有行为(兼容) **修改文件**: `scripts/video-summarize.sh` #### 3.1 Step 1: 元数据获取(第 301-322 行) ```bash # 修改前 yt-dlp --dump-json "$VIDEO_URL" > "$OUTPUT_DIR/metadata.json" # 修改后 if [[ -f "$COOKIES_FILE" ]]; then yt-dlp --cookies "$COOKIES_FILE" --dump-json "$VIDEO_URL" > "$OUTPUT_DIR/metadata.json" else yt-dlp --dump-json "$VIDEO_URL" > "$OUTPUT_DIR/metadata.json" fi ``` #### 3.2 Step 2: 视频下载(第 428-462 行) ```bash # 修改前 yt-dlp -f "bestvideo[height<=720]+bestaudio/best[height<=720]" \ --merge-output-format mp4 \ -o "$VIDEO_FILE" "$VIDEO_URL" # 修改后 COOKIE_ARG="" if [[ -n "$COOKIES_FILE" && -f "$COOKIES_FILE" ]]; then COOKIE_ARG="--cookies $COOKIES_FILE" fi yt-dlp $COOKIE_ARG -f "bestvideo[height<=720]+bestaudio/best[height<=720]" \ --merge-output-format mp4 \ -o "$VIDEO_FILE" "$VIDEO_URL" ``` #### 3.3 Step 3: 字幕下载(第 508-528 行) ```bash # 修改前 yt-dlp --write-auto-sub \ --sub-lang "zh-Hans,zh,en" \ --skip-download \ --convert-subs vtt \ -o "$OUTPUT_DIR/video" "$VIDEO_URL" # 修改后 SUBTITLE_COOKIE_ARG="" if [[ -n "$COOKIES_FILE" && -f "$COOKIES_FILE" ]]; then SUBTITLE_COOKIE_ARG="--cookies $COOKIES_FILE" fi yt-dlp $SUBTITLE_COOKIE_ARG --write-auto-sub \ --sub-lang "zh-Hans,zh,en" \ --skip-download \ --convert-subs vtt \ -o "$OUTPUT_DIR/video" "$VIDEO_URL" ``` --- ## 📊 变更统计 ### 文件修改 | 文件 | 新增行 | 删除行 | 改动说明 | |------|--------|--------|----------| | `scripts/bili-login.sh` | +10 | -3 | 修复 Cookies 路径检测 | | `scripts/convert-bili-cookie.py` | +38 | -6 | 支持 biliup 新格式 + 保留过期时间 | | `scripts/video-summarize.sh` | +43 | -10 | 全链路添加 --cookies 参数 | | **总计** | **+91** | **-19** | **净增 +72 行** | ### yt-dlp 调用统计 | 步骤 | 调用位置 | Cookies 支持 | 数量 | |------|----------|-------------|------| | **Step 1: 元数据** | 第 305-322 行 | ✅ 已添加 | 6 处 | | **Step 2: 视频下载** | 第 440-462 行 | ✅ 已添加 | 4 处 | | **Step 3: 字幕下载** | 第 517-528 行 | ✅ 已添加 | 2 处 | | **总计** | - | ✅ 100% | **12 处** | --- ## 🧪 测试验证 ### B 站扫码登录 ```bash cd ~/.openclaw/skills/video-summarizer/scripts ./bili-login.sh ``` **预期结果**: ``` ✅ 登录成功 🔄 转换 Cookies 格式... ✅ Cookies 已保存:~/.cookies/bilibili_cookies.txt ``` ### Cookie 转换 ```bash python3 convert-bili-cookie.py cookies.json ~/.cookies/bilibili_cookies.txt ``` **输入** (biliup 新格式): ```json { "cookie_info": { "cookies": [ {"name": "SESSDATA", "value": "...", "expires": 1791038234} ] } } ``` **输出** (Netscape 格式): ``` ✅ 转换成功 | 5 个 Cookie .bilibili.com TRUE / TRUE 1791038234 SESSDATA ... ``` ### B 站视频处理 ```bash ./video-summarize.sh "https://www.bilibili.com/video/BV1j1ECzjE28" /tmp/test ``` **预期结果**: - ✅ 元数据获取成功(无 412 错误) - ✅ 视频下载成功 - ✅ 字幕下载成功(或 Plan B 语音转录) - ✅ AI 分析成功 - ✅ Notion 推送成功 --- ## ⚠️ 兼容性说明 ### 向后兼容 - ✅ 完全兼容 v1.0.6 - ✅ 无 Cookies 文件时保持原有行为 - ✅ 支持 biliup 新旧两种 Cookie 格式 ### 升级步骤 ```bash cd ~/.openclaw/skills/video-summarizer git pull origin main ``` ### 依赖要求 - **biliup**: >= 1.1.29(已安装) - **yt-dlp**: >= 2026.03.17 - **ffmpeg**: >= 6.1 --- ## 🔜 后续计划 - [ ] 添加 Cookies 过期检测与自动刷新 - [ ] 支持更多视频平台(TikTok、Instagram Reels) - [ ] 性能优化(截图并行上传、结果缓存) - [ ] 单元测试(核心函数覆盖率 80%+) --- ## 📞 反馈与支持 - **GitHub Issues**: https://github.com/AjayHao/video-summarizer/issues - **Gitee Issues**: https://gitee.com/ajayhao/video-summarizer/issues - **OpenClaw Skill**: 已发布到 clawdhub - **维护人**: Ajay Hao --- _感谢使用 Video Summarizer!_ **生成时间**: 2026-04-07 **版本**: v1.0.7
v1.0.6
## [1.0.6] - 2026-04-06 ### 🐛 Bug 修复 **AI 分析纯文本格式支持**: - 修复 `analyze-subtitles-ai.py` 的 `parse_vtt()` 函数 - 增加纯文本格式检测(无 WEBVTT 头部和时间戳) - 支持 Plan B 语音转录生成的 `audio.txt` 文件 - 用户反馈:AI 分析报错"找到 0 条字幕" **抖音元数据 JSON 格式错误**: - 修复 `video-summarize.sh` 中抖音标题提取 - 清理标题中的换行符和回车符 - 避免 JSON 解析失败(invalid control character) - 用户反馈:脚本执行失败(退出码:1) ### 📊 变更统计 - 修改文件:2 个 - 新增代码:+15 行 - 删除代码:-3 行 ### ✅ 核心平台(4 个) - **Bilibili(B 站)** - 完整支持 - **YouTube** - 完整支持 - **小红书** - 基本支持(语音转录) - **抖音** - 完整支持(专用下载器,无需 cookies) ### 🧪 测试验证 **抖音视频测试**: - 视频:https://www.douyin.com/video/7601482272836041670 - 标题:2026 年 AI 大模型权威排名及详细解析 - ✅ 视频下载成功(17M) - ✅ 语音转录成功(3005 字符) - ✅ AI 分析成功(生成 JSON) - ✅ 截图生成(11 张) - ✅ Notion 推送成功
v1.0.5
## [1.0.5] - 2026-04-06 ### 🐛 Bug 修复 **抖音下载链接提取失败**: - 修复 `video-summarize.sh` 中抖音下载链接提取 bug - 从 `cut -d' ' -f2` 改为 `sed 's/下载链接://'` - 避免 URL 包含中文前缀导致 curl 失败 - 修复 `download-audio.sh` 中同样的 URL 提取 bug - 用户反馈:专用下载器获取不到有效下载链接 ### 🔧 优化改进 **移除抖音平台的 yt-dlp 依赖**: - 抖音只使用专用下载器(`douyin_downloader.py` + `curl`) - 移除 yt-dlp 降级逻辑(需要 cookies,防盗链限制) - 失败时直接退出,不回退到 yt-dlp - 非抖音平台继续使用 yt-dlp ### 📊 变更统计 - 修改文件:2 个 - 新增代码:+16 行 - 删除代码:-4 行 ### ✅ 核心平台(4 个) - **Bilibili(B 站)** - 完整支持 - **YouTube** - 完整支持 - **小红书** - 基本支持(语音转录) - **抖音** - 完整支持(专用下载器,无需 cookies)
v1.0.4
## [1.0.4] - 2026-04-06 ### ✨ 新增功能 **抖音渠道发布时间提取**: - 新增 `--json` 参数到 `douyin_downloader.py`,输出结构化元数据 - 从抖音 API 响应中提取 `create_time` 时间戳 - 自动转换为 `upload_date` (YYYYMMDD 格式) - 支持 `modal_id` 格式的视频链接(课程/精选视频) **小红书渠道发布时间提取**: - 从笔记 ID 前 8 位 hex 解析时间戳 - 自动转换为 `upload_date` (YYYYMMDD 格式) - 兼容短链和完整链接格式 ### 🐛 Bug 修复 **小红书/YouTube 视频下载失败处理**: - 修复 yt-dlp 下载失败但脚本未检测到的问题 - 新增视频文件存在性检查,避免后续步骤失败 - 截图步骤支持封面图降级方案(无视频时使用封面图代替) - 优化错误日志输出,便于排查问题 **小红书视频下载容错增强**: - 新增两级下载策略,兼容不同视频格式类型 - 策略 1:优先尝试分片格式(适用于 B 站/YouTube/部分小红书视频) - 策略 2:分片格式失败后自动降级到单文件格式(适用于小红书单流媒体) - 解决小红书部分视频 `Requested format is not available` 错误 - 每级策略最多重试 3 次,确保下载稳定性 **小红书 Author 信息未写入 Notion**: - 修复 `metadata.get('uploader', '')` 无法处理 `None` 的问题 - 改用 `metadata.get('uploader') or metadata.get('uploader_id', '')` - 16 进制 ID 自动转换为 "小红书用户" **抖音元数据解析编码问题**: - 改用 JSON 解析抖音元数据(避免 bash 解析中文编码问题) - 正确提取 `video_id`、`upload_date`、`uploader_id` 等字段 - 支持多种抖音链接格式(`/video/`、`?modal_id=`、短链) ### 📝 文档更新 **依赖版本要求补充**: - ffmpeg: 最低版本 >= 6.1 - yt-dlp: 最低版本 >= 2026.03.17 - 更新 SKILL.md、README.md、故障排查表格 **版本号统一**: - 所有脚本、文档、配置文件统一为 v1.0.4 - 发布日期更新为 2026-04-06 ### 📊 变更统计 - 修改文件:8 个 - 新增代码:+124 行 - 删除代码:-21 行 ### ✅ 核心平台(4 个) - **Bilibili(B 站)** - 完整支持 - **YouTube** - 完整支持 - **小红书** - 基本支持(语音转录) - **抖音** - 完整支持(专用下载器)
v1.0.3
## [1.0.3] - 2026-04-06 ### 🗑️ 平台精简 - 移除微信视频号支持 - 删除 wxvideo 平台判断逻辑 - 精简 push-to-notion.py 微信分支代码 - 删除 video-summarize.sh 微信 ID 提取逻辑 ### 📝 文档更新 - 版本号统一更新为 1.0.3 - 发布日期更新为 2026-04-06 ### ✅ 核心平台(4 个) - Bilibili、YouTube、小红书、抖音
v1.0.2
video-summarizer 1.0.2 - Version updated to 1.0.2 in documentation. - No code or file changes detected. - All features, usage, and technical instructions remain unchanged.
v1.0.1
video-summarizer 1.0.1 - Added a detailed CHANGELOG.md file to the repository. - Removed RELEASE.md to streamline documentation. - Expanded Notion database field configuration instructions in SKILL.md. - No core functionality changes; update focuses on improved documentation and configuration clarity.
v1.0.0
video-summarizer v1.0.0 - Initial release. - Converts Bilibili/YouTube/Xiaohongshu/Douyin videos into structured Notion summary documents with AI-analyzed key points. - Automatically uploads keyframe screenshots to Alibaba Cloud OSS and updates Notion with one click. - Features dual transcription modes (official subtitles preferred, AI fallback), parallelized processing, and GPU-adaptive transcription. - Supports seamless resume from interruption and multi-level tag extraction. - Comprehensive configuration guidance for OSS, Notion integration, and API keys.
元数据
Slug video-summarizer
版本 1.0.10
许可证 MIT-0
累计安装 1
当前安装数 1
历史版本数 11
常见问题

Video Summarizer(视频摘录+Notion存档) 是什么?

将 B 站/YouTube/小红书/抖音视频转换为结构化 Notion 总结文档,自动上传截图,一键推送 Notion. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 263 次。

如何安装 Video Summarizer(视频摘录+Notion存档)?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install video-summarizer」即可一键安装,无需额外配置。

Video Summarizer(视频摘录+Notion存档) 是免费的吗?

是的,Video Summarizer(视频摘录+Notion存档) 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Video Summarizer(视频摘录+Notion存档) 支持哪些平台?

Video Summarizer(视频摘录+Notion存档) 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Video Summarizer(视频摘录+Notion存档)?

由 haozhenjie(@ajayhao)开发并维护,当前版本 v1.0.10。

💬 留言讨论