一句话或者通过素材生成PPT,自动根据题材选择模版风格,支持联网搜索下载图片等素材。
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 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.html…page-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:ellipsis、line-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/*.md 与 converter/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+ 金#C9A06Bon 米白#F7F3EA
字体偏好
- 标题衬线:文津宋体
WenJin Mincho Plane 0(书卷气,古典/文化主题) - 正文:文源黑体
WenYuan Sans SC/ Noto Sans SC(可读) - 力量感:阿里巴巴普惠体 Heavy / 思源宋体 / 微软雅黑 / 等线
四、版式要点(让 PPT「不单调」)
- 每页版式不同,别用统一卡片:封面 hero / 目录导航 / KPI 大数字 / 时间轴 / 图文不对称 / 标签云 / 图标网格 / 排名卡 / 流程图 / 金句结尾。
- 图标点缀:FontAwesome(converter 支持,自动转 PNG)。
- 多色分区:不同类别不同强调色,避免单色平铺。
- 装饰:大号背景数字、圆形/色块、顶部金条、左侧竖条、金色分隔线。
- 实景照片(旅游/展示类必填):
<img src="..." style="object-fit: cover">+ 深色压暗渐变保证文字可读。
五、已知经验 / 坑
- 「只换颜色 ≠ 设计提升」:要同时改版式、字体、图表、排列才有质的提升。
- Bing 图片搜索不可靠:主题经常对不上、且多带图源水印;正式商用请换无版权图源。
- 中文字体嵌入会导致 PPTX 体积大(几 MB 到几十 MB),是字体丰富的代价;可用
--no-auto-embed-fonts关闭。 - 转换器需本机无头 Chromium;若在受限沙箱内运行,Chromium 启动可能被命名管道限制拦截(需完整权限)。
- 详细心得见
knowledge/设计经验.md。
许可证
本仓库素材版权归各自原作者/网站所有,仅供学习研究。转换器与 skill 为个人整理,使用请遵守相应 LICENSE(见 converter/LICENSE.txt)。