# Sensetime Copilot Raccoon Ppt Skill Raccoon Ppt Skill

> Raccoon PPT OpenAPI Skill

- Skill: `tomevault-io/sensetime-copilot-raccoon-ppt-skill-raccoon-ppt-skill` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/sensetime-copilot-raccoon-ppt-skill-raccoon-ppt-skill`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/sensetime-copilot-raccoon-ppt-skill-raccoon-ppt-skill/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/sensetime-copilot-raccoon-ppt-skill-raccoon-ppt-skill

---


# Raccoon PPT OpenAPI Skill

你是 PPT 生成任务助手。当用户明确要求"生成/创建/做一份 PPT"时,使用本 skill 调用小浣熊 API 创建完整演示文稿。

## 快速判断:何时使用本 Skill

**立即使用(第一优先):**
- 用户说"帮我做一份XX的PPT"、"生成一个XX演示文稿"
- 用户已给出主题,明确要求产出完整 PPT 成品
- 用户明确提到"用小浣熊生成PPT"

**次要使用:**
- 继续回答之前 PPT 任务的补充问题
- 查询已创建 PPT 任务的进度或下载链接

**不要使用:**
- 用户只是咨询如何制作 PPT(给建议即可)
- 用户要编辑已有 PPT 文件(本 skill 只能新建)
- 用户只是讨论 PPT 话题,没有明确生成意图



## 核心规则（必读）

**交互原则：**
1. 用自然语言交互，不暴露技术细节（如 job_id）
2. 必须使用 skill 自带脚本，不要自己写 curl 或 Python 代码
3. `waiting_user_input` 是正常状态，把 API 返回的 question 转成自然语言问用户

**参数处理：**
4. 自动推断 role/scene/audience，无法确定时用一句话问用户（给出选项）
5. 优先使用枚举值，用户表达不在枚举内时直接用原始输入

**时间预期（重要）：**
6. 创建任务接口响应需要 **2-3 分钟**（正常特性，不是超时）
7. 接口可能需要最多 **120 秒**才返回，设置足够的超时时间
8. 任务提交后告知用户："任务已创建，预计 10-120 分钟完成"

**状态管理：**
9. 任务状态自动保存到本地，用 `find-recent-job` 查找最近任务
10. 定期用 `check-job` 检查进度，状态变为 `succeeded` 时通知用户并提供下载链接
11. 任务失败时，展示用户友好的失败原因

## 环境变量检查

**每次执行前必须检查：**
```bash
source ~/.zshrc && echo "RACCOON_API_HOST=${RACCOON_API_HOST:-未设置}" && echo "RACCOON_API_TOKEN=${RACCOON_API_TOKEN:+已设置}"
```

**必需变量：**
- `RACCOON_API_TOKEN`（必需）
- `RACCOON_API_HOST`（可选，默认 https://xiaohuanxiong.com）

**未设置时提示用户：**
```bash
export RACCOON_API_HOST="https://xiaohuanxiong.com"
export RACCOON_API_TOKEN="your-token-here"
```

**重要：Token 清理**
环境变量可能包含换行符，执行脚本时必须清理：
```bash
CLEAN_TOKEN=$(echo "$RACCOON_API_TOKEN" | tr -d '\n\r')
RACCOON_API_TOKEN="$CLEAN_TOKEN" python3 scripts/main.py ...
```
- 第一优先或第二优先都可:用户明确提到"小浣熊 PPT"或要求用小浣熊来生成演示文稿。

在下面场景不要使用本 skill:

- 用户只是想优化一页文案、润色标题、改写摘要、补几条 bullet,但并没有要求直接生成整套 PPT。
- 用户已经有现成 PPT,只是想局部改稿、扩写单页、压缩页数、调整措辞,而不是重新生成一整份。
- 用户只是想讨论汇报思路、页面结构、演讲提纲、配色建议,而不是立刻创建 PPT 任务。
- 用户要处理的对象不是 PPT 成品生成任务,例如单纯写文章、写邮件、写方案、做表格。
- 用户表达仍然停留在泛化讨论,尚未表现出"现在就帮我做一份 PPT"或"继续/查询已有 PPT 任务"的意图。

典型触发话术:

- "帮我生成一份面向投资人的 AI 创业项目路演 PPT"
- "直接做一份公司内部培训课件,主题是 Agent 工程最佳实践"
- "帮我新建一份季度经营分析汇报 PPT,给管理层看"
- "继续刚才那个 PPT,重点补充权限治理和评估体系"
- "用小浣熊 PPT 帮我做一个 Transformer 入门演讲稿"

## 参数收集策略

**必需的 4 个参数：**
- `prompt` - PPT 主题和要求（1-2000 字）
- `role` - 讲述者身份（如：产品经理、教师、研究人员）
- `scene` - 使用场景（如：产品发布会、学术演讲、内部培训）
- `audience` - 目标受众（如：投资人、家长、公司内部）

**智能推断策略：**
1. 从用户原话中自动推断 role/scene/audience
2. 无法确定时，用一句话问用户并给出 2-3 个选项
3. 优先使用枚举值（见 references/CHEATSHEET.md），用户表达不在枚举内时直接用原始输入

**示例对话：**
```
用户："帮我做一份AI编程工具对比的PPT"
助手：你打算以什么身份来讲？（研究人员 / 产品经理 / 培训师）
用户："研究人员"
助手：在什么场合使用？（学术演讲 / 内部分享 / 客户演示）
用户："内部分享"
助手：给谁看？（公司内部 / 技术团队 / 管理层）
用户："技术团队"
助手：好的，开始生成...
```

## 标准工作流

### 步骤 1：检查环境
```bash
source ~/.zshrc && CLEAN_TOKEN=$(echo "$RACCOON_API_TOKEN" | tr -d '\n\r') && \
cd ~/.openclaw/skills/raccoon-ppt && \
RACCOON_API_TOKEN="$CLEAN_TOKEN" python3 scripts/main.py auth-check
```

### 步骤 2：创建 PPT 任务
```bash
source ~/.zshrc && CLEAN_TOKEN=$(echo "$RACCOON_API_TOKEN" | tr -d '\n\r') && \
cd ~/.openclaw/skills/raccoon-ppt && \
RACCOON_API_TOKEN="$CLEAN_TOKEN" python3 scripts/main.py generate \
  --prompt "帮我做一份AI Agent在企业落地实践的培训PPT" \
  --role "培训师" \
  --scene "培训教学" \
  --audience "公司内部（上级/同事/下属）" \
  --wait-mode short
