场景讲解 PPT(scene-ppt)
「做成 PPT」= 一页一张 16:9 图,不是 .pptx 文件。 图上的字不能再编辑。
本 skill 自带出图脚本和用得到的风格卡,不需要另装别的 skill。下文 S 指本 skill 的脚本目录:
S=<本 SKILL.md 所在目录>/scripts
核心:换世界,不是换皮
整套 PPT 只用一个世界讲完:世界里的角色 = 要讲的对象,世界里的器物 = 概念。比如讲 Skill:
| 世界 | AI 是谁 | Prompt 是什么 | Skill 是什么 |
|---|
| 后厨 | 新来的学徒 | 主厨一口气的口头交代 | 一本菜谱 + 分格备料架 |
| 中药铺 | 新来的小伙计 | 把药材一股脑倒进一锅 | 一张方子 + 百子柜 |
世界定了,每页的场景从这个世界里自然长出来(前台、后厨、备料间、试菜…),页与页自然不同。实测证据见 reference/lessons.md。
默认世界(每次开工先看)
python3 $S/settings.py get world(打印出世界 ID = 有默认;打印空行 = 还没设)。
世界 ID:classroom 小课堂、kitchen 后厨、rpg RPG 技能书、island 像素小岛、retro 50 年代复古广告、pharmacy 中药铺、captain 机长检查单、bricks 积木说明书、studio 剧组片场、library 森林图书馆、pitstop 赛车维修站(详情见 reference/worlds.md)。用户直接点名某个世界就不用开选择页,直接 set world。
| 情况 | 怎么做 |
|---|
| 有默认 | 告诉用户「本次用默认世界:X,要换说一声」,直接往下做 |
| 没有(第一次用) | 先 python3 $S/doctor.py 自检;再 python3 $S/world_picker.py <任务目录>/世界选择.html 打开世界选择页,用户看样张挑一个 → python3 $S/settings.py set world <世界ID> |
| 「换默认世界」 | 重新打开选择页,选完 set world |
| 「这次用 RPG」 | 只这一次,不改设置;在 outline.md 顶部写「本次世界:rpg」 |
| 选的是小课堂(classroom) | 要用户的角色:settings.py get-character(第一次用会报「没有角色」,这是正常的)。没有就 import-character ~/.comic-maker/characters/<ID>(用过漫画小课堂的话),或用用户给的 IP 图 add-character(字段见下面「角色档字段」),没有 IP 就先用漫画小课堂生成一个 |
世界库在 reference/worlds.md(映射、场景、画风、载体、作者评价、样张)。数据存在 ~/.scene-ppt/,升级 skill 不会覆盖;家目录写不进时(Codex 沙盒)自动存到当前项目的 .scene-ppt/,以后在这个项目里用会自动读到;也可以用环境变量 SCENE_PPT_HOME 指定。
几种情况叠在一起时:用户点名了世界 → 不开选择页;快速模式 → 跳过大纲拍板;用户只要几页 → 那几页就是全部,出完即交付;第一次用的试图确认只在确认模式下等用户。
角色档字段(只有小课堂世界需要)
| 字段 | 怎么写 | 用在哪 | 例子 |
|---|
| 角色ID | 英文小写 | 文件夹名 | tuantuan |
--ref | 角色图,png / jpg / webp 都行,最好单个角色、正面、背景干净、图里没字;会转成 ref.png | 出图时自动垫图 | 团团.png |
--name | 中文名 | 画面描述、对话 | 团团 |
--desc-cn | 中文外貌短语,不带名字,能直接接名字 | 每页主角第一次出现写「<desc_cn><name>」 | 戴圆框眼镜、穿米色针织背心的小熊猫 |
--name-en / --species-en / --desc-en | 英文名、物种、英文外貌(和漫画小课堂通用,本 skill 不直接用,照图写上即可) | 漫画小课堂 | Tuantuan / Red Panda / red panda with cream face markings, round glasses… |
--series | 系列名 4–6 字 | 封面系列名木牌 | 团团小课堂 |
写完给用户看一遍(名字、外貌、系列名),用户说对再 add-character。
分工
- 当前助手(Claude 或 Codex):读物料、按默认世界写映射和大纲、设计每页场景、定图上每个字、逐页看图检查。
- Codex 内置 imagegen:只按提示词原样出图,不改写。
流程
| 步 | 做什么 | 产物 |
|---|
| 1 读物料 | 提炼要讲的概念(通常 6–15 个;物料很短就按它自然有几个算,不硬拆),每个标类型:对比 / 流程 / 分层结构 / 误用反例 / 版本迭代 / 本质结论;数字和事实只用原文 | 概念清单 |
| 2 映射 + 大纲(用户拍板一次) | 按默认世界写映射表(世界库的例子都是讲 AI 的,按这次物料重新想;比喻会歪曲原文概念就提出来);再按 templates/outline.md 写大纲:封面 → 目录(6 页以内可省)/ 章节 → 内容页 → 结尾,每页写页型、场景一句话、文字清单;同一种场景结构不连续用两次。两样一起给用户看 | outline.md |
| 3 写每页 | 按 templates/page-example.txt(中药铺样例)和当前世界的 examples/<世界>/(有的话)写 adapt/<图号>-<风格>.txt(图号两位数 01、02…,风格是世界卡里的编号,如 03-N50.txt;文件必须有【画面与版式】和【必须逐字放入的文字(唯一真值)】两段,照样例):第一句画幅,标题载体,主场景(写主体占比),文字放在什么载体上,角色外貌;文字清单逐字 | adapt/*.txt |
| 4 出图 | 下面的命令。第一次用或刚换世界:先出封面 + 1 页内容给用户看,等用户说可以再出整套 | out/、发布/、review.html |
| 5 检查 | 逐页看图(见「交付前检查」),有问题只改一处重出 | 发布/01.png… |
快速模式(用户说「直接做」「你定」):跳过第 2 步的拍板,直接出图。
出图命令
python3 $S/check_prompts.py <任务目录> # 检查:「」只留给要画的字、写了主体占比
python3 $S/render_codex.py <任务目录> --only 01- # 第一次 / 换世界:先出封面(--only 按文件名开头匹配,可用逗号:--only 01-,03- 同时出封面和第 3 页)
python3 $S/render_codex.py <任务目录> --batch 6 --parallel 4 # 出剩下的 + 核对 Codex 收到的提示词是否逐字
python3 $S/make_page.py <任务目录> --title "标题" # 对比页(出图后会自动生成;想改标题再跑这条)
- 风格块来自本 skill 的
styles/(世界卡里写了用哪张)。
- 小课堂世界(N49):没给
--ref 时自动用默认角色的参考图;没有角色会报错。
- 改了某页的
adapt/,直接重跑 render_codex.py:提示词变了的页,旧图自动移到 _v1/ 再重出。
- 每次出完自动重建
发布/:按整套页序放所有已出好的页,文件名序号 = 第几页(第 3 页就是 03.png;还没出的页留空号)。
- 默认用你 Codex 自己配置的模型(
--model / --effort 可指定)。
- Codex 自己跑本 skill:不调
render_codex.py(会再起一个 Codex)。跑 check_prompts.py、build_prompts.py,对 prompts/ 每个文件调内置 imagegen(prompt = 全文原样;小课堂世界 referenced_image_paths = 角色 ref.png 绝对路径,不传 num_last_images_to_include),存为 out/<同名>.png,再跑 verify_log.py 和 make_page.py(make_page.py 会顺便整理 发布/)。调用 imagegen 后别把整个工具返回打印出来(里面是很长的图片数据),只取保存路径,复制到 out/ 后再看图。
每页怎么写(铁律)
- 第一句:
16:9 横版,一页讲课演示文稿(封面 / 对比页 / 流程页…)。
- 标题载体全套统一(都在左上木牌 / 都在顶部缎带 / 都在牌匾),翻页才像一套。
- 每页 1 个标题 + 2–9 处短文字;标题 ≤ 20 字,每条 ≤ 22 字。
- 文字放在世界原生的载体上(菜谱卡、宣纸签条、检查单夹板、浮标标签),不要飘在空中。
- 角色名(文字清单「」前面的名字)用中性词:左卡、中签、右签、上条;别用序号词(第一格、便签一、第一步、错一),画面描述里别写「写甲卡」,直接写「写『某某』那句话」或「写左卡」。编号、分层类词(第一关、上层)会被画上去。
- 写主体占比(「下方约七成」「约占画面宽度六成」)。
- 原文没有的效果、数字、结论一个字都不加(原文没打分就写「—」)。
- 角色外貌写细(「圆滚滚的主厨,白色高帽、红色领巾、八字胡」),跨页才一致。小课堂世界:主角第一次出现写「<中文外貌><名字>」(角色档的
desc_cn + name)。
交付前检查(当前助手逐页看图,必须做)
脚本报的「提示词逐字」只说明 imagegen 收到的提示词没被改写,不代表图上的字画对了。
- 错字、漏字;角色名有没有被画上去(「甲卡」「第一关」)。
- 模型自己加的小字有没有说过头。
- 主体是否太空、文字是否被裁、有没有拼接竖缝。
- 汇报时分两项:提示词逐字 N/N;图上文字看过、问题逐条列出。
- 有问题:一次只改一处重出,新旧并排给用户。
新增世界
见 reference/worlds.md 末尾:写在 ~/.scene-ppt/worlds/,出 1–2 页试图,用户说喜欢、有了样张才进选择页。
目录
reference/worlds.md:世界库;reference/world-samples/:世界样张
reference/page-types.md:页型 → 场景写法;reference/lessons.md:实测规则与证据
templates/outline.md 大纲模板、templates/page-example.txt 单页写法、templates/common.txt 通用约束、templates/codex-task.md 给 Codex 的任务模板
styles/:用得到的风格卡(N49 小课堂、N24 后厨、N50 RPG、N42 像素、N02 复古广告、N78 国风、N03 积木、N41 日式动画、N11 绘本)
examples/:整套提示词 + 缩略图(小课堂橘子、后厨、RPG、中药铺)
scripts/:doctor.py 自检、settings.py 默认世界和角色、world_picker.py 世界选择页、render_codex.py 出图、check_prompts.py、build_prompts.py、verify_log.py、make_page.py
任务目录
建在用户的项目或工作目录下(没有项目就在当前目录建 ppt/);世界选择页也生成在任务目录里。
<项目>/ppt/<NN-简述>/
outline.md adapt/<图号>-<风格>.txt (可选)common.txt
prompts/ out/ logs/ 脚本生成
review.html 发布/01.png… _v1/(旧图)