Agent办公技能之PPT生成:基于 Agent 技能与 Node.js 的 PPT 自动生成项目

一句话或者通过素材生成PPT,自动根据题材选择模版风格,支持联网搜索下载图片等素材。

分支2Tags0
文件最后提交记录最后更新时间
13 天前
13 天前
13 天前
13 天前
13 天前
13 天前
13 天前
13 天前
3 天前
13 天前

PPT Craft Skill

一套可复用的 PPT 生成能力包:从「给一个主题」到「自动生成版式丰富、图表齐全、字体讲究、实景填充的 .pptx」的完整方案。

核心设计排序:可读性 > 美观 > 速度。宁可拆页、留白、精简,绝不为了塞内容缩小字号或堆密度。


目录

PPTCraftSkill/
├── skill/          DSH/Agent skill 定义(pptx-craft SKILL.md)
├── converter/      HTML→PPTX 转换引擎(officeAcePPTSkill,不含 node_modules)
│   ├── scripts/    转换器 CLI + bundle
│   ├── designer/   全局设计规范(SKILL.md 97KB + charts.md)
│   ├── styles/     4 套内置风格模板
│   ├── html-to-pptx/  可读转换源码 + CSS 白名单
│   ├── assets/     字体 / 图标 / ECharts / Tailwind / fonteditor
│   └── image-insert|outline-planner|research-writer  子技能
├── materials/      从外部模板提取的可复用素材(238 张图片 + 色板/字体/版式清单)
├── photos/         南京等实景图(示例素材)
├── samples/        生成出的成品 PPT 示例(电影分析 x4 + 南京旅游 x2)
├── web-search/     AgentWebSearch(联网搜索 skill,Python 标准库实现)
└── knowledge/      设计经验、配色、字体、版式心得

一、怎么用

1. 转换引擎(核心)

converter/ 是一个 Node 项目(package.json),把「单个 1280×720 的 HTML 页面」渲染成可编辑的 .pptx(原始形状/文本,非截图),支持 ECharts 图表、FontAwesome 图标、中文字体嵌入。

cd converter
npm install         # 装 playwright 等依赖(本机需 Node.js + Chromium)
node scripts/cli.js convert <pages目录> <输出.pptx>
  • <pages目录>page-1.pptx.htmlpage-N.pptx.html
  • 每个页面是完整 HTML(根容器 <div class="ppt-slide">,1280×720)
  • 转换器会自动把 CDN 资源(tailwind/echarts/字体/图标)映射到本地 assets/,离线可用

2. Skill 定义

skill/SKILL.md 是给 Agent 的指令:研究 → 大纲 → 逐页写 HTML → 调转换器 → 交付。复制到 .dsh/skills/<dshHome>/skills/ 即被 Agent 发现。

3. 联网搜索

web-search/ 是纯 Python 标准库的 Bing 搜索/抓取/图片下载。当 web_search 工具额度不足或需要直连时使用:

python web_search.py search "关键词" --limit 5
python web_search.py fetch "https://..."
python web_search.py images "关键词" --limit 3 --output ./imgs

二、内置设计系统(converter/styles + designer)

每页 HTML 必须遵循:

容器与防溢出

  • 根容器 <div class="ppt-slide flex flex-col" type="...">,固定 1280×720
  • 核心内容放 .content-safe(1220×660,四周 30px 边距)
  • <head> 里必须包含 designer/SKILL.md 的「防溢出硬性约束 → 全局 CSS 约束」整段
  • 禁止 overflow-hidden 裁剪正文、text-overflow:ellipsisline-clamp、或缩小字号硬塞;超预算拆页

字号(px → pt = px×0.75)

元素 HTML PPT(pt)
页面主标题 37px 28
分项标题 21–23px 16–17
正文 19px 14
标签 16px 12
注释/来源 12px 9

最小字号硬下限:正文与标签 ≥16px,注释 ≥11px;相邻层级字号比例 ≥1.2。

文字对比度(WCAG AA:正文 ≥4.5:1)

  • 正文 #000000 / 深灰 #555757
  • 禁止 #B5B5B5 及更淡的浅灰做正文/注释;灰色仅 #898989(中灰)且只用于英文副标题等辅助

