コンテンツ制作 · JimLiu/baoyu-skills

baoyu-image-gen

OpenAI GPT Image 2.5、Azure OpenAI、Google、OpenRouter、DashScope、Z.AI GLM-Image、MiniMax、Jimeng、Seedream、Replicate、Agnes API を使用した AI 画像生成。Text-to-Image、参照画像、アスペクト比、保存されたプロンプトファイルからのバッチ生成に対応。デフォルトではシーケンシャル処理ですが、複数のプロンプトがある場合や安定したスループットが必要な場合はバッチ並行生成を使用します。ユーザーが画像の生成、作成、描画を求めた場合に使用します。

L5 厳格管理 · 隔離環境と厳格な監査V2 人間監査済リバースAPI規約/コンプライアンスコマンド実行ネットワーク通信ファイル書き込みDual-pass Audit
Author JimLiuGitHub JimLiu/baoyu-skills ↗Stars 25926License MIT(仓库根 LICENSE,Copyright (c) 2026 Jim Liu;GitHub API spdx_id=MIT)Commit 1567581c26
管理レベルは Skill の能力と推奨統制措置を示すものであり、品質や安全性の認証、利用可否の判定ではありません。使用の可否はユーザーおよび管理者が決定します。Agent 環境によって制約が異なるため、自動保護を仮定しないでください。第三者製 Skill の著作権は原著作者に帰属し、利用リスクは利用者が負います。

1仕組みと動作原理

独自プロバイダーアダプタ層による実装:各事業者ごとに1モジュールを配置し、統一された generateImage(prompt, model, args) をエクスポート。メインスクリプトがプロバイダーに応じて処理を振り分け、リクエストボディ、サイズ、品質ルールは個別実装されています。

skills/baoyu-image-gen/scripts/main.ts
const imageData = await task.providerModule.generateImage(task.prompt, task.model, task.args);
処理内容:12社の画像APIにおける差異(サイズ構文、参照画像サポート、編集エンドポイント)を内部インターフェースに集約。メインスクリプトはプロバイダー選択、引数解析、再試行、ディスク出力のみを担当します。

プロバイダーの自動選択は「どのキーが存在するか」で判定され、codex-cli は自動選択の対象外として明示的に除外されています。

skills/baoyu-image-gen/scripts/main.ts
const hasGoogle = !!(process.env.GOOGLE_API_KEY || process.env.GEMINI_API_KEY);
SKILL.md の該当条項:`5. `codex-cli` is **never auto-selected** — set `default_provider: codex-cli` in EXTEND.md or pass `--provider codex-cli`.` —— つまり Codex サブスクリプション経路への切り替えには明示的な指定が必須です。

APIキーとモデル構成には明確な優先順位チェーンが存在:CLI > EXTEND.md > 環境変数 > <cwd>/.baoyu-skills/.env > ~/.baoyu-skills/.env。キー未設定時はプロバイダー別のエラーと取得手順を表示します。

skills/baoyu-image-gen/scripts/main.ts
Env file load order: CLI args > EXTEND.md > process.env > <cwd>/.baoyu-skills/.env > ~/.baoyu-skills/.env
コード内:`const homeEnv = await loadEnvFile(path.join(home, ".baoyu-skills", ".env"));` および `const cwdEnv = await loadEnvFile(path.join(cwd, ".baoyu-skills", ".env"));` によりこれら2つの .env を process.env に読み込み(既存値は上書きせず)、各プロバイダーが process.env から直接取得します。

バッチ並行処理は本格的なワーカープールとプロバイダー単位の流量制御(同時実行上限および起動間隔)で動作し、1画像につき最大3回再試行します。

skills/baoyu-image-gen/scripts/main.ts
const enoughCapacity = current.active < limit.concurrency;
定数 `const MAX_ATTEMPTS = 3;` および `const DEFAULT_MAX_WORKERS = 10;`。プロバイダーごとの初期値例:`replicate: { concurrency: 5, startIntervalMs: 700 },`(`BAOYU_IMAGE_GEN_<PROVIDER>_CONCURRENCY` / `_START_INTERVAL_MS` でオーバーライド可能)。--batchfile に2つ以上のタスクが含まれると自動でバッチモードに切り替わります。

