Install any skill in seconds. Free to start, no credit card required.
Get Started Free →白板板书风格 PPT 生成。用户说「做PPT」「生成幻灯片」「白板风格演示」「板书」等时使用。支持 5 步标准工作流:确认风格→整理页码→检查依赖→逐页生成→合成下载。输出高保真白板照片,手写感 shufa 笔触,黑/蓝/红三色马克笔,适合教学、汇报、头脑风暴。每页需参考图和提示词前缀,封面必用专用前缀防止保留原文字。
.claude/skills/ethanyoq-ppt-nano/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 47% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 0% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 19% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 219% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 84% | 0% |
用户说「ppt-nano」「生成PPT」「做PPT」「白板风格PPT」等关键词时,必须严格按以下流程执行,不可跳步!
立即回复:
> 🖊️ 白板板书风格 > 真实白板照片 + 马克笔手写(shufa笔触)+ 手绘插图,黑/蓝/红三色马克笔
收到文案后,立即整理成确认表发给用户,格式:
> 📋 梳理如下,请确认: > > | 页码 | 页面类型 | 参考图 | 内容摘要 | > |------|---------|--------|---------| > | 封面 | 首页 | cover.jpg | 主标题 / 副标题 | > | P1 | 内容页 | content.jpg | 标题 / 要点摘要 | > | P2 | 图表页 | chart.jpg | 标题 / 数据摘要 | > | ... | ... | ... | ... | > > 共 X 页,请确认页面分配是否正确,确认后说"启动生成"!
页面类型判断规则:
等用户确认后再进入第三步。
bashpython -c "import openai, PIL; print('ok')"
如果失败,先安装:
bashpython -m pip install openai pillow python-pptx
每页命令模板(严格执行):
bashpython {baseDir}/scripts/generate_image.py \ --prompt "{对应前缀}{页面专属提示词}" \ --filename "{输出文件名}.jpg" \ --resolution 2K \ --aspect-ratio 16:9 \ -i "{参考图绝对路径}"
> Windows PowerShell 下反斜杠续行用反引号( ),或写成一行。
关键参数说明:
-i 传入参考图(image-to-image 模式,必须带)--resolution 固定用 2K(支持 2K / 3K,不支持其他值)--aspect-ratio 固定用 16:9--filename 必须以 .jpg 结尾(模型输出固定为 JPEG)按参考图出图,白板背景和整体版式保留不变,白板上的所有原有文字和图案全部清除,按以下文案重新设计内容。中文必须是马克笔shufa笔触风格,配图手绘风格。Chinese text MUST use thick shufa-style ink brush marker calligraphy — bold chunky strokes, NOT printed font. 颜色规则:黑色用于主标题和正文,蓝色用于副标题、数据标注和补充信息,红色用于强调词、结论句和圆圈高亮。配图颜色按内容用红蓝马克笔适配。按参考图出图,白板背景和整体版式保留不变,白板上的所有原有文字和图案全部清除,不保留任何已有标题或说明文字。按以下文案重新设计封面内容,主标题突出显示,副标题用蓝色马克笔书写。封面版面要充分利用,除主标题和副标题外,可添加与主题相关的手绘装饰图案、关键词标注、或视觉分割线,确保白板面积利用率不低于60%。中文必须是马克笔shufa笔触风格,配图手绘风格。Chinese text MUST use thick shufa-style ink brush marker calligraphy — bold chunky strokes, NOT printed font. DO NOT reproduce any text from the reference image. 颜色规则:黑色用于主标题,蓝色用于副标题和说明文字,红色用于强调词和圆圈高亮。> 说明: 封面参考图含有固定示例文字,若使用通用前缀模型容易将其保留。封面页必须使用封面专用前缀,明确要求清除原有文字。
参考图路径({baseDir}/styles/whiteboard/pages/):
├── cover.jpg ← 首页专用(必须配封面专用前缀)
├── chart.jpg ← 图表页专用
├── navigation.jpg ← 导航页专用
├── content.jpg ← 内容页/文字页共用
├── closing.jpg ← 尾页专用
└── text.jpg ← 文字页(同 content.jpg)规则:
-i),不同页型严禁混用参考图MEDIA: 行为准获取生成图片路径,不依赖 stderr 解析所有页面确认后,调用合成脚本:
bashpython {baseDir}/scripts/build_pptx.py \ -i "slide1.jpg" "slide2.jpg" "slide3.jpg" \ -o "{workspace}/你的文件名.pptx"
> build_pptx.py 已内置跨平台支持(Windows / macOS / Linux),统一使用 python 调用。中文路径乱码问题已在脚本内部处理,无需手动设置环境变量。
build_pptx.py 参数说明: | 参数 | 说明 | |------|------| | -i img1.jpg img2.jpg ... | 图片路径列表,按页序排列 | | --dir ./某目录/ | 扫描目录下所有 jpg(按文件名字母序) | | -o output.pptx | 输出路径,默认 output.pptx | | --width / --height | 幻灯片尺寸(英寸),默认 13.33 × 7.5(16:9) |
机器可读输出: 脚本最后一行输出 PPTX:/path/to/file.pptx,可直接解析路径。
合成完成后将 .pptx 文件路径告知用户。
{baseDir}/styles/whiteboard/pages/{baseDir}/scripts/generate_image.py{baseDir}/scripts/build_pptx.py{workspace}/ppt_outputs/> {baseDir} = skill 所在目录(如 ~/.easyclaw/skills/ppt-nano) > {workspace} = ~/.easyclaw/workspace
-i)或混用参考图| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 12,723 | 5,923 | -53% | 1 | 1 | 0% | 1,899 | 2,792 | +47% | 0 | 0 | — |
case-02 | fail→pass | 17,318 | 3,812 | -78% | 1 | 1 | 0% | 2,454 | 2,442 | -0% | 0 | 0 | — |
case-03 | fail→pass | 13,557 | 4,177 | -69% | 1 | 1 | 0% | 2,199 | 2,620 | +19% | 0 | 0 | — |
case-04 | fail→pass | 4,094 | 2,842 | -31% | 1 | 1 | 0% | 683 | 2,176 | +219% | 0 | 0 | — |
case-05 | pass→pass | 6,550 | 2,088 | -68% | 1 | 1 | 0% | 1,147 | 2,124 | +85% | 0 | 0 | — |
case-06 | fail→pass | 10,652 | 8,927 | -16% | 1 | 1 | 0% | 1,885 | 3,465 | +84% | 0 | 0 | — |
case-07 | fail→pass | 4,575 | 4,923 | +8% | 1 | 1 | 0% | 758 | 2,758 | +264% | 0 | 0 | — |
case-08 | fail→pass | 6,276 | 5,731 | -9% | 1 | 1 | 0% | 846 | 2,838 | +235% | 0 | 0 | — |
case-09 | fail→pass | 9,782 | 4,548 | -54% | 1 | 1 | 0% | 1,565 | 2,678 | +71% | 0 | 0 | — |
case-10 | fail→pass | 7,849 | 5,035 | -36% | 1 | 1 | 0% | 1,159 | 2,774 | +139% | 0 | 0 | — |
case-11 | fail→pass | 10,582 | 4,165 | -61% | 1 | 1 | 0% | 1,610 | 2,514 | +56% | 0 | 0 | — |
case-12 | fail→pass | 13,658 | 4,938 | -64% | 1 | 1 | 0% | 1,969 | 2,653 | +35% | 0 | 0 | — |
case-13 | fail→pass | 8,007 | 2,135 | -73% | 1 | 1 | 0% | 1,194 | 2,130 | +78% | 0 | 0 | — |
case-14 | fail→fail | 7,705 | 2,493 | -68% | 1 | 1 | 0% | 1,099 | 1,952 | +78% | 0 | 0 | — |
case-15 | fail→pass | 11,339 | 2,557 | -77% | 1 | 1 | 0% | 1,977 | 2,244 | +14% | 0 | 0 | — |
case-16 | pass→pass | 9,138 | 1,787 | -80% | 1 | 1 | 0% | 1,660 | 2,102 | +27% | 0 | 0 | — |
case-17 | fail→pass | 10,112 | 3,513 | -65% | 1 | 1 | 0% | 1,363 | 2,320 | +70% | 0 | 0 | — |
case-18 | fail→pass | 7,582 | 2,181 | -71% | 1 | 1 | 0% | 1,201 | 2,118 | +76% | 0 | 0 | — |
case-19 | fail→fail | 12,454 | 1,485 | -88% | 1 | 1 | 0% | 1,820 | 2,015 | +11% | 0 | 0 | — |
case-20 | pass→pass | 14,295 | 12,501 | -13% | 1 | 1 | 0% | 2,873 | 4,478 | +56% | 0 | 0 | — |
case-21 | pass→pass | 20,211 | 11,405 | -44% | 1 | 1 | 0% | 3,579 | 3,766 | +5% | 0 | 0 | — |
case-22 | pass→pass | 20,404 | 14,914 | -27% | 1 | 1 | 0% | 3,666 | 4,843 | +32% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +68 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.