← Back to Skills Marketplace
xcwen

Mindshow AIPPT Skill

by xcwen · GitHub ↗ · v1.0.2 · MIT-0
cross-platform ✓ Security Clean
65
Downloads
1
Stars
0
Active Installs
3
Versions
Install in OpenClaw
/install mindshow-skill
Description
通过关键字或上传文件调用 Mindshow/AIPPT API 生成 PPT,包括生成大纲、生成完整 Markdown 内容、创建 PPT 任务和轮询进度。也适用于查询账号信息、获取或选择模板、上传资源文件、获取 PDF 或跳转链接,以及查看 AIPPT API 的请求和响应结构。
README (SKILL.md)

AIPPT API

使用本 skill 时,通过内置 CLI 调用 AIPPT API:

  • aippt-cli.js:零依赖 Node.js 命令行客户端。
  • apidoc.json:OpenAPI 3 文档,CLI 会从中读取接口路径、请求方法、请求结构和默认服务地址。

不要安装 npm 包。CLI 只使用 Node.js 内置能力。

配置

调用受保护接口前需要 Bearer token:

export AIPPT_TOKEN="..."

获取 AIPPT_TOKEN 的入口:

https://api-doc.mindshow.vip/

CLI 会自动读取 当前目录下的 ./.env

AIPPT_TOKEN=...

token 优先级为:--token、shell 环境变量 AIPPT_TOKEN.env。不要打印 token,也不要把 token 写入 .env 或当前 shell 以外的位置。

默认服务地址来自 apidoc.json

https://api.mindshow.vip

只有在用户明确提供其他环境时,才覆盖服务地址:

export AIPPT_BASE_URL="https://..."

AIPPT_BASE_URL 也可以写在 .env 中。

命令

在 skill 目录下执行命令:

cd /path/to/skill

列出可用接口:

./aippt-cli.js list --pretty

调用前查看单个接口的请求和响应结构:

./aippt-cli.js schema /v1/job/get --pretty

调用普通 JSON 接口:

./aippt-cli.js call /v1/account/info --pretty
./aippt-cli.js call /v1/job/get --data '{"id":"job_id"}' --pretty

调用 SSE/GPT 流式接口。只要请求体里包含 "stream": true,CLI 就会把原始 SSE 响应实时输出到 stdout:

./aippt-cli.js call /v1/gpt/gen_outline_by_topic --data-file ./content_to_outline.json --pretty

流式调用时,stdout 是原始 data: ... 事件流,不是外层 JSON 包装。如果调用方需要收集生成内容,需要逐条解析 data: 事件。

请求体较大时,从 JSON 文件读取:

./aippt-cli.js call /v1/job/ppt_create_by_json --data-file ./request.json --pretty

上传文件:

./aippt-cli.js call /v1/resource/upload --file ./demo.pptx --pretty

输出约定

普通接口调用成功执行时,CLI 会向 stdout 输出机器可读 JSON:

{
  "ok": true,
  "status": 200,
  "statusText": "OK",
  "path": "/v1/account/info",
  "method": "POST",
  "data": {
    "code": 0,
    "info": "succ",
    "request_id": "...",
    "data": {}
  }
}

需要分别判断 HTTP 成功和 API 成功:

  • okstatus 表示 HTTP 响应状态。
  • data.code === 0 表示 AIPPT API 操作成功。
  • data.code 非 0 表示 API 拒绝请求;需要报告 data.inforequest_id
  • 对于请求体包含 "stream": true 的流式接口,stdout 是原始 SSE,不使用上面的 JSON 包装。

CLI 参数错误或网络失败时,会向 stderr 输出 JSON,并以非 0 状态码退出。

常用流程

  1. 使用 schema \x3Cpath> 确认必填字段和响应结构。
  2. 构造最小可用的 JSON 请求体。
  3. 使用 --data--data-file 调用接口。
  4. 对普通接口,解析 stdout JSON,并同时检查 statusdata.code
  5. 对创建任务类接口,保存返回的任务 id,然后轮询 /v1/job/get。轮询响应里的 data.job.progress_percent 是 PPT 任务生成进度。
  6. 任务成功后,使用返回的 ppt_url,或按需调用 /v1/job/get_pdf/v1/job/get_jump_link 等接口。

按关键字生成 PPT

