簡報建立、編輯和分析。當 Claude 需要處理簡報(.pptx 檔案)進行:(1) 建立新簡報,(2) 修改或編輯內容,(3) 處理版面配置,(4) 新增註解或演講者備忘稿,或任何其他簡報任務時
使用者可能要求您建立、編輯或分析 .pptx 檔案的內容。.pptx 檔案本質上是一個 ZIP 壓縮檔,包含 XML 檔案和其他資源,您可以讀取或編輯。您有不同的工具和工作流程可用於不同的任務。
如果您只需要讀取簡報的文字內容,應該將文件轉換為 markdown:
# 將文件轉換為 markdown
python -m markitdown path-to-file.pptx
您需要原始 XML 存取來處理:註解、演講者備忘稿、投影片版面配置、動畫、設計元素和複雜格式。對於這些功能,您需要解壓縮簡報並讀取其原始 XML 內容。
python ooxml/scripts/unpack.py <office_file> <output_dir>
注意:unpack.py 腳本位於專案根目錄的 skills/pptx/ooxml/scripts/unpack.py。如果腳本不在此路徑,使用 find . -name "unpack.py" 找到它。
ppt/presentation.xml - 主要簡報中繼資料和投影片參照ppt/slides/slide{N}.xml - 個別投影片內容(slide1.xml、slide2.xml 等)ppt/notesSlides/notesSlide{N}.xml - 每張投影片的演講者備忘稿ppt/comments/modernComment_*.xml - 特定投影片的註解ppt/slideLayouts/ - 投影片的版面配置範本ppt/slideMasters/ - 母片範本ppt/theme/ - 佈景主題和樣式資訊ppt/media/ - 圖片和其他媒體檔案當給定範例設計來模仿時:務必先使用以下方法分析簡報的排版和顏色:
ppt/theme/theme1.xml 中的顏色(<a:clrScheme>)和字型(<a:fontScheme>)ppt/slides/slide1.xml 中實際的字型使用(<a:rPr>)和顏色<a:solidFill>、<a:srgbClr>)和字型參照從頭建立新 PowerPoint 簡報時,使用 html2pptx 工作流程將 HTML 投影片轉換為具有精確定位的 PowerPoint。
關鍵:在建立任何簡報之前,分析內容並選擇適當的設計元素:
要求:
創意選擇顏色:
範例配色(用這些激發創意 - 選擇一個、改編它,或建立您自己的):
幾何圖案:
邊框和框架處理:
排版處理:
圖表和資料樣式:
版面創新:
背景處理:
建立包含圖表或表格的投影片時:
html2pptx.md。絕不要在讀取此檔案時設定任何範圍限制。 閱讀完整檔案內容以了解詳細語法、關鍵格式規則和最佳實踐,然後再進行簡報建立。<p>、<h1>-<h6>、<ul>、<ol>class="placeholder"(以灰色背景渲染以便查看)html2pptx.js 函式庫建立並執行 JavaScript 檔案,將 HTML 投影片轉換為 PowerPoint 並儲存簡報html2pptx() 函式處理每個 HTML 檔案pptx.writeFile() 儲存簡報python scripts/thumbnail.py output.pptx workspace/thumbnails --cols 4編輯現有 PowerPoint 簡報中的投影片時,您需要使用原始 Office Open XML(OOXML)格式。這涉及解壓縮 .pptx 檔案、編輯 XML 內容,然後重新打包。
ooxml.md(約 500 行)。絕不要在讀取此檔案時設定任何範圍限制。 在進行任何簡報編輯之前,閱讀完整檔案內容以了解 OOXML 結構和編輯工作流程的詳細指導。python ooxml/scripts/unpack.py <office_file> <output_dir>ppt/slides/slide{N}.xml 和相關檔案)python ooxml/scripts/validate.py <dir> --original <file>python ooxml/scripts/pack.py <input_directory> <office_file>當您需要建立遵循現有範本設計的簡報時,您需要在替換預留位置內容之前複製和重新排列範本投影片。
擷取範本文字並建立視覺縮圖網格:
python -m markitdown template.pptx > template-content.mdtemplate-content.md:讀取整個檔案以了解範本簡報的內容。絕不要在讀取此檔案時設定任何範圍限制。python scripts/thumbnail.py template.pptx分析範本並將清單儲存到檔案:
template-inventory.md 建立並儲存範本清單檔案,包含:# 範本清單分析
**投影片總數:[數量]**
**重要:投影片從 0 開始索引(第一張投影片 = 0,最後一張投影片 = 數量-1)**
## [類別名稱]
- 投影片 0:[版面代碼(如果有)] - 說明/用途
- 投影片 1:[版面代碼] - 說明/用途
- 投影片 2:[版面代碼] - 說明/用途
[... 每張投影片都必須單獨列出其索引 ...]
根據範本清單建立簡報大綱:
outline.md,包含利用可用設計的內容和範本對應# 要使用的範本投影片(0 基礎索引)
# 警告:驗證索引在範圍內!73 張投影片的範本索引為 0-72
# 對應:大綱中的投影片編號 -> 範本投影片索引
template_mapping = [
0, # 使用投影片 0(標題/封面)
34, # 使用投影片 34(B1:標題和內文)
34, # 再次使用投影片 34(為第二個 B1 複製)
50, # 使用投影片 50(E1:引用)
54, # 使用投影片 54(F2:結尾 + 文字)
]
使用 rearrange.py 複製、重新排序和刪除投影片:
scripts/rearrange.py 腳本建立具有所需順序投影片的新簡報:python scripts/rearrange.py template.pptx working.pptx 0,34,34,50,52
使用 inventory.py 腳本擷取所有文字:
執行清單擷取:
python scripts/inventory.py working.pptx text-inventory.json
讀取 text-inventory.json:讀取整個 text-inventory.json 檔案以了解所有形狀及其屬性。絕不要在讀取此檔案時設定任何範圍限制。
清單 JSON 結構:
{
"slide-0": {
"shape-0": {
"placeholder_type": "TITLE", // 或 null 表示非預留位置
"left": 1.5, // 位置(英吋)
"top": 2.0,
"width": 7.5,
"height": 1.2,
"paragraphs": [
{
"text": "段落文字",
// 選用屬性(僅在非預設時包含):
"bullet": true, // 偵測到明確項目符號
"level": 0, // 僅在 bullet 為 true 時包含
"alignment": "CENTER", // CENTER、RIGHT(非 LEFT)
"space_before": 10.0, // 段落前間距(點)
"space_after": 6.0, // 段落後間距(點)
"line_spacing": 22.4, // 行距(點)
"font_name": "Arial", // 來自第一個 run
"font_size": 14.0, // 點
"bold": true,
"italic": false,
"underline": false,
"color": "FF0000" // RGB 顏色
}
]
}
}
}
主要功能:
default_font_size(點,如果有)bullet: true 時,level 總是包含(即使是 0)space_before、space_after 和 line_spacing(點,僅在設定時包含)color(例如 "FF0000"),佈景主題顏色為 theme_color(例如 "DARK_1")產生替換文字並將資料儲存到 JSON 檔案 根據上一步的文字清單:
"bullet": true 時不要設定 alignment 屬性"bold": true"bullet": true, "level": 0(當 bullet 為 true 時 level 是必要的)"alignment": "CENTER")"font_size": 14.0、"font_name": "Lora")"color": "FF0000" 或佈景主題顏色使用 "theme_color": "DARK_1"replacement-text.json顯示正確格式的範例 paragraphs 欄位:
"paragraphs": [
{
"text": "新簡報標題文字",
"alignment": "CENTER",
"bold": true
},
{
"text": "章節標題",
"bold": true
},
{
"text": "沒有項目符號符號的第一個項目",
"bullet": true,
"level": 0
},
{
"text": "紅色文字",
"color": "FF0000"
},
{
"text": "佈景主題顏色文字",
"theme_color": "DARK_1"
},
{
"text": "沒有特殊格式的一般段落文字"
}
]
替換 JSON 中未列出的形狀會自動清除:
{
"slide-0": {
"shape-0": {
"paragraphs": [...] // 此形狀取得新文字
}
// 清單中的 shape-1 和 shape-2 會自動清除
}
}
簡報的常見格式模式:
"bullet": true, "level": 0使用 replace.py 腳本套用替換
python scripts/replace.py working.pptx replacement-text.json output.pptx
腳本會:
範例驗證錯誤:
ERROR: Invalid shapes in replacement JSON:
- Shape 'shape-99' not found on 'slide-0'. Available shapes: shape-0, shape-1, shape-4
- Slide 'slide-999' not found in inventory
ERROR: Replacement text made overflow worse in these shapes:
- slide-0/shape-2: overflow worsened by 1.25" (was 0.00", now 1.25")
要建立 PowerPoint 投影片的視覺縮圖網格以供快速分析和參考:
python scripts/thumbnail.py template.pptx [output_prefix]
功能:
thumbnails.jpg(或大型簡報的 thumbnails-1.jpg、thumbnails-2.jpg 等)python scripts/thumbnail.py template.pptx my-gridworkspace/my-grid)--cols 4(範圍:3-6,影響每個網格的投影片數)使用案例:
範例:
# 基本用法
python scripts/thumbnail.py presentation.pptx
# 組合選項:自訂名稱、欄數
python scripts/thumbnail.py template.pptx analysis --cols 4
要視覺分析 PowerPoint 投影片,使用兩步驟流程將它們轉換為圖片:
將 PPTX 轉換為 PDF:
soffice --headless --convert-to pdf template.pptx
將 PDF 頁面轉換為 JPEG 圖片:
pdftoppm -jpeg -r 150 template.pdf slide
這會建立像 slide-1.jpg、slide-2.jpg 等檔案。
選項:
-r 150:設定解析度為 150 DPI(調整以平衡品質/大小)-jpeg:輸出 JPEG 格式(如果需要可使用 -png 輸出 PNG)-f N:轉換的第一頁(例如 -f 2 從第 2 頁開始)-l N:轉換的最後一頁(例如 -l 5 在第 5 頁停止)slide:輸出檔案的前綴特定範圍的範例:
pdftoppm -jpeg -r 150 -f 2 -l 5 template.pdf slide # 僅轉換第 2-5 頁
重要:為 PPTX 操作產生程式碼時:
所需的相依套件(應該已經安裝):
pip install "markitdown[pptx]"(用於從簡報擷取文字)npm install -g pptxgenjs(用於透過 html2pptx 建立簡報)npm install -g playwright(用於 html2pptx 中的 HTML 渲染)npm install -g react-icons react react-dom(用於圖示)npm install -g sharp(用於 SVG 柵格化和圖片處理)sudo apt-get install libreoffice(用於 PDF 轉換)sudo apt-get install poppler-utils(用於 pdftoppm 將 PDF 轉換為圖片)pip install defusedxml(用於安全的 XML 解析)