1仕組みと動作原理
「中国語の深掘り記事向け挿絵メソッド」と「拡張可能なIPキャラクターライブラリ」をパッケージ化。メソッドは不変であり、キャラクターと画風はパラメータであるという理念を中核に据える。
> 把"中文深度文配图方法论" + "可扩展 IP 角色库"打包的开源配图技能。**方法论恒定,角色与画风是参数。**
目的は、深掘り記事/ノウハウ解説/製品レビュー向けに、固定IPキャラクターが出演する本文挿絵を生成すること。商業イラスト、PPTインフォグラフィック、スタイル集からのランダム選択、単なる可愛いアニメ調ではないことを明確化。
为中文**深度文 / 方法拆解 / 产品解读**生成**由固定 IP 角色出演**的正文配图。目标**不是**:商业插画、PPT 信息图、样式库随机选风格、可爱卡通。
ワークフローは固定の4ステップで構成され、ステップ2は必須のハードストップ:セクションごとのshot list列挙 → ユーザーによるIPと画風の選定(代理決定不可) → 画像生成 → 納品。
**用户给内容 → ①逐节枚举出 shot list → ②让用户选 IP+风格(硬停顿)→ ③生图 → ④交付。**
記事の全セクション(H2/H3見出しの粒度まで)を必ず列挙テーブルに含め、「挿絵要/不要 + その理由」を明記。退屈だが難解なメカニズム解説箇所の見落としを防ぐ。
读文章,**每一节(到二/三级小标题粒度)都列进下表,每节一行,不许跳**——"挑几个顺眼的"是漏斗,会漏掉枯燥但难懂的机制段(MoE / 内存 / 路由这种)。
挿絵採否の判断には双方向の第一原理を適用:上限基準で数合わせを防止(削っても読者の理解に支障がなければカット)、下限基準で難解なメカニズムの漏れを防止(抽象的な仕組み/複雑な構造/重要な対比には最低1枚の説明図を配置)。
- **天花板(不许凑数)**:文字已说透、不抽象的点不配(图是浪费);真实截图 / 官方图能说明问题时自造插图是辅助不是主角。…- **地板(不许漏难懂机制)**:每个抽象机制 / 难懂结构 / 关键对比至少配 1 张解释图。
shot listに入れる前に画像タイプを3系統に分類:感情アンカー図(共感)/ 説明図解(構造・フロー・比較)/ 4コマ漫画(時系列と展開)、さらに記事全体のインフォグラフィックポスター系統を用意。
- 没共鸣 / 缺钩子 → **情绪锚点图**(小互演情绪;走 metaphor + expression-method,双图法)…- 有时间线 / 转折 / 心路历程 → **四格漫画**(2x2 起承转合;走 comic-strip)
アスペクト比はコンテンツ本来の形状から1枚ずつ判断(縦3:4 / 横4:3 / 正方形1:1、真のパノラマ16:9は極めて稀)。スマホ最適化のため横は最大4:3に制限し、記事全体で縦・横・正方形を織り交ぜてリズムを作る。
- **竖内容 → `3:4`**:长卷 / 纵向堆叠 / 漏斗 / 阶梯 / 分层 / 单角色立姿。…- ⛔ **手机封顶 4:3**:发公众号 = 移动端,16:9 在手机上只 ~1/4 屏、字和角色糊。
「キャラクター占有率」は必須項目であり、デフォルトは「小・埋め込み」(約15%):説明図や4コマは一律で小を原則とし、純粋な感情喚起フック画像のみ理由明記の上で大を許可。
⛔ **「角色占比」是必填列,默认「小·嵌入」(~15%)——这是法则不是逐张判断**
画像生成は同梱の generate.py を使用(ユーザー独自の画像APIキー入力が必要、キーの内蔵はなし)。キャラクターアンカー図を渡して容姿を固定し、1枚ずつ生成(結合画像は不可)。YAMLヘッダーの比率とプロンプト先頭の構図キーワードを完全一致させる。
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外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| api | OpenAI 兼容的图像生成端点(默认 gpt-image-2,中文字符渲染约 99% 准;脚本内含 apimart 异步与 sync 两条后端路径) |
| config | 用户自填的图像 API key(写入 ~/.config/xiaohu-ip-studio/config.yaml,脚本不内置任何密钥) |
| cli | python3(唯一运行时依赖,纯标准库、零第三方包)与 bash install.sh 一键安装脚本 |
4推奨統制措置と判定根拠
- scripts/: ローカルスクリプトまたはコマンドの実行: python3 scripts/illo.py init(キー設定を案内し、~/.config/xiaohu-ip-studio/ を作成して設定を書き込み
- 网络端点: 外部ネットワークアクセスの宣言: scripts/generate.py は urllib.request を使用して設定された base_url(OpenAI互換の画像エンドポイント)にPOSTリクエストを送信:タスクを作成
- 本地工作目录: ファイルの読み書きと成果物の出力: scripts/illo.py:20-21 は ~/.config/xiaohu-ip-studio/ ディレクトリを作成し config.yaml(apiを含む)を書き込み
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…