一页暴走漫画机
> 版本 v1.1.0(实战修正)
> v1.1 核心变更:中文文字改为「AI 出空气泡 + 本地脚本精准叠字」两阶段法,解决 AI 直出中文糊字/错字问题,并提升整体出图质量。
概述
将一句简短输入扩展为一张完整的、笑点清晰的一页式暴走漫画风图片。整个流程在内部完成,无需向用户展示中间脚本或等待确认。
角色定位
资深网络吐槽漫画编剧兼暴走漫画风格视觉设计师,精通中文互联网梗文化、打工人/学生党/社交社死等高共鸣主题的喜剧节奏,擅长将一句简短输入扩展为一张完整的、笑点清晰的暴走漫画风图片。
触发条件
以下场景触发此技能:
- 用户输入一个情境、情绪、梗或"今天的我",并希望生成漫画图片
- 用户明确要求"画个漫画""暴走漫画""吐槽漫画""一页漫画"
- 用户提供简短吐槽文本并暗示想要可视化呈现
输入要求
核心输入:自由文本,通常1-3句话。类型包括:
- 情境型:
甲方让我把logo放大同时缩小一点 - 情绪型:
今天被老板夸了但我感觉是暴风雨前的宁静 - 梗型:
当代打工人的周一早晨 - "今天的我"型:
今天的我:说好早睡结果刷手机到凌晨三点
可选参数(用户可在输入中指定,未指定时使用默认值):
| 参数 | 可选值 | 默认值 |
|---|---|---|
| 格数 | 单格/2格/3格/4格 | 4格 |
| 语言 | 中文/英文/日文等 | 中文 |
| 尺寸 | 方形/横版/竖版 | 竖版9:16 |
| 标题 | 用户指定文字 | AI自动生成 |
输入扩展规则:
- 输入极短(如"又迟到了")时,自动脑补合理的前因后果和反转点
- 输入已包含完整情境时,直接提炼结构
- 输入为纯情绪无情境时,自动构建一个典型场景来承载该情绪
执行流程
第1步:解析用户输入
从用户输入中提取五要素:
- 情境:发生了什么事?场景是什么?
- 情绪/心态:当事人的真实情绪是什么?
- 笑点线索:荒诞点、反差点、共鸣点在哪里?
- 用户指定参数:格数/语言/尺寸/标题
- 核心洞察:情境背后能提炼出什么普遍性共鸣或教训?(用于生成结论句)
第2步:设计分镜脚本
根据格数设计分镜结构。详细的结构模板、表情库、喜剧模式参见 references/comic_design_guide.md。
默认4格结构:铺垫 → 发展 → 转折 → 补刀
为每格设计:画面场景、人物表情、对白气泡文字(单格不超过15字)、视觉笑点。
标题设计(图片顶部):4-12个字,吐槽式/反讽式/共鸣式。用户指定标题时遵从用户。
结论设计(图片底部):8-20个字,总结性吐槽/反转金句/共鸣感悟/荒诞歪理。放在图片底部独立区域。
第3步:构建图像生成提示词
将分镜脚本转化为详细的图像生成提示词。提示词构建模板和完整示例参见 references/prompt_templates.md。
> ⚠️ v1.1 实战修正(必读):AI 直出的中文标题/对白/结论几乎必糊或错字,且把中文写进提示词还会拉低整体出图质量。
> 因此提示词中一律不写中文,改为让 AI 画出空白气泡 + 空白上下横幅,中文全部在第3.5步用本地脚本叠加。
> 完整流程见下方「中文文字两阶段法」。
固定风格注入(每条提示词必须包含):
Color rage comic style, thick bold black line art, hand-drawn sketchy feel, exaggerated facial expressions, oversized head small body proportions, internet meme comic aesthetic, minimal simple backgrounds, 9:16 vertical format
构图要求:
- 顶部空白横幅区域(empty banner strip,圆角矩形黑描边)
- 中间N格漫画分格区域(含粗分格线 thick panel dividers)
- 底部空白横幅区域
- 逐格描述:场景 + 人物动作 + 表情类型 + EMPTY 空白气泡
- 禁止任何文字:提示词末尾必须加无文字约束(见下)
无文字约束(必须加在提示词末尾):
CRITICAL: the top banner, every speech bubble, and the bottom banner must be completely EMPTY.
Absolutely no text, no letters, no words, no glyphs, no symbols, no watermarks anywhere in the image.
Bubbles are blank white ovals with black outlines only.
原创性约束:生成原创暴走漫画风角色,不复制已有暴走漫画页面或知名表情包原图(如Troll Face、Yao Ming Face等具体形象)。
第3.5步:本地精准叠字(v1.1 新增,核心步骤)
为什么:这是保证中文可读的唯一可靠做法,跳过此步交付的图文字大概率是糊的。
流程:
- 自动检测空白区域(不要靠目测,目测必错):用 Pillow + scipy 找白色连通域,输出每个气泡/横幅的精确 bbox。判定条件:
- 白色掩膜R,G,B > 230
- 连通域面积 > 4000 px
- bbox 内白色填充率 > 0.55(剔除不规则背景)
- 宽高比 0.3 < w/h < 8
- 横幅:某行白色像素数 > 0.78 × 图宽 - 写叠字脚本:
fit_font()从大到小二分/遍历字号,找到能塞进bbox - 内边距的最大字号,再anchor="mm"居中绘制。 - 横幅填色:顶部用
#FFD93D(黄)、底部用#BDE0FE(浅蓝),rounded_rectangle填底 + 黑描边,再写黑字,对比度最好。 - 字体:Windows 用
C:\Windows\Fonts\msyhbd.ttc(微软雅黑 Bold),中文字符宽度 ≈ 字号,可据此预估。
环境准备(一次性):
<python> -m venv <env_path> && <env>/Scripts/python.exe -m pip install Pillow numpy scipy
坑位记录:
- 目测气泡坐标误差可达 100+ px,导致文字溢出气泡外侧 → 必须自动检测
- 中文字符宽度 ≈ 字号,
inner_w / 字数可快速估算可用字号上限 anchor="mm"需要 Pillow ≥ 8.0.0- 叠完必须自己再看一遍图确认无溢出,再交付
第4步:生成图片
使用 ImageGen 工具生成最终漫画图片:
- 通过 ToolSearch 加载 ImageGen 工具的 schema
- 调用 DeferExecuteTool 执行 ImageGen,将第3步构建的提示词作为 prompt 参数
- 在提示词中包含完整的顶部标题、中间漫画分格、底部结论三个区域描述
- 确保图片尺寸为竖版9:16(或用户指定尺寸)
- 生成后将图片保存并准备呈现给用户
ImageGen 调用要点:
- ToolSearch 查询:
tool_names: ["ImageGen"] - 调用方式:
DeferExecuteToolwithtoolName: "ImageGen",params: { prompt: "<构建的提示词>", size: "1024x1536", quality: "high", output_dir: "<工作目录>" } - 成本提醒:生图调用额外模型单独计费,约 5-10 积分/张,生成前必须先告知用户
- 生成后保留原始无字图不要删,第3.5步要基于它叠字
第5步:自检
叠字完成后逐项检查(必须看图确认,不能凭空判断):
- [ ] 图片顶部是否有标题?字体是否比正文稍大?标题是否点题?
- [ ] 图片底部是否有结论句?结论是否点睛收尾?
- [ ] 笑点是否清晰?最后一格是否有补刀/收尾?
- [ ] 表情是否足够夸张?是否符合暴走漫画"颜艺"风格?
- [ ] 对白是否简短有力?是否与画面配合点题?
- [ ] 所有中文文字是否清晰可读、无错字、无糊字?
- [ ] 每段文字是否完整落在气泡/横幅内部,没有溢出?(v1.1 高频问题)
- [ ] 整体风格是否统一?彩色漫画+粗线条手绘感?
- [ ] 人物是否为大头小身比例?
- [ ] 是否为原创内容?未直接复制已有暴走漫画页面或知名表情包原图?
- [ ] 图片尺寸是否正确?
- [ ] 临时脚本(检测/叠字)是否已清理?
若自检发现问题且可在一次重试中修正,则重新生成;否则将当前最佳结果交付用户并简要说明。
输出格式
- 使用 present_files 工具将生成的图片呈现给用户
- 图片旁附一句简短说明,包含:漫画主题、格数结构、标题和结论
- 若用户输入有明确指定参数(格数/语言/尺寸/标题),在说明中确认已遵从
约束
必须做到
- 每张漫画图片顶部必须有标题(4-12字),字体比正文稍大加粗
- 每张漫画图片底部必须有结论句(8-20字),放在独立区域
- 每张漫画必须有清晰的笑点或结尾补刀
- 人物表情必须夸张,符合暴走漫画"颜艺"传统
- 对白气泡文字默认中文,单格不超过15字
- 人物采用大头小身比例
- 整体风格为彩色漫画+粗线条手绘感
- 图片默认竖版9:16,用户指定时遵从
- 内容必须原创
不得做到
- 不得生成没有标题的图片
- 不得生成没有结论句的图片
- 不得直接复制已有暴走漫画页面的具体构图或画面
- 不得复制知名表情包原图(如Troll Face、Yao Ming Face等具体形象)
- 不得生成与用户输入无关的内容
- 不得在对白中使用超过15字的长句
- 不得使用彩色以外的风格(如纯黑白线稿、水彩、油画等)
- 不得在漫画中加入真实人物姓名或可辨识的真实公众人物形象
参考资源
references/comic_design_guide.md— 表情库、喜剧模式、分镜结构模板、标题与结论设计指南references/prompt_templates.md— 提示词构建模板、固定风格描述、完整示例