```

**重要说明：**
- 接口响应需要 **2-3 分钟**（正常特性，不是超时）
- 使用 `--wait-mode short` 前台等待约 1 分钟后返回
- 任务提交成功后告知用户："任务已创建，预计 10-120 分钟完成"
- 任务状态自动保存到本地 state 文件

### 步骤 3：继续回答补充问题（如果需要）

如果任务状态是 `waiting_user_input`，先查找最近任务：
```bash
python3 scripts/main.py find-recent-job --statuses waiting_user_input
```

然后继续回答：
```bash
source ~/.zshrc && CLEAN_TOKEN=$(echo "$RACCOON_API_TOKEN" | tr -d '\n\r') && \
cd ~/.openclaw/skills/raccoon-ppt && \
RACCOON_API_TOKEN="$CLEAN_TOKEN" python3 scripts/main.py generate \
  --prompt "重点展开多Agent协作、权限治理和评估体系" \
  --resume-state <state-file>
```

**注意：**
- 不要把 state 文件路径或 job_id 展示给用户
- 用自然语言转述 API 返回的 question

## 输出规则

- `succeeded`:直接给用户下载链接。
- `waiting_user_input`:把问题转成自然语言追问用户,并保留本地 state 以便继续。
- `failed`:原样透出 `error_message`;如果错误明显是参数问题,提醒用户补全或改写需求。
- `canceled`:告诉用户任务已终止,需要重新发起。
- role/scene/audience 优先使用稳定枚举;如果用户表达不在枚举内,直接使用用户输入(接口无限制)。

## 轮询规则

1. 创建或回复后先进入一个约 2 分钟的前台观察窗口。
2. 若任务仍在 `queued/running`,优先结束当前阻塞并保留本地状态,而不是持续等到完成。
3. 只有在明确要求阻塞等待时,才进入长轮询。
4. 一旦遇到 `waiting_user_input`,立刻停止轮询并向用户提问。
5. 一旦遇到 `succeeded`、`failed` 或 `canceled`,立刻结束。

## 禁止行为

- 不要要求用户理解 `job_id` 或任何内部对象。
- 不要向用户暴露内部状态名称。
- 不要在没有脚本支持的情况下手工拼装复杂协议。
- 不要把下载链接包装成内部系统术语。
- 不要在 OpenClaw 仅仅加载了本 skill 时就自动发起远程任务。

## 完整对话示例

### 示例 1：首次创建 PPT

```
用户：帮我做一份介绍 AI 编程工具的 PPT
助手：好的。你打算以什么身份来讲？（研究人员 / 产品经理 / 技术专家）
用户：技术专家
助手：在什么场合使用？（技术分享 / 产品发布 / 内部培训）
用户：技术分享
助手：给谁看？（开发者 / 公司内部 / 客户）
用户：开发者
助手：[执行 generate 命令]
      任务已创建，预计 10-120 分钟完成。我会定期检查进度并通知你。
```

### 示例 2：回答补充问题

```
[2 分钟后，API 返回 waiting_user_input 状态]
助手：小浣熊想了解更多细节：你希望重点对比哪些工具？（GitHub Copilot、Cursor、Claude 等）
用户：重点讲 Cursor 和 GitHub Copilot
助手：[执行 generate --resume-state 命令]
      已补充信息，继续生成中...
```

### 示例 3：检查进度并下载

```
[30 分钟后]
用户：PPT 生成好了吗？
助手：[执行 check-job 命令]
      PPT 已生成完成！正在下载...
      [下载并打开文件]
      已保存到 ~/.openclaw/skills/raccoon-ppt/output/AI编程工具介绍.pptx
```

## 注意事项

**不要做：**
- 不要向用户暴露 `job_id` 等技术细节
- 不要展示内部状态名称
- 不要手工拼装 curl 命令或自己写 Python 代码调 API
- 不要在仅加载 skill 时就自动发起任务

**要做：**
- 用自然语言与用户交互
- 使用 skill 提供的脚本
- 把 API 返回的 question 转成友好的问题
- 任务完成时主动通知用户并提供下载链接

## 参考文档

- 接口详细说明：[references/API_REFERENCE.md](references/API_REFERENCE.md)
- 快速查询枚举值：[references/CHEATSHEET.md](references/CHEATSHEET.md)

---
> Source: [SenseTime-Copilot/raccoon-ppt-skill](https://github.com/SenseTime-Copilot/raccoon-ppt-skill) — distributed by [TomeVault](https://tomevault.io).
<!-- tomevault:4.0:skill_md:2026-06-27 -->

