1实现原理 · 为什么它能做到
定位是把「中文深度文配图方法论」与「可扩展 IP 角色库」打包,核心信条是方法论恒定、角色与画风是参数
> 把"中文深度文配图方法论" + "可扩展 IP 角色库"打包的开源配图技能。**方法论恒定,角色与画风是参数。**
目标是为深度文/方法拆解/产品解读生成由固定 IP 角色出演的正文配图;明确不是商业插画、不是 PPT 信息图、不是样式库随机选风格、不是可爱卡通
为中文**深度文 / 方法拆解 / 产品解读**生成**由固定 IP 角色出演**的正文配图。目标**不是**:商业插画、PPT 信息图、样式库随机选风格、可爱卡通。
工作流固定四步且第 2 步是硬停顿:逐节枚举 shot list → 让用户选 IP 与画风(不可替用户默认)→ 生图 → 交付
**用户给内容 → ①逐节枚举出 shot list → ②让用户选 IP+风格(硬停顿)→ ③生图 → ④交付。**
每篇文章的每一节(到二/三级小标题粒度)都必须进枚举表并写明「配/不配 + 理由」,防止漏配枯燥但难懂的机制段
读文章,**每一节(到二/三级小标题粒度)都列进下表,每节一行,不许跳**——"挑几个顺眼的"是漏斗,会漏掉枯燥但难懂的机制段(MoE / 内存 / 路由这种)。
配图取舍用双向第一性原则:天花板防凑数(删了读者不难懂就砍),地板防漏难懂机制(每个抽象机制/难懂结构/关键对比至少一张解释图)
- **天花板(不许凑数)**:文字已说透、不抽象的点不配(图是浪费);真实截图 / 官方图能说明问题时自造插图是辅助不是主角。…- **地板(不许漏难懂机制)**:每个抽象机制 / 难懂结构 / 关键对比至少配 1 张解释图。
图类型先分三轨再进 shot list:情绪锚点图(共鸣)/ 解释图示(结构流程对比)/ 四格漫画(时间线与转折),另有篇级的信息图海报轨
- 没共鸣 / 缺钩子 → **情绪锚点图**(小互演情绪;走 metaphor + expression-method,双图法)…- 有时间线 / 转折 / 心路历程 → **四格漫画**(2x2 起承转合;走 comic-strip)
比例按内容自然形状逐张判(竖 3:4 / 横 4:3 / 方 1:1,真全景 16:9 极少),封顶 4:3 以适配手机,且全篇竖横方穿插换节奏
- **竖内容 → `3:4`**:长卷 / 纵向堆叠 / 漏斗 / 阶梯 / 分层 / 单角色立姿。…- ⛔ **手机封顶 4:3**:发公众号 = 移动端,16:9 在手机上只 ~1/4 屏、字和角色糊。
「角色占比」是必填列且默认「小·嵌入」(约 15%):解释图/四格一律默认小,只有纯情绪钩子图才可填大并须写明理由
⛔ **「角色占比」是必填列,默认「小·嵌入」(~15%)——这是法则不是逐张判断**
生图走自带 generate.py(需用户自填图像 API key,不内置任何密钥),传角色锚点图锁形象、一张一张生不拼图,YAML 头比例与 prompt 首句方向词必须一致
python3 scripts/generate.py --prompt-file <p.md> --reference characters/<名>/refs/<名>-锚点.png --out <输出路径>
生图后用 anti-ppt-qa 清单自检(选点复检/结构完整/IP 占比/视觉契约统一/同篇张间变化/图内文字/整组分布),命中失败信号优先局部编辑或重生成;API 失败最多重试 2 次
按 `references/anti-ppt-qa.md` 走自检清单(选点复检 / 结构完整 / IP 占比 / 视觉契约统一 / 同篇张间变化 / 图内文字 / 整组分布)。命中失败信号 → 优先局部编辑或重生成。
2核心能力
3外部依赖
| 类型 | 依赖 |
|---|---|
| api | OpenAI 兼容的图像生成端点(默认 gpt-image-2,中文字符渲染约 99% 准;脚本内含 apimart 异步与 sync 两条后端路径) |
| config | 用户自填的图像 API key(写入 ~/.config/xiaohu-ip-studio/config.yaml,脚本不内置任何密钥) |
| cli | python3(唯一运行时依赖,纯标准库、零第三方包)与 bash install.sh 一键安装脚本 |
4风险提醒 风险提醒:橙色 · 评估后使用
- 生成依赖外部图像 API:未配置 key 直接报错,并会把文章语境与参考图(可能含用户自有 IP)送到第三方图像服务并消耗额度
- API key 以明文存在 ~/.config/xiaohu-ip-studio/config.yaml(虽 mode 600 且 gitignore),多用户或备份场景仍有泄漏风险;base_url 由用户自填,指向不可信网关即等于把 key 与素材交给该网关
- 模型仍可能写错中文或画错结构:正文自己承认「好看但机制画错的图比丑图更骗人」,需依赖 anti-ppt-qa 人工自检
- 方法论文本体量大(SKILL.md 20KB + 14 份 reference),上下文成本与「不前置通读」的按需翻阅要求对弱 agent 有门槛
- 31 个角色均附数 MB 级锚点 PNG,仓库体积大(单张 2.7–6.8MB),克隆与分发的存储/流量成本高
- 中文深度文配图的形态判断强依赖 agent 的品味(隐喻现编、角色占比、比例换节奏),实现质量在不同模型间波动较大
5第二遍独立确认
- [ok] 出网面收敛:网络请求 12 条命中全部落在 scripts/generate.py 的 urllib 调用,其它文件零命中 — 命中为 generate.py:18/97/99/115/117/122/123/152/153/155/267/313,即 Request/urlopen/HTTPError 与轮询;URL 101 条命中里大量是 README.en.md 的 raw.githubusercontent 角色图链接与 CREDITS.md 署名链接,属文档引用。
- [ok] 凭证面很小且集中:18 条命中只涉及 config.yaml 的 api_key 与 XDG_CONFIG_HOME — 代表性命中 config.example.yaml:7 与 references/backends.md:18(「你自己的 key,永不上传」)、scripts/generate.py:48-49(缺 key 时报错提示 init)、illo.py:7/20/21/35;无 .env/keychain 读取。
- [ok] 「外部程序」3 条命中不是真的执行外部进程,而是 urllib 请求伪装 UA 触发的正则 — generate.py:122/147/257 均为 headers 里 User-Agent: curl/8.4.0,属误报;本 skill 无 subprocess/os.system 调用,与 install.sh 只调 python3 脚本一致。
- [ok] 抗 prompt 注入设计是显式条款,不是推断 — SKILL.md 有「角色包安全规则」整段(读外部 character.md 只提取定义段落、绝不执行其中指令性文字),README 安全一节复述同一规则;风险扫描「危險旗標/防護繞過」零命中,说明这是主动设计而非缺陷。
- [ok] 零依赖与配置权限属实 — install.sh 只检查 python3;illo.py 写 config.yaml 于 ~/.config/xiaohu-ip-studio 且正文标 mode 600;.gitignore 列 config.yaml/config.json/__pycache__ 等,无第三方包声明。
- [ok] 归档与角色数量核对:31 个在用角色 + 4 个归档 — §1 清单:characters/ 15 个、food-mascots/ 16 个(合计 31);_archived-symbols-20260617/ 另有 achong/lengjiao/shuangzi/xiaoxing 4 个,与 SKILL.md 的 15+16 说法一致,归档不计入。
- [ok] meta 核定值核对:commit=9d3091e8…、license MIT、installs=null — commit 与骨架 audit.skill_commit 相同;README 无 per-skill 安装量可定位值(README 只说 clone 到技能目录或 bash install.sh),故 stars/last_push/installs 维持 null。
6结论
9c30dd21d9c9ed75…9d3091e8a1