录音与材料自动成文(内置 8 套模板)
用途
把一段录音或一份原始素材,变成一份可直接发出去的正式文档。流程固定为四步:摄取 → 判定场景 → 套模板成文 → 交付。用户无需事先说明文体,由本技能按内容特征自动判定,也可由用户显式指定。
适用与不适用
适用:
- 音频/视频文件(mp3、m4a、wav、amr、mp4、mov 等)需要转写成文。
- 已有转写稿、会议记录、速记、聊天记录、手写提纲等文字素材。
- 同一份素材需产出多份文档(例如会议纪要 + 行动项清单)。
不适用(改用其他能力):
- 只要求逐字校对、不带结构的转写稿 → 直接返回转写文本。
- 需要对已有 DOCX/PPTX 做版式美化 → 转
workbuddy-docx/workbuddy-pptx。 - 素材与工作无关(娱乐音频、噪声、空录音),或转写后有效信息不足以支撑任一模板 → 说明情况,不硬凑文档。
第一步:摄取
按输入类型分三条路径,先完成这一步再谈成文。
- 音频/视频文件:调用
AudioTranscribe做长音频转写(支持中英方言与说话人分离),传入绝对路径。结果先原样保存为transcript.md,保留时间戳与说话人标签,再进入判定环节。 - 文档类素材(docx / pdf / txt / md / xlsx):用
Read读取;扫描件或图片清晰度不足时用视觉能力补读关键页。 - 粘贴文本 / 口述内容:直接作为
transcript.md正文,标注"用户口述整理"。
批量处理:先运行 scripts/ingest.py 扫描目录或文件清单,得到"类型 / 大小 / 时长 / 是否需转写"的结构化清单,再逐件处理,避免漏件。
素材信息稀疏:不必追问,按 【待确认】 占位,并在交付说明中列出缺项(人名、单位、日期最常见)。
第二步:判定场景
判定流程
- 对
transcript.md运行scripts/classify.py,得到 8 个模板的分值排名。 - 做语义复核:脚本只识别词面信号,需结合内容结构判断。例如词面出现"通知",但全篇是多方讨论过程,应判为会议纪要而非工作通知。
- 置信度处理:
- Top1 分值 ≥ 0.35 且领先第二名 ≥ 0.10 → 直接采用。
- 领先不足 0.10 → 按references/routing-guide.md的"平局判定"规则择优;仍无法区分时给出 2 个候选,一次问清差异点。
- 全部低于 0.20 → 素材信息量不足,回到"不适用",不强行套模板。 - 用户显式指定文体时跳过判定("整理成会议纪要" → 直接取
02)。
判定命令
/Users/admin/.workbuddy/binaries/python/envs/default/bin/python \
~/.workbuddy/skills/recording-summary/scripts/classify.py <transcript.md> --json
输出含 ranking(模板 id、名称、分值)、top、confidence、signals(命中关键词)、meta(识别到的日期、发言人数、决议句数、动作句数)。判定细则、关键词权重与平局规则见 references/routing-guide.md。
允许多产:一份会议素材同时需要纪要与待办时,先出主文档,再按 08 追加行动项清单,两份都交付。
第三步:套模板成文
| ID | 模板 | 何时选它 | 参考文件 |
|---|---|---|---|
| 01 | 工作通知 | 面向群体传达要求、安排、时间节点,含"请于/务必/各单位/周知" | templates/01-work-notice.md |
| 02 | 会议纪要 | 多方讨论后形成结论、分工、后续安排 | templates/02-meeting-minutes.md |
| 03 | 会议议程 | 会前设计:议题、顺序、时长、参会人、待决事项 | templates/03-meeting-agenda.md |
| 04 | 工作总结 | 时间跨度内的成果、数据、问题、下阶段计划 | templates/04-work-summary.md |
| 05 | 会议实录 | 需保留发言原貌、责任到人的过程记录 | templates/05-meeting-verbatim.md |
| 06 | 项目复盘 | 目标与结果对比、成败归因、改进项 | templates/06-project-retro.md |
| 07 | 培训记录 | 讲授型内容:知识点、方法、问答 | templates/07-training-record.md |
| 08 | 行动项清单 | 以任务为中心,需责任人 + 时限 + 状态追踪 | templates/08-action-items.md |
使用方式:先读对应模板文件,再按其骨架成文。模板中的 【】 为占位符,填写规则与自检清单必须逐条遵守。
成文红线
以下五条优先于任何模板细节:
- 不编造。人名、职务、单位、数字、日期、金额只能来自素材;素材未提及的写
【待确认】,不得推测填空。 - 区分层级。把"背景讨论 / 争议意见 / 已达成的决议 / 待定事项"分开写,不把讨论中的想法写成决议。
- 行动项三要素。责任人、交付物、时限缺一不可;缺失的逐项标注
【责任人待确认】,不合并省略。 - 相对时间绝对化。素材中的"下周三""月底"按素材所属日期(录音时间或文件创建时间)换算为具体日期,首次出现处保留原表述括注。
- 关键措辞不改写。涉及金额、比例、期限、承诺时引用原话,不做润色性替换。
第四步:交付
- 目录:默认
<当前工作目录>/outputs/recording-summary/,用户指定则从其指定。 - 命名:
YYYY-MM-DD_<模板类型>_<主题关键词>.md,同目录另存同名.docx。 - Markdown 为母本;DOCX 用
scripts/render_docx.py转换:
/Users/admin/.workbuddy/binaries/python/envs/default/bin/python \
~/.workbuddy/skills/recording-summary/scripts/render_docx.py \
<input.md> <output.docx> --title "<文档标题>"
- 需要精细排版(红头文件、企业模板、页眉页脚)时,把 Markdown 交给
workbuddy-docx处理,不要手改脚本。 - 完成后用
present_files交付;正文只给要点摘要(选了什么模板、几项决议、几项待办),不复述全文。
常见情形处理
| 情形 | 处理 |
|---|---|
| 录音质量差、转写有断点 | 文末标注"素材完整度:约 XX%",缺失段落写明时间区间 |
| 超长录音(> 2 小时) | 分段转写、分段成文,再合并为总文档 + 分节 |
| 一份素材含多个独立议题 | 主文档按议题分节;议题互不相关时拆成多份并说明拆分依据 |
| 用户只要"简单总结" | 仍判定模板,正文压缩到骨架的最小可用集,但保留关键数据 |
| 涉及敏感人事、薪酬、法务 | 正常成文,交付时提示"含敏感信息,注意分发范围" |
扩展与自定义
- 换成本单位版式:复制目标模板为
09-xxx.md,在references/routing-guide.md增补触发信号,并在scripts/classify.py的TEMPLATES中加同 id 关键词组。三处对齐即生效。 - 固定场景一键化:长期处理同一场景(如每周例会录音)时,可配置定时任务:扫描固定录音目录 → 批量成文 → 归档,
scripts/ingest.py作为扫描入口。