Video To Manuscript
Overview
把一段视频变成书稿/文档可直接引用的结构化文稿:通过抽帧看画面、抽音频转写听语音,再综合成含「时间线、关键人物与机构、可引用原话、可书用画面、建议归入章节」的 markdown 文稿。支持本地视频文件与视频链接两种输入。
输入模式(自动判定)
技能接受的输入分两类,由 scripts/run_pipeline.py 与 scripts/fetch_video.py 自动路由:
模式 A — 链接输入(让更多人能「丢链接就用」)
用户直接给 URL 即可。链接会被 fetch_video.py 分为三类处理:
- 可直链视频(.mp4/.webm/.m4v... 直链)→ 标准库自动下载到本地。
- 平台视频(B站 / YouTube / 抖音等)→ 尝试 yt-dlp 下载(未装则提示存本地)。
- 微信视频号 / 微信域链接(weixin.qq.com/sph/...、channels.weixin.qq.com/...):
关键约束——这类链接需微信登录态 + 动态签名,沙箱取不到字节(只返回 JS 加载壳)。
技能不尝试抓取,而是生成 pending_links.json(待下载清单 + 建议文件名)并清晰告知用户如何 10 秒存本地;用户存好后用本地路径继续,流程不卡壳。
模式 B — 本地视频输入
用户给本地 .mp4/.mov/.webm/.m4v/.avi 等路径(或作为附件)→ 直接进入抽帧抽音频。
Workflow
Step 0 — 路由与获取素材(脚本自动)
优先用一键编排(自动覆盖「链接→本地」与「本地→素材」两段):
python <skill>/scripts/run_pipeline.py "<链接或本地路径>" "[输出目录]" [帧数=16]
- 链接模式:内部调用
fetch_video.py;若返回status=pending(视频号/下载失败),告诉用户按提示存本地后「用本地路径重新运行」。 - 本地模式:直接调用
video_analyze.py。 - 产出:
contact_sheet.png、frame_XX.jpg、audio.wav、manifest.json,并打印「下一步」提示。
也可分步手动执行:
# 仅链接:链接 → 本地视频
python <skill>/scripts/fetch_video.py "<URL>" "<输出目录>"
# 仅抽帧抽音频(本地视频)
python <skill>/scripts/video_analyze.py "<视频路径>" "<输出目录>" [帧数=16] [每行列数=4]
video_analyze.py 首次会自动安装 opencv-python-headless / imageio-ffmpeg / numpy。
Step 1 — 视觉分析(读画面)
- 用 Read 工具读取
contact_sheet.png(多模态)获取全局画面信息。 - 对需细看的内容(人物特写、横幅 / 字幕、机构标识),再 Read 若干
frame_XX.jpg。 - 提取:人物(屏幕显示的姓名 / 职务)、机构与院校、横幅与字幕文字、场景地点、关键视觉。
Step 2 — 语音转写(听内容)
- 若
audio.wav大于约 2KB,用 AudioTranscribe 工具对其转写(支持中文、长音频、说话人分离): - 通过 DeferExecuteTool 调用,
toolName: "AudioTranscribe",params: { "file_path": "<输出目录>/audio.wav" }。 - 若视频无音轨(文件过小或转写为空),标注「无声视频」,以画面分析为主。
Step 3 — 综合成稿
- 依据
assets/manuscript_template.md模板(已含来源链接 / 提取方式字段),融合画面与语音,产出结构化文稿 markdown。 - 默认写出到
<视频同目录>/<视频名>_文稿.md,或用户指定路径。
Step 4 — 汇报与回填
- 告知用户文稿路径、核心发现(谁 / 什么 / 何时 / 何地)、哪些原话与画面可直接书用。
- 若属某本书稿项目(如《躬耕南阳、收获天下》),将关键事实回填对应章节与背景笔记,并在影像素材索引中把该条从「待补」推进到「已分析」。
Resources
scripts/run_pipeline.py(推荐入口)
一键编排:接受链接或本地路径 → fetch 路由 → 抽帧抽音频 → 输出素材清单与「下一步」提示。
scripts/fetch_video.py(链接路由)
链接 → 本地视频。classify() 把链接分为 weixin / direct / platform:可直链自动下载;视频号生成 pending_links.json 待下载清单优雅降级;平台视频尝试 yt-dlp。
scripts/video_analyze.py
本地视频 → 可分析素材:均匀抽关键帧拼接触摸图、导出单帧、抽取音轨、生成 manifest。自动安装缺失依赖。
assets/manuscript_template.md
成稿模板,定义文稿章节结构(含来源链接 / 提取方式字段),Step 3 套用。
references/saving_videos.md
「如何把微信视频号视频保存为本地文件」操作指引 + 链接限制说明(给模型)。
README.md
面向普通用户 / 团队:快速上手、链接用法、如何把技能文件夹分享给他人(~/.workbuddy/skills/),实现「更多人可调用」。