Communitygithub.com

mhashim6/teleprompter

提詞機技能,可逐字突出顯示腳本、支援暫停節拍、雙重主題與每組記憶。具備代理人編寫技能。

teleprompter 是什麼?

這是一個專為 AI 代理人(例如 Claude Code 或 Cursor)設計的提詞機編寫技能。它能將原始素材(文字、圖片、PDF 或 PowerPoint 簡報)轉換為結構化、計時精確的提詞機腳本。代理人負責創意工作:訪談、撰寫敘述、安排修辭上的暫停。而 `tools/deck.js` 工具則負責機械性的工作:解析格式、計算字數與預估時間、產生 JSON 檔案,並確保時間估算的準確性。 該技能支援兩種內容模式:**完整敘述**(編寫完整口說稿)和**提示筆記**(提供簡短要點,讓講者現場發揮)。使用者可以指定總時長、語氣風格(如對話式、正式或活力型)以及語言。代理人會根據這些設定編寫腳本,並在需要的地方加入 `[[pause]]` 標記來控制節奏。編譯後會產生詳細的時間報告,顯示每張投影片與目標時長的差距,讓使用者可以反覆調整直到時間吻合。 此技能支援跨平台使用,編譯後的 JSON 檔可匯入提詞機應用程式,並在裝置上保留播放進度。同時內建安全機制:所有腳本都必須透過工具編譯,避免手動編輯 JSON 造成的錯誤;處理 PowerPoint 檔案時也會提醒使用者注意安全性。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add mhashim6/teleprompter

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

編寫提詞機腳本

將原始素材轉換為完成、計時精確的提詞機腳本。你(代理人)負責軟性工作 — 訪談、吸收素材、撰寫散文、安排修辭暫停。確定性的工具 (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 萃取腳本;萃取、驗證、清理。
  • 暫停節拍是絕對時間 (不隨速度縮放);請審慎使用它們。

相關技能