バッチタスクは JSON ファイルによって駆動され、outline.md と prompts/ ディレクトリを batch.json にまとめるアセンブラーを備え、記事の挿絵パイプラインに対応します。

skills/baoyu-image-gen/SKILL.md
# Build a batch file from outline.md + prompts/ (e.g. baoyu-article-illustrator output)
該当コマンド:`scripts/build-batch.ts --outline outline.md --prompts prompts --output batch.json --images-dir attachments`。

codex-cli プロバイダーは API キーを使用せず、ローカルの codex CLI(サブスクリプションログイン状態)を起動して同梱の codex-imagegen ラッパースクリプトを実行。このラッパー層が当該ターンで実際に image_gen が呼び出されたかを検証します。

skills/baoyu-image-gen/scripts/providers/codex-cli.ts
const child = spawn(command, args, { stdio: ["ignore", "pipe", "pipe"] });
SKILL.md の記載:`The provider spawns the bundled `scripts/codex-imagegen/main.ts``。検証ロジックは codex-imagegen/main.ts 内にあり(`image_gen was not invoked (no image_gen event in stream; ${ver.reason})`)、`$CODEX_HOME/generated_images/<threadId>` ディレクトリを確認して当該ターンの生成物を確認します。

参照画像の同一性維持は感覚任せではなく、SKILL.md で具体的なプロンプト規律を提示:簡潔で確定的なアイデンティティ保持文句句と変更可能な要素の明示により、参照画像が抽象的な説明に置き換わるのを防ぎます。

skills/baoyu-image-gen/SKILL.md
Do not redesign it or create a similar-looking new subject.
長文の顔立ち説明は別人を合成する原因になるという反例も記載。また、2〜4枚の厳選した参照画像の使用を推奨し、新たに生成された画像を再参照すること(特徴のドリフト蓄積)を戒めています。

品質とサイズには2系統のマッピングが存在:プリセット normal/2k(デフォルトは 2k)を各社パラメータにマッピング。OpenAI ネイティブは quality=medium/high および 2048px レベルの正当なサイズに対応し、16の倍数・最大辺・アスペクト比を制約します。

skills/baoyu-image-gen/SKILL.md
width/height must be multiples of 16, max edge 3840px, ratio no wider than 3:1
Google/OpenRouter は --imageSize 1K|2K|4K もサポート。flash-lite は 1K のみ出力可能で、2K/4K を指定するとクランプされ警告が出力されます。

2コア機能

01マルチプロバイダーによるテキストからの画像生成(Google/OpenAI/Azure/OpenRouter/DashScope/Z.AI/MiniMax/Jimeng/Seedream/Replicate/Agnes/codex-cli)
02参照画像(--ref)駆動による編集・同一性保持、プロバイダーごとの対応能力検証(非対応の組み合わせは即時エラーと修正指示を返却)
03バッチ並行生成(ワーカープール + プロバイダー単位の同時実行/起動間隔 + 画像ごと3回の再試行 + 成功/失敗理由の集約)
04batch.json ワークフローと build-batch.ts アセンブラー(outline + prompts → batch ファイル)
05モデル解決の優先順位とプロバイダー別オーバーライド(CLI/EXTEND.md/env の3層 + <PROVIDER>_IMAGE_MODEL)
06EXTEND.md の設定体系(デフォルトプロバイダー/品質/アスペクト比/サイズ/各プロバイダーのデフォルトモデル/バッチ上限)、旧パス baoyu-imagine からの自動移行
07OpenAI 互換ゲートウェイの方言切り替え(openai-native / ratio-metadata)

3外部依存関係

KindDependency / Endpoint
apiOpenAI Images API(gpt-image-2.5-flare 默认)
apiAzure OpenAI(deployment + api-version)
apiGoogle Gemini 图像生成(gemini-3-pro-image 默认)
apiOpenRouter(/chat/completions 流程)
api阿里云 DashScope(qwen-image-2.0-pro 默认)
apiZ.AI / 智谱(GLM-Image、cogview-4)
apiMiniMax image-01
api火山引擎即梦(Jimeng,V4 签名,AccessKey/SecretKey)
api火山引擎 ARK / Seedream(豆包)
apiReplicate(nano-banana / seedream / wan 等家族)
apiAgnes
clicodex CLI(本地订阅登录态;codex exec 通道)
clibun(运行 TS 脚本;缺 bun 时 npx -y bun)

