金山文档SKILL功能更新,引入AI PPT功能
Lv.2潜力创作者
金山文档 SKILL 更新至 v1.3.3 版本,AI PPT 生成能力作为独立模块被正式引入,共提供了 9 个专用工具,分为两条独立链路:
主题生成 PPT(从零开始,基于一个主题或一句话)
文档生成 PPT(基于已有文档,提取内容生成演示文稿)
两条链路虽然入口不同,但最终都汇聚到同一个渲染引擎——基于 {topic, outlines[]} 结构调用后端生成逐页 HTML PPTX,并返回合并后的完整演示文件。
一、主题生成 PPT:从一句话到完整演示文稿
用户只需要提供一个大致的想法,系统会自动完成需求澄清、资料研究、大纲生成和视觉渲染的全流程。
Step 1:需求澄清 — aippt.theme_questions
当用户的输入比较模糊时(比如"帮我做个长颈鹿科普PPT"),系统不会急于生成,而是先通过这个工具生成一组结构化问卷,追问关键信息。
输入参数:
参数 | 类型 | 说明 |
input | string | 用户的主题或需求描述 |
返回内容:一份包含多个问题的问卷(questionnaire),每个问题有 key、title、type(radio / checkbox / input)、选项列表和默认答案。例如:
PPT 的目标场景是什么?(课堂讲解 / 活动展示 / 产品提案)
受众群体是谁?(低龄儿童 / 职场人士 / 技术团队)
希望包含哪些内容模块?(外形特征 / 生活习性 / 趣味冷知识)
是否需要互动环节?
这一步确保了后续生成的内容有明确的方向约束,避免了"生成一堆内容但不符合预期"的常见问题。
Step 2:深度研究 — aippt.theme_deep_research
有了明确的需求后,系统会围绕主题和用户的回答进行联网研究,搜集事实资料、案例和背景知识。
输入参数:
参数 | 类型 | 说明 |
input | string | 主题描述 |
question_and_answers | array | 上一步收集的问答对 |
返回内容:研究完成的摘要统计(目标数、完成数、提取的资料条数)。
这里有一个重要的工程细节:完整的研究内容通过流式通知(notifications/progress)逐步推送,最终的工具返回值只保留摘要。这意味着调用方需要通过流式通道消费完整的研究资料文本,并在下一步将其作为 references 传入。
Step 3:大纲生成 — aippt.theme_outline
综合主题、用户问答和研究资料,生成结构化的 PPT 大纲。
输入参数:
参数 | 类型 | 说明 |
input | string | 主题描述 |
question_and_answers | array | 问答对(不能为空) |
references | string | 研究资料文本(来自 deep_research 的流式产出) |
返回内容:包含 outline 对象的结果,其中包含封面页、内容页、结尾页等结构化幻灯片定义。
Step 4:渲染生成 — aippt.theme_generate_html_pptx
将确认后的大纲交给后端渲染引擎,生成逐页 HTML PPTX 并合并为完整文件。
输入参数:
参数 | 类型 | 说明 |
topic | string | 演示文稿标题 |
outlines | array | 大纲数组(每项至少包含 title 和 type) |
返回内容:
字段 | 说明 |
merged_url | 合并后的完整 PPTX 下载地址(有时效性) |
total_pages | 总页数 |
pages | 逐页生成结果(含 slide_index、file_url、title、type) |
生成速度约每页 20-30 秒,11 页以上的 PPT 可能耗时 4-8 分钟,因此文档建议将超时时间设置为 3000 秒(50 分钟)。
Step 5:上传云端 — upload_file
生成完成后,PPTX 文件可以通过 upload_file 工具上传到用户的金山文档云空间。由于文件需要先 Base64 编码,这一步只能通过 mcporter 的编程 API(callOnce())完成,无法通过命令行调用——这是工程上的一个重要约束。
二、文档生成 PPT:从已有文档到专业演示文稿
当用户已经有一份文档(Word 报告、研究论文、项目方案等),希望快速转换为演示文稿时,文档生成链路更为合适。
Step 1:创建会话 — aippt.doc_create_session
为整个文档转 PPT 流程创建一个服务端 AI 会话,获取唯一的 session_id。后续所有步骤都需要携带这个 ID 来维持会话状态。
Step 2:解析文档 — aippt.doc_outline_options
将文档引用(通过 file_id 或金山文档分享链接的 link_id)提交给服务端,服务端会解析文档内容,并返回一组需要用户确认的选项问题:
输入参数:
参数 | 类型 | 说明 |
session_id | string | AI 会话 ID |
input | array | 输入数组:一条文本指令 + 一条文档引用 |
返回内容:
字段 | 说明 |
checkpoint_id | 恢复会话所需的检查点 ID |
interrupt_id | follow_up 中断 ID(后续 resume 需要用到) |
questions | 选项问题列表(如"制作目标"选择培训宣讲还是产品发布) |
Step 3:生成大纲 — aippt.doc_outline
用户确认选项后,系统结合文档内容和用户意图生成完整的 Markdown 大纲。
输入参数:
参数 | 类型 | 说明 |
session_id | string | AI 会话 ID |
checkpoint_id | string | 来自上一步的检查点 |
input | array | 与上一步保持一致的输入数组 |
resume_info | array | 恢复信息数组(必须为数组) |
返回内容:
字段 | 说明 |
markdown_outline | 完整的 Markdown 大纲 |
user_intention | 规范化后的用户意图对象(直接传给美化步骤) |
Step 4:风格美化 — aippt.doc_beautify
这一步是文档链路独有的环节。它根据大纲和用户意图,为每一页生成全局风格和逐页排版设计描述。
输入参数:
参数 | 类型 | 说明 |
topic | string | 演示文稿主题 |
outline | string | Markdown 大纲 |
user_intention | object | 用户意图对象 |
model | string | 风格模型,默认 IMAGE_V2 |
返回内容:global_style(全局设计风格描述)+ slides[](每页的 design_style)。
Step 5:格式转换
将 markdown_outline 和 beautify 结果合并为 {topic, outlines[]} 标准结构。文档链路的最终生成接口 aippt.doc_generate_ppt 与主题链路的 aippt.theme_generate_html_pptx 底层接口一致,都接受这种统一的格式。
Step 6:渲染生成 — aippt.doc_generate_ppt
参数格式与 theme_generate_html_pptx 完全一致,接收 {topic, outlines[]},返回合并后的 PPTX 下载地址和逐页结果。
三、工程实践中的关键设计
三种调用方式的选择
文档根据参数长度严格区分了三种调用方式:
方式 | 适用场景 | 示例工具 |
mcporter call 命令行 | 参数短(< 2000 字符) | theme_questions、doc_create_session |
_call_mcp.js 脚本 | 参数长(references、outlines 等) | theme_outline、doc_beautify、doc_generate_ppt |
callOnce() 编程 API | Base64 编码的文件上传 | upload_file |
这种分层设计解决了 Windows 命令行长度限制(约 8191 字符)的问题。_call_mcp.js 脚本通过 spawnSync 调用 mcporter CLI,参数从文件读取而非命令行传入;upload_file 则进一步绕过命令行,直接在 Node.js 进程中调用 mcporter 模块的 callOnce() 函数。
临时文件管理
所有中间产物(研究结果、大纲、美化配置、生成结果)都写入基于对话 ID 的独立临时目录:
%TEMP%/kdocs_aippt_<conversation_id>/
├── 01_selections.json # 用户选择
├── 02_research.json # 研究结果
├── 03_outline.json # 大纲结果
├── 04_config.json # 转换后的配置
├── 05_ppt_result.json # PPT 生成结果
├── 06_cloud_result.json # 上传结果
└── _call_mcp.js # 可复用的调用脚本文件使用 UTF-8 无 BOM 编码,JSON 必须通过标准序列化函数生成(禁止手动拼接)。流程结束后递归删除整个目录,通过 try...finally 确保无论成功失败都执行清理。
超时与可靠性
约束 | 值 | 原因 |
单步超时 | 3000 秒 | 11 页以上 PPT 生成可能需要 4-8 分钟 |
maxBuffer | 50 MB | 防止大输出被截断 |
下载链接有效期 | 有限(具体时长未公开) | 生成后应尽快消费 |
stdout 截断 | 8000 字符 | 避免终端刷屏,完整内容写入文件 |