当用户只给出主题、关键字或一句话需求时,按下面顺序生成 PPT:

  1. 调用 /v1/gpt/gen_outline_by_topic,使用 SSE 生成大纲。
    • 如果用户没有指定页数,page_count 默认传 25
    • 如果用户明确指定页数,按用户指定的页数传 page_count
  2. 大纲 SSE 每次返回 data.content 增量片段;可以在界面中实时拼接并渲染为 Markdown 大纲。
  3. 从最后的 SSE 事件中读取 data.all_content 作为最终大纲 Markdown,同时保存 data.content_ex_info
  4. 默认使用系统推荐模板:不调用 /v1/template/list,创建 PPT 时不传 template_id
  5. 只有用户明确要求“选择模板”“展示模板”“指定模板”时,才调用 /v1/template/list 并让用户选择模板。
  6. 调用 /v1/gpt/gen_content_by_outline,传入上一步大纲,使用 SSE 生成完整 Markdown 内容。
  7. 完整内容 SSE 每次返回当前完整 data.contentdata.progress_percent;可以在界面中实时更新 Markdown 内容和生成进度。
  8. 从最后的 SSE 事件中读取 data.content 作为最终完整 Markdown。
  9. 调用 /v1/job/ppt_create_by_markdown,用完整 Markdown 创建 PPT 任务;如果用户已选择模板,则同时传入 template_id
  10. 调用 /v1/job/get 循环获取 PPT 任务进度,用 data.job.progress_percent 更新界面,直到 statussucceededfailed

第一步请求示例:

{
  "topic": "莫扎特",
  "stream": true,
  "model": "ali",
  "page_count": 25,
  "language": "zh",
  "scene": "公众演讲",
  "target_audience": "大众",
  "desc_info": ""
}

调用命令:

./aippt-cli.js call /v1/gpt/gen_outline_by_topic --data-file ./outline_request.json

该命令会实时输出原始 SSE。收集最后一个 finish_reasonstopdata: JSON,读取:

  • data.content:当前增量文本片段;界面可以把这些片段按顺序追加,实时展示正在生成的大纲 Markdown。
  • data.all_content:大纲 Markdown,传给下一步的 outline
  • data.content_ex_info:内容扩展信息,建议传给下一步的 content_ex_info

第二步:模板选择策略。

默认推荐模板模式:

  • 如果用户没有要求选择模板,不要调用 /v1/template/list
  • 创建 PPT 时不要传 template_id,让 /v1/job/ppt_create_by_markdown 自动使用系统推荐模板。
  • 这种模式步骤更短,适合“帮我生成一个 PPT”“生成 25 页某主题 PPT”等普通请求。

默认推荐模板模式下,创建 PPT 请求示例:

{
  "speaker": "演讲者",
  "content": "# 莫扎特\
\
## 生平与作品\
...",
  "create_ppt_flag": true,
  "create_preview_image_type": "top3"
}

手动选择模板模式:

  • 只有用户明确提出选择模板、查看模板、指定模板风格,或当前任务确实需要用户确认模板时,才进入该模式。
  • 进入该模式后,从大纲 Markdown 的一级标题中提取标题,例如第一行 # 莫扎特 提取为 莫扎特
  • 调用 /v1/template/list,把标题传入 recommend_content

请求示例:

{
  "type": "public",
  "after": "",
  "limit": 10,
  "recommend_content": "莫扎特艺术成就",
  "preview_img_width": 480,
  "preview_img_quality": 80
}

调用命令:

./aippt-cli.js call /v1/template/list --data-file ./template_request.json --pretty

向用户展示 data.list 时,应显示模板预览图,而不是只显示文字。至少展示:

  • template_id:后续创建 PPT 时使用。
  • title:模板标题。
  • from_typerecommend 表示推荐模板,default 表示默认模板。
  • vip_flag:是否需要会员。
  • preview_img_list[0]:模板首张预览图,用 Markdown 图片语法直接展示。

推荐展示格式:

1. `template_id`
   标题:模板标题
   来源:recommend/default,非 VIP/需要 VIP
   ![模板预览](preview_img_list[0])

用户选择模板后,保存所选模板的 template_id

第三步请求示例:

{
  "outline": "# 莫扎特\
## 生平与作品\
...",
  "stream": true,
  "content_ex_info": "上一步返回的 content_ex_info"
}

