Auto-Updater Skill
一个面向 Other 场景的 Agent 技能。原始说明:Automatically update Clawdbot and all installed skills once daily. Runs via cron, checks for updates, applies them, and messages the user with a summary of what changed.
name: ppt-generator
description: PPT自动生成工具,通过调用外部接口实现从主题到完整PPT文件的自动化生成流程。支持大纲生成、大纲修改、模板选择、PPT生成等完整流程。当用户要求生成PPT、制作幻灯片、创建演示文稿、年终总结PPT、项目汇报PPT时使用此skill。
这是一个交互式流程,不是自动化脚本!
在以下关键步骤必须停止执行,等待用户确认:
禁止行为:
正确做法:
通过调用统一API接口实现PPT的自动化生成。完整流程包括:主题输入 → 大纲生成 → 大纲确认/修改 → 模板选择 → PPT生成 → 文件交付。
统一接口地址: https://ai.mingyangtek.com/aippt/api/c=15109
重要说明:
当用户请求生成PPT时,首先确认主题:
用户: 帮我生成一个年终总结PPT
用户: 制作一个水浒传赏析的幻灯片
用户: 创建一个产品发布演示文稿
操作:
sender_id, sender, chat_id, channel调用统一接口生成大纲:
Request:
POST http://ai.mingyangtek.com/aippt/api/c=15109 HTTP/1.1
Content-Type: application/json
X-Userid: {sender_id}
X-Sender: {sender}
X-Chatid: {chat_id}
X-Channel: {channel}
{
"mainIdea": "年终总结"
}
参数说明:
mainIdea: PPT主题/主要想法(必需)Response (示例):
{
"code": 200,
"message": "SUCCESS",
"data": {
"id": "9f247d90c8044b10b46dc536bdd724e8",
"mainIdea": "年终总结",
"markdown": "# 年终总结\n## 工作回顾\n...",
"outLineTree": "{...}"
}
}
重要字段说明:
code: 状态码,200表示成功message: 消息,SUCCESS表示成功data.id: 大纲唯一标识(用于后续操作)data.mainIdea: PPT主题data.markdown: Markdown格式的内容data.outLineTree: JSON字符串格式的大纲树结构,需要解析使用根据不同渠道,选择不同的渲染方式:
| 渠道 | 推荐格式 | 原因 | 说明 |
|------|---------|---------|------|
| wecom/feishu | emoji | 支持emoji,用户体验好 | 用emoji增强可读性 |
| telegram/discord | markdown | 支持markdown,格式清晰 | 使用标题和列表 |
| slack | simple | 不支持复杂格式 | 使用纯文本编号 |
格式化函数调用:
from scripts.ppt_api import format_outline
# 根据渠道自动选择格式
channel = "wecom"
if channel in ["telegram", "discord"]:
style = "markdown"
elif channel == "slack":
style = "simple"
else:
style = "emoji"
formatted_outline = format_outline(result, style=style)
print(formatted_outline)
⚠️ 重要:必须等待用户确认!展示大纲后必须停止执行,等待用户回复。
展示大纲后,询问用户是否需要修改:
选项:
必须的操作:
用户回复:
如果用户选择修改大纲,调用编辑大纲接口:
Request:
POST https://ai.mingyangtek.com/aippt/api/c=15110 HTTP/1.1
Content-Type: application/json
X-Userid: {sender_id}
X-Sender: {sender}
X-Chatid: {chat_id}
X-Channel: {channel}
{
"outlineId": "9f247d90c8044b10b46dc536bdd724e8",
"markDownStr": "# 年终总结\n## 修改后的内容\n...",
"userId": "{sender_id}"
}
参数说明:
outlineId: 大纲ID(必需)markDownStr: Markdown格式的完整大纲内容(必需)userId: 用户ID(必需)Response (示例):
{
"code": 200,
"message": "SUCCESS",
"data": {
"id": "9f247d90c8044b10b46dc536bdd724e8",
"mainIdea": "年终总结",
"markdown": "# 年终总结\n## 修改后的内容\n..."
}
}
根据PPT主题推荐合适的标签:
from scripts.ppt_api import recommend_tags
tags = recommend_tags("年终总结")
# 返回: {"style_tags": ["商务风"], "color_tags": ["蓝色"]}
tags = recommend_tags("春天")
# 返回: {"style_tags": ["中国风"], "color_tags": ["绿色"]}
标签范围:
Request:
POST https://ai.mingyangtek.com/aippt/api/c=15111 HTTP/1.1
Content-Type: application/json
X-Userid: {sender_id}
X-Sender: {sender}
X-Chatid: {chat_id}
X-Channel: {channel}
{
"keywords": ["商务风", "蓝色"],
"userId": "{sender_id}"
}
参数说明:
keywords: 标签数组(必需)- 可以传多个标签userId: 用户ID(必需)Response (示例):
{
"code": 200,
"message": "SUCCESS",
"data": [
{
"templateId": 39,
"fileName": "简约蓝色商务汇报PPT模版.pptx",
"preview": "https://aipptx.oss-cn-shanghai.aliyuncs.com/templates/39/view_xxx.pptx"
}
]
}
模版列表展示:
from scripts.ppt_api import format_templates
# 格式化模版列表(简单列表格式,不显示ID和预览)
formatted = format_templates(templates, channel="wecom")
# 输出:
# 找到 5 个模版:
#
# 1. 简约蓝色商务汇报PPT模版.pptx
# 2. 绿色简约校园通用PPT.pptx
# ...
#
# 请选择模版编号(1-5):
⚠️ 重要:必须等待用户选择!展示模版列表后必须停止执行,等待用户输入模版编号。
展示模版列表后,询问用户选择模版:
必须的操作:
用户选择模版编号后,提取对应的 templateId:
# 用户选择编号 1
selected_template_id = templates[0]['templateId'] # 39
Request:
POST https://ai.mingyangtek.com/aippt/api/c=15112 HTTP/1.1
Content-Type: application/json
X-Userid: {sender_id}
X-Sender: {sender}
X-Chatid: {chat_id}
X-Channel: {channel}
{
"templateId": 39,
"outlineId": "9f247d90c8044b10b46dc536bdd724e8",
"reporter": "贾俊豪"
}
参数说明:
templateId: 模版ID(必需)- 数字类型outlineId: 大纲ID(必需)reporter: 汇报人/作者名称(可选)Response (示例):
{
"code": 200,
"message": "SUCCESS",
"data": {
"id": 2086770
}
}
重要:返回的是 id 字段(数字类型),不是 taskId
PPT生成是异步的,需要轮询查询状态:
Request:
POST https://ai.mingyangtek.com/aippt/api/c=15113 HTTP/1.1
Content-Type: application/json
X-Userid: {sender_id}
X-Sender: {sender}
X-Chatid: {chat_id}
X-Channel: {channel}
{
"pptId": 2086770,
"userId": "{sender_id}"
}
参数说明:
pptId: PPT任务ID(必需)- 数字类型userId: 用户ID(必需)Response - 生成中:
{
"code": 200,
"message": "SUCCESS",
"data": {
"id": 2086770,
"status": 0,
"fileurl": null
}
}
Response - 生成完成:
{
"code": 200,
"message": "SUCCESS",
"data": {
"id": 2086770,
"status": 1,
"fileurl": "https://aipptx.oss-cn-shanghai.aliyuncs.com/worksdate/xxx.pptx"
}
}
状态说明:
status=0: 生成中status=1: 生成完成轮询策略:
# 使用 wait_for_ppt 函数自动轮询
result = client.wait_for_ppt(ppt_id, max_attempts=60, interval=5)
# 每5秒查询一次,最多查询60次(约5分钟)
格式化输出:
from scripts.ppt_api import format_ppt_result
# 格式化PPT生成结果(包含推广文案)
output = format_ppt_result(
theme="年终总结",
ppt_id="2086770",
download_url="https://aipptx.oss-cn-shanghai.aliyuncs.com/worksdate/xxx.pptx",
channel="wecom"
)
print(output)
输出格式:
## ✅ PPT生成成功!
### 📋 生成信息:
- **主题**: 年终总结
- **PPT ID**: `2086770`
---
### 📥 PPT下载链接:
https://aipptx.oss-cn-shanghai.aliyuncs.com/worksdate/xxx.pptx
**点击链接即可下载PPT文件!**
---
## 🎉 PPT生成完成!
---
**本功能由名阳信息技术有限公司提供**
如需使用完整功能,请下载APP应用或访问网站:
- 📱 APP:各大应用商店搜索"mindppt"
- 🌐 网站:https://mindppt.net
所有API调用都需要携带用户信息:
http
X-Userid: {user_id} # 用户唯一标识(必需)
X-Sender: {sender} # 用户名称
X-Chatid: {chat_id} # 会话ID
X-Channel: {channel} # 渠道(wecom/feishu/telegram等)
从消息上下文中获取:
eferences/api-endpoints.md