PowerPoint 默认启用

.pptx 创建、编辑、分析 — 从单页幻灯片修复到包含变体过渡和数据驱动生成的完整投资者演示文稿。

此技能默认启用,当您的请求中提及 PowerPoint、PPTX、演示文稿、幻灯片或 deck 时会自动触发。无需手动加载。

触发关键词

PowerPoint PPTX presentation slides deck

快速参考

任务操作
按照现有 deck 格式化cp source.pptx target.pptx && officecli open target.pptx — 继承主题/布局/母版
读取/分析内容officecli viewofficecli get 命令
编辑现有演示文稿基于参考的编辑工作流(复制 → 修改)
从头创建officecli create → 添加幻灯片 → 添加元素
融资演示文稿(种子轮/A轮)子技能:officecli-pitch-deck
变体过渡动画子技能:morph-ppt
3D 变体效果子技能:morph-ppt-3d
JS 编程回退方案pptxgenjs 用于 50+ 页数据驱动的幻灯片
配色方案/排版设计系统:20 种调色板,8 种字体组合
缩略图网格/视觉 QApython3 scripts/thumbnail.py deck.pptx grid.png
解包/修复python3 scripts/pptx_cli.py {open|save|validate|repair}
执行模型:每次只运行一个命令。检查退出代码后再继续。非零 = 停下来修复。不要对同一个 .pptx 文件并行运行命令。

"~해줘" 示例

激活此技能的自然语言请求。支持韩语、英语或混合使用。

"회사 소개 PPT 만들어줘 — 10장짜리, 우리 브랜드 컬러(네이비+화이트) 써줘"
创建一个使用海军蓝+白色配色方案的 10 页公司介绍 deck。该技能会选择匹配的设计系统调色板,设置幻灯片母版,并生成多种布局的幻灯片(全屏、分栏、网格、图表)。
"이 PPTX 파일 분석해줘 — 어떤 내용인지 요약하고 디자인 문제 있으면 알려줘"
使用 officecli view text 读取所有幻灯片内容,使用 officecli view issues 检查设计问题,运行验证,并报告摘要及任何问题(溢出、缺少替代文本、对比度低)。
"기존 템플릿(Brand.pptx) 기반으로 Q4 실적 보고서 만들어줘"
复制源文件以继承主题/布局/母版,移除示例幻灯片,然后使用现有品牌布局构建新内容幻灯片。绝不从头重建主题。
"이 데이터로 차트 슬라이드 추가해줘 — 월별 매출 바 차트"
使用 officecli add 及图表属性添加一个包含柱状图元素的新幻灯片。数据以内联方式传入,图表按照合适的边距定位。
"발표자료 만들어줘 — 모프 전환 효과 넣고, 다크 테마로"
激活 morph-ppt 子技能。从 48 种精选样式定义中选择深色风格,在幻灯片之间应用变体过渡,并使用缩略图进行视觉 QA。

主要工具:OfficeCLI

officecli 可处理约 80% 的 PPTX 任务:幻灯片的添加/设置/删除、验证、查询和视觉检查。它是主要接口 — 在升级到其他工具之前,请始终先尝试 OfficeCLI。

发现规则

在编造元素或属性名称之前,请始终先运行 officecli --helpofficecli help pptx ... --json。CLI 是可用属性和语法的唯一权威来源。
officecli --help
officecli help pptx
officecli help pptx add slide --json       # exact property list
officecli help pptx add shape --json
officecli help pptx set slide --json
officecli help pptx set shape --json
officecli view --help                      # all view modes
officecli help pptx query

核心工作流

读取与分析

# Text extraction
officecli view slides.pptx text
officecli view slides.pptx text --start 1 --end 5

# Structural views
officecli view slides.pptx outline
officecli view slides.pptx annotated
officecli view slides.pptx stats

元素检查(PATH 语法)

路径从 1 开始:/slide[1]/shape[1]。在 zsh 中始终用引号包裹路径,以防止通配符展开。

officecli get slides.pptx '/slide[1]' --depth 1
officecli get slides.pptx '/slide[1]/shape[1]'
officecli get slides.pptx '/slide[1]/chart[1]'
officecli get slides.pptx '/slide[1]/table[1]' --depth 3