行距 / 密度

  • 正文行距 1.5;元素间距 ≥16px
  • 每页核心观点 3–6 个;每卡正文 ≤2 行(≤40 字);单页正文 ≤14 行

图表(ECharts)

  • echarts.init(el, null, { renderer: "svg" }) 单行animation: false
  • 禁止渐变(areaStyle/itemStyle/lineStyle 用半透明纯色如 rgba(74,108,140,0.18)
  • 坐标轴标签/图例/数据标签只用 #000000 / #555757 / 强调色,禁止浅灰

4 套内置风格(converter/styles)

风格 特征
business-classic 白底 + 品牌红 #D33941,横向直角卡片(最通用)
elegant-narrative 米色羊皮纸 #f5f4ed + 陶土橙 #c96442 + 宋体标题 + 深炭卡明暗交替(最有质感)
industrial-tech 纯黑底 + 荧光绿 #76b900,硬朗械黑字体(深色硬核)
tech-minimal 白/浅灰 + 科技蓝 #0071e3,极简大留白

详见 converter/styles/*.mdconverter/designer/SKILL.md


三、可复用素材(materials + photos)

  • materials/素材库清单.md:从 11 个外部模板提炼的色板 / 字体 / 版式清单(含「黑金」「深蓝励志」「Office 六色」「旅游活力」四套配色)
  • materials/<模板>/:238 张提取出的图片(背景/插画/图标/装饰)
  • photos/:南京实景示例图(含明孝陵航拍、中山陵、鸡鸣寺樱花、总统府、金陵夜色)

推荐配色(可直接用)

  • 黑金(正式汇报):底 #0F1423,玫红 #EC5F74,金 #FFBA55,蓝 #6096E6,绿 #56CA95,青 #58B6E5,珊瑚 #F18870
  • 深蓝重用体(商务励志):主色 #256090 + 阿里巴巴普惠体
  • Office 六色(通用安全):深蓝 #1F497D / 蓝 #4F81BD / 红 #C0504D / 绿 #9BBB59 / 紫 #8064A2 / 青 #4BACC6 / 橙 #F79646
  • 旅游活力:蓝 #4472C4 / 橙 #ED7D31 / 金 #FFC000 / 绿 #70AD47
  • 古典金陵(南京等文化主题):朱砂红 #B03A2E + 墨绿 #2E5C4A + 金 #C9A06B on 米白 #F7F3EA

字体偏好

  • 标题衬线:文津宋体 WenJin Mincho Plane 0(书卷气,古典/文化主题)
  • 正文:文源黑体 WenYuan Sans SC / Noto Sans SC(可读)
  • 力量感:阿里巴巴普惠体 Heavy / 思源宋体 / 微软雅黑 / 等线

四、版式要点(让 PPT「不单调」)

  1. 每页版式不同,别用统一卡片:封面 hero / 目录导航 / KPI 大数字 / 时间轴 / 图文不对称 / 标签云 / 图标网格 / 排名卡 / 流程图 / 金句结尾。
  2. 图标点缀:FontAwesome(converter 支持,自动转 PNG)。
  3. 多色分区:不同类别不同强调色,避免单色平铺。
  4. 装饰:大号背景数字、圆形/色块、顶部金条、左侧竖条、金色分隔线。
  5. 实景照片(旅游/展示类必填):<img src="..." style="object-fit: cover"> + 深色压暗渐变保证文字可读。

五、已知经验 / 坑

  • 「只换颜色 ≠ 设计提升」:要同时改版式、字体、图表、排列才有质的提升。
  • Bing 图片搜索不可靠:主题经常对不上、且多带图源水印;正式商用请换无版权图源。
  • 中文字体嵌入会导致 PPTX 体积大(几 MB 到几十 MB),是字体丰富的代价;可用 --no-auto-embed-fonts 关闭。
  • 转换器需本机无头 Chromium;若在受限沙箱内运行,Chromium 启动可能被命名管道限制拦截(需完整权限)。
  • 详细心得见 knowledge/设计经验.md

许可证

本仓库素材版权归各自原作者/网站所有,仅供学习研究。转换器与 skill 为个人整理,使用请遵守相应 LICENSE(见 converter/LICENSE.txt)。

项目介绍

一句话或者通过素材生成PPT,自动根据题材选择模版风格,支持联网搜索下载图片等素材。

定制我的领域