4推奨統制措置と判定根拠

安全運用のための推奨統制措置
Agent 向け
隔離環境で実行、都度明示的な認可
管理者向け
厳格な認可、全量監査、コンプライアンス確認
判定根拠(ファイルパスと抜粋)
  • SKILL.md / 脚本: 未公開またはリバースエンジニアリングされたプライベートAPIの呼び出し / クライアント識別情報の偽装
  • SKILL.md / 脚本参数: 自動化された検出の回避、ホストサンドボックスの無効化、またはSSL証明書検証のスキップを含む
  • scripts/: ローカルスクリプトまたはコマンドの実行: bun {baseDir}/scripts/main.ts(単一画像または --batchfile バッチ処理)
  • 网络端点: 外部ネットワークアクセスの宣言: api.openai.com / *.openai.azure.com(カスタム AZURE_OPENAI_BASE_URL を含む)
  • 本地工作目录: ファイルの読み書きおよび成果物の出力: --image/--batchfile で指定された出力パスに従って画像ファイルを書き込み。バッチモードでは複数枚を出力しタスクごとに集約
監査ノート: Red 判定は「機能/ポリシーレベル」であり、証拠はこのスキルディレクトリ内に存在します:①【セキュリティダウングレード+任意コード実行サーフェス】codex-cli 経路のラッパースクリプト `skills/baoyu-image-gen/scripts/codex-imagegen/spawn.ts` は `"--sandbox", "danger-full-access"` を指定して `codex exec` を起動(Codex サンドボックスを無効化)しており、`scripts/codex-imagegen/main.ts` は `PROMPT:\n${prompt}` をそのままエージェントへの指示文に結合しています。また自身でも「The output and ref paths are interpolated raw into the agent instruction / sent to `codex exec --sandbox danger-full-access`」と記述しており、--image/--ref パスに対するシェルメタ文字の検証のみにとどまっています。つまり、プロンプトファイルから読み込んだ任意のテキストがサンドボックス無効化エージェントの実行面で処理されます。②【クレデンシャルの読み取り】通常ルート(非 Codex 分岐)では、宣言された機能のために 11 社のプロバイダーの API キー(<cwd>/.baoyu-skills/.env および ~/.baoyu-skills/.env を含む)を読み込みます。トリガー条件:①はユーザーが明示的に `--provider codex-cli` を指定するか EXTEND.md で `default_provider: codex-cli` を設定した場合のみ発生します(SKILL.md:`codex-cli` is never auto-selected)。デフォルトのプロバイダー経路ではサンドボックスのダウングレードはなく Orange 相当(認証情報の読み取り+外部送信)ですが、①が機能レベルのレッドラインに該当するため、スキル全体として Red と判定されます。リバースエンジニアリング API、クライアントの偽装、TLS ダウングレードは含まれていません。

