px-summarize-transcript 是做什麼的?
將會議記錄轉換成有證據支援的記錄,包含決議事項、重要事實陳述以及後續負責人。每個項目均標示發言者、時間戳(若記錄有提供)與逐字引用。Python 腳本負責機械性工作(解析、檔案命名、前置資料與引用檢查),您則負責推理判斷。
使用時機
- 當有
.vtt、貼上到.txt或.md的 Teams 會議記錄、[發言者] YYYY-MM-DD HH:MM:SS格式的 Markdown 記錄,或是姓名: 內容行需要萃取出決策與行動項目時。 - 有人問誰說了什麼、同意什麼、或誰負責後續追蹤時。
- 有人問在週期性會議系列中,前次會議未解決的事項時。
- 需要將會議結果與專案文件核對時。
組合包佈局(固定)
所有檔案均放置在會議記錄本身的資料夾中,並共用相同的檔案名稱,僅副檔名不同。您不能寫到其他位置。如果使用者要求另一個資料夾,請解釋組合包必須與其會議記錄共存。file_transcript.py 可將整個組合包移到系列資料夾中,且所有元件一定會一起移動。
| 檔案 | 角色 |
|---|---|
<基底>.vtt / .txt / .md | 原始會議記錄。.md 與 .txt 會就地合併前置資料;既有的鍵值絕不修改。 |
<基底>.source.md | 僅限 .vtt:一個小型 Markdown「側車」檔案,用來存放 .vtt 的前置資料,因為 .vtt 檔案開頭必須是 WEBVTT,無法直接包含前置資料。 |
<基底>.turns.md | 發言索引。建立後絕不重寫,除非您傳入 --rebuild。 |
<基底>.summary.md | 報告。重新執行會寫入 <基底>.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 "<根目錄>"重複使用合適的現有系列。若無合適的系列,請提出簡短的 kebab-case 名稱並在使用者確認後才建立。然後根據
status執行對應動作:moved:使用新的source路徑繼續。already-filed:會議記錄已在根目錄下的某個資料夾內,或已在以系列命名的資料夾內。未移動任何檔案,因此請繼續。duplicate:相同的會議記錄已存在於duplicate_of。停止並詢問使用者要處理哪一份副本。請勿刪除任一檔案。conflict(結束代碼 2):系列資料夾中已有同名但內容不同的檔案。停止並詢問使用者。
-
建立發言索引。
python "$S\build_turns.py" "<會議記錄>"它會偵測格式,在
<基底>.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" "<摘要路徑>" -
完成組合包。 從會議內容衍生出簡短標題以及 3 到 6 個主題標籤(小寫、kebab-case)。
transcript與meeting-notes會自動加入。python "$S\finalize_bundle.py" "<會議記錄>" --summary "<摘要路徑>" --title "<標題>" --tags "標籤一,標籤二" --alias "記錄中的標籤=顯示名稱" --mentioned "姓名(脈絡)" --meeting-date YYYY-MM-DD- 步驟 4 中您對應的每個發言者標籤,使用
--alias重複一次。出席者則預設為顯示名稱。 - 每位人員使用
--mentioned重複一次。 - 當您需要覆蓋出席者清單時,對每位人員使用
--attendee "姓名"重複一次。--attendees "A, B (room: C, D)"也可運作,因為()或[]內的逗號不會造成分割。 - 僅在
meeting_date為null且使用者提供日期時,才傳入--meeting-date。
- 步驟 4 中您對應的每個發言者標籤,使用
-
在聊天中簡短回報。請勿貼出表格。
- 計數:決策、陳述、行動項目、待解決問題,以及遺留事項。
- 「一覽」的項目符號。
- 任何需要人工檢查的項目:推斷的發言者名稱、推斷或未指派的負責人、缺口,以及 ASR 注意事項。
- 報告與發言索引的連結。
多份會議記錄
python "$S\scan.py" "<資料夾>" --recursive
它會列出每份會議記錄的狀態:new、turns-only、summarized 或 not-a-transcript。向使用者顯示待處理的項目(new 與 turns-only)並在開始前獲得確認。一次處理一份,以最舊的會議優先,這樣每個項目才能在其系列中找到前次會議。對每一份執行完整程序並回報,然後才開始下一份。
相關專案文件
如果工作區有相關的架構或規劃文件(包含其他組合包的摘要檔案),請填入選擇性的「相關專案文件」表格。註明每個項目是確認、矛盾、還是延伸了這些文件的記錄。
品質檢查
verify_quotes.py通過且失敗數為 0。- 發言者表格為發言索引中的每個標籤都有一行,且每個名稱對應都有其證據說明。
- 沒有負責人是未經明確、自願、委派或經解釋的推斷證據而命名。
- 標記為「已同意」的決策顯示接受訊號,而非僅是建議。
- 意見與推測已明確標示。
- 未出席會議的負責人標記為
(未出席)。 gaps中的每個項目都出現在「轉錄注意事項」下。- 當有前次會議時,其每個行動項目與待解決問題都有一行「遺留事項」。
舊版組合包
若要對齊舊版組合包(例如 input.txt 與 <資料夾>.turns.md 並存),請執行 python "$S\backfill.py" "<根目錄>" 進行試執行,然後使用 --apply。接著對每個組合包執行 finalize_bundle.py 並提供標題與標籤。Backfill 絕不會重新產生現有的發言索引,因此現有的引用會保持有效。