PPT可編輯大師

👤 Mic 📦 v1.0.0 ⭐ 4.6 ⬇️ 1.8K 下載
📄 辦公效率 免費

📖 技能介紹


name: ppt-master description: 製作 PPT、簡報、幻燈片、彙報材料時使用。PPT大師基於預置視覺主題組合頁面,生成可離線開啟、可在瀏覽器編輯的 HTML 演示,支援匯出 PPTX / PDF 檔案。


PPT大師

PPT大師生成靜態 HTML 橫向翻頁 PPT。使用本 skill 時,先把使用者的自然語言需求整理成 JSON 計劃,再呼叫本地專案生成器輸出 index.htmlassets/

版本

當前版本: 1.0.1

每次完成使用者請求、準備最終回覆前,執行:

node <skill-root>/scripts/check_latest_version.mjs

如果指令碼有輸出,把輸出內容附在最終回覆末尾提醒使用者更新;如果指令碼無輸出或檢查失敗,保持靜默,不要提版本檢查。

Skill 目錄

當前 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 流程。

品牌署名規則

  • 每張幻燈片右下角必須顯示固定署名水印“PPT大師”。
  • 水印由 Skill 模板自動注入,必須隨 HTML、PDF 和可編輯 PPTX 一併匯出。
  • 不得改成其他姓名、賬號、課程名稱或原 Skill 作者資訊。
  • 預覽控制面板不得顯示原作者署名、社媒連結或推廣入口。
  • validate:swiss 必須檢查水印執行時、固定文案和樣式是否存在;校驗失敗不得交付。

