Communitygithub.com

演示文稿生成器

将代码转化为1920x1080的高质量演示文稿,包含自定义伪3D Codex插图、极简语言文本、多样化的幻灯片布局,并输出可编辑的PowerPoint、PDF和演讲脚本。适用于创建、重新设计、翻译或扩展演示文稿,尤其适合越南语、非技术或官方受众。

演示文稿生成器 是什么?

这是专为AI代理(如Claude Code、Cursor、Codex等)设计的高级技能,用于从代码构建专业级演示文稿。它通过一个小型React项目渲染1920x1080的幻灯片,并配合自动化流水线生成可编辑的PowerPoint(含演讲者备注)、PDF和演讲脚本。支持单色系的伪3D Codex插图,强调极简、清晰的语言,确保每张幻灯片布局不重复。用户只需复制starter模板,替换内容即可。该技能特别关注越南语和非技术受众,要求严格遵循演讲者大纲,自动进行事实核查,并生成无动画、无滑入效果、内容对齐严谨的幻灯片,最终输出规范的文件。

兼容平台~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/tadyuh76/slide-deck-skill/tree/HEAD/skills/slide-deck

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

演示文稿

本技能定义的演示文稿是一个小型React项目,用于渲染1920x1080的幻灯片,并附带一个流水线,将其转换为原生PowerPoint(可编辑文本、演讲者备注)、PDF和演讲脚本。starter/目录是一个完整的、可工作的演示文稿(12张越南语示例幻灯片,蓝色主题,每种布局各一个示例)。复制它,替换内容,保留系统。

在开始任何其他工作之前,先阅读需求文档中的三件事:听众是谁(除非另有说明,否则假设无先验知识)、演讲时长是多少、以及演讲者自己的大纲内容。演讲者的大纲决定顺序和内容。你的职责是清晰和美观,而非提出新的主张。

1. 开始

cp -R "<本技能文件夹>/starter" "<项目>/<演示文稿名称>"
cd "<项目>/<演示文稿名称>/deck" && npm install && npx playwright install chromium
npx vite                                                # 开发服务器,端口在vite.config.ts中

然后设置名称:tools/deck-name.txt(PPTX和PDF的文件名)、deck/index.html标题、deck/script-doc.mjs的标题、deck/src/deck/types.ts中的章节名称(ACTS),以及Chrome中的页脚文本和Logo(deck/src/deck/Deck.tsx)。如果另一个演示文稿正在运行,请在deck/vite.config.ts中选择一个空闲端口。

