name: ppt-master description: 製作 PPT、簡報、幻燈片、彙報材料時使用。PPT大師基於預置視覺主題組合頁面,生成可離線開啟、可在瀏覽器編輯的 HTML 演示,支援匯出 PPTX / PDF 檔案。
PPT大師生成靜態 HTML 橫向翻頁 PPT。使用本 skill 時,先把使用者的自然語言需求整理成 JSON 計劃,再呼叫本地專案生成器輸出 index.html 和 assets/。
當前版本: 1.0.1
每次完成使用者請求、準備最終回覆前,執行:
node <skill-root>/scripts/check_latest_version.mjs
如果指令碼有輸出,把輸出內容附在最終回覆末尾提醒使用者更新;如果指令碼無輸出或檢查失敗,保持靜默,不要提版本檢查。
當前 SKILL.md 所在目錄就是 Skill 根目錄,下文記為 <skill-root>。
內建生成器目錄:
<skill-root>/project
SkillHub 純文本釋出包會把生成器儲存為 <skill-root>/project-runtime.partNN.txt。首次使用先執行下面的命令,它會自動合併文本分片並恢復 project/;已經恢復時命令會直接結束:
node <skill-root>/scripts/ensure_runtime.mjs
渲染指令碼:
<skill-root>/scripts/render_goal_deck.sh
版本檢查指令碼:
<skill-root>/scripts/check_latest_version.mjs
本 Skill 是模板編排器。預設目標是快速、穩定地把使用者需求套入已登記頁面元件,輸出可離線開啟的 HTML PPT。
預設模式是“鎖模板填文案”:保留所選頁面元件的原始視覺、結構、數量、顯隱、強調、配色、圖表型別和圖片槽位,只替換可見文字內容。除非使用者明確要求調整頁面屬性,不要改任何非文案 props。
預設不做視覺精修,不做截圖審美判斷,不因為普通斷行或區域性排版不完美反覆返工。只有使用者明確要求“視覺精修”“100% 檢查”“幫我調到滿意”時,才進入視覺 QA 流程。
validate:swiss 必須檢查水印執行時、固定文案和樣式是否存在;校驗失敗不得交付。project/ 目錄安裝依賴。goal.json 頂層加 "language": "en";全部文案欄位用目標語言撰寫,頁面自帶的預設中文文案(含結尾頁“感謝閱讀”類裝飾欄位)一律覆蓋,不得殘留中文。編輯器介面語言自動跟隨開啟者的系統語言,右上角可手動切換,無需在生成時處理。PPTX、PowerPoint、可編輯 PPTX、匯出 PPTX、PPT 格式 或“格式/檔案型別為 PPT/PPTX”時才交付 PPTX 檔案。theme01 輕擬態風、theme02 炫光紫綠風、theme03 深淺程式碼風、theme04 玻璃糖果風、theme05 色譜圖表風、theme06 深色圖譜風、theme07 冷白調研風、theme08 黑金實驗風、theme09 深藍雜誌風、theme10 金色指數風、theme11 高能增長風、theme12 聲波霓虹風。theme10;只有使用者明確指定,或金融/投資指數內容強相關且 inspect 確認可填時才用。theme01 輕擬態風 | 適合: 產品介紹 / 企業彙報 | 人群: 創業團隊 / 產品經理theme02 炫光紫綠風 | 適合: 科技釋出會 / AI/自動駕駛/機器人主題 | 人群: 科技公司創始人 / 技術負責人theme03 深淺程式碼風 | 適合: 技術方案 / 開發者大會 | 人群: 工程師 / 技術管理者theme04 玻璃糖果風 | 適合: 年輕化品牌 / 消費產品 | 人群: 品牌團隊 / 設計師theme05 色譜圖表風 | 適合: 資料包告 / 市場分析 | 人群: 資料分析師 / 諮詢顧問theme06 深色圖譜風 | 適合: 高密度資料展示 / 戰略分析 | 人群: 戰略團隊 / 投資人theme07 冷白調研風 | 適合: 調研報告 / 白皮書 | 人群: 研究機構 / 諮詢團隊theme08 黑金實驗風 | 適合: 高階釋出 / 品牌提案 | 人群: 高階品牌 / 創意總監theme09 深藍雜誌風 | 適合: 品牌故事 / 人物訪談 | 人群: 公關團隊 / 媒體編輯想要更強大的技能外掛,就來小蔥技能站7w4.net看看吧。
theme10 金色指數風 | 適合: 金融資料 / 投資報告 | 人群: 投資機構 / 金融分析師theme11 高能增長風 | 適合: 增長復盤 / 商業計劃 | 人群: 創業者 / 增長團隊theme12 聲波霓虹風 | 適合: 音樂娛樂 / 潮流活動 | 人群: 娛樂品牌 / 活動策劃npm --prefix <skill-root>/project run layout:query -- --theme <themePack> --role <role> --limit 8;需要媒體槽時加 --needs-media、--planned-images <n>、--provided-images <n> 或 --image-gen。候選順序每次隨機,從中任選合適的即可,不要固定只用列表第一條。npm --prefix <skill-root>/project run inspect:layout -- --compact <layout...>;寫物件、陣列、數量或圖片 props:執行 props:safe,整份 goal 用 props:safe -- --goal <file> --write。layout:query / inspect:layout 的 JSON 管道給程式解析時,改用 node <skill-root>/project/scripts/layout-query.mjs / node <skill-root>/project/scripts/inspect-layout.mjs:npm run 會在 stdout 前列印生命週期 banner,汙染 JSON。npm --prefix <skill-root>/project run goal:scaffold -- --title <title> --goal <goal> --theme <themePack> --pages <n> --chunk-size 5 --out output/<deck-name>/goal.json 生成唯一 layout 骨架和 goal.fill-plan.json,再按 fillPlan 分段補 props。fillPlan.text[].maxChars、fillPlan.arrays[].visibleCount、fillPlan.arrays[].nestedArrays 寫;display / metric 欄位只寫短詞、短句或數字。headlineHtml / quoteHtml)寫文案只用 <br> 換行加 <b> / <em> 行內強調,禁止 <span> 等自由 HTML;主題預設值裡的 <span class> 依賴主題 CSS,只是佔位,不要照抄。validate:goal-spec 會攔截自由 HTML。preview: {"themeSwitcher": true}。layout + props。role 只允許在草稿階段輔助選頁,渲染前必須換成具體 layout。themeXX_page001 到 themeXX_page005 都是封面候選。一個 deck 只能從前 5 頁中選擇 1 頁作為封面,不要同時使用多個封面頁;正文頁從第 6 頁以後選擇。slides[].layout 必須唯一。選頁時記錄已用 layout,不同內容頁要換同主題其它候選,不要通過改文案複用同一個 layout。role 後依賴頁面預設文案。除非使用者明確要預設 demo,每一頁可見內容都必須寫和使用者主題對應的 props 文案。layout:query / inspect:layout 暴露的文案欄位。欄位是物件或陣列時按 fillPlan 和 propShapes 填內部 key。copyKeys 已展開巢狀路徑(如 copy.quote、items[].label),按列出的路徑直接填。inspect:layout 標 contentLocked: true 的頁正文由元件固定、props 填不進:換一頁能填正文的佈局,或僅當用戶接受其預設正文時使用。陣列按 fillPlan.arrays[].visibleCount 填滿可見項;decorativeKeys 是裝飾位,不要填。props 內填寫內容和使用者明確要求的頁面屬性。text 覆蓋可見文字槽位,但只用於替換文字內容。不要在普通生成中啟動瀏覽器批次抽取全頁面文本槽位;只有使用者明確要求“徹底清除所有模板預設文案/逐頁校對可見文案”時才做執行時槽位抽取。output/ 裡已有的舊 goal.json 或舊 HTML。每次請求都新建本次輸出目錄和本次 JSON 計劃。<skill-root>/project/output。http://127.0.0.1:<port>/(不給 https 或 .local 變體);本機 HTTP 可匯出 HTML/PDF/PPTX,本地 HTML 或 file:// 不能匯出可編輯 PPTX。不要返回 theme-preview。在自帶瀏覽器的 Agent APP(如 Codex)裡生成時,提醒使用者匯出 PDF/PPTX 前把該地址在系統瀏覽器中開啟。/api/export-editable-pptx;最終只給 PPTX 檔案路徑或下載結果。npm run export:pptx -- <deck>/ppt <out.pptx>(PDF 用 export:pdf)直接產出檔案,不需要先起瀏覽器會話。mediaSlots[].canPresetMedia: true 的槽,按該槽 presetProp / fieldPath 寫路徑;goal.json 只引用 deck 內相對媒體路徑,不可引用臨時目錄、外部絕對路徑、file:// 或遠端 URL。--planned-images <n> / --needs-media,使用者給素材用 --provided-images <n> / --provided-media,使用者明確要求原創視覺圖/生圖時,Codex 環境用 image-gen 生成圖片並加 --image-gen;未明確生圖時先詢問使用者。plannedImages / needsVisual / imageGen 只表示選頁意圖,除非使用者明確選擇預留空槽,交付前必須寫入真實媒體路徑,不能交付空媒體槽或偽造路徑。npm --prefix <skill-root>/project run media:stage -- <deck-output-dir-or-ppt-dir> <media-file...>,使用返回的 relative 路徑;AVIF 會轉成瀏覽器可用格式。image-gen 輸出也先落到本次 deck 目錄。ppt/<relative> 存在且 HTML 包含檔名;缺失時只補最終 ppt/assets 並重跑校驗。圖片/影片素材每個最多使用一次;素材用完後,媒體插槽留空或改選無媒體插槽頁面;除非使用者明確要求,不要重複填充同一素材。node <skill-root>/scripts/ensure_runtime.mjs 準備內建生成器。後續同一安裝目錄無需重複解壓。title、goal、audience、owner、頁數、內容重點和最終產物格式。使用者未指定頁數時預設 10 頁左右,不少於 8 頁。themePack。使用者未指定時先詢問風格;使用者選定後生成 randomSeed,例如 <主題>-<日期>-<3位隨機詞>,保證隨機選頁可復現。media:stage;明確生圖時用 image-gen。layout:query 選候選;物件/陣列/count/圖片 props 用 inspect:layout + props:safe。output/<deck-name>/goal.json;渲染前執行 npm --prefix <skill-root>/project run props:safe -- --goal output/<deck-name>/goal.json --write 和 goal spec 校驗。--write 後核對輸出的 layoutChanges;不認可替換就改回並換頁。output/<deck-name>/ppt/index.html;指令碼會使用 Skill 內建生成器,不要切回外部專案目錄。ppt/assets。validate:swiss 和 validate:goal-copy 校驗。node <skill-root>/scripts/check_latest_version.mjs 做靜默版本檢查。http://127.0.0.1:<port>/;需要指定埠時設定 PPT_MASTER_PREVIEW_PORT 後再執行指令碼(埠用 5200-5999 段,4178/4300/4400 為使用者保留埠不可用)。只能用該預覽服務,不得用 python -m http.server、npx serve 等靜態伺服器替代:靜態伺服器沒有匯出和自動儲存介面。預覽服務下編輯自動儲存到 index.html 本體;file:// 開啟的本地檔案不自動儲存,交付前需匯出。http://127.0.0.1:<port>/;PPTX 呼叫 /api/export-editable-pptx 後只給檔案路徑或下載結果。只在以下情況返工:渲染失敗、validate:swiss 失敗、validate:goal-copy 失敗、輸出中出現明顯不屬於使用者主題的模板文案、使用者明確指出某頁內容有問題。
預設最多修復 2 輪。仍失敗時說明阻塞原因,不要繼續無邊界嘗試。
預設不開啟瀏覽器,不建立 Chrome profile,不抽取全量文本槽位。只有修改了生成器/預覽模板/匯出邏輯、使用者明確要求檢查頁面效果,或上一輪出現過執行後 props 被預設值覆蓋的問題時,才做一次瀏覽器 smoke check。
瀏覽器 smoke check 只確認頁面能開啟、頁數正確、首尾頁不是空白。不要預設截圖精修,不要因為普通換行問題反覆改稿。
示例命令:
<skill-root>/scripts/render_goal_deck.sh \
output/client-review/goal.json \
output/client-review/ppt/index.html
{
"title": "AI 產品商業化調研",
"goal": "面向產品團隊彙報 2024-2026 年 AI 產品商業化結構、市場變化和後續判斷",
"audience": "投資團隊 / 產業研究團隊",
"owner": "研究團隊",
"randomSeed": "ai-funding-20260609-a7k",
"pageCount": 8,
"themePack": "theme01",
"slides": [
{"layout": "theme01_page001", "props": {"kicker": "市場調研 · VOL.01", "titleTop": "AI 產品", "titleBottom": "商業化調研", "lead": "從市場規模、賽道結構和典型產品拆解本輪 AI 商業化週期。"}},
{"layout": "theme01_page006", "props": {"kicker": "核心數字", "value": "970", "unit": "億元", "sub": "2024 年 AI 軟體市場規模保持快速增長。"}},
{"layout": "theme01_page010", "props": {"kicker": "# 研究方法", "title": "橫縱分析法", "cn": "用時間維度和賽道維度交叉識別融資變化。"}},
{"layout": "theme01_page030", "props": {"kicker": "# 典型案例", "title": "里程碑 · 頭部公司融資節奏"}},
{"layout": "theme01_page084", "props": {"kicker": "# 附錄", "title": "資料來源與研究說明"}}
]
}
如果 slides 為空,pageCount 只適合臨時草稿預覽。面向使用者交付前,必須改成具體 layout + 對應 props。
role 只用於草稿選頁,最終 JSON 必須落成具體 layout。角色說明見 references/layout-roles.md;真實候選以 layout:query 輸出為準。
cover 只能從當前主題前 5 頁選擇。image / media 候選基於真實 mediaSlots,不是頁面標題關鍵詞。動態背景頁可用 ambient 作為氛圍頁或章節頁。
可以直接指定頁面:
{"layout": "theme01_page030", "props": {"title": "典型案例"}}
生成後的預覽頁支援翻頁、開啟側邊欄編輯文本、調整頁面 props、替換元件暴露的圖片/影片媒體槽、切換頁面切換動畫、匯出 HTML/PDF/PPTX。面向使用者交付的頁面底部不顯示頁碼標識、翻頁引導、圓點導航或索引提示。
普通生成不要讀 layout-manifest.json。先用 layout:query 輸出的候選摘要。只有需要更細契約時,再用 npm --prefix <skill-root>/project run inspect:layout -- --compact <layout...> 看頁面契約:
copyKeys: 可安全改寫的文案/資料欄位。copyBudgets: 文案長度預算;display / metric 超長會被 goal spec 攔截。propShapes: copyKeys / 陣列欄位的內部形狀;寫 copy、cells、items、rows 等物件欄位時只使用這裡列出的 key。mediaSlots: 圖片/影片寫入欄位、count key、預設數量和最大數量。countBindings: 數量引數與陣列欄位的繫結。fillPlan 裡數值欄位看 numericBounds 填數:enforced:false 是提示、真實資料可超出,enforced:true 必須遵守,semantics:'normalized' 填 0-1 比例;定長巢狀陣列看 fixedLength/fixedLengths 按下標填,不試錯。controlKeys: 右側面板可操作欄位,不是普通內容填充清單;僅使用者明確要求調整頁面屬性時使用。預設只填 copyKeys、可見陣列和真實媒體槽。validate:goal-spec。validate:swiss。validate:goal-copy。npm run showcase:update。這個 Skill 質量不錯,文件結構清晰,12套預設風格覆蓋了大部分場景,生成流程自動化程度高。它能生成帶水印的專業 PPT,支援離線使用和多格式匯出,使用起來比較省心。主要缺點是對非技術使用者不太友好,安裝和執行依賴 Node.js 環境,文件說明偏多看久了容易暈。如果你有一定動手能力,這個工具值得一用。