漫画小课堂(comic-maker)
一个固定的老师角色,用一期漫画讲清一个概念。当前助手(Claude 或 Codex)写故事和每页提示词、交付前逐页看图;出图交给 Codex 内置 imagegen 原样执行;脚本负责检查和核对。
下文 S 指本 skill 的脚本目录:
S=<本 SKILL.md 所在目录>/scripts
默认配置
风格:小课堂(styles/classroom.md);画风跟着角色参考图走
比例:3:4(提示词第二句写 A vertical 3:4 manga comic page…,见「提示词铁律」;实测 1086×1448)
主角:默认角色(~/.comic-maker/characters/<角色ID>/,settings.py 管理);讲 AI 时配角用 AI Helper 小机器人
每期:封面「开课」+ 正文 4–7 页 + 结尾「下课」
出图:Codex 内置 imagegen(scripts/render_codex.py),默认用你 Codex 自己配置的模型
第 0 步:角色(每次开工先看)
python3 $S/settings.py get default(打印出角色档 JSON = 有默认角色;报「没有默认角色」= 还没有):
- 有默认角色:告诉用户「本期老师是 X(系列名),要换说一声」,直接往下做。
- 没有(第一次用):先跑
python3 $S/doctor.py 自检,再按 templates/character.md 准备角色——
- 有自己的 IP:给一张图 + 名字,写角色档(字段表在
templates/character.md),给用户确认后保存。
- 没有:问三件事(画什么、配饰、画风,默认彩铅水彩)→ 出 3–4 个候选 → 用户挑 → 保存。
- 「这期用团团」:
settings.py get <角色ID> 读那个角色,只这期用;「以后都用团团」:settings.py use <角色ID>。
启动:先定协作模式
- 快速模式(用户说「直接做」「你定」「随便选个主题」):不逐项问,直接给故事线表格 + 每页布局,一次展示后出图;只在出图后请用户看。
- 确认模式(默认):在这几处停下来等用户:① 新建角色时,角色档(名字、外貌、系列名);② 故事线和布局;③ 第一次用 / 刚换角色时的封面试图。其余不打断。
工作流程
步骤 1:物料理解
- 用户给了文章 / 文件:先读完,提炼核心定义和 3–5 个关键点;数字、事实只用原文的。
- 只给了主题:基于常识讲,事实拿不准的不写进对白。
- 原文里的真人(作者朋友、名人)不画成角色;产品名可以写成字,但不要画品牌标志。
步骤 2:故事线 + 布局(用户拍板一次)
- 按
templates/story-structure.md 选结构(问题-方案 / 教程 / 故事),默认 6–9 页(用户指定页数就照用户的,3–5 页用「压缩版」),第一页固定封面「开课」、最后一页固定结尾「下课」(见 styles/classroom.md「系列固定页」)。
- 每页按
templates/layout-patterns.md 选布局,ASCII 示意。
- 每格写:画面(谁在做什么、具体道具)、对话气泡、旁白 / 标注。
- 原则:每格是一个场景不是信息点;有连贯故事线(问题 → 解决 → 结果);元素丰富;字不多不少(每页 2–5 处指定文字)。
步骤 3:写提示词
- 按
templates/prompt-template.md 写,每页一个文件:<任务目录>/prompts/00.txt、01.txt …(00 = 封面)。角色英文名、外貌、系列名从角色档原样填入;<hand> 按角色换成 paw / hand / wing;不讲 AI 的主题删掉 AI 小机器人那一行。
- 好例子:
examples/mcp/(MCP 一期 8 页,示例角色橘子,3 张缩略图),写新一期前先看一份。
- 每份写完对照模板末尾的自检表。
步骤 4:出图 + 核对
python3 $S/render_codex.py <任务目录> --check # 只检查提示词(出图前也会自动查)
python3 $S/render_codex.py <任务目录> --only 00 --title "系列名 · 主题" # 第一次用 / 刚换角色:先出封面看角色像不像(确认模式等用户说像再继续;快速模式自己看像就继续)
python3 $S/render_codex.py <任务目录> --title "系列名 · 主题" # 出 prompts/ 里还没出的页
- 参考图:默认角色的
ref.png;任务目录放 ref.png 或 --ref 可临时换。都没有会报错,提示先准备角色。
- 自动检查(有错误直接停,退出码 2):第一句、Follow the exact same…、All Chinese text clearly readable 是否都在;有没有 URL;有没有指定配色;英文双引号是否成对。
- 出图:每 3 页一个 Codex 进程,3 个同时跑,9 页约 4–6 分钟;满载或失败的页下一轮自动重跑。
- 改了某页提示词,直接重跑:脚本发现提示词变了,会把旧图移到
_v1/ 再重出。
--only 按文件名开头匹配:--only 00 只出封面,--only 0 出 00–09。
- 产物:
review.html(按第 1…N 页排,可点 ♡ 复制回来)、发布/01.png…(按顺序,直接拖进小红书)。
交付前逐页看(必须做,当前助手自己看图):脚本报的「提示词逐字」只说明 imagegen 收到的提示词没被改写,不代表图上的字画对了。
- 指定文字有没有错字;角色像不像;有没有品牌标志。
- 模型自己加的小字(黑板、便签、书脊)有没有说过头或和原文矛盾的。生活化标语可以留;说错事实的要提给用户。
- 汇报时分两项:提示词逐字 N/N;图上文字看过、问题逐条列出。
Codex 自己跑本 skill 时
不要调用 render_codex.py 出图(它会再起一个 Codex)。按步骤 1–3 写好 prompts/,跑 render_codex.py <任务目录> --check,然后对每个文件调用内置 imagegen:prompt = 文件全文原样,referenced_image_paths = 默认角色 ref.png 的绝对路径(settings.py get default 里的 ref),不传 num_last_images_to_include;保存为 out/<同名>.png;出图前记下开始时间,最后跑 render_codex.py <任务目录> --page-only --since "YYYY-MM-DD HH:MM" 核对并生成对比页和发布文件夹。
步骤 5:迭代
- 用户满意的页先把提示词复制到
baselines/,再改。
- 一次只改一处(加一句或改一句),其他原样不动。
- 不要整段重写提示词。
提示词铁律
- 第一句:
Use the same style and character design as the reference image.;第二句写 A vertical 3:4 manga comic page with N panels. Follow the exact same art style, color palette, character design, and border style as the reference image.
- 绝不指定颜色(配色交给参考图)。
- 每格写位置和占比、具体画面元素、对话和旁白(中文放英文双引号里)。
- 结尾段:
Rich visual details: … + No brand logos anywhere. + All Chinese text clearly readable. + 情绪氛围。想要干净(不让模型加小字)再加 No other words besides the quoted text.
- 提示词里不写 URL,参考图走
referenced_image_paths;不传 num_last_images_to_include(只能 1–5,传 0 报错)。
相关文件
- 风格:
styles/classroom.md
- 角色:
templates/character.md(导入 IP / 生成候选);数据在 ~/.comic-maker/,升级 skill 不会覆盖;家目录写不进时(Codex 沙盒)自动存到当前项目的 .comic-maker/;也可以用环境变量 COMIC_MAKER_HOME 指定
- 模板:
templates/story-structure.md、templates/layout-patterns.md、templates/prompt-template.md
- 例子:
examples/mcp/(8 份提示词 + 3 张缩略图)、examples/character/(示例角色橘子和它的生成提示词)
- 脚本:
scripts/doctor.py 自检、scripts/settings.py 角色、scripts/render_codex.py 出图、scripts/mark.js