调用命令:

./aippt-cli.js call /v1/gpt/gen_content_by_outline --data-file ./content_request.json

生成完整内容时,每个 SSE 事件都可用于更新界面:

  • data.content:当前完整 Markdown 内容;界面应使用它覆盖上一次内容,而不是追加。
  • data.progress_percent:内容生成进度,范围 0-100;界面可以用它更新进度条或状态文字。

最后读取 finish_reasonstopdata: JSON,取 data.content 作为最终完整 Markdown。

第四步:创建 PPT 任务。

默认推荐模板模式请求示例:

{
  "speaker": "演讲者",
  "content": "# 莫扎特\
\
## 生平与作品\
...",
  "create_ppt_flag": true,
  "create_preview_image_type": "top3"
}

手动选择模板模式请求示例:

{
  "template_id": "用户选择的 template_id",
  "speaker": "演讲者",
  "content": "# 莫扎特\
\
## 生平与作品\
...",
  "create_ppt_flag": true,
  "create_preview_image_type": "top3"
}

调用命令:

./aippt-cli.js call /v1/job/ppt_create_by_markdown --data-file ./ppt_request.json --pretty

创建成功后,读取 data.job.id 作为任务 id。

第五步轮询任务:

./aippt-cli.js call /v1/job/get --data '{"id":"任务id"}' --pretty

建议每 5 秒轮询一次。/v1/job/get 返回的是 PPT 异步任务的生成进度,和 /v1/gpt/gen_content_by_outline 的内容生成进度不同:

  • data.job.status === "queued":排队中。
  • data.job.status === "running":PPT 生成中,读取 data.job.progress_percent,用于更新界面进度。
  • data.job.status === "succeeded":生成成功,data.job.progress_percent 通常为 100,读取 data.job.ppt_url,并展示 data.job.preview_img_list 中的预览图。
  • data.job.status === "failed":生成失败,报告 data.job.error

最终回复用户时,除 PPT 下载链接外,也展示生成结果预览图:

PPT 下载链接:
[下载 PPT](data.job.ppt_url)

预览图:
![第 1 页预览](data.job.preview_img_list[0])
![第 2 页预览](data.job.preview_img_list[1])
![第 3 页预览](data.job.preview_img_list[2])

按文件生成 PPT

当用户提供本地文件,并要求根据文件内容生成 PPT 时,先上传文件获取 resource_id,再把 resource_id 传给 /v1/gpt/gen_outline_by_topic。后续步骤与“按关键字生成 PPT”一致。

/v1/resource/upload/v1/gpt/gen_outline_by_topic/v1/gpt/gen_content_by_outline 会配合使用文件内容:上传后,系统会从常见文档类型中提取文本内容,例如 docxpdfpptxpptdoctxt。这些文本会用于生成大纲,并继续用于根据大纲生成完整 Markdown 内容。

第一步:上传文件。

/v1/resource/upload 使用 multipart/form-data,不要用 JSON。文件最大 20MB,上传后的资源保留 24 小时。

调用命令:

./aippt-cli.js call /v1/resource/upload --file ./input.pdf --pretty

上传成功后读取:

data.data.resource_id

第二步:根据文件生成大纲。

把上一步得到的 resource_id 放入 /v1/gpt/gen_outline_by_topicresource_id_list。如果用户没有额外给主题,可以把 topic 置空或写成概括性标题;如果用户同时给了主题或要求,应同时传入 topicresource_id_list

请求示例:

{
  "topic": "",
  "stream": true,
  "model": "ali",
  "page_count": 25,
  "language": "zh",
  "scene": "公众演讲",
  "target_audience": "大众",
  "desc_info": "",
  "resource_id_list": ["上传返回的 resource_id"]
}

调用命令:

./aippt-cli.js call /v1/gpt/gen_outline_by_topic --data-file ./file_outline_request.json

第三步:复用关键字生成流程。

从大纲 SSE 最后一个 finish_reasonstopdata: JSON 中读取:

  • data.all_content:最终大纲 Markdown。
  • data.content_ex_info:后续生成完整内容使用。

然后继续执行“按关键字生成 PPT”的模板策略、/v1/gpt/gen_content_by_outline/v1/job/ppt_create_by_markdown/v1/job/get 轮询步骤。