类 CSS 查询

officecli query slides.pptx 'shape:contains("Revenue")'
officecli query slides.pptx "picture:no-alt"
officecli query slides.pptx 'shape[fill=#4472C4]'
officecli query slides.pptx "shape[width>=10cm]"

视觉检查

officecli view slides.pptx html --browser    # recommended
officecli view slides.pptx svg --start 1 --end 1 --browser

常驻模式

常驻模式将文件作为后台守护进程保持打开状态,以加快连续编辑速度。open 命令会立即返回 — 不要将其作为后台 shell 作业运行。

officecli open slides.pptx      # returns IMMEDIATELY; daemon in bg
officecli add slides.pptx ...
officecli set slides.pptx ...
officecli close slides.pptx     # always close explicitly
警告:不要将 officecli open 作为后台 shell 作业运行。它会立即返回,守护进程会自动在后台运行。后台 shell 启动会创建僵尸进程和文件锁。

批处理模式

使用 JSON 在单次调用中执行多个操作。使用带单引号分隔符的 heredoc 来防止 shell 语法泄漏到 JSON 中。

cat <<'EOF' | officecli batch slides.pptx
[
  {"command":"add","parent":"/slide[1]","type":"shape","props":{"text":"Title","x":"2cm","y":"2cm","width":"20cm","height":"3cm","size":"36","bold":"true"}},
  {"command":"add","parent":"/slide[1]","type":"shape","props":{"text":"Body","x":"2cm","y":"6cm","width":"20cm","height":"10cm","size":"16"}}
]
EOF

批处理支持:addsetgetqueryremovemoveswapviewrawraw-setvalidate


基于参考的编辑

当用户提供源文件或说"按照 X.pptx 的格式" — 始终从源文件开始。绝不从头重建主题。

为什么这很重要

幻灯片母版和主题定义(字体、颜色、占位符几何形状)是文档特有的。从头重建会丢失幻灯片间一致的品牌形象,破坏现有占位符位置,并且耗时是修改副本的 5-10 倍。

工作流

  1. 复制源文件: cp source.pptx target.pptx — 继承主题、幻灯片母版、布局、字体、颜色
  2. 打开: officecli open target.pptx — 守护进程立即返回
  3. 删除幻灯片内容,但保留 /slideMaster/slideLayout/theme
  4. 添加新幻灯片,使用现有布局(--prop layout=Title+Content)— 它们会自动继承主题

模板来源(优先级顺序)

