Install
openclaw skills install @siyou315/video-to-docopenclaw skills install @siyou315/video-to-doc将视频教程转换为图文并茂的Word操作指南文档。
本技能能够:
# 安装 ffmpeg(视频处理)
# Ubuntu/Debian
sudo apt install ffmpeg
# macOS
brew install ffmpeg
# 安装 Python 依赖
pip install python-docx pillow faster-whisper
语音转录支持多种方案:
LLM内容提炼使用扣子平台内置大模型能力,无需额外配置。
本版本采用主对话分析 + 脚本合并的架构,充分利用扣子平台内置的 read_image 视觉理解能力:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Python脚本 │ │ 主对话 │ │ Python脚本 │
│ 提取截图/语音 │ → │ read_image分析 │ → │ 合并生成文档 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
python video_to_doc.py video.mp4
脚本自动完成:
完成后输出:
[3/6] 等待截图分析...
截图目录: video_frames
分析结果保存到: video_frames_analysis.json
并打印标记:
[MARKER_FOR_MAIN_AGENT]
WAIT_FOR_FRAME_ANALYSIS
frames_dir=video_frames
analysis_output=video_frames_analysis.json
frame_count=15
[/MARKER_FOR_MAIN_AGENT]
主对话收到 WAIT_FOR_FRAME_ANALYSIS 标记后:
glob.glob("video_frames/*.jpg")read_image 工具分析每张截图read_image 分析提示词模板:
分析截图中的:
1. UI元素:按钮、表单、菜单等(text + type)
2. 文本内容:界面上显示的主要文字
3. 操作提示:根据画面推断下一步操作
格式要求:
- ui_elements: [{"text": "文字", "type": "按钮/输入框/菜单项/..."}]
- text_content: 界面主要内容摘要
- action_hint: 简短的步骤描述(如"点击确定按钮")
输出格式(保存到 video_frames_analysis.json):
{
"frames": [
{
"timestamp": 0,
"ui_elements": [
{"text": "新增", "type": "按钮"},
{"text": "请输入名称", "type": "输入框"}
],
"text_content": "员工管理页面,显示新增和删除按钮",
"action_hint": "点击新增按钮添加员工"
},
{
"timestamp": 6,
"ui_elements": [
{"text": "确定", "type": "按钮"},
{"text": "取消", "type": "按钮"}
],
"text_content": "新增员工对话框",
"action_hint": "填写信息后点击确定"
}
]
}
主对话分析完成后,运行:
python video_to_doc.py --continue
脚本自动完成:
# 完整流程
python video_to_doc.py video.mp4 # 步骤1:提取截图和语音
# [主对话用 read_image 分析截图]
python video_to_doc.py --continue # 步骤3:生成文档
# 可选参数
python video_to_doc.py video.mp4 -o my.docx # 指定输出文件
python video_to_doc.py video.mp4 -m 20 # 最多20张截图
python video_to_doc.py video.mp4 --no-audio # 跳过语音转录
系统根据视频特征自动选择最优截图策略:
| 视频时长 | 自动策略 | 预计帧数 |
|---|---|---|
| ≤30秒 | 每3秒一帧 | ~10张 |
| 30-60秒 | 每4秒一帧 | ~15张 |
| 1-3分钟 | 每6秒一帧 | ~20张 |
| 3-10分钟 | 每10秒一帧 | ~30张 |
| >10分钟 | 每15秒一帧 或 场景检测 | 自适应 |
# 固定间隔
python smart_extract.py video.mp4 -s interval_5
# 场景检测
python smart_extract.py video.mp4 -s scene
# 限制最大帧数
python smart_extract.py video.mp4 -m 20
主对话使用 read_image 分析截图时,关注:
UI元素识别
文本内容提取
操作推断
| 脚本 | 功能 |
|---|---|
video_to_doc.py | 主入口,流程控制 |
scripts/smart_extract.py | 智能截图 |
scripts/transcribe_audio.py | 语音转录 |
scripts/merge_and_generate.py | 合并截图分析和语音转录 |
scripts/generate_docx.py | 生成Word文档 |
将口语化的语音转录内容转换为规范的操作说明:
将以下操作视频的内容提炼为规范的操作指南:
截图分析:{frames_analysis}
语音转录:{audio_transcript}
要求:
1. 提取核心操作步骤(控制在4-6步)
2. 使用规范表述:
- 点击操作:【按钮名称】
- 输入字段:「字段名称」
- 示例值:直接文本
3. 去除口语化表达和重复内容
4. 每个步骤包含:标题 + 操作描述
在文档开头添加横向箭头流程图,使用表格实现:
进入系统 → 填写信息 → 拍照上传 → 查询管理 → 完成
# Word中用表格实现横向流程图
table = doc.add_table(rows=1, cols=9)
flow_steps = ['进入系统', '→', '填写信息', '→', '拍照上传', '→', '查询管理', '→', '完成']
一、操作概述
二、操作流程图
三、详细操作步骤
四、注意事项
| 标记类型 | 格式 | 颜色 | 示例 |
|---|---|---|---|
| 按钮 | 【名称】 | 蓝色加粗 | 【拍照】【上传】 |
| 输入框 | 「名称」 | 绿色加粗 | 「合同号」「备注」 |
| 示例值 | 直接文本 | 紫色 | DFD-BH20251226CSXT01 |
video_to_doc.py
├── 提取截图 → smart_extract.py
├── 语音转录 → transcribe_audio.py
├── [主对话] → read_image 分析截图
├── [主对话] → LLM 提炼内容
└── 合并生成 → merge_and_generate.py → generate_docx.py
关键设计:
A: read_image 是扣子平台的内置视觉理解工具,可以直接理解截图内容,无需额外调用 API 或模型。
A: 可以,使用 --no-audio 参数。但建议保留语音,可以让操作说明更准确。
A: JSON 格式,包含 frames 数组,每个帧包含 timestamp、ui_elements、text_content、action_hint。
A: 使用 -m 参数,如 -m 20 表示最多20张截图。