baoyu-image-gen について
baoyu-image-gen は、各プロバイダーのAPIを使って画像を生成するコマンドラインスキルです。単一画像とバッチ生成に対応し、モデルや出力設定を指定できます。
主な機能
- 01複数プロバイダーのAPIによる画像生成
- 02単一画像とJSONバッチモード
- 03プロンプトまたはプロンプトファイルの入力
- 04アスペクト比、サイズ、品質の設定
- 05対応プロバイダーでの参照画像入力
- 06プロバイダーとモデルの選択
活用シーン
- 01プロンプトから画像を1枚生成する
- 02バッチファイルから複数画像を生成する
- 03指定したアスペクト比で画像を生成する
- 04対応プロバイダーで参照画像を使う
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ buda-ai/ buda-marketplace --skill baoyu-image-genインストール後、Claude Code で/baoyu-image-genを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/config/first-time-setup.mdpreferences-schema.mdscripts/main.test.tsmain.tstypes.tsscripts/providers/dashscope.test.tsdashscope.tsgoogle.test.tsgoogle.tsjimeng.tsopenai.test.tsopenai.tsopenrouter.test.tsopenrouter.tsreplicate.test.tsreplicate.tsseedream.test.tsseedream.ts詳細
画像生成(AI SDK)
API を介した公式の画像生成です。OpenAI、Google、OpenRouter、DashScope(阿里通义万象)、Jimeng(即梦)、Seedream(豆包)、Replicate のプロバイダーに対応しています。
スクリプトディレクトリ
エージェントの実行:
{baseDir}= この SKILL.md ファイルのディレクトリ- スクリプトパス =
{baseDir}/scripts/main.ts ${BUN_X}ランタイムを解決します:bunがインストールされている場合は →bun、npxが利用可能な場合は →npx -y bun、それ以外の場合は bun のインストールを提案します
ステップ 0:設定を読み込む ⛔ BLOCKING
重要:画像生成を行う前に、このステップを必ず完了してください。スキップしたり、後回しにしたりしないでください。
現在の作業ディレクトリに EXTEND.md が存在するか確認します:
test -f .baoyu-skills/baoyu-image-gen/EXTEND.md && echo "found"
| 結果 | 対応 |
|---|---|
| 見つかった | 読み込み、解析し、設定を適用します。default_model.[provider] が null の場合は、モデルについてのみ質問します(first-time-setup.md のフロー 2)。 |
| 見つからない | ⛔ 停止してください。画像を生成しないでください。 references/config/first-time-setup.md を読み、フロー 1 のチェックリストに沿って手順を進めます。これは複数ターンにわたる対話形式のセットアップで、ユーザーに複数の質問をする必要があります。ステップ 5(検証)に合格してから、画像生成を再開してください。 |
重要:初回セットアップは複数ステップの対話形式のワークフローであり、単一の操作ではありません。各ステップでユーザーに質問し、回答を待つ必要があります。
| パス | 場所 |
|---|---|
.baoyu-skills/baoyu-image-gen/EXTEND.md | 現在の作業ディレクトリからの相対パス |
EXTEND.md がサポートする項目:デフォルトのプロバイダー | デフォルトの品質 | デフォルトのアスペクト比 | デフォルトの画像サイズ | デフォルトのモデル | バッチワーカーの上限 | プロバイダー別のバッチ制限
スキーマ:references/config/preferences-schema.md
使用方法
# Basic
${BUN_X} {baseDir}/scripts/main.ts --prompt "A cat" --image cat.png
# With aspect ratio
${BUN_X} {baseDir}/scripts/main.ts --prompt "A landscape" --image out.png --ar 16:9
# High quality
${BUN_X} {baseDir}/scripts/main.ts --prompt "A cat" --image out.png --quality 2k
# From prompt files
${BUN_X} {baseDir}/scripts/main.ts --promptfiles system.md content.md --image out.png
# With reference images (Google, OpenAI, OpenRouter, Replicate, or Seedream 4.0/4.5/5.0)
${BUN_X} {baseDir}/scripts/main.ts --prompt "Make blue" --image out.png --ref source.png
# With reference images (explicit provider/model)
${BUN_X} {baseDir}/scripts/main.ts --prompt "Make blue" --image out.png --provider google --model gemini-3-pro-image-preview --ref source.png
# OpenRouter (recommended default model)
${BUN_X} {baseDir}/scripts/main.ts --prompt "A cat" --image out.png --provider openrouter
# OpenRouter with reference images
${BUN_X} {baseDir}/scripts/main.ts --prompt "Make blue" --image out.png --provider openrouter --model google/gemini-3.1-flash-image-preview --ref source.png
# Specific provider
${BUN_X} {baseDir}/scripts/main.ts --prompt "A cat" --image out.png --provider openai
# DashScope (阿里通义万象)
${BUN_X} {baseDir}/scripts/main.ts --prompt "一只可爱的猫" --image out.png --provider dashscope
# DashScope Qwen-Image 2.0 Pro (recommended for custom sizes and text rendering)
${BUN_X} {baseDir}/scripts/main.ts --prompt "为咖啡品牌设计一张 21:9 横幅海报,包含清晰中文标题" --image out.png --provider dashscope --model qwen-image-2.0-pro --size 2048x872
# DashScope legacy Qwen fixed-size model
${BUN_X} {baseDir}/scripts/main.ts --prompt "一张电影感海报" --image out.png --provider dashscope --model qwen-image-max --size 1664x928
# Replicate (google/nano-banana-pro)
${BUN_X} {baseDir}/scripts/main.ts --prompt "A cat" --image out.png --provider replicate
# Replicate with specific model
${BUN_X} {baseDir}/scripts/main.ts --prompt "A cat" --image out.png --provider replicate --model google/nano-banana
# Batch mode with saved prompt files
${BUN_X} {baseDir}/scripts/main.ts --batchfile batch.json
# Batch mode with explicit worker count
${BUN_X} {baseDir}/scripts/main.ts --batchfile batch.json --jobs 4 --json
バッチファイル形式
{
"jobs": 4,
"tasks": [
{
"id": "hero",
"promptFiles": ["prompts/hero.md"],
"image": "out/hero.png",
"provider": "replicate",
"model": "google/nano-banana-pro",
"ar": "16:9",
"quality": "2k"
},
{
"id": "diagram",
"promptFiles": ["prompts/diagram.md"],
"image": "out/diagram.png",
"ref": ["references/original.png"]
}
]
}
promptFiles、image、ref のパスは、バッチファイルのディレクトリを基準に解決されます。jobs は省略可能です(CLI の --jobs によって上書きされます)。トップレベルの配列形式(jobs ラッパーなし)も使用できます。
オプション
| オプション | 説明 |
|---|---|
--prompt <text>, -p | プロンプトのテキスト |
--promptfiles <files...> | ファイルからプロンプトを読み込みます(連結されます) |
--image <path> | 出力画像のパス(単一画像モードでは必須) |
--batchfile <path> | 複数画像生成用の JSON バッチファイル |
--jobs <count> | バッチモードのワーカー数(デフォルト:自動、最大値は設定から取得、組み込みのデフォルトは 10) |
--provider google|openai|openrouter|dashscope|jimeng|seedream|replicate | プロバイダーを指定します(デフォルト:自動検出) |
--model <id>, -m | モデル ID(Google:gemini-3-pro-image-preview;OpenAI:gpt-image-1.5;OpenRouter:google/gemini-3.1-flash-image-preview;DashScope:qwen-image-2.0-pro) |
--ar <ratio> | アスペクト比(例:16:9、1:1、4:3) |
--size <WxH> | サイズ(例:1024x1024) |
--quality normal|2k | 品質プリセット(デフォルト:2k) |
--imageSize 1K|2K|4K | Google/OpenRouter の画像サイズ(デフォルト:品質設定に基づきます) |
--ref <files...> | 参照画像。Google のマルチモーダル、OpenAI GPT Image の編集、OpenRouter のマルチモーダルモデル、Replicate、Seedream 5.0/4.5/4.0 でサポートされています。Jimeng、Seedream 3.0、提供終了した SeedEdit 3.0 ではサポートされていません。 |
--n <count> | 画像の枚数 |
--json | JSON 形式で出力します |
環境変数
| 変数 | 説明 |
|---|---|
OPENAI_API_KEY | OpenAI API キー |
OPENROUTER_API_KEY | OpenRouter API キー |
GOOGLE_API_KEY | Google API キー |
DASHSCOPE_API_KEY | DashScope API キー(阿里云) |
REPLICATE_API_TOKEN | Replicate API トークン |
JIMENG_ACCESS_KEY_ID | Jimeng(即梦)Volcengine アクセスキー |
JIMENG_SECRET_ACCESS_KEY | Jimeng(即梦)Volcengine シークレットキー |
ARK_API_KEY | Seedream(豆包)Volcengine ARK API キー |
OPENAI_IMAGE_MODEL | OpenAI モデルの上書き |
OPENROUTER_IMAGE_MODEL | OpenRouter モデルの上書き(デフォルト:google/gemini-3.1-flash-image-preview) |
GOOGLE_IMAGE_MODEL | Google モデルの上書き |
DASHSCOPE_IMAGE_MODEL | DashScope モデルの上書き(デフォルト:qwen-image-2.0-pro) |
REPLICATE_IMAGE_MODEL | Replicate モデルの上書き(デフォルト:google/nano-banana-pro) |
JIMENG_IMAGE_MODEL | Jimeng モデルの上書き(デフォルト:jimeng_t2i_v40) |
SEEDREAM_IMAGE_MODEL | Seedream モデルの上書き(デフォルト:doubao-seedream-5-0-260128) |
OPENAI_BASE_URL | OpenAI カスタムエンドポイント |
OPENROUTER_BASE_URL | OpenRouter カスタムエンドポイント(デフォルト:https://openrouter.ai/api/v1) |
OPENROUTER_HTTP_REFERER | OpenRouter の帰属表示に使用する任意のアプリ/サイト URL |
OPENROUTER_TITLE | OpenRouter の帰属表示に使用する任意のアプリ名 |
GOOGLE_BASE_URL | Google カスタムエンドポイント |
DASHSCOPE_BASE_URL | DashScope カスタムエンドポイント |
REPLICATE_BASE_URL | Replicate カスタムエンドポイント |
JIMENG_BASE_URL | Jimeng カスタムエンドポイント(デフォルト:https://visual.volcengineapi.com) |
JIMENG_REGION | Jimeng リージョン(デフォルト:cn-north-1) |
SEEDREAM_BASE_URL | Seedream カスタムエンドポイント(デフォルト:https://ark.cn-beijing.volces.com/api/v3) |
BAOYU_IMAGE_GEN_MAX_WORKERS | バッチワーカー上限の上書き |
BAOYU_IMAGE_GEN_<PROVIDER>_CONCURRENCY | プロバイダーの並行処理数の上書き(例:BAOYU_IMAGE_GEN_REPLICATE_CONCURRENCY) |
BAOYU_IMAGE_GEN_<PROVIDER>_START_INTERVAL_MS | プロバイダーの開始間隔の上書き(例:BAOYU_IMAGE_GEN_REPLICATE_START_INTERVAL_MS) |
読み込み優先順位:CLI 引数 > EXTEND.md > 環境変数 > <cwd>/.baoyu-skills/.env > ~/.baoyu-skills/.env
モデルの解決
モデルの優先順位(高い順)は、すべてのプロバイダーに適用されます。
- CLI フラグ:
--model <id> - EXTEND.md:
default_model.[provider] - 環境変数:
<PROVIDER>_IMAGE_MODEL(例:GOOGLE_IMAGE_MODEL) - 組み込みのデフォルト
EXTEND.md は環境変数より優先されます。EXTEND.md に default_model.google: "gemini-3-pro-image-preview" があり、環境変数に GOOGLE_IMAGE_MODEL=gemini-3.1-flash-image-preview が設定されている場合は、EXTEND.md の設定が優先されます。
エージェントは生成のたびに、モデル情報を必ず表示する必要があります:
- 表示:
Using [provider] / [model] - 切り替え方法を表示:
Switch model: --model <id> | EXTEND.md default_model.[provider] | env <PROVIDER>_IMAGE_MODEL
DashScope モデル
公式の Qwen-Image の動作を利用する場合は、--model qwen-image-2.0-pro を使うか、default_model.dashscope / DASHSCOPE_IMAGE_MODEL を設定してください。
公式 DashScope モデルファミリー:
qwen-image-2.0-pro、qwen-image-2.0-pro-2026-03-03、qwen-image-2.0、qwen-image-2.0-2026-03-03宽*高形式の自由なsize- 総ピクセル数は
512*512から2048*2048の範囲にする必要があります - デフォルトのサイズは約
1024*1024です 21:9などのカスタム比率や、中国語/英語のテキストが多いレイアウトに最適です
qwen-image-max、qwen-image-max-2025-12-30、qwen-image-plus、qwen-image-plus-2026-01-09、qwen-image- 固定サイズのみ:
1664*928、1472*1104、1328*1328、1104*1472、928*1664 - デフォルトのサイズは
1664*928です - 現在、
qwen-imageの機能はqwen-image-plusと同じです
- 固定サイズのみ:
z-image-turbo、z-image-ultra、wanx-v1などのレガシー DashScope モデル- ユーザーがレガシーな動作または互換性を明示的に求めた場合にのみ、引き続き使用してください
CLI 引数を DashScope の動作に変換する場合:
--sizeは--arより優先されますqwen-image-2.0*では、明示的な--sizeを優先してください。指定がない場合は--arから推定し、以下の公式推奨解像度を使用しますqwen-image-max/plus/imageでは、公式の固定サイズ5種類のみを使用してください。要求された比率に対応するサイズがない場合は、qwen-image-2.0-proに切り替えてください--qualityは baoyu-image-gen の互換性プリセットであり、DashScope API のネイティブフィールドではありません。normal/2kを以下の表に対応付ける方法は実装上の推定であり、公式 API による保証ではありません
一般的なアスペクト比に対する、推奨される qwen-image-2.0* のサイズ:
| 比率 | normal | 2k |
|---|---|---|
1:1 | 1024*1024 | 1536*1536 |
2:3 | 768*1152 | 1024*1536 |
3:2 | 1152*768 | 1536*1024 |
3:4 | 960*1280 | 1080*1440 |
4:3 | 1280*960 | 1440*1080 |
9:16 | 720*1280 | 1080*1920 |
16:9 | 1280*720 | 1920*1080 |
21:9 | 1344*576 | 2048*872 |
DashScope の公式 API では negative_prompt、prompt_extend、watermark も公開されていますが、現在 baoyu-image-gen ではこれら専用の CLI フラグを利用できません。
公式リファレンス:
OpenRouter モデル
完全な OpenRouter モデル ID を使用してください。例:
google/gemini-3.1-flash-image-preview(推奨。画像出力と参照画像を使ったワークフローに対応)google/gemini-2.5-flash-image-previewblack-forest-labs/flux.2-pro- その他の画像生成に対応した OpenRouter モデル ID
注意事項:
- OpenRouter の画像生成では、OpenAI の
/imagesエンドポイントではなく/chat/completionsを使用します --refを使用する場合は、画像入力と画像出力に対応したマルチモーダルモデルを選択してください--imageSizeは OpenRouter のimageGenerationOptions.sizeに対応します。--size <WxH>は、可能な場合、最も近い OpenRouter のサイズと推定アスペクト比に変換されます
Replicate モデル
対応するモデル形式:
owner/name(公式モデルに推奨)、例:google/nano-banana-proowner/name:version(バージョン指定のコミュニティモデル)、例:stability-ai/sdxl:<version>
例:
# Use Replicate default model
${BUN_X} {baseDir}/scripts/main.ts --prompt "A cat" --image out.png --provider replicate
# Override model explicitly
${BUN_X} {baseDir}/scripts/main.ts --prompt "A cat" --image out.png --provider replicate --model google/nano-banana
プロバイダーの選択
--refが指定されていて--providerが未指定 → Google、次に OpenAI、OpenRouter、Replicate の順に自動選択します(Jimeng と Seedream は参照画像に対応していません)--providerが指定されている → 指定されたプロバイダーを使用します(--refを指定する場合は、google、openai、openrouter、replicateのいずれかである必要があります)- API キーを利用できるプロバイダーが1つのみ → そのプロバイダーを使用します
- 複数のプロバイダーを利用できる → デフォルトで Google を使用します
品質プリセット
| プリセット | Google imageSize | OpenAI サイズ | OpenRouter サイズ | Replicate 解像度 | 用途 |
|---|---|---|---|---|---|
normal | 1K | 1024px | 1K | 1K | クイックプレビュー |
2k(デフォルト) | 2K | 2048px | 2K | 2K | カバー、イラスト、インフォグラフィック |
Google/OpenRouter imageSize:--imageSize 1K|2K|4K で上書きできます。
アスペクト比
対応:1:1、16:9、9:16、4:3、3:4、2.35:1
- Google マルチモーダル:
imageConfig.aspectRatioを使用します - OpenAI:最も近い対応サイズにマッピングします
- OpenRouter:
imageGenerationOptions.aspect_ratioを送信します。--size <WxH>のみが指定された場合は、アスペクト比が自動的に推定されます - Replicate:
aspect_ratioをモデルに渡します。--arなしで--refが指定された場合、デフォルトはmatch_input_imageです
生成モード
デフォルト:逐次生成。
バッチ並列生成:--batchfile に保留中のタスクが2つ以上含まれている場合、スクリプトは並列生成を自動的に有効にします。
| モード | 使用する場合 |
|---|---|
| 逐次(デフォルト) | 通常の使用、単一画像、小規模なバッチ |
| バッチ並列 | 2つ以上のタスクがあるバッチモード |
実行方法の選択:
| 状況 | 推奨方法 | 理由 |
|---|---|---|
| 画像が1枚、または簡単な画像が1~2枚 | 逐次 | 調整のオーバーヘッドが少なく、デバッグも容易です |
| 複数の画像について、プロンプトファイルがすでに保存されている | バッチ(--batchfile) | 確定済みのプロンプトを再利用し、共通のスロットリングと再試行を適用でき、スループットも予測しやすくなります |
| 画像ごとに個別の検討、プロンプト作成、スタイルの模索が必要 | サブエージェント | まだ探索段階の作業であり、生成前に画像ごとの個別分析が必要になる場合があります |
目安:
- プロンプトファイルがすでに保存され、タスクが「これらをすべて生成する」段階になったら、サブエージェントよりバッチを優先します
- 生成に画像ごとの検討、書き直し、または異なる方向性での創作が伴う場合にのみ、サブエージェントを使用します
並列処理の動作:
- ワーカー数はデフォルトで自動設定され、設定値によって上限が設けられています。組み込みのデフォルトは10です
- プロバイダー固有のスロットリングはバッチモードでのみ適用されます。組み込みのデフォルト値は、明らかなRPMの急増を避けながら、より高速なスループットが得られるよう調整されています
--jobs <count>でワーカー数を上書きできます- 各画像は最大3回まで自動で再試行されます
- 最終出力には、成功数、失敗数、画像ごとの失敗理由が含まれます
エラー処理
- API キーがない → セットアップ手順を含むエラー
- 生成失敗 → 画像ごとに最大3回まで自動で再試行
- アスペクト比が無効 → 警告を表示し、デフォルト値で続行
- 対応していないプロバイダー/モデルの参照画像 → 修正方法のヒントを含むエラー
拡張機能のサポート
EXTEND.md によるカスタム設定に対応しています。パスとサポートされるオプションについては、Preferences セクションを参照してください。
クレジット表記
JimLiu による baoyu-image-gen に基づいており、MIT ライセンスで提供されています。 Buda.im プラットフォーム向けに変更・適合されています。