下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-ln4nqpas--pptx-generator-pro.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-ln4nqpas/pptx-generator-pro。- 面向教师的课件生成器。先挖内容再排版:课标、学情迷思、数据、生活情境八类素材入课件
- 20 种版式、10 套配色、6 类学科矢量图(函数图像真采样)
- 讲稿写进演讲者备注,另出授课讲稿、学生讲义、教研自检报告,以及提词卡、排练计时表、预设问答卡、微课分镜、SRT 字幕、动画配方。时间轴与字数硬校验,不合格不出文件。
阅读全文 (展开查看完整说明)
概述
课件 PPT 生成
把「帮我做一份八年级物理《欧姆定律》的课件」变成一份能直接上课的 PPT——不是把教案全文贴到幻灯片上,也不是把教材目录抄成标题。
这个技能守四件事:先挖内容再排版(没有证据的结论不算结论)、先出大纲再动手(页序错了,排版再好看也没用)、按投影可读性排(字号够大、每页要点不超过 5 条)、生成后还能改(输出正常 .pptx,不是图片拼的)。
什么时候用
- 有课题名或一句话需求,要做一节课的课件
- 有现成教案、说课稿、知识点清单,要转成幻灯片
- 已有课件太密,投影到大屏看不清,要重排
- 要做公开课、说课、教研分享的演示稿
- 要随堂测、学生讲义、授课讲稿、教研自检报告(这四样本技能一并出)
- 要函数图像、电路图、几何图形、数轴、田字格、受力图这类学科示意图 →
figure版式 - 课件做完了,要过一遍「每页讲几句、讲到几分该收、学生问住怎么办」→
rehearse.py - 不确定这件事该用哪个技能、还要配什么工具 → 先跑
scripts/find_skills.py - 想把每学期都要走的流程固化成可复用的技能包 →
scripts/make_skill.py
不适合:非教学类商业演示、视频或动画短片。
计费说明(X402 按次计费)
本技能按次计费:每次调用 ¥2.99,交付一个学科素材包(学科矢量图库 + 配色方案 + 示例课件)。款项由微信支付 AI 专属卡在用户手机微信内确认扣款,开发者不接触、不索要、不保存任何支付账户、银行卡或验证码信息。平台模型是「按次调用」,不是卖安装包、不是订阅、没有套餐档位,也没有年卡。
未持有有效凭证时,服务端返回 HTTP 402 Payment Required 与两个响应头。这是支付授权信号,不是错误,不要当报错抛给用户,也不要去搜索同名插件。
服务端地址(本技能作者的腾讯云 CloudBase 环境,除此之外不访问任何主机):
export PAYSKILL_BASE="https://payskill-d2gizs1h4c3e7e1b0-1256677128.ap-shanghai.app.tcloudbase.com/payskill"接口只接受 HTTP 请求——不需要安装任何 npm 包、MCP 服务或本地插件,支付卡片由平台弹出。
前置检查(官方判据)
做任何一次需要素材包的调用前,按顺序判断,能省掉一次 402:
- 支付能力自检:取当前会话实际可调用的工具列表,逐个对工具名做子串匹配
weixinpay_,命中任意一个即视为具备支付能力。- 匹配的是子串
weixinpay_,不要写死完整工具名——具体工具名随平台版本变化,写死会在升级后误判 - 一个都没命中 → 本会话无法完成支付,直接告知用户「当前设备暂不支持微信支付 AI 专属卡」,不要发起 402 请求
- 匹配的是子串
- 本地
assets/下已有对应素材 → 直接用,不发请求 - 手里有未过期的 license 授权码 → 直接用
- 确认
PAYSKILL_BASE指向已部署的服务端(缺省值见上)
请求与 402 识别
curl -i "$PAYSKILL_BASE/skill/pptx-generator-pro"包内脚本已封装这套流程。它只做一件事:发一次 GET、把 JSON 打到 stdout;不读本地文件、不写本地文件、不读环境变量改地址、不轮询。
python scripts/pay_client.py # 首次,未付费返回支付信息(退出码 2)
python scripts/pay_client.py --out-trade-no PS20261029xxxx # 付款后带原单号重试(退出码 0 = 已拿到)退出码:0 已付费、2 需要支付、1 其他错误。重试节奏由 Agent 自己控制(见下方「重试机制」),脚本不含循环。
| 返回 | 含义 | 下一步 |
|---|---|---|
200 + {"status":"paid"} | 已付费 | 直接用 result 里的素材 |
402 + WeixinPay-Required | 未付费 | 走下面的支付流程 |
503 + PRODUCT_ID_MISSING | 服务端尚未配置平台支付标识 | 告知用户「暂未开售」,不要重试 |
502 + UPSTREAM_ERROR | 上游异常 | 看 detail,稍后重试 |
402 响应的原始形态:
HTTP/1.1 402 Payment Required
WeixinPay-Required: <payment_code>
X-Out-Trade-No: PS20261029xxxxxxxx
{
"status": "action_required",
"WeixinPay": { "WeixinPay-Required": "<payment_code>", "prompt": "..." },
"amount": 2.99,
"currency": "CNY",
"plan": "pptx_pack",
"out_trade_no": "PS20261029xxxxxxxx"
}两个头都必须取,body 里那份是给只能读响应体的 Agent 兜底,取值完全相同。
支付触发
- 把
WeixinPay-Required的值原样作为payment_code交给平台支付卡片 - 记下
X-Out-Trade-No - 把
WeixinPay.prompt原样显示给用户(它说明了这不是需要安装的插件) - 不要重新下单——订单已在服务端建好,重新下单会多出一笔
支付凭据必须原样透传:不得改写、省略、截断、总结或转述。payment_code 少一个字符平台就拉不起支付卡。
重试机制
用户付款完成后,用完全相同的 URL + 原订单号重试:
curl -i "$PAYSKILL_BASE/skill/pptx-generator-pro"
-H "X-Out-Trade-No: PS20261029xxxxxxxx"
-H "WeixinPay-Required: <payment_code>"- 间隔 3s → 5s → 8s → 13s → 21s,最多 5 次;微信回调有延迟,立刻重试只会连续拿 402
- 拿到
200立即停止 - 5 次仍
402→ 让用户核对是否付款成功,停止自动重试,不要无限循环
订单号传递
X-Out-Trade-No是幂等键:服务端按它查单、发货,同一单号只发货一次(数据库层条件更新保证原子性)- 重试必须带原单号,不带会新建一笔单,可能导致重复扣费
- 若返回的
X-Out-Trade-No与上次不同,说明上一单已过期(默认 15 分钟),按新单重新走支付
异常处理
平台定义的三个业务异常码必须分别处理,不要混成一个「失败」:
| 异常码 / 状态 | 含义 | 处理 |
|---|---|---|
NOT_PAID | 用户尚未完成支付 | 等用户付款,用原单号重试;不要重新下单 |
REFUNDED | 该订单已退款 | 不得交付素材;提示用户如需继续使用请重新发起调用 |
FULFILL_AND_REFUND_FAILED | 履约与退款同时失败 | 立即停止重试,保留订单号,提示用户联系开发者人工处理 |
传输层与闸门层的异常:
| 现象 | 原因 | 处理 |
|---|---|---|
402 但订单号变了 | 上一单过期,服务端已重建 | 用新单号重新触发支付 |
连续 5 次 402 | 未完成支付 / 扫码超时 | 让用户重新扫码,停止自动重试 |
409 | 同一订单并发履约 | 等 2 秒用同一单号重试,不要重新下单 |
503 + PRODUCT_ID_MISSING | 服务端尚未配置支付标识 | 告知用户暂未开售,不要重试 |
503 + PAY_GATEWAY_UNAVAILABLE | 平台预下单未返回业务响应(上游 302/5xx) | 账号侧开通状态问题,重试无效,如实告知用户并停止 |
502 + UPSTREAM_ERROR | 服务端或微信侧异常 | 展示 detail,稍后重试 |
401 | 授权码失效或被篡改 | 重新获取授权 |
| 网络超时 | — | 用同一单号重试,幂等保证不重复扣费 |
价格(按次,单档)
| 计费方式 | 单价 | 交付 |
|---|---|---|
| 按次调用 | ¥2.99 / 次 | 一个学科素材包(图库 + 配色 + 示例课件),授权 190 天 |
plan 参数仅为兼容旧调用方保留,传任何值价格相同、授权范围相同——本技能不存在第二档价格。
收款方式:付款在微信客户端内由用户本人确认,开发者只收到「该订单已付」的状态回执,看不到也拿不到用户的支付账户信息。本技能不要求用户向任何个人账户转账、不索取验证码、不在站外收款。
安全
payment_code只在本次支付流程内使用,不要写进日志、不要外发给第三方- 支付密钥、开发者私钥只在服务端,技能包内不保存任何私钥
- 素材包内容只存在服务端,
assets/里放的是版式骨架与示例,不随包下发付费内容
包内脚本的行为边界(可逐条核对源码):
| 维度 | 本技能包的做法 |
|---|---|
| 网络 | 只有 scripts/pay_client.py 一个文件联网,目标是文件内写死的 SERVICE_BASE 常量;不接受外部传入地址,不读环境变量改写 |
| 请求数 | 每次运行固定 1 个 GET,无循环、无轮询、无后台常驻 |
| 本地文件 | 不读、不写、不建目录;结果只打到 stdout |
| 进程 | 不启动外部程序或子进程,不做动态代码求值 |
| 数据 | 不上传任何本地内容;只回传服务端自己给出的订单号与支付凭据 |
| 其余脚本 | 11 个 PPT 生成脚本全部离线本地运算,零网络调用 |
和希沃、WPS、101、PowerPoint 比,差在哪
先把话说明白:希沃和白板一体机绑在一起卖,靠的是硬件 + 资源库;WPS 靠的是模板和海量素材;PowerPoint 靠的是引擎本身。 这三样我们都没有,也不该假装有。能拉开差距的地方只有一处——它们都在解决「好不好看、快不快」,没人解决「这节课站不站得住」。
| 能力 | 希沃白板5 | WPS AI PPT | PowerPoint | 本技能 v3.0 |
|---|---|---|---|---|
| 内容依据(课标/学情/迷思/考点) | 模板 + 资源库,不挖内容 | 由文档或主题生成,不校验 | Copilot 生成,不校验 | 八类素材 + 三条红线 |
| 时间轴能否对上课时 | 不管 | 不管 | Speaker Coach 只测语速 | 分钟合计硬校验,偏差 >20% 不出文件 |
| 学习目标是否可观测 | 不管 | 不管 | 不管 | 四级动词表,禁用「了解/掌握」 |
| 学科矢量图 | 有,模版图(函数/电路/几何) | 无 | 无,要自己画 | 6 类,函数按真采样算、电路按节点连 |
| 课堂活动游戏 | 200+ 游戏模板(分类/配对/填空) | 无 | 无 | 不做,转 lesson-plan-designer 的 HTML 小游戏 |
| 动画与蒙层揭示 | 强(蒙层、刮刮乐、触发动画) | 一般 | 强(Morph、触发) | 不写动画 XML,给《动画配方》30 秒套完 |
| 模板 / 主题数量 | 学科模板 | 海量 | 海量 | 20 版式 + 10 配色,数量仍不如 |
| 图片素材与 AI 配图 | 百万级 | AI 配图 | 图标库、3D | 不生成图片,给配图提示词清单 |
| 云同步 / 多端 | 强 | 强 | 强 | 不联网,本地文件(无账号、无水印) |
| 讲稿(含提问与预设错答) | 无 | 自动备注(要点式) | Copilot 生成 | 讲稿 + 提问 + 预期错答 + 追问 + 板书 + 设计意图 |
| 排练与提词 | 无 | 智能排练 + 手机提词 + 预测提问 | Speaker Coach | 提词卡 + 排练计时表 + 预设问答卡(v3.0 补齐) |
| 微课与字幕 | 知识胶囊录屏 | 虚拟人视频 + 自动字幕 | 录制 + 实时字幕 | 分镜脚本 + SRT 字幕,不含虚拟人 |
| 教研自检评分 | 无 | 无 | 无障碍检查 | 八维 100 分(结构/可读/时间/认知/互动/讲稿/素材/差异化) |
| 学生讲义 | 无 | 部分 | 无 | A4 留白笔记版,随堂测不带答案 |
| 出处标注 | 无 | 无 | 无 | 原创/改编/援引 三档,援引必须写出处 |
四条结论:
- 排版与素材它赢,内容站不站得住我们赢。 同一节课拿希沃排只要 20 分钟,但排完还是不知道这 45 分钟够不够、目标是不是空话、学生会在哪里卡住——这三件事它不管。
- v3.0 补掉了最大的两块差距:学科矢量图(原来只能靠用户自己截图)与授课执行包(原来讲稿给完就断了)。
- 明确不做的四件事:云同步、素材库、AI 生图、虚拟人视频。前三件是别人的生意,第四件不是「课件」该管的事。硬做只会做出一个处处不如人的版本。
- 有一样它们永远做不到:所有文件都在本机生成,不登录、不上传、不加水印、不按次收费。学校内网也能跑。
如果你要的是「点两下出一套好看的幻灯片」,去用 WPS AI;要的是「这节课上得住」,留下来。
第一步:问清四件事,先挖内容
| 参数 | 取值 | 缺省推定 |
|---|---|---|
| 学科 / 年级 / 教材版本 | 八年级物理 人教版 | 必问 |
| 课题与课型 | 新授课 / 复习课 / 实验课 / 习题课 / 说课 | 必问 |
| 课时 | 45 分钟 | 1 课时 |
| 学生的基础与常见困难 | 一句话即可 | 按学段常规推定 |
| 风格与页数 | 简洁投影;12~25 页 | 按课型给 |
然后不要直接排页,先按 references/content-mining.md 的八类素材挖一遍:
| 素材 | 落到哪 | 缺了会怎样 |
|---|---|---|
| 课标定位 | 学习目标的动词水平 | 目标写虚,教研检查第一刀 |
| 教材编排意图 | 页序(归纳还是演绎) | 顺序与教材相反,学生跟不上 |
| 前置知识与断点 | 导入复习页 | 复习泛泛,等于没复习 |
| 学生迷思 | 易错辨析页、随堂测干扰项 | 干扰项靠凑,测不出东西 |
| 高频考点 | 练习页 | 练的不是考的 |
| 生活情境 | 导入页、迁移题 | 全是符号,学生不投入 |
| 数据与事实 | 记录表、数据图 | 结论变成宣告 |
| 跨学科应用 | 小结前一页 | 学生问「学这有什么用」时答不上 |
三条红线:不编数据、不编出处、不用无法复现的结论。查不到就写「待核」,不许猜。
第二步:先出大纲,等确认
这一步必须停下等用户点头。 大纲用 Markdown 表格给,一页一行:页码、版式、标题、要点(3~5 条)、分钟、是否需配图。
| 序 | 版式 | 标题 | 要点 | 分钟 | 配图 |
|---|---|---|---|---|---|
| 1 | 封面 | 欧姆定律 | — | 1 | — |
| 2 | 要点页 | 学习目标 | 4 条 | 2 | — |
| 3 | 章节过渡 | 01 情境导入 | — | 0.5 | — |
| 4 | 引文页 | 核心问题 | 1 句 | 1.5 | — |
| 7 | 图文两栏 | 实验设计 | 4 条 | 4 | 电路图 |五种大纲范式、页序怎么排、每种课型多少页,见 references/outline-method.md。核心口径:
- 一页一个观点,不要把两件事塞进一页
- 要点是提纲不是讲稿,讲稿写在
script里,会进演讲者备注 - 每 3~4 页插一页章节过渡,长课件没有过渡会让人迷路
- 章节过渡页只放序号 + 标题,别加要点
- 时间轴要加满:各页
minutes合计必须等于课时
第三步:说明风格,再生成
| 项目 | 投影建议值 |
|---|---|
| 画布 | 16:9(老投影仪用 4:3) |
| 正文字号 | 22~27pt,最小不低于 20pt |
| 标题字号 | 要点页 30pt,封面 44pt,结束页 46pt |
| 每页要点 | ≤ 5 条 |
| 单条字数 | ≤ 28 字 |
| 页内正文 | ≤ 120 字 |
| 字体 | 微软雅黑(Windows 自带,不丢字) |
五套基础配色:教育蓝(默认)、学术绿、暖橙、墨黑、素纸灰。另五套学科配色:语文墨韵、数学靛青、英语海蓝、科学深空、历史赭石。
python scripts/build_pptx.py deck.json --outdir output
--format pptx,html,pdf,md,script,handout| 动作 | 说明 |
|---|---|
| 结构校验 | 版式名非法、缺必填字段、要点 >5 条、页数 <3,报错不出文件 |
| 时间校验 | 各页用时合计与课时偏差 >20% 直接拦;>8% 告警 |
| 目标校验 | 「了解/知道/掌握/体会」等不可观测动词告警;全在记忆层告警 |
| 互动校验 | 平均超过 10 分钟没有一次提问/练习,告警 |
| 生成 pptx | 20 种版式、10 套主题,全部是文本框/色块/原生表格/图片/矢量图,可随便改 |
| 写备注 | script 写进演讲者备注页,放映时在演讲者视图可见 |
| 生成预览 | 同名 .html + .pdf,课前试放、发教研组 |
| 生成讲稿 | 授课讲稿.md:时间轴、逐页讲稿、提问与预设回答、板书、设计意图、易错应对 |
| 生成讲义 | 学生讲义.html/.pdf:A4 留白笔记版,随堂测不带答案 |
二十种版式
| 版式 | layout | 放什么 |
|---|---|---|
| 封面 | cover | 课题、副标题、教材位置、授课人 |
| 章节过渡 | section | 序号(01)、章节名、一句副标题 |
| 要点页 | bullets | 3~5 条短句 |
| 图文两栏 | twocol | 左要点 + 右图(image 或 figure_hint) |
| 表格页 | table | 记录表、对比表、数据表(首行表头) |
| 公式页 | formula | 大字公式 + 变量表 + 适用条件 |
| 步骤流程 | steps | 3~5 步横向卡片 |
| 双栏对比 | compare | 能说/不能说、甲/乙 |
| 随堂测 | quiz | 题干 + 选项(+ 可选答案条) |
| 数据图 | chart | 柱状或折线,带刻度与单位 |
| 知识结构 | mindmap | 中心 + 3~5 分支 |
| 引文页 | quote | 一句核心问题或金句 + 出处 |
| 易错辨析 | errors | 错误说法 / 为什么错 / 正确理解 |
| 小结页 | summary | 3~4 条回顾 + 关键词胶囊 |
| 整页图 | image | 实验装置、地图、实物照 |
| 学科图示 | figure | 一张矢量学科图 + 要点 + 图注(v3.0) |
| 时间轴 | timeline | 3~6 个节点,上下交错(v3.0) |
| 关键指标 | bigstat | 2~4 个大数字卡片(v3.0) |
| 鱼骨归因 | fishbone | 主轴指结论,鱼刺是原因(v3.0) |
| 结束页 | end | 谢谢、作业与预习 |
哪种教学意图配哪种版式,见 references/slide-design.md。
学科图示:画出来的,不是贴上去的
figure 版式的 art 字段,六种图元全部是 PowerPoint 原生形状——改线宽、改颜色、拖位置都行,投影不糊。
type | 画什么 | 关键参数 |
|---|---|---|
func | 函数图像。按表达式真实采样,自动定刻度与网格 | exprs[{f,a,b,c,label,marks}]、x/y 区间、xlabel/ylabel |
geometry | 三角形 / 圆 / 平行线,带顶点标注、边长、直角标记 | shape、pts、labels、sides、right_angle |
circuit | 串联或并联电路,电池/电阻/灯泡/开关/电流表/电压表 | mode、items[{t,label}] |
numberline | 数轴,可标区间与空心点 | min/max/step、marks[{v,open}]、interval |
grid | 田字格或四线三格,可填字 | style、rows/cols、chars |
force | 受力示意图,方块或小球 + 力箭头 | object、forces[{dir,mag,label}] |
{"layout": "figure", "title": "同一斜率,两条平行线",
"art": {"type": "func", "x": [-4, 4], "y": [-5, 9],
"exprs": [{"f": "linear", "a": 2, "b": 0, "label": "y=2x"},
{"f": "linear", "a": 2, "b": 3, "label": "y=2x+3",
"marks": [{"x": 0, "label": "(0,3)"}]}],
"xlabel": "x", "ylabel": "y"},
"art_side": "right", "points": ["斜率都是 2,所以平行", "b 只抬高位置"],
"caption": "y=2x 与 y=2x+3 的图象"}三个细节值得知道:函数曲线的标签会自动避让(两条线在同一处收尾时不会叠在一起);circuit 的并联是按左右两条竖轨当节点连的,不会画出「两个电阻两端接同一条线」的短路图;art 参数不合规(未知类型、缺必填字段、区间大小反了)直接拒绝出文件,不会画出一张错图。
单独试一张图:
python scripts/subject_art.py --list # 有哪些图元
python scripts/subject_art.py --demo > art.json # 拿示例
python scripts/subject_art.py art.json --preview a.svg # 导出 SVG 看效果授课执行包:把课件变成「照着能上完」
课件做完不等于能上好。这六件小事在课前那半小时里最费神,交给脚本来:
python scripts/rehearse.py deck.json --outdir stage| 产物 | 解决什么 |
|---|---|
提词卡.md | 每页一句话时间预算(讲到几分该收)+ 开口第一句 + 停顿提示,手机放讲台就能看 |
排练计时表.csv | 计划秒 vs 实际秒,练一遍填一遍,超 60 秒的那页就是要砍内容的那页 |
预设问答卡.md | 从每页 question 抽出:学生多半怎么答错、怎么追问、卡住时怎么降级 |
微课分镜.md | 按 5 分钟分段,含时间码、画面、口播,照着录屏即可 |
字幕.srt | 按讲稿切句(每行 ≤18 字),直接拖进剪辑软件 |
动画配方.md | 每页给哪个对象加什么动画、什么顺序、多久,在 PPT 里 30 秒套完 |
为什么不做动画 XML 注入:手写 <p:timing> 一旦有一个字段不合规,PowerPoint 打开就提示「需要修复」——这个代价比「动画要手动套一次」大得多。配方表比坏文件有用。
时间轴没调平(各页分钟合计与课时相差 >20%)时,rehearse.py 同样拒绝出文件:提词卡上的每分钟预算就是从时间轴来的,源头不对,卡就是错的。
学科图什么该画、什么不该画,授课执行的四个数字(每页分钟/累计时间/排练偏差/提问等待),见 references/stage-craft.md。
内容质量的四个抓手
| 抓手 | 写法 | 为什么有效 |
|---|---|---|
| 讲稿 | script 写 2~4 句教师口语,不写「教师讲解……」 | 进备注页,新教师拿去就能上 |
| 提问 | question{text, level, expected, follow},expected 写学生会答错的那种话 | 知道学生怎么错,课上不会被问住 |
| 时间 | 每页 minutes,合计 = 课时 | 唯一能防拖堂的机制 |
| 出处 | source/ref 标原创/改编/援引 | 引用不标出处,可信度归零 |
细节见 references/lesson-script.md(讲稿)、interaction-design.md(提问与互动)、assessment-design.md(随堂测与易错)。
用大模型挖内容(可选,两条路)
路径 A|直接对话:在能读写文件的助手(如 WorkBuddy)里,按 references/content-mining.md 的八类素材让模型挖,模型自己写 JSON 自己跑脚本。这是默认路线。
路径 B|提示词外挂:在只有对话框的地方,先生成提示词,再贴给任意模型(DeepSeek / 豆包 / 文心 / Kimi / GPT),拿回 JSON 走规整与渲染。
# 1 生成提示词(六个任务:research / outline / detail / quiz / handout / audit)
python scripts/llm_brief.py --task outline --grade 八年级 --subject 物理
--topic 欧姆定律 --type 新授课 --minutes 45 --out brief.md
# 2 把模型返回的 JSON 存成 deck.json,先规整
python scripts/enrich.py deck.json -o fixed.json --report enrich-report.md
# 3 渲染 + 自检
python scripts/build_pptx.py fixed.json --outdir output --format pptx,md,script,handout
python scripts/audit.py fixed.json -o 教研自检报告.mdenrich.py 修五类常见病并逐条报告改动:版式缺失(自动推断)、要点超长(压到 28 字内)、要点过多(自动拆页)、结构缺页(补封面/结束页)、时间不平(按比例缩放)。生成后仍要人工过一遍压缩过的要点,机械截断会窄化语义。
模型产出常见的六种病与对应治法,见 references/llm-prompting.md。
教研自检
python scripts/audit.py deck.json -o 教研自检报告.md八个维度共 100 分:结构完整 18、可读性 20、时间控制 14、认知层级 16、互动设计 12、讲稿完整 10、素材规范 6、差异化 4。A≥85 可上公开课,B≥70 日常可用,C≥55 内容待补,D<55 建议重做。
报告含分项得分、课堂时间结构(讲/练/收占比)、认知层级分布、逐页密度表、最该先改的三件事。评分口径见 references/research-audit.md。
字段速查
必填只有三个:meta.title、meta.subject、meta.grade。常用字段:
| 位置 | 字段 |
|---|---|
| meta | duration_minutes(时间轴基准)、objectives(会做动词校验)、key_points、difficult_points、textbook、theme、ratio、show_answer |
| 每页 | layout、title、minutes、script、note、question、board、intent、source/ref |
| 按版式 | points、rows、formula、steps、left/right、quiz、chart、branches、quote、errors、keywords、image、art/art_side、events、kpis、hub |
完整字段表见 references/outline-method.md 第六节。两份示例:assets/example-physics8-ohm-deck.json(22 页/45 分钟/含讲稿)与assets/example-math8-linear-deck.json(8 页/19 分钟/含学科图示、时间轴、关键指标)。
生成后微调
输出是标准 .pptx,拖进 PowerPoint 就能改:换图、换主题、换字体、加动画、改页序。备注页里能看见讲稿。详见 references/edit-guide.md。
元技能:找对工具、把流程留下来
课件只是备课链路里的一段。有时你需要的不是课件,或者做课件之前该先把流程定下来——这两个脚本管的就是「在上游看清楚、在下游固化住」。
找不到该用谁:find_skills.py
把要做的事说清楚,它从技能库里挑,并且明确告诉你哪个不该用、为什么。推荐错的代价比漏推荐大——把出卷需求推给课件技能,用户会白跑一趟。
python scripts/find_skills.py "八年级物理欧姆定律课件,配随堂测"
python scripts/find_skills.py "初三数学单元卷出好了,想分析各班增值" -o 技能推荐.md
python scripts/find_skills.py --list # 列出索引里的全部技能
python scripts/find_skills.py "……" --json out.json # 机器可读报告分三段:我读到的任务 → 推荐谁(干什么、什么时候用、什么时候别用、怎么调、在这条流程里的位置)→ 也看了但不推荐谁。
| 情形 | 它怎么处理 |
|---|---|
| 需求够具体(有学段 + 学科 + 产物) | 给 1~3 个强匹配,多个时附组合顺序(备课 → 课件 → 出卷 → 分析) |
| 需求太泛(「帮我做点东西」) | 退出码 1,追问缺什么,给三句可直接改的示例,不硬凑 |
| 索引里确实没有 | 退出码 2,如实说不认识,不拿相近的顶上 |
换成自己的技能清单:--index my-skills.json。索引格式见 assets/skill-index.json(17 条,含 9 个自建包与 8 个内置能力)。
流程跑顺了想固化:make_skill.py
python scripts/make_skill.py --template > flow.json # 拿一份模板
python scripts/make_skill.py flow.json --outdir build # 生成目录 + 平铺 zip
python scripts/make_skill.py --check build/xxx # 体检任意包(目录或 zip)flow.json 用中文键写就行:名称、slug、场景、步骤、校验、红线。步骤至少 2 步,每步要有产出和判据。生成的是能直接上传的平铺包:14 个 frontmatter 字段、SKILL.md 在根、tags 内联数组,另带 scripts/flow_check.py(打印可勾选的流程台账,做完一步勾一步)。
它一定会拦下三种情况:步骤少于 2 步、一条硬校验都没有、slug 不合规。没有硬校验的流程不要封——那只是把「随便生成」固化下来了。
--check 反过来能体检任何已有包,查的就是「传上去会不会被驳」:14 字段齐不齐、SKILL.md 在不在根、tags 是不是内联、slug 与 name 是否一致。
边界:这两个是周边导航,不参与课件的校验链路——跑它们不会改
deck.json,也不会让课件少走一道检查。
make_skill.py产出的是方法型技能包,不含课件渲染脚本。
包内自检
换了机器、改了脚本、或者怀疑包不完整(解压丢文件、编码坏了),先跑这一条:
python scripts/selftest.py它会跑 68 项用例:全格式渲染、4:3 画布、仅出大纲、松散 JSON 规整后再渲染、11 条拦截规则(时间轴超 20%、版式名错、随堂测缺题干、表格无数据、对比页缺右栏、公式页缺表达式、图片路径不存在、援引未写出处、来源不在三档内、单页要点过多、页数过少)、八维自检、六个提示词任务、元技能 11 项(找工具的正常/追问/列清单/导出,封装器的生成/打包/自检回跑/缺校验被拦/告警不拦截/体检通过与字段不齐被拦),v3.0 的学科图 11 项(六种图元 + 并联电路 + 四线三格 + 未知类型被拦 + 缺字段被拦 + SVG 导出)、新版式 5 项(四种新版式渲染、学科图参数不合法被拦、时间轴超 6 个事件被拦)、授课执行包 5 项(六件产物、SRT 时间轴、格式名被拦、时间轴不平被拦)、示例资产 2 项。末尾打印「共 68 项,68 通过」。
只用标准库,不需要装任何包。任一项失败会打印该项的输出尾部,便于定位。
红线
- 不把教案全文搬上幻灯片:一页超过 120 字就不是课件,是文档。
- 不为了凑页数拆废话:页数按内容定,12~25 页是常见区间,不是硬指标。
- 不写满屏公式推导:推导放讲稿或板书,幻灯片只留关键一步与结论。
- 不省略小结页:下课前学生要知道「今天学了什么」。
- 不给没有来路的结论:每页结论要么有数据、要么有实验、要么有推理。
- 不编数据与出处:查不到写「待核」。
- 不生成图片:照片、插画、实物图由用户提供,占位框写清要什么图。
但学科示意图不在此列——函数图像、电路图、几何图形是按数据画出来的矢量图,不是生成式图片,该画就画;画不出来的(实验装置实物、地图底图)才让用户提供。
- 时间轴不许平:合计对不上课时,脚本会拦,不要绕过。