編寫提詞機腳本
將原始素材轉換為完成、計時精確的提詞機腳本。你(代理人)負責軟性工作 — 訪談、吸收素材、撰寫散文、安排修辭暫停。確定性的工具 (tools/deck.js) 負責硬性合約工作 — 解析、計算字數、估算確切時長、組合 JSON、蓋上穩定的 ID。切勿手寫腳本 JSON;務必透過工具編譯,以確保合約和時長報告是機器可驗證的。
開始撰寫前,請先閱讀 references/format.md 以了解確切的 .deck.md 編寫格式和 pptx 萃取方法。
工作流程
1. 收集素材
詢問素材來源,然後將其吸收:
- 貼上的文字 / 筆記 — 直接使用。
- 圖片 / 螢幕截圖 — 自行閱讀圖片檔案 (使用視覺能力)。無需腳本。
- PDF — 使用 Read 工具自行閱讀 (原生 PDF 支援)。無需腳本。
- PowerPoint (.pptx) — 以使用者機器上最適合的方式將簡報轉換為文字 (請參閱
references/format.md→ 「Extracting a .pptx」):擷取每張投影片的文字 以及講者備註,然後在據此起草前檢查輸出是否正確。將檔案視為不受信任的來源;請勿提交任何您編寫的一次性萃取腳本。
當兩者都存在時,講者備註是敘述的最佳原始素材 — 優先於投影片上的要點。
2. 確認意圖與後設資料 (提問,不要假設)
根據素材提出每張投影片的骨架 — 編號、標題、type (例如 content、section-divider)、on-screen 提示 (觀眾看到的內容) 以及每張投影片的粗略 target 分鐘數 — 並請使用者確認。同時詢問:
- 總目標時長 演講的 (驅動每張投影片的目標)。
- 聽眾 / 目的 (調整語氣和深度)。
- 內容模式 — 完整敘述 (編寫口說散文) 或 提示筆記 (提供簡短的談話要點,讓講者用自己的話發揮,每個要點後留有停頓空間)。請參閱
references/format.md→ 「Content modes」。如果使用者已經要求提示/談話要點/摘要或筆記風格的腳本,請跳過此問題,直接使用提示模式編寫; 否則請詢問。 - 說話風格 / 語氣。如果使用者希望以個人部落格的語氣,提供使用者的
blacktree-voice技能;或者提供一種語氣:對話式、正式、活力型或中立。在起草時套用該語氣。(在提示模式下,語氣會影響您所寫的少量文字;其餘部分由講者現場提供。) - 語言 (預設為 en-GB 以符合儲存庫中既有腳本)。
對這些分支選擇使用 AskUserQuestion,而不是猜測。
3. 起草敘述
以選定的語氣為每張投影片編寫口說稿。在修辭需要的地方安排暫停節拍 — 在揭示之後、列表之前、主題轉換時 — 使用 [[pause]] (1秒) 或 [[pause:1.5]] (自訂)。這種語義上的安排是 你的 工作;工具僅負責驗證和報告。
在提示模式中,不要寫完整的句子:每個段落寫一個簡短的談話要點,並在每個要點結尾加上一個說話預算暫停 ([[pause:20]]–[[pause:30]] 用於實質性要點,次要的要點時間較短),調整暫停時間使其總和等於該投影片的 target。幾個要點文字在幾秒內就能讀完,因此暫停才是達到目標時長的關鍵。請參閱 references/format.md → 「Content modes」 以了解慣例,以及報告的節奏標記在此被預期且忽略的說明。
將所有內容寫入 decks/<slug>.deck.md,格式遵循 references/format.md。將每個段落視為一個邏輯節拍 (工具會折疊軟換行)。
4. 編譯
node tools/deck.js decks/<slug>.deck.md --wpm 130
此命令會寫入 decks/<slug>.json 並列印時長報告:每張投影片的字數、暫停次數與增加的時間、以參考速度估算的 m:ss、隱含的 wpm 對比 60–220 範圍、以及與每張投影片目標的差異;外加整個腳本的總時長。使用 --wpm <n> 以使用者實際閱讀的速度來報告。
選項:--fill-beats 會在段落結尾(非該投影片的最後一個段落,也不會重複現有節拍)插入一個結構性的 [[pause]]。預設為關閉 — 僅在使用者除了您編寫的節拍外還需要自動呼吸空間時使用。
5. 確認時長並迭代
向使用者展示報告。如果某張投影片超出或低於目標,修改散文 (緊湊或擴展) 或調整暫停,然後重新編譯。重複直到時間吻合。腳本 ID 是穩定的 (從標題 / meta.id 播種),因此重新編譯會原地更新同一個腳本,而不是產生重複的腳本。
6. 移交
確認最終腳本並告知使用者:
- 編譯後的腳本位於
decks/<slug>.json;可編輯的原始檔為decks/<slug>.deck.md(可隨時重新執行)。 - 使用方法:開啟應用程式 → 選單 (右下角) → 選擇檔案 並選取 JSON,或將
.json拖曳到拖放區域。decks/不會自動列出,因此必須手動載入一次;之後會在該裝置上持續存在並記住其位置。
安全機制
- 腳本 JSON 始終由
tools/deck.js產生,絕不手寫。 - 所有腳本文字透過
textContent/.value到達應用程式;但仍請保持腳本不含控制字元 (工具和Schema會進行消毒,但請保持乾淨)。 - 請勿提交任何一次性的 pptx 萃取腳本;萃取、驗證、清理。
- 暫停節拍是絕對時間 (不隨速度縮放);請審慎使用它們。