优先级来源使用场景
1用户提供的源文件首选模板 — 始终优先使用
2tests/fixtures/*.pptx技能附带的预构建示例
3officecli-pitch-deck/ 模板融资/投资者场景
4morph-ppt/reference/styles/*48 种精选样式定义
5officecli create 空白文件仅在没有其他适用方案时使用

示例 — 继承现有品牌

# CORRECT: inherit theme and layouts
cp CompanyBrand.pptx Q4Report.pptx
officecli open Q4Report.pptx
officecli remove Q4Report.pptx "/slide[1]"
officecli add Q4Report.pptx / --type slide --prop layout=Title
officecli add Q4Report.pptx '/slide[1]' --type textbox \
  --prop text="Q4 Report" --prop placeholder=title
officecli close Q4Report.pptx

# WRONG: recreate theme (loses brand)
officecli create Q4Report.pptx
# ... add all fonts, colors, masters from scratch ...

创建工作流

# 1. Work in /tmp/ with ASCII filenames (Korean filenames cause resident corruption)
officecli create /tmp/deck_work.pptx --type pptx

# 2. Add slide, set background, add shapes/textboxes/charts
officecli add /tmp/deck_work.pptx /slide --type slide
officecli set /tmp/deck_work.pptx '/slide[1]' --prop background=1E2761
officecli add /tmp/deck_work.pptx '/slide[1]' --type textbox \
  --prop 'text=Title Here' --prop x=2cm --prop y=3cm --prop w=30cm --prop h=4cm \
  --prop fontsize=44 --prop bold=true --prop color=FFFFFF --prop fontFamily=Pretendard

# 3. Explicitly close resident after edits
officecli close /tmp/deck_work.pptx

# 4. Copy to final filename (Korean OK for final output)
python3 -c "import shutil; shutil.copy2('/tmp/deck_work.pptx', 'final.pptx')"

升级梯度

当 OfficeCLI 无法完成任务时,按顺序升级。大多数任务停留在 L1。

级别适用场景工具
L1 officecli 高级接口 常规的幻灯片/形状 添加/设置/删除 officecli add/set/remove/query/view
L2 officecli raw-set XML 注入 — 自定义动画、图表 XML、主题调整 officecli raw-set FILE PATH --xpath X --action A --xml ...
L3 Python 脚本 缩略图生成、孤立资源清理、统一 CLI 操作 python3 scripts/*.py
L4 解包 → 编辑 XML → 重新打包 超出 officecli 能力范围的变体过渡、自定义 p:transition XML、宏处理 scripts/pptx_cli.py open → 编辑 XML → save
L5 pptxgenjs 从数据集生成 50+ 页幻灯片、可组合工厂、复杂循环逻辑 npm install pptxgenjs + JS 管道

升级信号


元素类型与命令

OfficeCLI 支持丰富的元素类型。请积极使用 — 纯文本幻灯片毫无记忆点。

形状作为内容容器

officecli add deck.pptx '/slide[1]' --type shape --prop geometry=roundRect \
  --prop fill=1E2761 --prop x=1cm --prop y=4cm --prop w=15cm --prop h=12cm

表格

officecli add deck.pptx '/slide[2]' --type table \
  --prop rows=4 --prop cols=3 --prop x=1cm --prop y=3cm \
  --prop width=24cm --prop height=6cm

图表

officecli add deck.pptx '/slide[3]' --type chart \
  --prop chartType=column --prop title='Revenue' \
  --prop 'data=Q1:12,Q2:15,Q3:18,Q4:20'

图片

officecli add deck.pptx '/slide[1]' --type picture \
  --prop path=photo.png --prop x=14cm --prop y=3cm \
  --prop width=8cm --prop height=5cm --prop alt='Team photo'

视频/音频

officecli add deck.pptx '/slide[4]' --type video --prop path=demo.mp4 \
  --prop x=2cm --prop y=3cm --prop width=20cm --prop height=12cm --prop autoplay=true

OLE 嵌入(Excel、Word、PDF)

officecli add deck.pptx '/slide[5]' --type ole --prop path=data.xlsx \
  --prop x=2cm --prop y=3cm --prop width=20cm --prop height=12cm

连接线/箭头

officecli add deck.pptx '/slide[2]' --type connector \
  --prop startShape=1 --prop endShape=2 --prop lineColor=4472C4 --prop tailEnd=arrow

演讲者备注

officecli add deck.pptx '/slide[1]' --type notes --prop 'text=Key talking point here.'

动画

officecli set deck.pptx '/slide[1]/shape[2]' --prop animation=fadeIn --prop delay=500

主题颜色

# Use theme tokens instead of hex for theme-aware decks
officecli set deck.pptx '/slide[1]/shape[1]' --prop fill=accent1
# Available: accent1..accent6, dk1, dk2, lt1, lt2, tx1, tx2, bg1, bg2

其他操作

# Hyperlinks
officecli set deck.pptx '/slide[1]/shape[2]' --prop link='https://example.com'

# Flip / rotate
officecli set deck.pptx '/slide[1]/shape[2]' --prop flipH=true
officecli set deck.pptx '/slide[1]/shape[2]' --prop rotation=45

# Slide master / layout editing
officecli set deck.pptx '/slideMaster[1]/shape[2]' --prop text='Company Name'
officecli set deck.pptx '/slideLayout[2]/shape[1]' --prop fill=1E2761

# Template merge with data
officecli merge template.pptx output.pptx --data '{"title":"Q4 Report","revenue":"$5.1M"}'

# Watch mode (live preview)
officecli watch deck.pptx --port 3000

# Slideshow settings
officecli set deck.pptx / --prop show.loop=true --prop show.narration=false

设计系统

设计旋钮

创建之前,先确定以下三个参数。如有歧义,请向用户确认。

旋钮范围默认值含义
DESIGN_VARIANCE1–1041 = 对称网格,10 = 非对称艺术指导
VISUAL_DENSITY1–1051 = 画廊留白,10 = 仪表盘密集
MOTION_INTENSITY1–1031 = 静态切换,10 = 电影级变体

按演示文稿类型的预设

演示文稿类型变化度密度动效
投资者路演634
内部评审371
大会主题演讲827
工作坊/培训462
产品发布746

推荐调色板

选择与主题匹配的颜色 — 不要默认使用通用蓝色。

主题主色辅色强调色文本次要文本
午夜商务1E2761CADCFCFFFFFF3333338899BB
石板专业2C3E50ECF0F1E74C3C3333337A8A94
森林与苔藓2C5F2D97BC62F5F5F52D2D2D6B8E6B
珊瑚活力F96167F9E7952F3C7E3333338B7E6A
暖赤陶B85042E7E8D1A7BEAE3D2B2B8C7B75
海洋渐变065A821C729321295C2B3A4E6B8FAA
炭灰极简36454FF2F2F22121213333337A8A94
浆果与奶油6D2E46A26769ECE2D03D22338C6B7A

在浅色背景上使用文本色作为正文,次要文本色用于说明文字、标签和坐标轴文本。在深色背景(亮度 < 30%)上,所有正文文本必须为白色(FFFFFF)或近白色。非纯黑:使用 0A0A0A 而非 000000

避免:白底上的紫色渐变(AI 生成痕迹)、彩虹多强调色、FFFFFF 背景 + 000000 文本(毫无个性)。

排版

标题字体正文字体最适场景
GeorgiaCalibri正式商务、金融
Arial BlackArial大胆营销、产品发布
Trebuchet MSCalibri友好科技、初创企业
ConsolasCalibri开发者工具、工程

韩语:Pretendard、Noto Sans KR、Wanted Sans。避免将 Malgun Gothic 作为唯一字体 — 仅可作为 a:ea 字体栈中的 CJK 回退字体。

元素尺寸
幻灯片标题36–44pt 粗体
章节标题20–24pt 粗体
正文文本16–20pt(最小 16pt)
说明/来源10–12pt 次要色
关键指标60–72pt 粗体,强调色
正文文本最小 16pt。如果文本溢出,请减少内容或拆分幻灯片 — 绝不缩小字体。

幻灯片节奏

一个 10 页的演示文稿应至少包含 4 种不同的布局类型:

  1. 全出血主视觉 — 标题或关键指标
  2. 分栏布局 — 文本 + 视觉元素
  3. 网格或对比 — 2–3 项内容
  4. 数据可视化 — 图表、图解或信息图

内容到布局指南

内容类型推荐布局
定价/套餐层级2–3 列卡片(对比)
团队/人物图标网格或 2x3 卡片
时间线/路线图带箭头的流程图/编号步骤
关键指标/KPI大字统计展示(3–4 个大数字)
用户评价/引言全宽引言加署名
功能对比两栏前后对比或表格
架构/系统形状 + 连接线图解
财务数据图表 + 摘要表格并排

子技能

仅加载与您任务匹配的子技能。不要全部加载。

officecli-pitch-deck — 融资演示文稿(种子轮/A轮)

专为投资者路演设计的模板和结构。处理问题/方案/市场/牵引力/团队/财务的完整流程。

morph-ppt — 变体过渡动画

幻灯片之间的电影级变体过渡。包含 48 种精选样式定义、决策规则(金字塔原理、SCQA)、画布规格和质量门控。

morph-ppt-3d — 3D 变体效果

将 3D 模型与变体过渡集成,用于高级视觉演示。

pptxgenjs — JavaScript 编程生成

PptxGenJS API,用于通过可组合工厂和循环逻辑批量生成 50+ 页数据驱动的幻灯片。


参考资料

设计参考

文件阅读时机包含内容
references/design-system.md在选择颜色/字体之前20 种调色板、8 种字体组合、4 种韩语字体
morph-ppt/reference/styles/INDEX.md选择独特视觉风格时48 种样式定义,含规格与示例
morph-ppt/reference/decision-rules.md规划内容密集型演示文稿时金字塔原理、SCQA、页面类型
morph-ppt/reference/pptx-design.md画布规格、幽灵位置数学计算画布、字体、间距标记
morph-ppt/reference/quality-gates.md第 4–5 阶段 QA 门控变体演示文稿的 QA 检查清单
recipes.md快速修复模式章节分隔符 z-order、KPI 溢出、时间线间距

Python 脚本(scripts/

脚本用途命令
pptx_cli.py统一 CLI:解包、保存、验证、修复、缩略图、搜索、目录、添加幻灯片、清理、导出 PDFpython3 scripts/pptx_cli.py {open|save|validate|repair|...}
thumbnail.py幻灯片缩略图网格或单张 PNG,用于视觉 QApython3 scripts/thumbnail.py IN.pptx grid.png
clean.py查找/删除解包 PPTX 中的孤立媒体python3 scripts/clean.py work/ [--delete]
add_slide.py在解包目录上添加或复制幻灯片(旧版 OOXML)python3 scripts/add_slide.py work/ --blank
run_tests.py运行技能回归测试python3 scripts/run_tests.py

QA(必需)

假定存在问题。你的任务是找到它们。你的首次渲染几乎永远不会正确。将 QA 视为漏洞排查,而非确认步骤。如果首次检查发现零问题,说明你检查得不够仔细。

步骤 1 — 机器 QA

officecli validate output.pptx
officecli view output.pptx issues
officecli view output.pptx text | grep -iE 'xxxx|lorem|ipsum|placeholder|TODO|click to'
officecli view output.pptx stats

步骤 2 — 视觉 QA

officecli view output.pptx html --browser

# Thumbnail grid for quick scan
python3 scripts/thumbnail.py output.pptx grid.png

使用子代理进行视觉检查 — 即使只有 2–3 页幻灯片。你会看到你期望的内容,而非实际的内容。新鲜的眼光能发现更多问题。

视觉 QA 检查清单

步骤 3 — 修复并重新验证

使用 officecli set 修复,重新运行 QA。在至少完成一轮修复-验证循环之前,不要宣布成功。


交付前检查清单


常见陷阱

陷阱正确做法
在 zsh 中未引用 [N]始终加引号:"/slide[1]"'/slide[1]'
--name "foo"使用 --prop name="foo" — 所有属性通过 --prop 传递
猜测属性名运行 officecli help pptx set shape --json 获取准确名称
十六进制颜色带 #使用 FF0000 而非 #FF0000
--prop text= 中的 $使用单引号:'$15M'
view text 遗漏表格使用 view annotated 获取完整文本
创建后添加图表系列无法添加 — 删除并重新创建图表
韩语文件名 + 常驻模式CJK 会导致常驻模式 UTF-8 损坏。使用 ASCII 文件名,最后再复制
常驻模式僵尸进程pkill -9 -f "resident-serve",等待 1 秒,重试
重建已有的主题/母版先执行 cp source.pptx target.pptx。保留母版/布局/主题
officecli open 作为后台 shell 运行在前台运行 — 它会立即返回,守护进程自动在后台运行
批处理 JSON 解析错误Shell 语法泄漏。使用 heredoc:cat <<'EOF' | officecli batch FILE.pptx
盲目选择颜色/字体选择之前先阅读 references/design-system.md

反模式


无障碍(WCAG 2.1 AA)


CJK/韩语支持

cli-jaw 分支会自动检测韩语内容并应用语言标签和默认字体。在常驻模式编辑期间使用 ASCII 文件名以避免 UTF-8 损坏;最后一步再复制为韩语文件名。


前置条件

工具用途状态
officecli (PATH)主要 PPTX CLI必需
python3 + python-pptxL3/L4 操作的脚本脚本所需
pptxgenjs大规模编程生成(L5)可选
soffice (LibreOffice)PDF 转换、QA 缩略图可选(按需自动安装)
# Check prerequisites
python3 -c "import pptx" || echo "MISSING: pip install python-pptx"
which officecli >/dev/null 2>&1 || echo "INFO: OfficeCLI not installed"
which soffice >/dev/null 2>&1 || echo "INFO: LibreOffice not installed (optional)"