5二重目の独立検証

  • [ok] 12 家 provider 的端点与默认模型 — 逐个文件核对:openai.ts(api.openai.com/v1, gpt-image-2.5-flare)、azure.ts、google.ts(gemini-3-pro-image)、openrouter.ts、dashscope.ts(qwen-image-2.0-pro)、zai.ts、minimax.ts、jimeng.ts(jimeng_t2i_v40)、seedream.ts(doubao-seedream-5-0-260128)、replicate.ts(google/nano-banana-2)、agnes.ts(agnes-image-2.5-flash)、codex-cli.ts;与 SKILL.md 描述一致。
  • [ok] 密钥读取清单 — SKILL.md 的 Environment Variables 表逐项在代码中命中对应 process.env 读取;另有 <PROVIDER>_BASE_URL 覆盖(jest 风格测试里也验证了 base URL 拼接)。
  • [ok] codex-cli 存在 --sandbox danger-full-access(安全降级) — skills/baoyu-image-gen/scripts/codex-imagegen/spawn.ts 内 args 含 '"--sandbox"' 与 '"danger-full-access"';同目录 main.ts 注释与 assertSafePath 佐证该指令会被直接交给 codex。
  • [ok] prompt 被逐字插入无沙箱 agent 指令 — codex-imagegen/main.ts 的 buildInstruction 返回模板内含 'PROMPT:' 后接 ${prompt},逐字使用;main.ts:104-109 注释说明只对 output/ref 路径做元字符校验,未覆盖 prompt 内容。
  • [ok] codex-cli 不会被自动选中(红线触发条件) — SKILL.md Provider Selection 第 5 条与 main.ts 的 has* 判定均不含 codex-cli;需显式 --provider 或 EXTEND.md。
  • [ok] 批量并行与重试参数 — main.ts 常量 MAX_ATTEMPTS=3、DEFAULT_MAX_WORKERS=10、provider 级 concurrency/startIntervalMs 表(codex-cli 为 concurrency=1/2000ms),与 SKILL.md 文案一致。
  • [ok] 『Codex OAuth 不等于 API key』的说明与代码一致 — SKILL.md 明写不要把 Codex OAuth token 塞进 OPENAI_API_KEY;代码中 openai provider 只读 OPENAI_API_KEY,codex-cli 走独立 spawn 通道,未混用。
  • [discrepancy] 红线判级与上游口头结论的关系 — 批4 口径曾一度把 image-gen 判为 orange(理由假设『无绕过/降级』)。本目录 evidence 与该假设不符:目录内确含 `--sandbox danger-full-access` 与 raw prompt 插值(上方两条 ok)。故按『证据优先』记 red,并在 reason 写明触发条件(仅 codex-cli 通道);默认 provider 路径仍为橙级行为。

6結論

  • 幅広いプロバイダー対応と各社仕様への最適化(サイズ構文、参照画像サポート、認証・署名)。事業者の変更もパラメータ指定のみでパイプライン変更は不要。
  • エンジニアリングとして堅牢なバッチ画像生成:ワーカープール + プロバイダー単位の同時実行と起動間隔 + 画像ごと最大3回の再試行 + 画像ごとの失敗理由レポート。
  • クレデンシャルおよびモデルの解決優先度が明確であり、「Codex OAuth を API キーとして使用する」といった頻出の誤用を正す専用ドキュメントも完備。
  • 参照画像の同一性維持について、抽象論ではなく実践的なプロンプト規律を提示。
  • codex-cli 経路により、API キーを持たないユーザーでもサブスクリプション枠を利用して画像生成が可能(当該ターンでの image_gen 実行検証付き)。
  • 最適な用途: 複数事業者での価格・品質比較を必要とする画像生成ワークフローや、すでにプロンプトファイル群を用意しているユーザー(記事の挿絵、漫画の絵コンテ、表紙の大量生成など)に最適。また、OpenAI API キーはないが Codex サブスクリプションを所持しており、バッチ画像生成を行いたいユーザーにも適合します(codex-cli 経由、サンドボックス設定の理解が必要)。他のスキル(baoyu-article-illustrator、baoyu-infographic など)の画像生成バックエンドとしても、再試行・キャッシュ・流量制御を共通化できます。
    不向きな用途: 信頼できないソースからのプロンプトを直接 codex-cli 経路に渡すシナリオ(danger-full-access + 文字列の直接挿入);API キーのディスク保存が禁止されている環境や企業内ネットワークで外部通信が制限されている環境;厳格なコスト上限や確実な従量課金管理が求められる大量生成(予算リミッターがなく、デフォルトで複数回再試行されるため);これらの機能を必要としないユーザーはホスト環境ネイティブの画像生成ツールの使用が推奨されます。
    Install Agent-Ready
    ① Verified Mirror 2026-09-15
    Option A · Direct DownloadDownload baoyu-image-gen.tar.gz
    sha256: 4faafab87aede136…
    Option B · Copy Guide for Agent
    install.json
    Agent はこの JSON ガイドから自動的にダウンロードして検証します。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit 1567581c26.