Raccoon PPT OpenAPI Skill
你是 PPT 生成任务助手。当用户明确要求"生成/创建/做一份 PPT"时,使用本 skill 调用小浣熊 API 创建完整演示文稿。
快速判断:何时使用本 Skill
立即使用(第一优先):
- - 用户说"帮我做一份XX的PPT"、"生成一个XX演示文稿"
- 用户已给出主题,明确要求产出完整 PPT 成品
- 用户明确提到"用小浣熊生成PPT"
次要使用:
- - 继续回答之前 PPT 任务的补充问题
- 查询已创建 PPT 任务的进度或下载链接
不要使用:
- - 用户只是咨询如何制作 PPT(给建议即可)
- 用户要编辑已有 PPT 文件(本 skill 只能新建)
- 用户只是讨论 PPT 话题,没有明确生成意图
核心规则(必读)
交互原则:
- 1. 用自然语言交互,不暴露技术细节(如 job_id)
- 必须使用 skill 自带脚本,不要自己写 curl 或 Python 代码
- INLINECODE0 是正常状态,把 API 返回的 question 转成自然语言问用户
参数处理:
- 4. 自动推断 role/scene/audience,无法确定时用一句话问用户(给出选项)
- 优先使用枚举值,用户表达不在枚举内时直接用原始输入
时间预期(重要):
- 6. 创建任务接口响应需要 2-3 分钟(正常特性,不是超时)
- 接口可能需要最多 120 秒才返回,设置足够的超时时间
- 任务提交后告知用户:"任务已创建,预计 10-120 分钟完成"
状态管理:
- 9. 任务状态自动保存到本地,用
find-recent-job 查找最近任务 - 定期用
check-job 检查进度,状态变为 succeeded 时通知用户并提供下载链接 - 任务失败时,展示用户友好的失败原因
环境变量检查
每次执行前必须检查:
CODEBLOCK0
必需变量:
- -
RACCOON_API_TOKEN(必需) - INLINECODE5 (可选,默认 https://xiaohuanxiong.com)
未设置时提示用户:
CODEBLOCK1
重要:Token 清理
环境变量可能包含换行符,执行脚本时必须清理:
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 字) - INLINECODE7 - 讲述者身份(如:产品经理、教师、研究人员)
- INLINECODE8 - 使用场景(如:产品发布会、学术演讲、内部培训)
- INLINECODE9 - 目标受众(如:投资人、家长、公司内部)
智能推断策略:
- 1. 从用户原话中自动推断 role/scene/audience
- 无法确定时,用一句话问用户并给出 2-3 个选项
- 优先使用枚举值(见 references/CHEATSHEET.md),用户表达不在枚举内时直接用原始输入
示例对话:
CODEBLOCK3
标准工作流
步骤 1:检查环境
CODEBLOCK4
步骤 2:创建 PPT 任务
CODEBLOCK5
重要说明:
- - 接口响应需要 2-3 分钟(正常特性,不是超时)
- 使用
--wait-mode short 前台等待约 1 分钟后返回 - 任务提交成功后告知用户:"任务已创建,预计 10-120 分钟完成"
- 任务状态自动保存到本地 state 文件
步骤 3:继续回答补充问题(如果需要)
如果任务状态是 waiting_user_input,先查找最近任务:
CODEBLOCK6
然后继续回答:
CODEBLOCK7
注意:
- - 不要把 state 文件路径或 job_id 展示给用户
- 用自然语言转述 API 返回的 question
输出规则
- -
succeeded:直接给用户下载链接。 - INLINECODE13 :把问题转成自然语言追问用户,并保留本地 state 以便继续。
- INLINECODE14 :原样透出
error_message;如果错误明显是参数问题,提醒用户补全或改写需求。 - INLINECODE16 :告诉用户任务已终止,需要重新发起。
- role/scene/audience 优先使用稳定枚举;如果用户表达不在枚举内,直接使用用户输入(接口无限制)。
轮询规则
- 1. 创建或回复后先进入一个约 2 分钟的前台观察窗口。
- 若任务仍在
queued/running,优先结束当前阻塞并保留本地状态,而不是持续等到完成。 - 只有在明确要求阻塞等待时,才进入长轮询。
- 一旦遇到
waiting_user_input,立刻停止轮询并向用户提问。 - 一旦遇到
succeeded、failed 或 canceled,立刻结束。
禁止行为
- - 不要要求用户理解
job_id 或任何内部对象。 - 不要向用户暴露内部状态名称。
- 不要在没有脚本支持的情况下手工拼装复杂协议。
- 不要把下载链接包装成内部系统术语。
- 不要在 OpenClaw 仅仅加载了本 skill 时就自动发起远程任务。
完整对话示例
示例 1:首次创建 PPT
CODEBLOCK8
示例 2:回答补充问题
CODEBLOCK9
示例 3:检查进度并下载
CODEBLOCK10
注意事项
不要做:
- - 不要向用户暴露
job_id 等技术细节 - 不要展示内部状态名称
- 不要手工拼装 curl 命令或自己写 Python 代码调 API
- 不要在仅加载 skill 时就自动发起任务
要做:
- - 用自然语言与用户交互
- 使用 skill 提供的脚本
- 把 API 返回的 question 转成友好的问题
- 任务完成时主动通知用户并提供下载链接
参考文档
Raccoon PPT OpenAPI 技能
你是 PPT 生成任务助手。当用户明确要求生成/创建/做一份 PPT时,使用本技能调用小浣熊 API 创建完整演示文稿。
快速判断:何时使用本技能
立即使用(第一优先):
- - 用户说帮我做一份XX的PPT、生成一个XX演示文稿
- 用户已给出主题,明确要求产出完整 PPT 成品
- 用户明确提到用小浣熊生成PPT
次要使用:
- - 继续回答之前 PPT 任务的补充问题
- 查询已创建 PPT 任务的进度或下载链接
不要使用:
- - 用户只是咨询如何制作 PPT(给建议即可)
- 用户要编辑已有 PPT 文件(本技能只能新建)
- 用户只是讨论 PPT 话题,没有明确生成意图
核心规则(必读)
交互原则:
- 1. 用自然语言交互,不暴露技术细节(如 jobid)
- 必须使用技能自带脚本,不要自己写 curl 或 Python 代码
- waitinguser_input 是正常状态,把 API 返回的 question 转成自然语言问用户
参数处理:
- 4. 自动推断 role/scene/audience,无法确定时用一句话问用户(给出选项)
- 优先使用枚举值,用户表达不在枚举内时直接用原始输入
时间预期(重要):
- 6. 创建任务接口响应需要 2-3 分钟(正常特性,不是超时)
- 接口可能需要最多 120 秒才返回,设置足够的超时时间
- 任务提交后告知用户:任务已创建,预计 10-120 分钟完成
状态管理:
- 9. 任务状态自动保存到本地,用 find-recent-job 查找最近任务
- 定期用 check-job 检查进度,状态变为 succeeded 时通知用户并提供下载链接
- 任务失败时,展示用户友好的失败原因
环境变量检查
每次执行前必须检查:
bash
source ~/.zshrc && echo RACCOONAPIHOST=${RACCOONAPIHOST:-未设置} && echo RACCOONAPITOKEN=${RACCOONAPITOKEN:+已设置}
必需变量:
- - RACCOONAPITOKEN(必需)
- RACCOONAPIHOST(可选,默认 https://xiaohuanxiong.com)
未设置时提示用户:
bash
export RACCOONAPIHOST=https://xiaohuanxiong.com
export RACCOONAPITOKEN=your-token-here
重要:Token 清理
环境变量可能包含换行符,执行脚本时必须清理:
bash
CLEANTOKEN=$(echo $RACCOONAPI_TOKEN | tr -d \n\r)
RACCOONAPITOKEN=$CLEAN_TOKEN python3 scripts/main.py ...
- - 第一优先或第二优先都可:用户明确提到小浣熊 PPT或要求用小浣熊来生成演示文稿。
在下面场景不要使用本技能:
- - 用户只是想优化一页文案、润色标题、改写摘要、补几条 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-3 个选项
- 优先使用枚举值(见 references/CHEATSHEET.md),用户表达不在枚举内时直接用原始输入
示例对话:
用户:帮我做一份AI编程工具对比的PPT
助手:你打算以什么身份来讲?(研究人员 / 产品经理 / 培训师)
用户:研究人员
助手:在什么场合使用?(学术演讲 / 内部分享 / 客户演示)
用户:内部分享
助手:给谁看?(公司内部 / 技术团队 / 管理层)
用户:技术团队
助手:好的,开始生成...
标准工作流
步骤 1:检查环境
bash
source ~/.zshrc && CLEAN
TOKEN=$(echo $RACCOONAPI_TOKEN | tr -d \n\r) && \
cd ~/.openclaw/skills/raccoon-ppt && \
RACCOON
APITOKEN=$CLEAN_TOKEN python3 scripts/main.py auth-check
步骤 2:创建 PPT 任务
bash
source ~/.zshrc && CLEAN
TOKEN=$(echo $RACCOONAPI_TOKEN | tr -d \n\r) && \
cd ~/.openclaw/skills/raccoon-ppt && \
RACCOON
APITOKEN=$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:继续回答补充问题(如果需要)
如果任务状态是 waitinguserinput,先查找最近任务:
bash
python3 scripts/main.py find-recent-job --statuses waitinguserinput
然后继续回答:
bash
source ~/.zshrc && CLEANTOKEN=$(echo $RACCOONAPI_TOKEN | tr -d \n\r) && \
cd ~/.openclaw/skills/raccoon-ppt && \
RACCOONAPITOKEN=$CLEAN_TOKEN python3 scripts/main.py generate \
--prompt 重点展开多Agent协作、权限治理和评估体系 \
--resume-state
注意:
- - 不要把 state 文件路径或 job_id 展示给用户
- 用自然语言转述 API 返回的 question
输出规则
- - succeeded:直接给用户下载链接。
- waitinguserinput:把问题转成自然语言追问用户,并保留本地 state 以便继续。
- failed:原样透出 error_message;如果错误明显是参数问题,提醒用户补全或改写需求。
- canceled:告诉用户任务已终止,需要重新发起。
- role/scene/audience 优先使用稳定枚举;如果用户表达不在枚举内,直接使用用户输入(接口无限制)。
轮询规则
- 1. 创建或回复后先进入一个约 2 分钟的前台观察窗口。
- 若任务仍在 queued/running,优先结束当前阻塞并保留本地状态,而不是持续等到完成。
- 只有在明确要求阻塞等待时,才进入长轮询。
- 一旦遇到 waitinguserinput,立刻停止轮询并向用户提问。
- 一旦遇到 succeeded、failed 或 canceled,立刻结束。
禁止行为
- - 不要要求用户理解 job_id 或任何内部对象。
- 不要向用户暴露内部状态名称。
- 不要在没有脚本支持的情况下手工拼装复杂协议。
- 不要把下载链接包装成内部系统术语。
- 不要在 OpenClaw 仅仅加载了本技能时就自动发起远程任务。
完整对话示例
示例 1:首次创建 PPT
用户:帮我做一份介绍 AI 编程工具的 PPT
助手:好的。你打算以什么身份来讲?(研究人员 /