前言¶
週報、彙報、路演——職場裏繞不開演示文稿。.pptx 看着像普通文件,打開卻是 ZIP 包裏的 XML、關係表、媒體資源,結構複雜。讓 AI 直接「生成一份 PPT」往往只能得到 Markdown 大綱,或者產出一個 PowerPoint 打不開的損壞文件。
Anthropic 在官方倉庫 anthropics/skills 裏維護了一套文檔類 Agent Skill,其中 pptx 專門處理 PowerPoint 演示文稿(.pptx / .potx)。它把創建、編輯、讀取、模板填充、校驗等流程寫進 SKILL.md,並附帶 Python / Node 腳本,是觀察 Agent 處理複雜 Office 格式能力邊界的一個典型樣本。
這是什麼¶
pptx 是 Anthropic 出品的 Agent Skill,遵循通用 SKILL.md 格式,可在 Cursor、Claude Code、Claude.ai 等支持 Agent Skills 的工具中使用。
一句話定位:只要任務涉及 .pptx 或 .potx——新建幻燈片、讀取內容、改模板、合併拆分、處理演講者備註——Agent 都應加載這個 Skill,而不是憑通用知識硬寫。
該 Skill 位於官方倉庫 skills/pptx/ 目錄,與 docx、pdf、xlsx 同屬「文檔技能」系列;許可爲 source-available(非 Apache 2.0 開源),詳見目錄內 LICENSE.txt。
核心功能與亮點¶
官方 SKILL.md 把任務分成三條主線,並配套腳本與校驗流程:
| 任務 | 推薦方式 |
|---|---|
| 從零創建 | 用 pptxgenjs 寫 Node 腳本生成 |
| 編輯已有文件 / 基於模板 | 解壓 → 改 ppt/slides/slideN.xml → 重新打包 |
| 讀取內容 | markitdown deck.pptx 提取文本;thumbnail.py 生成縮略圖網格 |
1. 創建演示文稿
通過 pptxgenjs 腳本生成 .pptx,Skill 文檔詳細列出了常見踩坑:畫布尺寸要先設 pres.layout、顏色不能帶 #、陰影 offset 不能爲負、圖表要用原生 addChart() 等。生成後需運行 validate.py 做結構校驗。
2. 編輯與模板
.pptx 本質是 ZIP。官方流程是解壓、用 add_slide.py 複製/插入幻燈片、編輯 XML、用 clean.py 清理孤兒資源,最後在解壓目錄內打包。基於 .potx 模板時,流程相同,輸出保持 .potx 擴展名即可。
Skill 還強調設計規範:配色要有主題感、避免千篇一律的標題+ bullet、每頁應有視覺元素,並附有多套參考色板與排版建議——這些是給 Agent 的「審美約束」,不是空泛 prompt。
3. 讀取與分析
markitdown 按幻燈片塊輸出文本,適合摘要與 QA;scripts/thumbnail.py 生成帶標籤的縮略圖網格,便於在模板裏挑選佈局。
4. 配套腳本
| 腳本 | 作用 |
|---|---|
scripts/thumbnail.py |
生成幻燈片縮略圖網格 |
scripts/add_slide.py |
複製/插入幻燈片並完成關係註冊 |
scripts/clean.py |
刪除無引用的幻燈片、媒體與 rels |
scripts/office/validate.py |
校驗 schema、關係、圖表等,失敗時給出修復提示 |
scripts/office/soffice.py |
LibreOffice 無頭轉換(如轉 PDF) |
5. 三重 QA
官方要求:內容 QA(markitdown + 佔位符 grep)、文件 QA(validate.py,模板場景加 --original)、視覺 QA(轉 PDF 再 pdftoppm 逐頁檢查溢出與對齊)。這套流程說明該 Skill 面向「能交付的文件」,而非僅生成代碼。
安裝與啓用¶
Skill 本體是一個目錄:內含 SKILL.md 與 scripts/。各工具啓用方式如下(以官方文檔爲準)。
Cursor¶
將 pptx 目錄放到項目或用戶級技能路徑,Cursor 啓動時會自動發現:
# 項目級(隨倉庫共享)
git clone --depth 1 https://github.com/anthropics/skills.git /tmp/anthropics-skills
cp -r /tmp/anthropics-skills/skills/pptx .cursor/skills/pptx
# 或用戶級(所有項目可用)
mkdir -p ~/.cursor/skills
cp -r /tmp/anthropics-skills/skills/pptx ~/.cursor/skills/pptx
目錄結構應爲 .cursor/skills/pptx/SKILL.md。Agent 會根據 frontmatter 裏的 description 自動匹配;也可在對話裏輸入 /pptx 顯式調用。
Cursor 還支持 Rules → Add Rule → Remote Rule (Github),填入 https://github.com/anthropics/skills 從遠程倉庫導入技能(參見 Cursor 官方 Skills 文檔)。
Claude Code¶
在 Claude Code 中註冊官方插件市場並安裝文檔技能集:
/plugin marketplace add anthropics/skills
/plugin install document-skills@anthropic-agent-skills
安裝後可直接說:「用 pptx skill 根據這份大綱生成 10 頁路演 deck」。
Claude.ai 與 API¶
Anthropic 文檔說明:倉庫中的示例 Skill 對已付費 Claude.ai 用戶可用;自定義 Skill 上傳方式見 Using skills in Claude。API 側可通過 Skills API 掛載預置或自定義 Skill。
依賴環境¶
Skill 聲明的運行時依賴包括:
- Node:
pptxgenjs(環境預裝,僅在require失敗時再npm install) - Python:
markitdown[pptx]、Pillow、defusedxml、lxml - 系統:LibreOffice(
soffice)、Poppler(pdftoppm)
腳本路徑相對於 Skill 目錄;若只複製了 SKILL.md 而沒有 scripts/,編輯與校驗能力會不完整,建議整目錄拷貝。
典型用法示例¶
示例 1:讀取現有演示文稿¶
markitdown deck.pptx
python scripts/thumbnail.py deck.pptx my-deck-thumbs
第一句提取每頁文本;第二句生成縮略圖,便於 Agent 理解版式。注意 thumbnail.py 的第二個參數是輸出前綴,同一目錄下多次運行默認前綴 thumbnails 會互相覆蓋。
示例 2:基於模板編輯並重新打包¶
python3 -c "import sys,zipfile; zipfile.ZipFile(sys.argv[1]).extractall('unpacked')" deck.pptx
python scripts/add_slide.py unpacked/ slide2.xml --after slide2.xml
# 調整 ppt/presentation.xml 中的 <p:sldIdLst> 可 reorder / delete
python scripts/clean.py unpacked/
# 編輯 ppt/slides/slideN.xml 中的內容
(cd unpacked && rm -f ../out.pptx && zip -Xr ../out.pptx .)
python scripts/office/validate.py out.pptx --original deck.pptx
官方強調:結構變更(增刪頁、排序)應放在內容編輯之前;不要用 xml.etree round-trip OOXML,應使用 defusedxml.minidom 解析,避免命名空間被破壞。
示例 3:從零創建並校驗¶
Agent 會編寫 pptxgenjs 腳本,例如設置寬屏佈局、添加標題與圖表,然後:
node generate-deck.js
python scripts/office/validate.py deck.pptx
若校驗報錯(常見如組合圖 secondary 軸未聲明、堆疊圖 dataLabelPosition 用了 outEnd),應在生成腳本里修復後重新生成,而不是手改打包後的 XML。
示例 4:視覺 QA¶
python scripts/office/soffice.py --headless --convert-to pdf output.pptx
rm -f slide-*.jpg
pdftoppm -jpeg -r 150 output.pdf slide
將 PDF 再轉爲逐頁 JPEG,檢查文字溢出、元素重疊、低對比度等問題。修改 .pptx 後需重新跑完整轉換鏈。
適用場景與注意事項¶
適合誰
- 需要 Agent 批量生成或改版 PPT 的產品、運營、研發同學
- 想在 Cursor / Claude Code 裏把「寫材料」自動化進 CI 或內部工具鏈的團隊
- 研究 Agent 如何處理 OOXML、如何做文件級 QA 的開發者
典型場景
- 根據大綱或數據生成 pitch deck、培訓課件
- 讀取客戶發來的
.pptx做摘要、改稿、換模板 - 基於企業
.potx品牌模板填充內容並保留版式 - 合併、拆分、複製幻燈片並清理無用媒體
限制與注意
- 許可:pptx Skill 爲 source-available,商用前請閱讀
LICENSE.txt。 - Legacy
.ppt:需先用soffice.py轉爲.pptx再處理。 python-pptx邊界:官方指出它不能複製幻燈片、直接改text_frame.text會丟樣式、無法讀 SVG/EMF 模板圖——複雜結構應走 XML 流程或自帶腳本。- 字體與 QA:LibreOffice 預覽與真實 PowerPoint 字體度量可能不一致;正文建議用 Arial、Calibri 等「安全字體」,非安全字體需留約 10% 餘量。
- 環境:依賴 LibreOffice、Node、Python 包;沙箱環境需用 Skill 自帶的
soffice.py包裝,避免 baresoffice掛起。
小結¶
pptx Skill 把 PowerPoint 從「AI 只會描述幻燈片」推進到「能創建、能改、能讀、能驗」的完整鏈路:創建走 pptxgenjs,編輯走 OOXML,質量靠 validate.py 與視覺 QA。對職場演示文稿這種剛需場景,它同時也是觀察 Agent 駕馭複雜二進制文檔格式的一個官方參考實現。
官方目錄與完整 SKILL.md:
https://github.com/anthropics/skills/tree/main/skills/pptx