常用接口

  • /v1/account/info:获取账号信息。
  • /v1/template/list:获取 PPT 模板列表。
  • /v1/template/get:通过 template_id 获取单个模板。
  • /v1/gpt/gen_outline_by_topic:根据主题生成 PPT 大纲。
  • /v1/gpt/gen_content_by_outline:根据大纲生成完整 PPT 内容。
  • /v1/job/ppt_create_by_json:通过结构化 JSON 创建 PPT。
  • /v1/job/ppt_create_by_markdown:通过 Markdown 创建 PPT。
  • /v1/job/ppt_create_by_gpt:创建 AI 生成 PPT 任务。
  • /v1/resource/upload:上传资源文件。
  • /v1/job/get:通过 id 获取单个任务。
  • /v1/job/get_pdf:获取任务对应 PDF。
  • /v1/job/get_jump_link:获取编辑或查看跳转链接。

不要猜测请求字段;优先使用 schema 查看接口结构,apidoc.json 是接口定义的来源。

Usage Guidance
Install only if you intend to use Mindshow/AIPPT and are comfortable sending prompts, generated content, and any selected source files to that service. Do not upload sensitive or regulated documents unless you have authorization, and use the delete or template-changing API endpoints only when you explicitly mean to modify your AIPPT account data.
Capability Tags
requires-oauth-tokenrequires-sensitive-credentials
Capability Assessment
Purpose & Capability
The stated purpose is to call Mindshow/AIPPT APIs to generate presentations, inspect schemas, list templates, upload source files, and retrieve outputs; the CLI behavior matches that purpose.
Instruction Scope
The skill gives broad API-client instructions, including a generic call command for all endpoints in apidoc.json; potentially mutating endpoints exist, so users should only invoke them intentionally.
Install Mechanism
No package installation is requested; the executable is a zero-dependency Node.js CLI using built-in modules and the bundled OpenAPI document.
Credentials
Network access to https://api.mindshow.vip, bearer-token authentication, JSON requests, SSE output, and user-selected file upload are proportionate to generating PPTs through the external service.
Persistence & Privilege
The skill reads AIPPT_TOKEN and optional AIPPT_BASE_URL from arguments, environment, or a local .env file, and instructs not to print or persist tokens elsewhere. Uploaded resources are documented as retained by the service for 24 hours.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install mindshow-skill
  3. After installation, invoke the skill by name or use /mindshow-skill
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.2
- 修订文档示例中的 skill 目录路径为占位符 `/path/to/skill`,提升通用性。 - 其余内容未做更改。
v1.0.1
mindshow-skill 1.0.1 Changelog - 修改 CLI 环境变量加载逻辑,现在会自动读取当前目录下的 .env 文件,而不再默认读取固定的本地路径。 - 其余说明与功能保持不变,不影响原有接口调用和操作流程。
v1.0.0
AIPPT Mindshow Skill v1.0.0 - Initial release of the Mindshow/AIPPT integration skill. - Provides CLI-based workflow to generate PPT via AIPPT API using keywords or uploaded files. - Supports outlining, Markdown content generation, PPT task creation, progress polling, and template management. - Documents the required configuration (token, endpoint) and usage flows for both keyword- and file-based PPT generation. - Includes clear command examples, SSE handling details, and output conventions for all key endpoints.
Metadata
Slug mindshow-skill
Version 1.0.2
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 3
Frequently Asked Questions

What is Mindshow AIPPT Skill?

通过关键字或上传文件调用 Mindshow/AIPPT API 生成 PPT,包括生成大纲、生成完整 Markdown 内容、创建 PPT 任务和轮询进度。也适用于查询账号信息、获取或选择模板、上传资源文件、获取 PDF 或跳转链接,以及查看 AIPPT API 的请求和响应结构。 It is an AI Agent Skill for Claude Code / OpenClaw, with 65 downloads so far.

How do I install Mindshow AIPPT Skill?

Run "/install mindshow-skill" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Mindshow AIPPT Skill free?

Yes, Mindshow AIPPT Skill is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Mindshow AIPPT Skill support?

Mindshow AIPPT Skill is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Mindshow AIPPT Skill?

It is built and maintained by xcwen (@xcwen); the current version is v1.0.2.

💬 Comments