使用規則

  • 執行生成器需要 Node.js 18+ 和 npm;首次生成時渲染指令碼會在 Skill 內建 project/ 目錄安裝依賴。
  • 風格選擇提問:在使用者可見回覆中列出當前 12 套風格和極簡“適合/人群”,不能只在內部進度提示中提到風格。純文本釋出包不依賴風格預覽圖片。
  • 開工前確認兩件事:主題風格、是否需要圖片/影片。使用者未明確表達且非整體委託時,先提問等答覆,不得代選;無法提問的環境(指令碼/批處理)才自選,並在交付說明中列出所選與理由。
  • 委託模式:僅當用戶對整體明確委託(“都你來定”“不用問,直接開幹”)時,才自選主題、預設 HTML、預設不使用 image-gen,最終說明假設。使用者只說內容/文案“隨意”“自擬”時,僅自擬內容;風格、頁數、媒體等已給的不得擅自改變,未給的按上一條先問。
  • 非互動/一次性執行(無法追問)時:未指定風格按內容主題自選已驗收主題;無真實素材且不能生圖時優先選無媒體頁,不調 image-gen;最終說明全部假設。
  • Deck 語言跟隨使用者溝通語言:非中文使用者在 goal.json 頂層加 "language": "en";全部文案欄位用目標語言撰寫,頁面自帶的預設中文文案(含結尾頁“感謝閱讀”類裝飾欄位)一律覆蓋,不得殘留中文。編輯器介面語言自動跟隨開啟者的系統語言,右上角可手動切換,無需在生成時處理。
  • 交付格式:預設 HTML;“生成 PPT”“做 PPT”“做一個 PPT”“製作 ppt”表示 PPT 呈現形態。只有明確 PPTXPowerPoint可編輯 PPTX匯出 PPTXPPT 格式 或“格式/檔案型別為 PPT/PPTX”時才交付 PPTX 檔案。
  • PPTX 檔案:仍先生成 HTML 並啟動本機預覽服務,再呼叫本機 HTTP 匯出服務;最終只給 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 聲波霓虹風 | 適合: 音樂娛樂 / 潮流活動 | 人群: 娛樂品牌 / 活動策劃
  • 不使用舊 token、舊主題、舊媒體槽、舊風格分支或舊入場動畫控制。
  • 選頁先用 npm --prefix <skill-root>/project run layout:query -- --theme <themePack> --role <role> --limit 8;需要媒體槽時加 --needs-media--planned-images <n>--provided-images <n>--image-gen。候選順序每次隨機,從中任選合適的即可,不要固定只用列表第一條。
  • 欄位不清楚、物件/陣列/count、圖片/媒體:先執行 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。
  • 長 deck:先用 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[].maxCharsfillPlan.arrays[].visibleCountfillPlan.arrays[].nestedArrays 寫;display / metric 欄位只寫短詞、短句或數字。
  • Html 欄位(如 headlineHtml / quoteHtml)寫文案只用 <br> 換行加 <b> / <em> 行內強調,禁止 <span> 等自由 HTML;主題預設值裡的 <span class> 依賴主題 CSS,只是佔位,不要照抄。validate:goal-spec 會攔截自由 HTML。
  • 可見陣列項必須寫實文案;被 count/顯隱控制隱藏的尾項可保留“請輸入文本”佔位。
  • 元素出現動畫使用頁面元件自帶的原生效果。
  • 頁面切換動畫可以在預覽控制面板裡調整。
  • 面向使用者交付的 deck 預設不顯示風格/主題切換選項;風格切換隻保留在內部除錯 demo 頁面。使用者明確要求保留主題切換時,在 goal 頂層寫 preview: {"themeSwitcher": true}
  • 不手寫自由 HTML slide;面向使用者交付的每頁必須寫 layout + propsrole 只允許在草稿階段輔助選頁,渲染前必須換成具體 layout
  • 每套主題的前 5 頁 themeXX_page001themeXX_page005 都是封面候選。一個 deck 只能從前 5 頁中選擇 1 頁作為封面,不要同時使用多個封面頁;正文頁從第 6 頁以後選擇。
  • 同一套 PPT 中不要出現重複的頁面元件:最終 slides[].layout 必須唯一。選頁時記錄已用 layout,不同內容頁要換同主題其它候選,不要通過改文案複用同一個 layout。
  • 面向使用者交付的 deck 不能只寫 role 後依賴頁面預設文案。除非使用者明確要預設 demo,每一頁可見內容都必須寫和使用者主題對應的 props 文案。
  • 優先只寫 layout:query / inspect:layout 暴露的文案欄位。欄位是物件或陣列時按 fillPlanpropShapes 填內部 key。copyKeys 已展開巢狀路徑(如 copy.quoteitems[].label),按列出的路徑直接填。
  • inspect:layoutcontentLocked: true 的頁正文由元件固定、props 填不進:換一頁能填正文的佈局,或僅當用戶接受其預設正文時使用。陣列按 fillPlan.arrays[].visibleCount 填滿可見項;decorativeKeys 是裝飾位,不要填。
  • 不要改頁面後設資料、元件原始碼、className、CSS、樣式欄位或預設視覺結構來完成內容填充。只在 props 內填寫內容和使用者明確要求的頁面屬性。
  • 允許用頂層 text 覆蓋可見文字槽位,但只用於替換文字內容。不要在普通生成中啟動瀏覽器批次抽取全頁面文本槽位;只有使用者明確要求“徹底清除所有模板預設文案/逐頁校對可見文案”時才做執行時槽位抽取。
  • 禁止複用 output/ 裡已有的舊 goal.json 或舊 HTML。每次請求都新建本次輸出目錄和本次 JSON 計劃。
  • 輸出目錄寫在當前會話工作目錄,不要寫入 <skill-root>/project/output
  • HTML 交付:給使用者的預覽地址只給 http://127.0.0.1:<port>/(不給 https 或 .local 變體);本機 HTTP 可匯出 HTML/PDF/PPTX,本地 HTML 或 file:// 不能匯出可編輯 PPTX。不要返回 theme-preview。在自帶瀏覽器的 Agent APP(如 Codex)裡生成時,提醒使用者匯出 PDF/PPTX 前把該地址在系統瀏覽器中開啟。
  • PPTX 交付:呼叫 /api/export-editable-pptx;最終只給 PPTX 檔案路徑或下載結果。
  • 無瀏覽器會話、指令碼直調、或預覽匯出介面返回 403/5xx 時:改用 npm run export:pptx -- <deck>/ppt <out.pptx>(PDF 用 export:pdf)直接產出檔案,不需要先起瀏覽器會話。
  • 如果輸出正文裡出現與使用者主題無關的預設文案,例如 AI Capital / 投融資 / SoundWave / 聲浪 / Key Metrics / Roadmap / End of Report 等,必須重寫 JSON 後重新渲染,不能交付。

媒體工作流

  • 媒體欄位只寫 mediaSlots[].canPresetMedia: true 的槽,按該槽 presetProp / fieldPath 寫路徑;goal.json 只引用 deck 內相對媒體路徑,不可引用臨時目錄、外部絕對路徑、file:// 或遠端 URL。
  • 視覺素材任務先判斷意圖:無圖但需要視覺素材時先問是否預留圖片槽;無真實素材且不能生圖時優先選無媒體頁。使用者提供素材庫/素材目錄路徑即視為有圖意圖:至少選 2 個帶媒體槽頁面並填入合適素材。素材路徑不可訪問時改選無媒體頁並在交付說明中告知,不在頁面內留佔位提示文字。使用者同意用 --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 目錄。
  • 渲染後核對 goal 引用的每個圖片/影片:ppt/<relative> 存在且 HTML 包含檔名;缺失時只補最終 ppt/assets 並重跑校驗。圖片/影片素材每個最多使用一次;素材用完後,媒體插槽留空或改選無媒體插槽頁面;除非使用者明確要求,不要重複填充同一素材。
  • 需要 image-gen 生成 2 張以上獨立圖片時,用多個 subagent 並行生成,不要序列逐張等待;每張圖獨立生成,不要用一張拼圖/素材板再拆分。subagent 只用於生圖,不用於選題、文案、選頁或校驗。

