Bilibili Auto Transcript
支持B站视频一键转录与收藏夹自动扫描,三级降级转录+AI摘要生成。
基于智谱GLM-V模型,为图像、视频和文档生成描述性标题与摘要。
openclaw skills install @tridefender/glmv-caption-tunnel命令、参数、文件名以原文为准
使用智谱 GLM-V 多模态模型为图像、视频和文档生成描述。
| 类型 | 格式 | 最大大小 | 最大数量 | Base64 | 本地路径 |
|---|---|---|---|---|---|
| 图像 | jpg, png, jpeg | 5MB / 6000×6000px | 50 | ✅ | ✅ (→base64) |
| 视频 | mp4, mkv, mov | 200MB | — | ❌ | ✅ (→隧道) |
| 文件 | pdf, docx, txt, xlsx, pptx, jsonl | — | 50 | ❌ | ✅ (→隧道) |
**⚠️ file_url 不能与 image_url 或 video_url 在同一请求中混用。**
GLM-V API 要求视频和文件必须通过公网 HTTPS URL 提供。当你提供 本地路径 时,脚本会自动执行以下流程:
cloudflared tunnel(通过 trycloudflare.com 快速隧道)将服务暴露至公网前提条件: 必须安装 cloudflared。请从 [Cloudflare 下载页面](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/) 获取。
| 资源 | 链接 |
|---|---|
| 获取 API Key | [https://bigmodel.cn/usercenter/proj-mgmt/apikeys](https://bigmodel.cn/usercenter/proj-mgmt/apikeys) |
| API 文档 | [对话补全](https://docs.bigmodel.cn/api-reference/%E6%A8%A1%E5%9E%8B-api/%E5%AF%B9%E8%AF%9D%E8%A1%A5%E5%85%A8) |
本脚本通过 ZHIPU_API_KEY 环境变量读取密钥,并与其他智谱相关技能共享同一个 key。
获取密钥: 访问 [智谱开放平台 API Keys](https://bigmodel.cn/usercenter/proj-mgmt/apikeys) 创建或复制你的 API 密钥。
配置方式(任选其一):
openclaw.json 中设置 skills.entries.glmv-caption.env: "glmv-caption": { "enabled": true, "env": { "ZHIPU_API_KEY": "你的密钥" } }~/.zshrc: export ZHIPU_API_KEY="你的密钥".env 文件: ZHIPU_API_KEY=你的密钥仅在传入本地文件或视频路径时需要;若仅使用远程 URL,则无需安装。
请从 [Cloudflare 下载页面](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/) 安装。
⛔ 必须遵循以下完整流程(你必须严格按步骤操作)⛔
当你(AI agent)准备使用 --videos 或 --files 传入 本地文件路径 时,在执行脚本前,必须先检查 cloudflared 是否已安装。请按以下流程操作:
# macOS / Linux
which cloudflared
# Windows
where cloudflared若命令返回路径(如 /usr/local/bin/cloudflared),说明已安装,可直接运行脚本。
若命令报错(not found / 找不到),进入步骤 2。
你必须先完整展示以下说明内容,然后询问用户是否同意下载安装。未经用户明确同意,不得自行下载。
向用户展示的内容(原文照搬,不可精简):
检测到系统未安装 cloudflared,本地视频/文件路径需要该工具才能使用。
什么是 cloudflared?
cloudflared 是 Cloudflare 公司官方开源的命令行隧道工具(Apache 2.0 协议,GitHub 24000+ stars)。
它的功能是:在本机与 Cloudflare 全球边缘网络之间建立一条加密的临时隧道,将本地服务暴露为公网 HTTPS URL。
开源仓库地址:https://github.com/cloudflare/cloudflared
在本场景中的必要性:
智谱 GLM-V API 要求视频和文件以公网 HTTPS URL 的形式传入(不支持本地上传)。
当你提供本地文件路径时,脚本的工作流程是:
- 在本机启动一个临时 HTTP 服务器(仅暴露你指定的那几个文件,不会暴露其他目录)
- 使用 cloudflared 建立一条临时隧道(通过 trycloudflare.com,无需注册账号、无需登录)
- 获得一个形如
https://xxx-xxx.trycloudflare.com/your-file.mp4的临时公网 URL- 将该 URL 传给 GLM-V API 完成调用
- API 调用完成后,隧道和 HTTP 服务器自动关闭,临时文件清理
没有 cloudflared = 无法建立隧道 = 本地视频/文件路径不可用。
安全说明:
- 隧道仅在脚本运行期间存在(通常几十秒到几分钟),脚本结束后立即关闭
- 只暴露你明确指定的文件,不会暴露整个目录或磁盘
- cloudflared 不会在后台常驻,不会开机自启
- 不需要注册 Cloudflare 账号,不收集个人信息
- 该工具被全球开发者广泛使用,Cloudflare 官方维护
下载链接:
- 官方下载页面(可手动选择版本):https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/
- Windows x64: https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-windows-amd64.exe
- macOS Apple Silicon: https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-darwin-arm64.tgz
- macOS Intel: https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-darwin-amd64.tgz
- Linux x64: https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
**替代方案:如果你不想安装 cloudflared,可以直接传入远程 URL(如
https://example.com/video.mp4),则完全不需要安装任何东西。**
等待用户回复。根据用户反馈执行对应操作:
用户同意后,使用以下命令安装:
macOS (Homebrew):
brew install cloudflaredWindows (推荐使用 winget):
winget install Cloudflare.cloudflaredLinux(下载二进制文件):
# x64 架构
curl -Lo /usr/local/bin/cloudflared https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
chmod +x /usr/local/bin/cloudflared其他安装方式: 从 [官方下载页面](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/) 手动下载,解压后放入系统 PATH 路径即可。
安装完成后,使用 cloudflared version 验证是否安装成功,然后运行脚本。
⛔ 必须遵守的限制 - 严禁违反 ⛔
python scripts/glmv_caption.py运行脚本后,必须将模型返回的完整原始输出原样展示给用户。不得摘要、截断或仅回复“已生成”。用户需要原始模型输出以评估质量。
python scripts/glmv_caption.py --images "https://example.com/photo.jpg"
python scripts/glmv_caption.py --images /path/to/photo.pngpython scripts/glmv_caption.py --images img1.jpg img2.png "https://example.com/img3.jpg"# 远程 URL
python scripts/glmv_caption.py --videos "https://example.com/clip.mp4"
# 本地文件(通过 cloudflare 自动隧道传输)
python scripts/glmv_caption.py --videos /path/to/local-video.mp4# 远程 URL
python scripts/glmv_caption.py --files "https://example.com/report.pdf"
# 本地文件(通过 cloudflare 自动隧道传输)
python scripts/glmv_caption.py --files /path/to/local-report.pdf
# 混合使用远程链接和本地路径
python scripts/glmv_caption.py --files "https://example.com/doc1.docx" /path/to/local-doc2.txtpython scripts/glmv_caption.py --images photo.jpg --prompt "请详细描述这张图片中的建筑风格"python scripts/glmv_caption.py --images photo.jpg --output result.jsonpython scripts/glmv_caption.py --images photo.jpg --thinkingpython scripts/glmv_caption.py \
--images photo.jpg \
--response-format \
--sys-prompt '请严格返回 JSON 格式:{"summary":"string","objects":[{"name":"string","confidence":0.0}]}'推荐做法:
--response-format 仅在显式指定时启用结构化输出模式response_format--response-format 无值时,默认使用 json_object--sys-prompt 明确指定期望的 JSON 字段、类型和示例python {baseDir}/scripts/glmv_caption.py (--images IMG [IMG...] | --videos VID [VID...] | --files FILE [FILE...]) [OPTIONS]| 参数 | 是否必需 | 说明 |
|---|---|---|
--images, -i | 三选一 | 图像路径或 URL(支持多个,base64 格式也可接受) |
--videos, -v | 三选一 | 视频路径或 URL(支持多个,格式为 mp4/mkv/mov;本地路径会自动通过 cloudflare 隧道传输) |
--files, -f | 三选一 | 文档路径或 URL(支持多个,格式包括 pdf/docx/txt/xlsx/pptx/jsonl;本地路径会自动通过 cloudflare 隧道传输) |
--prompt, -p | 否 | 自定义提示词(默认:请详细描述这张图片的内容 / Please describe this image in detail) |
--model, -m | 否 | 模型名称(默认:glm-5v-turbo) |
--temperature, -t | 否 | 采样温度范围 0-1(默认:0.8) |
--top-p | 否 | 核心采样参数 0.01-1.0(默认:0.6) |
--max-tokens | 否 | 最大输出 token 数(默认:1024,上限 32768) |
--thinking | 否 | 启用思考/推理模式 |
--response-format | 否 | 启用结构化输出。若不带值,自动设为 json_object;未设置则禁用 |
--sys-prompt | 否 | 系统提示词,插入到用户消息前;建议用于定义期望的 JSON 结构 |
--output, -o | 否 | 将结果保存为 JSON 文件 |
--pretty | 否 | 以美化格式输出 JSON |
--stream | 否 | 启用流式输出 |
注意: --images、--videos 和 --files 三者互斥,每次调用只能使用其中一种。
根据大模型结构化输出规范,启用 JSON 模式需在请求中发送:
{
"response_format": {"type": "json_object"}
}本技能通过 --response-format 参数暴露此功能。
--response-format 存在 → 请求中包含 response_format--response-format 不存在 → 请求行为与之前一致--sys-prompt 作为请求的 system 消息传递--sys-prompt 明确定义期望的 JSON 结构示例:
python {baseDir}/scripts/glmv_caption.py \
--files /path/to/report.pdf \
--response-format json_object \
--sys-prompt 'Return JSON only: {"title":"string","summary":"string","risks":["string"]}' \
--pretty{
"success": true,
"caption": "一张展示日落时分山脉景观的风景照片...",
"usage": {
"prompt_tokens": 128,
"completion_tokens": 256,
"total_tokens": 384
}
}关键字段说明:
success — 请求是否成功caption — 生成的描述文本usage — token 使用统计信息warning — 当内容被安全审查拦截时出现error — 请求失败时的错误详情API 密钥未配置:
ZHIPU_API_KEY not configured. Get your API key at: https://bigmodel.cn/usercenter/proj-mgmt/apikeys→ 向用户展示完整错误信息,并引导其完成配置
认证失败(401/403): API 密钥无效或已过期 → 需重新配置
速率限制(429): 配额已用尽 → 告知用户等待后重试
文件未找到: 本地文件路径不存在 → 检查文件路径是否正确
内容被过滤: warning 字段存在 → 内容因安全审查被拦截
隧道连接失败(仅限本地路径):
Tunnel setup failed: cloudflared not found. Install it from: ...→ 引导用户安装 cloudflared,或改用远程 URL 代替
已收录 1 个 Skill