# Lark Ppt

> 创建令人惊艳的 PPT 演示文稿。当用户要求制作、生成、创建 PPT/演示文稿/幻灯片，或者要求生成 PPT 大纲、修改已有 PPT 页面内容时，使用此技能。覆盖完整的 PPT 工作流：素材收集（互联网搜索与网页抓取）、图片获取（搜索真实图片或生成创意图片）、PPT 页面生成与编辑。也适用于用户上传附件并要求据此制作 PPT、提供模板要求套用、或就 PPT 设计（配色/排版/字体）进行咨询的场景。即使用户只是简单说'帮我做个 PPT'或'做一份关于 XX 的演示'，也应触发此技能。

- Skill: `iwanalq/lark-ppt` (Agent Skill)
- Install (CLI): `npx skillmds@latest add iwanalq/lark-ppt`
- Raw SKILL.md: https://api.skillmd.com/api/skills/iwanalq/lark-ppt/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: iwanalq (https://skillmd.com/u/iwanalq)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/iwanalq/lark-ppt

---


根据用户需求，通过素材收集、图片获取和页面生成，创建高质量的 PPT 演示文稿。

---

## 可用工具
### ppt_search

> 解析用户上传的附件，或在互联网上检索信息

**参数：**
- `prompt: str` — 描述完成 PPT 需要获取的信息。对于用户提供的名词、概念等不要妄加推测，尽可能把原始的描述传递给 search_agent

---

### ppt_image

> 搜索或生成图片

**参数：**
- `prompt: str` — 描述需要什么图片（内容、风格、色调）

**参数说明：**
- prompt 中只需要描述清楚需要的图片内容即可，工具会自行选择最佳的方式获得（不要显式指定生成或搜索）
- 有真实性要求的图片直接描述为"某某的真实照片/剧照/物料"，不需要过度描述细节；只有需要生成或定制创作的图片才写详细的视觉描述

---

### ppt_write

> 新增 PPT 页面。适用于创建新 PPT 或向已有 PPT 追加新页面。

**参数：**

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `presentation_id` | string | 否 | PPT 的 presentation_id。首次创建新 PPT 时可为空；向已有 PPT 追加页面时传已有的 presentation_id |
| `presentation_name` | string | 否 | PPT 标题。创建新 PPT 时建议传入明确标题；追加到已有 PPT 时可按需传入 |
| `insert_before` | string | 否 | 在指定 slide_id 前插入新页面；为空时默认追加到 PPT 末尾 |
| `content` | string | **是** | 新增 PPT 页面的内容，必须是 XML 字符串，格式见下方 |
| `lang` | string | 否 | content 的内容格式。固定填 `xml` 即可 |

**content XML 格式：**

```xml
<slides>
    <slide>
        <prompt>该页生成描述</prompt>
    </slide>
    <slide>
        <template_id>模板ID（用户提供时选择）</template_id>
        <template_slide_id>模板页ID（用户提供时选择）</template_slide_id>
        <prompt>该页生成描述</prompt>
    </slide>
</slides>
```

每个 `<slide>` 表示一页新增幻灯片，至少应包含 `<prompt>`。请在 prompt 中尽可能详细描述该页的主题、版式、文案、图表、配色、字体、图片使用及其他设计要求。

**使用建议和约束：**

1. ppt_write 工具支持生成文字、形状、常见图表、表格、图标、图片等 PPT 元素，并支持常用的 PPT 样式调整操作（位置大小变换、倒影阴影等）
2. 默认 PPT 尺寸是 960 x 540 px，用户传入模版时，以模版尺寸为准
3. 不要默认使用深蓝、科技蓝、米黄色为主色或者背景色
4. 可用字体：
   - 中文：思源黑体、思源宋体、黑体、宋体、楷体
   - 拉丁：Poppins、Montserrat、Roboto、Lato、Inter、Raleway、Open Sans、Playfair Display、Merriweather、Oswald、Bebas Neue、DM Sans、Work Sans、Nunito、Quicksand
   - 其他语言：源ノ角ゴシック、본고딕、Nanum Gothic
   - 系统字体：Arial、Calibri、Times New Roman、Georgia
   - **限制**：除非用户明确要求，否则仅可使用上述字体
5. 素材使用（如有）：
   - 不需要使用 image_agent 返回的图标，也不需要给 ppt_write 图标素材
   - 不是所有页面都需要图片素材，你应该挑选高质量的素材，宁缺毋滥
   - 对于论文、研究报告、商业应用等场景，只建议使用真实图片或者图表，不建议用抽象素材
   - 对于战略研究报告、麦肯锡/BCG 风格的 PPT，建议不使用图片，而采用图表替代
   - 当某一页没有素材链接时，不要占位，你应该根据上文内容提供更合适的文本内容，而不是素材占位
   - 素材应该和布局结合，例如只有 2 个有效素材时，不要设计三列布局
   - 所有的素材链接只能来自于上文，不要捏造任何链接，不要使用占位图库
6. 布局及内容：
   - 规划统一的视觉风格，包括配色、字体、布局
   - 为普通页面指定精确的设计参数（px级别），确保多页一致
   - 提供完整、详细的内容信息，不要遗漏关键数据
   - 布局和素材需要紧密结合，不能设计 2x2 布局时，只提供 3 张图片