工作流

  1. 執行 node <skill-root>/scripts/ensure_runtime.mjs 準備內建生成器。後續同一安裝目錄無需重複解壓。
  2. 提煉使用者目標: titlegoalaudienceowner、頁數、內容重點和最終產物格式。使用者未指定頁數時預設 10 頁左右,不少於 8 頁。
  3. 確認 themePack。使用者未指定時先詢問風格;使用者選定後生成 randomSeed,例如 <主題>-<日期>-<3位隨機詞>,保證隨機選頁可復現。
  4. 判斷圖片意圖:無圖但需要視覺素材時先問是否預留圖片槽;使用者給本地素材先 media:stage;明確生圖時用 image-gen。
  5. layout:query 選候選;物件/陣列/count/圖片 props 用 inspect:layout + props:safe
  6. 每頁只承載一個主要資訊角色。無法安全覆蓋的頁面優先換 layout,不要改樣式欄位硬湊。
  7. 把 JSON 寫入本次工作目錄的 output/<deck-name>/goal.json;渲染前執行 npm --prefix <skill-root>/project run props:safe -- --goal output/<deck-name>/goal.json --write 和 goal spec 校驗。--write 後核對輸出的 layoutChanges;不認可替換就改回並換頁。
  8. 圖表頁填入自己的資料後,頁內 insight/讀圖/結論類文案欄位必須據新資料一併改寫,不保留預設結論。
  9. 執行渲染指令碼輸出 output/<deck-name>/ppt/index.html;指令碼會使用 Skill 內建生成器,不要切回外部專案目錄。
  10. 渲染後核對素材路徑,缺失時補最終 ppt/assets
  11. 確認指令碼完成 validate:swissvalidate:goal-copy 校驗。
  12. 執行 node <skill-root>/scripts/check_latest_version.mjs 做靜默版本檢查。
  13. 渲染指令碼會啟動本地 HTTP 預覽服務並輸出 http://127.0.0.1:<port>/;需要指定埠時設定 PPT_MASTER_PREVIEW_PORT 後再執行指令碼(埠用 5200-5999 段,4178/4300/4400 為使用者保留埠不可用)。只能用該預覽服務,不得用 python -m http.servernpx serve 等靜態伺服器替代:靜態伺服器沒有匯出和自動儲存介面。預覽服務下編輯自動儲存到 index.html 本體;file:// 開啟的本地檔案不自動儲存,交付前需匯出。
  14. 按交付格式回覆:HTML 只給 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

JSON 結構

{
  "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 / 陣列欄位的內部形狀;寫 copycellsitemsrows 等物件欄位時只使用這裡列出的 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
  • 改動展示 demo 後執行 npm run showcase:update

🤖 AI 評測

這個 Skill 質量不錯,文件結構清晰,12套預設風格覆蓋了大部分場景,生成流程自動化程度高。它能生成帶水印的專業 PPT,支援離線使用和多格式匯出,使用起來比較省心。主要缺點是對非技術使用者不太友好,安裝和執行依賴 Node.js 環境,文件說明偏多看久了容易暈。如果你有一定動手能力,這個工具值得一用。

📊 多維度評分

適應性4.8
規範性4.2
有效性4.7
可靠性4.7
可信度5

📁 包含檔案 (16 個)

📄 README.md 4.5 KB
📄 SKILL.md 19.3 KB
📄 agents/openai.yaml 235 B
📄 project-runtime.part01.txt 1.2 MB
📄 project-runtime.part02.txt 1.2 MB
📄 project-runtime.part03.txt 1.2 MB
📄 project-runtime.part04.txt 1.2 MB
📄 project-runtime.part05.txt 248.4 KB
📄 references/examples/annual-review.json 1.9 KB
📄 references/examples/portfolio.json 1.1 KB
📄 references/goal-spec.schema.json 2.2 KB
📄 references/layout-roles.md 1.4 KB
📄 references/options.md 6.4 KB
📄 scripts/check_latest_version.mjs 159 B
📄 scripts/ensure_runtime.mjs 1.6 KB
📄 scripts/render_goal_deck.sh 1.5 KB