PPT 生成器(大綱 → 簡報) 是做什麼的?
產出兩份成品:一份每頁內容規格(JSON)以及——當 python-pptx 存在時——一份從該規格渲染而來的實際 .pptx 檔案。規格是真理來源;渲染只是機械過程。
輸入參數
| 參數 | 必填 | 預設值 | 說明 |
|---|---|---|---|
| topic | 是 | — | 簡報所要論證或說明的議題 |
| audience | 否 | 通用商務 | 影響語氣與深度 |
| slide_count | 否 | 10 | 含封面與封底頁 |
| style | 否 | 簡潔商務 | 例如 學術答辯 / 融資路演 / 教學課件 |
若缺少 topic,則一次性詢問:
請給出 PPT 主題與用途(彙報對象是誰)。可選告知:頁數(預設 10)、 風格(預設簡潔商務)、是否已有大綱或素材檔案。
啟動前自我檢查
python -c "import pptx; print('pptx-ok')"
- 輸出
pptx-ok→ .pptx 匯出功能啟用(步驟 3a)。 - ModuleNotFoundError → 降級到 markdown 路徑(步驟 3b)。告知使用者一行提示:
pip install python-pptx可於下次啟用直接 .pptx 匯出。除非使用者明確同意,否則請勿自行安裝。
工作流程
步驟 1:大綱
依此順序組織論述(而非主題):鉤子開場(一個問題或反直覺事實)→ 全局地圖 → 核心論點 2–3 個(每個附證據/案例)→ 反駁或邊界 → 行動呼籲。 預期:編號大綱,每張投影片只陳述一個主張。
步驟 2:逐頁規格
撰寫 slides_spec.json:
{
"deck_title": "...",
"slides": [
{"title": "...", "bullets": ["<=18字/條,最多5條"], "notes": "講稿口語版", "visual": "圖表/截圖/留白提示"}
]
}
規則:title ≤ 16 字且包含觀點(不是「介紹」這類空詞);notes 必須是能照著說的完整句子。
步驟 3a:渲染 .pptx(pptx 可用)
python "<skill-dir>/scripts/make_pptx.py" slides_spec.json deck.pptx
預期:exit 0 且輸出 wrote deck.pptx (N slides)。Exit 3 表示缺少 python-pptx → 退回步驟 3b 並告知使用者原因。Exit 2 表示規格無效——閱讀印出的錯誤,修正 slides_spec.json,重新執行。
步驟 3b:降級交付物
輸出 deck_outline.md:H1 簡報標題,H2 每張投影片附帶條列與講稿備註。使用者可貼入任何工具。
步驟 4:交付前自我審查
檢查:每頁只講一個論點;無超過 5 條 bullet;每頁 visual 有具體提示;notes 總詞量支撐目標時間(約 1 分鐘/頁)。在規格中修正違規後重新渲染,而非直接修改文字。
錯誤處理
| 症狀 | 可能原因 | 處理方式 |
|---|---|---|
| 腳本 exit 2 並列出第 N 頁 | spec 結構違規 | 依步驟 2 的格式修正該頁欄位 |
| 腳本 exit 3 | python-pptx 缺失 | 切換至步驟 3b,提供 pip 提示 |
| bullet 持續超過 18 字 | 大綱過於密集 | 將該頁拆分為兩頁,重新渲染 |
| 使用者想要公司範本 | 風格不在 v1 範圍內 | 交付規格 + outline.md 供手動調整 |
交付標準
成功 = 交付 deck.pptx(可開啟,N 頁符合規格)或 deck_outline.md,加上 slides_spec.json,並報告三個檔案的路徑與頁數。否則即未完成——請如實告知。
參考資料
scripts/make_pptx.py— 執行(而非讀取);會先驗證規格再進行渲染