7. 用户没有明确要求页数时，默认生成 15 页以上的 PPT（根据用户任务复杂度酌情增加）；用户指定页数或提供分页稿时，以用户要求为准

---

### ppt_refine

> 修改已有 PPT 页面。适用于在已知 slide_id 的前提下批量修改已有页面内容。

**参数：**

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `presentation_id` | string | **是** | 要修改的 PPT 的 presentation_id |
| `content` | string | **是** | 修改已有 PPT 页面的内容，必须是 XML 字符串，格式见下方 |
| `lang` | string | 否 | content 的内容格式。固定填 `xml` 即可 |

**content XML 格式：**

```xml
<slides>
    <slide>
        <slide_id>目标页面ID</slide_id>
        <prompt>该页修改描述</prompt>
    </slide>
    ...
    <slide>
        <slide_id>目标页面ID</slide_id>
        <prompt>该页修改描述</prompt>
    </slide>
</slides>
```

每个 `<slide>` 表示一页待修改的幻灯片，必须包含 `<slide_id>` 和 `<prompt>`。请在 prompt 中尽可能详细描述要修改的标题、文案、布局、图表、样式、配色、字体、图片及其他设计调整要求。

---

### ppt_delete

> 删除已生成好的 PPT 页面。

**参数：**

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `presentation_id` | string | **是** | PPT 项目的唯一 ID |
| `slide_ids` | array | **是** | 列表每一项是要删除的每页 PPT 的 slide_id |

---

### ppt_read

> 读取已生成好的 PPT 内容。如果上文丢失了某些 PPT 的最新内容，可以使用本工具读取。

**参数：**

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `presentation_id` | string | **是** | PPT 项目的唯一 ID |
| `slide_ids` | array | **是** | 列表每一项是要读取的每页 PPT 的 slide_id |

---

### ppt_template_read

> 读取 PPT 模版的页面详情与截图

**参数：**

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `template_id` | string | **是** | 模版的唯一 ID |

**使用约束：**
- 仅在以下场景调用：
  - 用户提供了模版且需要读取其内容时
  - 需要分析的 PPT 模版存在 `template_id` 时
- 当 PPT 只有 `presentation_id` 而没有 `template_id` 时，**不可**使用此工具

---

## 工作模式

### PPT 生成

1. 结合用户提供的模版、附件等，理解用户需求（主题、风格、页数、场景等）
2. 用户指令优先：用户明确表明不需要搜索或者图片时，跳过 search_agent 或 image_agent
3. 当用户提出的概念、产品、实体、人物等超过你知识范围外的时候，不要妄下错误的结论，应该通过 search_agent 检索后再做进一步判断
4. 若需要外部信息或者解析附件内容 → search_agent 检索
5. 若需要图片素材 → image_agent 获取
6. 规划整体视觉风格（配色、字体、布局）
7. ppt_write 生成所有页面

### PPT 修改和优化

- **所有页内的内容修改都需要通过调用 ppt_refine 工具来实现**
- **ppt_refine 和 ppt_write 本身不能发起搜索和获取图片，需要修改图片时，必须先调用 image_agent 后，传递具体的图片链接给 refine 和 write**
- 用户多轮上传新模版时，应该调用 ppt_write 生成新的 PPT

| 场景 | 流程 |
|------|------|
| 页内调整（主题内容不变） | ppt_refine |
| 删除页面 | 确认 slide_id → ppt_delete |
| 页内信息扩充 | （可选补充信息）→ ppt_refine |
| 页面扩写（一页变多页） | 确认新页内容和插入位置 → ppt_write（指定 insert_before）→ ppt_delete 旧页 |
| 页面合并 | 确认合并后内容和插入位置 → ppt_write（指定 insert_before）→ ppt_delete 旧页 |
| 需要补充外部信息 | 规划 TODO → search_agent → 完成后执行对应编辑流程 |
| 需要获取新的图片 | 规划 TODO → image_agent → 完成后执行对应编辑流程 |
| 用户上传新的模版 | 规划 TODO → ppt_template_read 读取模版 → 不指定 presentation_id，调用 ppt_write 生成新的 PPT |

### PPT 大纲生成

只有在用户明确只需要 PPT 大纲时才生成大纲。

1. 理解用户需求（主题、受众、页数范围等）
2. 若需要参考资料 → search_agent 检索背景信息
3. 输出结构化大纲，包含：
   - 每页标题
   - 页面类型（封面 / 目录 / 内容页 / 过渡页 / 结尾页）
   - 核心内容要点
   - 建议布局方向
4. 结尾附上「我可以帮你做完整 PPT 的建议」

---

## 回复规范

- 工具调用前，先规划调用步骤
- 非工具调用场景，使用 Markdown 格式回复
- 默认使用用户的语言回复

---

## 错误处理

工具调用失败时，根据报错信息判断是否需要修改参数，最多重试 2 次。若重试后仍失败，停止调用并告知用户当前错误情况，引导用户重试。素材收集过程中工具失败时，整理当前已收集材料继续推进，并提示用户可能存在信息不全。

