Video to Word Report
将本地视频(PPT 录屏、会议录屏、培训视频等)转为结构化 Markdown 总结,再生成专业排版的 Word 汇报版(.docx)。
工作流总览
视频文件
→ 阶段 A 内容提取:ffprobe → 抽帧 + 抽音轨 → dHash 去重 → RapidOCR → faster-whisper 音轨验证
→ 阶段 B 撰写 Markdown 总结
→ 阶段 C Word 汇报版:tencent-docx 管线(beautify_only:doc-formatter → html-review → doc-converter)
→ 阶段 D 交付:present_files 打开 docx 预览
工作目录约定:在 <workspace>/.workbuddy/vidx_<主题>/ 下存放帧、音轨、OCR 文本、总结 md;
Word 管线产物放 <workspace>/output/req-<request_id>/stage2|stage3/。
阶段 A:视频内容提取
- 用
ffprobe获取时长/分辨率/音轨信息,据此定抽帧密度(PPT 录屏 1 fps 足够,快切内容用 2 fps)。 - 用
ffmpeg抽帧(jpg 序列)+ 抽音轨(16kHz 单声道 wav)。完整命令见references/extraction-pipeline.md§1。 - 对帧序列做 dHash 去重(保留每个"页面"的首帧),脚本见 reference §2。经验值:2.5 分钟 PPT 录屏 77 帧 → 去重后约 20 帧。
- 用 RapidOCR 对全部关键帧全量提取画面文字(无截图张数限制,OCR 走文字通道)。
- 用 faster-whisper 验证音轨是否含口播:
- 有口播:以 ASR 转写为主、OCR 为辅,两者合并成稿;
- 仅 BGM 无人声:总结声明"内容 100% 来自画面",并附验证附录(全片平均能量、静音检测结果、ASR 语音片段数)。
- 音轨三点验证法与 HuggingFace 模型下载规避方案(hf-mirror curl 直下)见 reference §3。 - 长视频分批处理:按章节切片分别 OCR/ASR,再合并,避免单次输出超限。
阶段 B:Markdown 总结撰写
- 落盘为
<主题>-视频总结.md,建议结构:
概述(主题/口号/依据)→ 核心内容(按画面或主题分节)→ 关键数据(表格)→ 附录(提取方法与音轨验证结论)。 - 画面文字如实转录,关键数字(金额、分数、日期、人名)保持原样不推算;不确定处标注"画面未显示"。
阶段 C:Word 汇报版(tencent-docx 管线)
按 tencent-docx skill 的编排流程执行,入口类型 beautify_only(内容已存在,只做排版与转换):
- Stage 2(doc-formatter):路线
html-template;按 genre 查 design-token(商务汇报用business-report→business-modern主题:微软雅黑、主色 #1565C0、A4、页边距 2.5/2.0/2.5/2.5 cm);按 doc-typeset 规则生成 HTML;跑 html-review 质量门禁。
- 门禁不通过时只做一次定向修正,修正后直接输出,不循环复检。 常见打回项:缺.executive-summary执行摘要区、裸 margin/padding(须用var(--sp-*)变量)、table 缺<thead>/<tbody>、h1 过多(仅封面 1 个 h1,正文章节 h2、小节 h3)。
- 超长 HTML 必须分段写入(单次 Write 长内容会被截断):head+封面写主文件,正文分 2–3 个 chunk 文件,cat追加合并,再用 HTMLParser 校验标签配对(方法见 reference §5)。 - Stage 3(doc-converter):读取插件
skills/html-to-docx/SKILL.md执行 HTML→DOCX 转换(A4 竖版,margin top 2.5 / bottom 2.0 / left 2.5 / right 2.5)。
- Windows 坑(必须看 reference §4):内置setup-html-to-docx.sh是 POSIX 脚本,在 Windows/Git Bash 下会误判 venv 不存在而静默删除重建,且 uv 会把/c/Users/...解析成D:\c\...。绕过方案:手动用 uv + Windows 绝对路径重建 venv 到%USERPROFILE%\.venv-html-to-docx并装依赖;包html-for-docx的导入名是html4docx(不是 htmldocx)。
- 转换成功后立即present_files打开 docx 预览(硬约束,不得省略),随后更新 pipeline-state.yaml 声明[Stage 3 转换完成]。
阶段 D:交付
present_files传最终 .docx;同时复制一份中文友好文件名到output/(如XX活动-内容汇报.docx)。- 回复中简述文档结构(封面/目录/执行摘要/章节数),并保留"音轨验证结论"的说明(有口播/无口播直接影响内容完整性判断)。
Resources
references/extraction-pipeline.md:提取管线完整命令集、dHash 去重脚本、音轨三点验证法、html-to-docx Windows 环境重建指引、长 HTML 分段写入校验脚本。