一键导入
slide-deck
根据播客大纲生成专业的演示文稿,是播客视频流水线的视觉环节。也可以独立生成 PPT 或编辑已有演示文稿。 只要用户提到生成 PPT、做幻灯片、制作演示文稿、做 slides、幻灯片生成, 或者正在制作播客视频需要视觉内容,就应该触发此技能——即使用户只说"帮我做个 PPT"也要触发。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
根据播客大纲生成专业的演示文稿,是播客视频流水线的视觉环节。也可以独立生成 PPT 或编辑已有演示文稿。 只要用户提到生成 PPT、做幻灯片、制作演示文稿、做 slides、幻灯片生成, 或者正在制作播客视频需要视觉内容,就应该触发此技能——即使用户只说"帮我做个 PPT"也要触发。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
当用户想了解本体如何开发和使用时使用本技能。它能够通过 CRM 的实际 DEMO,演示以下 6 项能力:1)自然语言数据查询(无需 SQL);2)聚合统计分析;3)字段歧义智能消歧;4)非结构化文本转对象和跨表视图的创建;5)数据操作(周报生成→信息抽取→客户录入→商机任务创建);6)非结构化本体的文档融合检索。你可以通过以下对话唤起本技能:「给我演示一下」「本体能做什么」「怎么创建对象和视图」「结构化和非结构化怎么融合」「帮我查一下客户数据」。
当你想让 Agent 查询或操作你自己定义的业务数据(而不是系统内置数据)时使用本技能。它能够帮你用自然语言定义一张新的数据表,并基于这张表开发出本体对象,设定字段和字段含义,数据自动存入专属 数据表;还能创建跨表视图,让 Agent 同时查询多个对象。定义完成后挂载到当前数字员工,Agent 就能直接查询和操作你的数据了。你可以通过以下对话唤起本技能:「帮我创建一个任务管理对象」「我想建一个拜访记录表,包含客户名、拜访日期、跟进结果」「查看我有哪些本体对象」「把任务对象挂载到我的助理」。
当你有文档、图片、视频等非结构化内容存在知识库里,想让 Agent 能像查结构化数据一样精准检索和操作它们时使用本技能。它能够帮你给非结构化内容打上结构化标签(定义字段,如日期、主题、参会人),让每份文档/图片/视频都带有可查询的属性,实现结构化数据与非结构化内容的融合检索。定义的标签字段相当于表的字段,支持新增、修改、删除操作。与结构化本体的区别在于:内容本身存在知识库里,而不是动态表。你可以通过以下对话唤起本技能:「帮我创建一个会议纪要对象,绑定到我的会议知识库」「我的周报存在知识库里,想让 Agent 能按日期和项目名检索」「查看我的知识库有哪些」「把会议纪要对象挂载到我的助理」。
把任意内容(网页链接、文章、关键词)整理成一份结构化的播客视频大纲,是制作播客视频的第一步, 后续的幻灯片和对话脚本都从这份大纲生成,保证两者内容一致。 只要用户想制作播客视频、把文章变成视频、做一期播客、先规划内容结构, 或者说"做个大纲"、"做播客"、"把这篇文章做成播客",就必须触发此技能—— 即使用户没有提到"大纲",只要目标是制作播客视频就要触发。
根据播客大纲生成双人对话脚本(主持人和嘉宾),对话自然流畅,每句话都标注对应的幻灯片编号, 方便后续配音和视频同步。也可以直接从关键词或文章生成对话脚本。 只要用户想写播客脚本、生成对话、把内容做成两个人聊天的形式、帮我写播客、做播客对白, 就应该触发此技能——即使用户只说"写个脚本"或"把这个做成对话"也要触发。
把幻灯片和播客配音合成为一个带字幕的视频,幻灯片随着对话内容自动切换,字幕逐句出现,是播客视频的最后一步。 只要用户说合成视频、生成视频、把幻灯片和音频合在一起、加字幕、做成视频、最后一步,好了合成吧, 或者前面几步都做完了想收尾,就应该触发此技能——即使用户只说"合成"也要触发。
| name | slide-deck |
| description | 根据播客大纲生成专业的演示文稿,是播客视频流水线的视觉环节。也可以独立生成 PPT 或编辑已有演示文稿。 只要用户提到生成 PPT、做幻灯片、制作演示文稿、做 slides、幻灯片生成, 或者正在制作播客视频需要视觉内容,就应该触发此技能——即使用户只说"帮我做个 PPT"也要触发。 |
| license | MIT |
| compatibility | Requires Node.js (v16+) and pptxgenjs (npm install -g pptxgenjs) |
| metadata | {"version":"1.0","category":"productivity","sources":"https://gitbrent.github.io/PptxGenJS, https://github.com/microsoft/markitdown"} |
根据 slide-outline.json 大纲生成专业 PPTX,是播客视频流水线的视觉支线。每张幻灯片对应大纲中的一个 slide,编号严格一致,这样下游的 /podcast-video 才能正确计算每张幻灯片的播放时长。
详细参考文档见 references/ 目录:
所有产物统一存放在:
<当前工作空间>/podcast-projects/<项目名>/v<N>/presentation.pptx
<当前工作空间> 是调用此技能时所在的目录。播客视频流水线中的所有技能建议在同一个目录下调用,确保 podcast-projects/ 始终在同一位置。
中间构建文件(JS slides、编译脚本)存放在不版本化的 _build/ 目录:
podcast-projects/<项目名>/_build/
slide-01.js, slide-02.js ...
compile.js
imgs/
确定项目: 扫描 podcast-projects/ 目录,找到含 slide-outline.json 的项目,向用户确认后继续。
自动版本: 读取 <项目名>/current.txt:
presentation.pptx 已存在于当前版本 → 创建 vN+1/ 目录,复制现有产物,再写入新 PPTX,更新 current.txtpresentation.pptx 不存在 → 直接写入当前版本,成功后更新 current.txt在开始生成幻灯片之前,先确认这些条件满足,避免在构建到一半时才发现问题:
slide-outline.json 且格式合法(含 meta.total_slides 和 slides 数组)node 可用:node --versionpptxgenjs 已全局安装:npm list -g pptxgenjs(未安装则执行 npm install -g pptxgenjs)<skill-dir>/fonts/wqy-microhei.ttc| 任务 | 方法 |
|---|---|
| 读取/分析现有 PPTX | python -m markitdown presentation.pptx |
| 从 slide-outline.json 生成 | 见下方 从大纲生成 |
| 从模板编辑 | 见 editing.md |
| 从零自定义创作 | 见下方 自定义创作流程 |
| 参数 | 值 |
|---|---|
| 画布尺寸 | 10" x 5.625"(LAYOUT_16x9) |
| 颜色格式 | 6 位十六进制,不含 #(如 "FF0000") |
| 英文字体 | Arial(Win/Mac)/ Liberation Sans(Linux,内置于 <skill-dir>/fonts/) |
| 中文字体 | Microsoft YaHei(Win/Mac)/ WenQuanYi Micro Hei(Linux,内置于 <skill-dir>/fonts/) |
| 页码位置 | x: 9.3", y: 5.1" |
| 主题键名 | primary, secondary, accent, light, bg |
当项目目录下存在 slide-outline.json 时使用此路径。跳过"研究需求"和"规划大纲"步骤,直接读取大纲内容。
{
"slides": [
{
"slide": 1,
"type": "cover",
"title": "...",
"subtitle": "...",
"key_points": []
}
]
}
outline type | 幻灯片布局 | key_points 处理 |
|---|---|---|
cover | 封面页 | 忽略(空数组);title 作主标题,subtitle 作副标题 |
toc | 目录页 | 忽略(空数组);从所有 content/section 幻灯片的 title 自动生成目录条目(最多 6 条) |
section | 章节分隔页 | 忽略或最多显示 1 条;title 作大字分节标题 |
content | 内容页 | 每条作为一个 bullet point |
summary | 总结页 | 每条作为结论 bullet |
关键约束(这些约束保证下游 /podcast-video 能正确同步):
slide 字段:slide: 3 → slide-03.js,不按数组下标compile.js 的循环次数必须等于 meta.total_slides/podcast-script 的 "slide": N 注解依赖这个顺序没有 slide-outline.json 时,从零创作。
Step 1 了解需求:主题、受众、风格、幻灯片数量。
Step 2 选配色和字体:参考 design-system.md。
Step 3 选设计风格:Sharp / Soft / Rounded / Pill 四选一。
Step 4 规划大纲:为每张幻灯片选定一个类型(见 slide-types.md),确保视觉多样性,不重复同一布局。
Step 5 生成 JS 文件:在 _build/ 下为每张幻灯片创建一个 JS 文件,命名 slide-01.js、slide-02.js……可并发最多 5 个子任务同时生成。
Step 6 编译成 PPTX:创建 _build/compile.js 合并所有模块,输出到版本目录。
compile.js 运行前先读取 current.txt 确定输出路径,避免硬编码版本号:
const fs = require('fs');
const version = fs.readFileSync(`podcast-projects/<项目名>/current.txt`, 'utf8').trim();
const outputPath = `podcast-projects/<项目名>/${version}/presentation.pptx`;
Step 7 QA:参考 pitfalls.md。
每个 JS 文件必须导出同步的 createSlide(pres, theme) 函数:
// slide-01.js
const pptxgen = require("pptxgenjs");
function createSlide(pres, theme) {
const slide = pres.addSlide();
slide.background = { color: theme.bg };
slide.addText("标题", {
x: 0.5, y: 2, w: 9, h: 1.2,
fontSize: 48, fontFace: "Microsoft YaHei",
color: theme.primary, bold: true, align: "center"
});
return slide;
}
if (require.main === module) {
const pres = new pptxgen();
pres.layout = 'LAYOUT_16x9';
const theme = { primary: "22223b", secondary: "4a4e69", accent: "9a8c98", light: "c9ada7", bg: "f2e9e4" };
createSlide(pres, theme);
pres.writeFile({ fileName: "slide-01-preview.pptx" });
}
module.exports = { createSlide };
| 键 | 用途 | 示例 |
|---|---|---|
theme.primary | 最深色,用于标题 | "22223b" |
theme.secondary | 深色强调,用于正文 | "4a4e69" |
theme.accent | 中间调强调色 | "9a8c98" |
theme.light | 浅色强调 | "c9ada7" |
theme.bg | 背景色 | "f2e9e4" |
不要使用 background、text、muted 等其他键名——主题对象由 compile.js 传入,键名不对会导致颜色失效。
页码让观众随时知道自己看到哪一张,在合成为视频后不依赖播放器进度条——这对播客视频这种线性播放场景尤为重要,也保证了每张幻灯片的视觉风格一致。
slide.addShape(pres.shapes.OVAL, { x: 9.3, y: 5.1, w: 0.4, h: 0.4, fill: { color: theme.accent } });
slide.addText("3", { x: 9.3, y: 5.1, w: 0.4, h: 0.4, fontSize: 12, fontFace: "Arial", color: "FFFFFF", bold: true, align: "center", valign: "middle" });
生成完成后,确认以下各项,避免让下游流程因无效 PPTX 而失败:
podcast-projects/<项目名>/v<N>/presentation.pptx 存在且大小 > 50KBpython -m markitdown presentation.pptx 提取的幻灯片数 = meta.total_slidestitle 字段一致key_points 中的要点全部出现在对应幻灯片上slide 字段一致:扫描 _build/ 下的所有 slide-XX.js,对照 slide-outline.json 中每条 slide 的 slide 字段值,确认编号是按 slide 值命名而非数组下标(例如第一个 content slide 若 slide: 3,文件必须是 slide-03.js)。发现不一致时列出冲突项,说明哪个 JS 文件编号错误,需要修正后重新编译| 缺失情况 | 标准反问 |
|---|---|
| 无大纲文件 | "项目目录下未找到大纲文件,请先运行 /podcast-outline,或提供现有大纲的路径。" |
node 未安装 | "需要安装 Node.js,请访问 https://nodejs.org 安装后重试。" |
| 用户未指定项目 | "请告诉我要继续哪个播客项目,或新建一个项目名称。" |