px-summarize-transcript 是做什么的?
将会议转录稿转化为有据可查的决策、实质性事实陈述以及谁负责下一步。每个条目都引用说话人、时间戳(如果转录中有)以及逐字原文引用。Python 脚本负责机械化工作:解析、文件命名、前言生成和引用校验。你负责推理。
使用时机
- 有
.vtt文件、粘贴到.txt或.md中的 Teams 转录、[说话人] YYYY-MM-DD HH:MM:SS格式的 Markdown 转录,或姓名: 文本行,需要从中提取决策和行动项。 - 有人问谁说了什么、达成什么共识、或谁负责后续工作。
- 有人问在周期性系列会议中上一次会议有哪些未决问题。
- 会议成果需要与项目文档进行比对。
文件包布局(固定)
所有文件都位于转录稿自己的文件夹中,并使用相同的文件名。只有后缀不同。你不能将它们写入其他位置。如果用户要求使用其他文件夹,请解释文件包必须与转录稿在一起。file_transcript.py 可以将整个文件包移动到系列文件夹中,且其中的成员始终一起移动。
| 文件 | 角色 |
|---|---|
<stem>.vtt / .txt / .md | 源转录稿。.md 和 .txt 会在原地合并前言;现有键值不会更改。 |
<stem>.source.md | 仅用于 .vtt:一个小的 Markdown "侧车"文件,存放 .vtt 的前言,因为 .vtt 文件必须以 WEBVTT 开头,无法存放前言本身。 |
<stem>.turns.md | 说话轮次索引。创建一次;除非传递 --rebuild,否则不会重写。 |
<stem>.summary.md | 报告。重新运行时写入 <stem>.summary.v2.md、.v3,依此类推。 |
操作步骤
脚本位于此 SKILL.md 旁边的 ./scripts/ 中。终端起始于用户的工作区,因此请先解析技能文件夹的绝对路径(个人安装通常在 ~/.claude/skills/px-summarize-transcript 或 ~/.agents/skills/px-summarize-transcript),并在每个终端中设置一次:
$S = "<此技能的绝对路径>\scripts" # PowerShell
S="<此技能的绝对路径>/scripts" # bash / zsh
下面的命令使用 PowerShell("$S\build_turns.py")。在 bash 中,写成 "$S/build_turns.py"。脚本仅使用标准库(Python 3.10+)。路径请加引号,因为文件名常包含空格。
一次只处理一个转录。对于文件夹或“所有待处理”,请参见多个转录。
-
归档转录稿(可选)。 在用户提出要求时执行,或者当工作区将转录稿放在系列文件夹中(例如
transcripts/<系列>/)且此转录稿尚未在其中时执行。--root默认为./transcripts。python "$S\file_transcript.py" --list --root "<根目录>" python "$S\file_transcript.py" "<转录稿>" --series "<系列>" --root "<根目录>"重用适合该会议的现有系列。如果没有合适的,提出一个简短的短横线命名名称,并在创建前请用户确认。然后根据
status执行操作:moved:继续使用新的source路径。already-filed:转录稿已经在根目录下的文件夹中,或在与系列同名的文件夹中。未移动,继续。duplicate:相同转录稿已存在于duplicate_of。停止并询问用户处理哪个副本。不要删除任一文件。conflict(退出码 2):系列文件夹中已存在一个同名的不同文件。停止并询问。
-
构建说话轮次索引。
python "$S\build_turns.py" "<转录稿>"它检测格式,如果
<stem>.turns.md尚不存在则写入,标记来源(或侧车文件),并打印 JSON。请保留turns_path、turns_status、summary_path、has_timestamps、speakers、meeting_date、meeting_date_source、gaps、previous_meeting_summary和transcription。turns_status: created或kept:继续。kept表示现有的说话轮次索引已经与转录稿匹配,因此未重写任何内容。turns_status: source-changed(退出码 3):转录稿在说话轮次索引构建后被编辑过,现有报告引用的是旧的轮次 ID。停止并询问用户是否使用--rebuild重新运行。- 不支持的格式错误(退出码 2):告知用户支持的格式并停止。
meeting_date为null:写入“未注明”,除非用户提供了日期。
-
完整阅读说话轮次索引,以较大的块直到末尾。切勿从部分读取中提取内容。
-
映射说话人。 为报告的说话人表格中的每个说话人标签制作一行:标签、显示名称以及你是如何识别出来的。
- 仅在有证据的情况下显示不同的名称:该人被直呼其名、自我介绍、或标签明显是拼写错误。记录证据。
- 会议室设备标签保持为该房间。列出在该设备上听到或提及的人,除非转录稿明确无误,否则不要将其话归属于某一个人。
- 仅出现在
Transcription:标题行中的人已出席但未必发言。 - 列出被提及但未发言的人,并注明在何处被提及。
- 仅在无歧义时才将名字解析为全名。
-
提取条目,使用以下测试:
- 决策: 在选项之间做出或接受了选择(“我们就采用”、“已同意”、“我们会做”,或没有反对意见的提议)。状态:已同意、暂定、已提议。
- 实质性声明: 如果错误会改变范围、设计、进度、成本或风险的内容:关于系统的事实、约束、依赖关系、数字、日期、承诺、已声明的风险。非闲聊或复述。最多 12 条,通过合并相关声明来达成。
- 行动项: 带有动词的未来任务,被要求或自愿承担(“我会”、“你能”、“我们需要”)。
- 未决问题: 被提出但在会议转向下一个话题前未解决。
-
为每个行动项分配所有者。 所有者可以是任何被指名的人,包括缺席者。
- 显式: 被指名并要求,未拒绝。
- 自愿: 说话人说“我会……”。
- 委派: 分配给缺席或沉默的人。标记为
(未出席)并注明由谁分配。 - 推断: 基于所述角色或所有权推断而来。写出推理过程。
- 未分配: 以上都不是。切勿虚构所有者。
仅当有人说出了截止日期时才记录。
-
为每个条目附加证据:
- 有时间戳:
[T042 00:12:31 说话人] “逐字引用”。 - 无时间戳(
has_timestamps: false):[T042 说话人] “逐字引用”。 说话人是说话轮次索引中确切的标签,即使说话人表格显示了不同的名称。在其他所有地方使用显示名称。- 引用不超过 25 个词,逐字复制,包括 ASR 错误。省略部分使用
...。当决策跨越多个轮次时,引用多个轮次。
- 有时间戳:
-
检查延续项(仅当设置了
previous_meeting_summary时)。仅读取该报告的“行动项”和“未决问题”表格。对于每个条目,根据本次转录判断其为“已完成”、“进行中”、“仍开放”、“已放弃”或“未提及”,并引用显示该状态的轮次。除非有人说完成,否则切勿将条目标记为“已完成”。 -
将报告写入
summary_path,使用模板。仅写正文;不要添加前言。始终填写“概览”。仅在用户指定了读者时才添加“致 <姓名>”,例如“给我,我是 Dana Ruiz”。切勿假设读者是谁。 -
标记转录说明: 可能的 ASR 错误,你通过推断映射的说话人名称,以及
gaps中的每个条目(可能缺少内容)。切勿静默纠正引用。 -
验证引用,修正或删除所有失败的行,直到通过:
python "$S\verify_quotes.py" "<summary_path>" -
完成文件包。 从会议内容中导出简短标题和 3 到 6 个主题标签(小写,短横线命名)。
transcript和meeting-notes会自动添加。python "$S\finalize_bundle.py" "<转录稿>" --summary "<summary_path>" --title "<标题>" --tags "标签一,标签二" --alias "转录中的标签=显示名称" --mentioned "姓名 (上下文)" --meeting-date YYYY-MM-DD--alias对你在步骤 4 中映射的每个说话人标签重复一次。与会者随后默认为显示名称。--mentioned对每个人重复一次。--attendee "姓名"在需要覆盖与会者列表时对每个人重复一次。--attendees "A, B (room: C, D)"同样有效,因为()或[]内的逗号不会分割。- 仅当
meeting_date为null且用户提供了日期时才传递--meeting-date。
-
在聊天中简短回报。 不要粘贴表格。
- 计数:决策、声明、行动项、未决问题以及延续项。
- “概览”中的要点。
- 任何需要人工检查的内容:推断的说话人名称、推断或未分配的所有者、缺口和 ASR 问题。
- 报告和说话轮次索引的链接。
多个转录
python "$S\scan.py" "<文件夹>" --recursive
它会列出每个转录,状态为 new、turns-only、summarized 或 not-a-transcript。向用户显示待处理的转录(new 和 turns-only),并在开始前确认。一次处理一个,按会议时间从早到晚排序,以便每个转录都能在其系列中找到上一个会议。对每个转录执行完整操作流程,并在开始下一个之前回报。
相关项目文档
如果工作区有相关的架构或计划文档(包括其他文件包的摘要文件),请填写可选的“相关项目文档”表格。注明每个条目是确认、矛盾还是扩展了这些文档的记录。
质量检查
verify_quotes.py通过,失败数为 0。- 说话人表格为说话轮次索引中的每个标签都有一行,并且每个名称映射都说明了其证据。
- 没有所有者在没有显式、自愿、委派或解释的推断证据的情况下被命名。
- 标记为“已同意”的决策显示接受信号,而不仅仅是建议。
- 观点和推测被明确标记。
- 未出席会议的所有者标记为
(未出席)。 gaps中的每个条目都出现在“转录说明”下。- 当有上一次会议时,其每个行动项和未决问题都有“延续项”行。
遗留文件包
要对齐旧文件包(例如 input.txt 与 <folder>.turns.md 相邻),先运行 python "$S\backfill.py" "<根目录>" 进行试运行,然后加上 --apply。之后对每个文件包运行 finalize_bundle.py,附带标题和标签。Backfill 不会重新生成现有的说话轮次索引,因此现有引用仍然有效。