项目结构:

  • deck/src/slides/*.tsx:每个幻灯片或组的文件,顺序在index.ts中定义。每个文件导出一个SlideDef(id、title、act、minutes、notes、Component)。
  • deck/src/ui/atoms.tsx:共享组件:Bg、Header、HaloArt/Art、Feature(高亮面板)、IconTile、Stat、Source、LogoTile、AppIcon。Links.tsx绘制带有缓慢移动点的连接线。World.tsx是由真实国家形状组成的虚线世界地图。
  • deck/src/index.css:存放颜色令牌。通过更改--accent、--accent-ink、背景值以及rgba色调来重新设置主题,而不是添加第二个主题。
  • tools/:艺术生成、构建、发布。

2. 内容规则(按修改频率排序)

  1. 遵循演讲者的文档。 章节顺序、定义措辞和每个数字都来自文档。如果大纲只有标题,则从主要来源添加最少内容,在Source中链接,并告知所有者你填充了哪些幻灯片。切勿呈现列表不支持的计数(例如,列表宣布有30个名称但实际只有28个:显示列表,省略该数字,并报告差异)。
  2. 标题要极其简单。 标题使用受众已经使用的词语命名幻灯片:"5 cách thu thập dữ liệu xuyên biên giới","Yêu cầu trong tình huống khẩn cấp"。聪明或压缩的句子会被拒绝。一行,最多约40个字符,字号66 px;后半部分使用强调色。
  3. 最少文本,使用平实的语言。 每个卡片一个想法,几行短文本。常见的英语术语放在方括号中或作为小的第二行("service provider")。使用数字,而非数字单词。标题上方无小标签,无冒号或中点作为装饰,无促销性措辞。
  4. 翻译所有内容,从源演示文稿翻译成受众的语言;保留专有名称和官员会遇到的英语术语。
  5. 演讲者备注承载完整文本。 幻灯片保持简短形式;备注中包含演讲者大纲中的完整句子,确保内容完整。将minutes与演讲时长进行核对,并报告超时情况。
  6. 真实组织的真实Logo(官方文件,绝不使用生成的仿制品);在assets/logos-src/SOURCES.md中记录每个Logo的来源。所有者要求的组织Logo放在每张幻灯片的Chrome中,标题页和结束页中放大显示。
  7. 后台进行事实核查。 派出一个研究Agent核查你添加的事实(日期、文章编号、法律编号、计数),并将结果写入docs/facts.md,每项附带一个URL。如果演讲者自己的数字与公开来源不同,则保留她的数字并报告差异。

3. 图形

每一张内容幻灯片都有插图。仅使用图标的幻灯片被认为很无聊。只有当幻灯片同时有艺术作品时,才允许使用小的lucide图标作为行标记。

  • 单色系: 由纯色平面组成的紧凑伪3D对象,无渐变或发光,单色系加上一个小的黄色标记。风格参考表是assets/ref/blue-indicators.png和green-indicators.png。表中的每个图块本身必须是平面的:一个发光的图块会将新图像引向渐变。对于另一种颜色,重新给表着色(tools/blue_ref.py),更改tools/art.mjs中的调色板行,生成第一批,然后从16个你自己最好的结果中重建表,并从那时起使用它(蓝色表就是如此制作的)。
  • 每张图像在tools/art-list.tsv中添加一行(名称<TAB>概念)。概念是一个清晰的对象,最多有两个辅助细节,且无文本:"一个有挂锁封口和小眼睛交叉徽章的密封信封"。
  • P=4 bash tools/art-batch.sh使用Codex CLI的图像工具生成缺失的内容(每张约80秒;需要安装并登录codex,模型在tools/art.mjs中设置)。在后台运行它,并继续编写幻灯片。某些运行会静默失败:完成后,检查每个名称是否存在,并针对缺失的名称再次运行。
  • docker build -q -t deck-pack -f tools/Dockerfile tools && docker run --rm -v "$PWD":/w -w /w deck-pack python tools/art_finish.py将其裁剪为deck/public/art/*.webp。使用<HaloArt name="..." size={...} />。
  • 敏感主题(对儿童的伤害、自杀、恐怖主义)使用保护性符号:雨伞、盾牌、救生圈、警告标志。
  • 地图来自World.tsx(真实形状),绝不来自图像模型。图表(韦恩图、流程图、中心辐射图)是幻灯片中的SVG。

4. 布局:相邻两张不同

每个幻灯片布局都不同的演示文稿曾被退回("每张幻灯片布局极其相似")。给每张幻灯片与其内容相匹配的形状。starter中有每种布局的一个工作示例:

内容布局Starter中的幻灯片
按顺序的几个部分沿一条路径上升的步骤,大而淡的数字s02-agenda.tsx
一个总体概念加上其他几个Bento:一个高亮的大图块和一个2x2网格Terms in s03-terms.tsx
一个流程流水线:一条线上的编号工位,流入一个结果面板s05-preserve.tsx
达到同一目标的多种方式中心辐射图s06-channels.tsx
具有相同属性的并行类型全宽行:图片、问题、名称、内容DataTypes in s03-terms.tsx
带一个警告的选项图块网格加一个Feature面板Emergency in s08-requests.tsx
交接链带箭头的节点流(Link from ui/Links.tsx)starter中无
两种选择两个宽面板starter中无
具有共享核心的重叠区域韦恩图,带引线的标签Directorate in s11-venn.tsx
地点带图钉或高亮国家的虚线地图,旁边是列表s17b-map-list.tsx
中心带有四个功能中间的圆盘,角落中有项目AspDesk in s14-corners-bridge.tsx
两侧及中间通过的物品桥:两个河岸,中间有车道Gateway in s14-corners-bridge.tsx
证明论点的数字带有Stat的Feature面板starter中无

当演讲者自己的幻灯片有图表创意(如韦恩图、地图旁边的列表)时,保留意图和内容并重新绘制;不要保留她的样式。

5. 文字排版(以下每条都曾是拒绝的截图原因)

  • 没有任何内容跳跃。 在一组卡片中,同一元素在每张卡片中从相同高度开始。使标题具有相同的行数(重新措辞,或给每个标题两行),然后将其余内容直接堆叠在下方。无空槽,标题及其文本之间无margin-top: auto间隙。
  • 按意义分行。 .slide是white-space: pre-line;在每个短语末尾写\n:"Chuỗi bảo quản\nchứng cứ",绝不写作"Chuỗi bảo\nquản chứng cứ"。保持每个手动换行足够短,浏览器不会再次换行;如果换行了,缩短该行或加宽框。名称列表也手动换行(不间断空格会破坏PowerPoint)。
  • 每行一个字号。 大数字及其单位是两个块(Stat);引导描述的强调词自成一行。
  • 边距。 内容保持在左侧和右侧120像素内,并避开Logo条(顶部30到98像素)。检查地图和图表上的标签是否与右边缘对齐。
  • 幻灯片完全打开。 无入场动画;最多允许一次点击展开,且仅当展开是要点时。环境动画(流动的点、标题背景)是可以的。
  • 除非要求,否则幻灯片上无进度或章节编号小部件;页脚导轨就足够了。

6. 构建和检查

zsh tools/release.sh     # 约5分钟:release/ 目录获取 Deck/(网页)、.pptx、.pdf、Kich-ban-trinh-bay.pdf

发布版会通过Microsoft PowerPoint重新保存文件以嵌入字体。它首先会退出PowerPoint:检查没有未保存的内容处于打开状态,并在/tmp中占用一个锁定文件夹,因此两个会话不会同时重新保存。如果在Mac上没有PowerPoint,在tools/release.sh中跳过该步骤;演示文稿仍可打开,但字体必须安装在演示机器上。

检查是工作的必要部分,每次迭代都要进行:

  1. cd deck && npx vite build && node export.mjs ../tmp/export 将每张幻灯片渲染到tmp/export/sNN.png。
  2. 全尺寸查看每张幻灯片,一次一张(缩小到宽1600像素)。联系表会隐藏换行、接触边界的文本以及未对齐的行。查找:你未手动断开却自动换行的行、靠近或超出边缘的文本、接触Logo的标题、卡片间不均匀的起始位置、缺失的图像(一个空描边方块)、重叠的标签。
  3. 发布后,查看tmp/lo/p-NN.png(LibreOffice布局的PowerPoint)中你更改的幻灯片。这是文本框溢出显示的地方。LibreOffice渲染的字型比PowerPoint略宽,因此那里的近似失误是真正的风险。
  4. 修复、重新构建、再次查看。清晰陈述你查看了什么以及未查看什么。

然后,将release/复制到桌面上一个命名的文件夹中,在 localhost 上服务release/Deck(docker run -d -p 127.0.0.1:<端口>:80 -v "$PWD/release/Deck":/usr/share/nginx/html:ro nginx:alpine),并在被要求时打开该文件夹。

7. 报告

首先说明哪些内容已准备就绪及其位置。然后列出需要所有者或演讲者决定的事项:你超出大纲添加的任何内容、你保留的与来源矛盾的数字、任何对不上的计数、实际演讲时间与时长对比。使用平实的语言,不提及文件名或函数名。

相关技能