bananahub
`/bananahub`向けのAgent標準マルチプロバイダー画像ワークフローです。デフォルトで英語以外のプロンプトを英語に正規化し、Gemini/Nano Banana、OpenAI GPT Image、チャット互換の画像ルートを使用して画像の生成または編集ができます。BananaHubのプロンプトやワークフローテンプレートの検出と利用もできます。このスキルは、ユーザーが明示的に「bananahub」「BananaHub」と言及するか、`/bananahub`コマンドを使用した場合にのみ起動します。「生成图片」や「画一个」といった一般的な画像生成リクエストでは起動しません。代表的なトリガーは、「/bananahub」「bananahubで画像を作成」「bananahub 画像生成」「bananahubでプロンプト最適化」「bananahubでテンプレートを探す」「/bananahub discover」です。
description の原文を見る
Agent-native multi-provider image workflow for `/bananahub`. Normalizes non-English prompts into English by default, generates or edits images across Gemini/Nano Banana, OpenAI GPT Image, and chat-compatible image routes, and discovers or uses BananaHub prompt and workflow templates. Trigger only when the user explicitly mentions bananahub / BananaHub or uses the `/bananahub` command. Do NOT activate on generic image-generation requests like "生成图片" or "画一个". Typical triggers: "/bananahub", "用 bananahub 画", "bananahub 生图", "bananahub 优化提示词", "bananahub 找模板", and "/bananahub discover".
SKILL.md 本文
BananaHub
非英語または混合言語のリクエストから、1 つの /bananahub ワークフロー内でプロバイダーを通じた画像の生成または編集を行います。Gemini/Nano Banana がデフォルトモデルファミリーのままであり、OpenAI GPT Image サポートはプロバイダーでルーティングされます。BananaHub はプロンプト最適化、保守的な拡張、モデルフォールバック、画像編集、テンプレート使用、BananaHub ディスカバリーを単一のスキルに統合し、複数のインストールに分散させません。
クイックスタート
- Open Agent Skills からインストール:
npx skills add https://github.com/bananahub-ai/bananahub-skill --skill bananahub - Claude Code に直接インストール:
claude skill install https://github.com/bananahub-ai/bananahub-skill - セットアップを一度実行:
/bananahub init - 自然言語リクエストから生成:
/bananahub 一只橘猫趴在键盘上打盹 - 画像を編集:
/bananahub edit 把背景换成海滩 --input photo.png - 再利用可能なテンプレートをディスカバー:
/bananahub discover 代码库讲解图
キーパス
- 生成スクリプト:
{baseDir}/scripts/bananahub.py - プロバイダーアダプタ:
{baseDir}/scripts/providers/— Gemini、OpenAI Images、チャット/コンプリーション互換ランタイムアダプタ - ランタイムコンフィグモジュール:
{baseDir}/scripts/runtime_config.py— プロバイダー定数、エイリアス、トランスポートデフォルト、コンフィグキー、エンドポイント正規化 - コンフィグストアモジュール:
{baseDir}/scripts/config_store.py— コンフィグ読み込み、プロファイルマージ、検証、プロバイダーオーバーライド、シリアライゼーションヘルパー - プロンプト最適化ルール:
references/prompt-guide.md— フェーズ 1(基本最適化)中に読み込み - 拡張プロファイル:
references/profiles/{name}.md— フェーズ 3(オンデマンド)中に読み込み - 公式リファレンス:
references/official-sources.md— 権威あるソース URL、コアサンプルライブラリ - 機能レジストリ:
references/capability-registry.md— プロバイダー/モデル機能ルーティングおよびフォールバックポリシー - モデルレジストリ:
references/model-registry.json— 正規モデル ID、エイリアス、デフォルト、プロバイダーファミリー - プロバイダーガイド:
references/providers/{provider}.md— 遅延ロードモデルファミリープロンプトおよびランタイムルール - テンプレートシステム:
references/template-system.md— テンプレート/使用/作成テンプレートコマンド処理時に読み込み - Hub ディスカバリーガイド:
references/hub-discovery.md—discover処理時またはローカルテンプレートマッチが弱い時に読み込み - テンプレートファイル:
{baseDir}/references/templates/<id>/template.md(ビルトイン)+~/.config/bananahub/templates/<id>/template.md(ユーザーインストール) - テレメトリヘルパー:
python3 {baseDir}/scripts/bananahub.py telemetry ...— ビルトイン/インストール済みテンプレート採用イベント用 - テレメトリ状態:
~/.config/bananahub/telemetry.json— ローカル匿名使用 ID を格納 - 初期化ガイド:
references/init-guide.md—initコマンド処理時に読み込み - 最適化パイプライン:
references/optimization-pipeline.md— プロンプト最適化時に読み込み - テンプレートフォーマット仕様:
references/template-format-spec.md— 詳細なフィールド定義、リポジトリ構造、サンプル要件 - テンプレート検証:
python3 {baseDir}/scripts/validate_templates.py— バンドル/ユーザーテンプレートメタデータをスキーマ v1/v2 互換性用に検証 - モード検出:
python3 {baseDir}/scripts/bananahub.py check-mode— プロバイダー対応/ホストネイティブ/プロンプトのみの実行モードと機能層の境界を報告 - プロンプトアーカイブ:
--save-prompt、--prompt-output、またはBANANAHUB_SAVE_PROMPTS=1使用時のカレントワーキングディレクトリbananahub-prompts/ - API コンフィグ(優先度高→低):
--config <file>CLI フラグ- 環境変数(
GOOGLE_API_KEY、GEMINI_API_KEY、BANANAHUB_PROVIDER、BANANAHUB_AUTH_MODE、BANANAHUB_MODEL、GOOGLE_GEMINI_BASE_URL、GEMINI_BASE_URL、BANANAHUB_BASE_URL、GOOGLE_CLOUD_PROJECT、GOOGLE_CLOUD_LOCATION) - スキルコンフィグ:
~/.config/bananahub/config.json{"provider": "google-ai-studio", "api_key": "...", "model": "gemini-3-pro-image-preview"}{"provider": "gemini-compatible", "api_key": "...", "base_url": "https://..."}{"provider": "openai", "openai_api_key": "...", "model": "gpt-image-2"}{"provider": "openai-compatible", "api_key": "...", "base_url": "https://...", "model": "gpt-image-2"}{"provider": "chatgpt-compatible", "chatgpt_api_key": "...", "chatgpt_base_url": "https://...", "model": "gpt-5.4"}- マルチプロファイル:
{"default_profile":"nano","profiles":{"nano":{"provider":"google-ai-studio","api_key":"..."},"gpt":{"provider":"openai","openai_api_key":"...","model":"gpt-image-2"}}} {"provider": "vertex-ai", "auth_mode": "adc", "project": "...", "location": "global"}
- 永続的なコンフィグヘルパー:
python3 {baseDir}/scripts/bananahub.py config showpython3 {baseDir}/scripts/bananahub.py config doctor --jsonpython3 {baseDir}/scripts/bananahub.py init --wizardpython3 {baseDir}/scripts/bananahub.py init --wizard --install-depspython3 {baseDir}/scripts/bananahub.py config quickset --provider openai-compatible --profile gpt --default-profile --base-url https://your-openai-compatible-endpoint --api-key <key> --model gpt-image-2python3 {baseDir}/scripts/bananahub.py config quickset --provider openai --profile gpt --default-profile --api-key <key> --model gpt-image-2python3 {baseDir}/scripts/bananahub.py config quickset --provider google-ai-studio --profile nano --default-profile --api-key <key> --model gemini-3-pro-image-previewpython3 {baseDir}/scripts/bananahub.py config quickset --provider vertex-ai --profile vertex --default-profile --auth-mode adc --project <gcp-project> --location globalpython3 {baseDir}/scripts/bananahub.py config set --clear-base-url
- 出力ディレクトリ: カレントワーキングディレクトリ(スキルが呼び出された場所)
初回実行検出
help 以外のコマンドを実行する前に、環境の準備状況をチェックします:
- セットアップステータスが不明確な場合は
python3 {baseDir}/scripts/bananahub.py config doctor --jsonを実行します。 statusがneeds_setupの場合、references/init-guide.mdを読み、init --wizardを実行するか、依存関係が不足している場合はinit --wizard --install-depsを実行するか、suggested_commands[0]quickset コマンドを提案します。- ユーザーに実際の API キーをチャットに貼り付けるよう求めないでください。ローカルウィザードまたは
<key>プレースホルダー付きのターミナルコマンドを優先します。 - コンフィグは存在するが生成が認証/依存関係エラーで失敗した場合 →
config doctor --jsonまたはinit --wizardを提案します。 - 新しいコンフィグを
~/.config/bananahub/config.jsonに保存し、可能であれば名前付きプロファイル(gpt、nano、vertex、またはchat)として保存します。 gpt-image-2を全体のデフォルトモデルとして扱います。プロバイダー固有のデフォルトは Gemini/Vertex パスに対して引き続き適用されます。- サポートされるランタイムプロバイダー:
google-ai-studio: generate / edit / models / initgemini-compatible: generate / edit / models / initvertex-ai: generate / edit / models / initopenai: OpenAI ネイティブ GPT Image generate / edit / models / initopenai-compatible: OpenAI スタイルエンドポイント generate / models / init、機能依存chatgpt-compatible: チャット/コンプリーションエンドポイント、アシスタントの返信内に画像を返す
openai-compatibleは OpenAI ネイティブ GPT Image と同じではありません。エンドポイントがサポートを明示していない限り、編集、マスク編集、または GPT Image パラメーターを想定しないでください。- エンドポイント正規化ルール:
gemini-compatible: ユーザーが/v1betaで終わる URL を貼り付けた場合、概念的に保持しますが、ランタイム中に末尾のバージョンを正規化して重複しないようにしますopenai-compatible: ユーザーがベアホストを貼り付けた場合、ランタイムは/v1を追加することがあります。Google の公式エンドポイントの場合は/v1beta/openaiに解決します
ランタイムモードレイヤー
実行パスが不明な場合は python3 {baseDir}/scripts/bananahub.py check-mode --pretty を実行します。BananaHub には 3 つの実行モードがあります:
| モード | トリガー | 動作 |
|---|---|---|
provider-backed | サポートされているプロバイダーのコンフィグが検証される | プロンプトを最適化/レンダリング、generate または edit を呼び出し、画像出力を保存 |
host-native | プロバイダーコンフィグが不足または不完全だが、BANANAHUB_HOST_IMAGEGEN=1 またはコーラーが明示的にネイティブ画像ツールを持っている | プロンプトを最適化/レンダリング、オプションでアーカイブ、プロバイダースクリプトを呼び出す代わりにホスト画像ツールに渡す |
prompt-only | 有効なプロバイダーもホスト画像ツールもない | プロンプト/テンプレートアドバイザーとして機能: 最終プロンプトを返し、要求されたときにアーカイブします。画像生成が成功したと主張しない |
機能の所有権はレイヤー化されています:
- クロスモデルスキルレイヤー: プロンプト最適化、翻訳ポリシー、保守的な拡張、
--direct、--raw、プロンプトアーカイビング、テンプレートディスカバリー/アクティベーション、ホストネイティブ委譲、プロンプトのみのアドバイザリ出力。 - テンプレートレイヤー: マッチングとアクティベーションは一般的ですが、プロバイダー/モデル互換性、プロンプトバリアント、テスト済みクオリティ、サンプルはテンプレートメタデータに属します。
- プロバイダー/モデルレイヤー: 画像編集、マスク編集、マルチリファレンス、正確なサイズ、ネイティブクオリティ、透明背景、出力フォーマット/圧縮、フォールバックは普遍的ではありません。
references/capability-registry.md、references/model-registry.json、プロバイダーアダプタを通じてルーティングします。
機能がリクエストペイロード形状、ファイル検証、コスト、ポリシー動作、または出力解析を変更する場合、複数のプロバイダーが同様の表現をサポートしているとしても、クロスモデルとして扱わないでください。
コマンドルーティング
引数に基づいて、ユーザー入力を適切なアクションにルーティングします:
| 引数 | アクション |
|---|---|
init | references/init-guide.md を読み、環境の問題を診断して修正 |
help | 使用方法を表示(サポートされているコマンドと例の簡潔なリスト) |
<description> | references/optimization-pipeline.md を読み、以下を実行: 基本最適化 → インテント認識 → オプション拡張 → 生成 |
edit <description> --input <image-path> [--ref <reference-image>...] | 既存画像を編集: プロンプト最適化 → edit サブコマンド呼び出し |
optimize <description> | プロンプトのみを最適化。生成せずに結果を表示 |
generate <English prompt> | 与えられた英語プロンプトで直接画像を生成(最適化をスキップ) |
models | python3 {baseDir}/scripts/bananahub.py models を実行して、API から画像対応モデルをクエリ |
check-mode | python3 {baseDir}/scripts/bananahub.py check-mode --pretty を実行して、プロバイダー対応/ホストネイティブ/プロンプトのみモードと機能レイヤーを検査 |
templates | references/template-system.md を読み、すべてのテンプレートをプロファイルと種類でグループ化して一覧表示 |
templates <name> | references/template-system.md を読み、frontmatter type を解析、プロンプトテンプレートまたはワークフローテンプレートの詳細を表示 |
use <template-id> [custom description] | references/template-system.md を読み、frontmatter type を解析、プロンプトテンプレートから生成するかワークフローテンプレートをアクティベート |
discover <request> | references/hub-discovery.md を読み、ビジュアルサイトをスクレイピングせずに BananaHub で一致するテンプレートを検索 |
discover curated <request> | references/hub-discovery.md を読み、キュレーション済み BananaHub カタログのみを検索 |
discover trending | references/hub-discovery.md を読み、現在トレンド中の BananaHub テンプレートを表示 |
create-template [description] | references/template-system.md を読み、ユーザーがプロンプトまたはワークフローテンプレートを必要とするかを判定、作成をガイド |
注釈:
optimize、--direct、--rawはスキルレイヤーコントロールであり、スクリプト呼び出し前にあなたによって解釈されます--directまたは--rawを{baseDir}/scripts/bananahub.pyに渡さないでくださいdiscoverはスキルレイヤーコマンドです:{baseDir}/scripts/bananahub.pyではなく、BananaHub マシン可読ファイルとnpx bananahub add ...を使用しますtelemetryは内部ヘルパーであり、ユーザー向けチャットコマンドではありません。テンプレートが選択されたか、出力が正常に生成されたときに使用します。
オプションフラグ(任意の生成コマンドに追加):
--model <model_id>— モデルを指定--aspect <ratio>— アスペクト比(例: 16:9、1:1、9:16)--image-size <preset>— ネイティブ画像サイズプリセット(1K、2K、4K)--openai-size <value>— OpenAI スタイル画像生成用 OpenAI ネイティブサイズ--quality <value>— サポートされている場合、プロバイダーネイティブクオリティプリセット--background <value>— サポートされている場合、プロバイダーネイティブ背景オプション--output-format <value>— サポートされている場合、プロバイダーネイティブ出力フォーマット--output-compression <N>— サポートされている場合、プロバイダーネイティブ出力圧縮--resize <WxH>— 生成/編集後のポスト処理リサイズ(例:1024x1024)--size <value>— レガシー互換フラグ。1K/2K/4Kはネイティブ画像サイズ、WxHはポスト処理リサイズを意味す--output <path>— 出力パスを指定--save-prompt— 最終プロンプトをbananahub-prompts/の下にアーカイブ--prompt-output <path>— 最終プロンプトを特定ファイルまたはディレクトリにアーカイブ--input <path>— 編集コマンド用のソース画像--ref <path> [path...]— 編集コマンド用の参照画像(Gemini は最大 13 個。OpenAI プロバイダーは独自の低いランタイム制限を適用)--mask <path>— マスク編集用 OpenAI ネイティブマスク画像--direct— ダイレクトモード: すべての確認をスキップ、すぐに生成--raw— ロウモード: 翻訳のみ、最適化なし--retries <N>— フォールバック前の 503 ごとのモデルあたりの再試行回数(デフォルト: 1、つまり各モデルを 2 回試行)--no-fallback— 自動モデルフォールバックを無効化
3 つの最適化モード
モード 1: デフォルト(フラグなし)
ユーザー入力 → 基本最適化(無音) → インテント認識 → プロファイルマッチ?
├─ はい → 拡張提案を表示 → ユーザーが確認/編集/拒否 → 生成
└─ いいえ(一般) → 直接生成
モード 2: ダイレクト(--direct またはユーザーが「直接画/直出」と言う)
ユーザー入力 → 基本最適化 → インテント認識 → プロファイル拡張をロード → 直接生成
確認なし。経験者またはバッチ生成に適しています。
モード 3: ロウ(--raw)
ユーザー入力 → 英語に翻訳のみ → 直接生成
最適化なし。画像内のテキストは元の言語で保持されます。
プロンプト最適化サマリー
完全なパイプラインは references/optimization-pipeline.md を読んでください。概要:
- フェーズ 0: ハード制約を抽出(exact_text、must_keep、must_avoid、style_lock、approved_baseline、関連する場合 allowed_delta)
- フェーズ 1: 基本最適化 — フォーマット修正、スマート翻訳、構造化、保守的なガードレール
- フェーズ 1.5: 機能/プロバイダーのルーティング —
references/capability-registry.mdを検査、references/model-registry.jsonからモデルエイリアスを解決、選択されたモデルファミリーに対してのみreferences/providers/*.mdを遅延ロード - フェーズ 2: インテント認識 — キーワードテーブルを使用して 10 のプロファイルのいずれかにマッチ
- フェーズ 2.1: ローカルテンプレート自動マッチング — インストール済みテンプレートを提案(段階的情報開示)
- フェーズ 2.2: BananaHub ディスカバリー — 明示的に有用な場合にのみリモートカタログを検索
- フェーズ 2.5: スタイルオーバーレイ検出(手描きスケッチノート)
- フェーズ 3: 拡張 —
references/profiles/から一致するプロファイルを読み込み、主題を分類、欠落している次元を埋める - フェーズ 3.5: モデル推奨 — 生成主導の高忠実度出力には
gpt-image-2を優先。編集/参照/一貫性重視フローには Gemini/Nano Banana を優先(ユーザーまたはテンプレートがオーバーライドしない限り)
画像生成フロー
- コマンドをビルド:
この生成がアクティブなテンプレートから来ている場合、以下も渡します:python3 {baseDir}/scripts/bananahub.py generate "<prompt>" [--aspect RATIO] [--model MODEL] [--output PATH]--template-id <id> --template-repo <repo> --template-distribution bundled|remote --template-source curated|discovered - スクリプトを実行して JSON 出力を解析
- 自動モデルフォールバック: サーバーエラー(500/502/503/504)で、
references/model-registry.jsonから選択されたプロバイダーファミリーフォールバックチェーンを試します。ユーザーが明示的にクロスプロバイダーフォールバックを有効にしない限り、プロバイダーファミリーを超えないでください。--no-fallbackで無効にします。 - 成功時:
スクリプトが✅ 图片已生成 📁 路径: [file_path] 🔧 模型: [model] | 宽高比: [ratio] | 尺寸: [WxH] 📝 使用的 Prompt: [final prompt used]template_telemetryを返す場合、ベストエフォート成功報告のみとして扱い、ユーザーが要求しない限り失敗を表示しません。 - 失敗時: エラータイプに基づいて修正を提案(コンテンツポリシー → 言い換え、認証 → キーを確認、ネットワーク → プロキシを確認)
画像編集フロー
- 入力を検証:
--input画像パスが存在することを確認、--ref画像を検証 13 個以上の参照画像または 14 個以上の合計画像を拒否します。 - 不変条件を抽出: ソース画像で変更されないままでなければならないもの
- 適用可能な場合にベースラインをロック: ソース画像が受け入れられた結果である場合、後のラウンドで信頼できる唯一のソースとして扱います
- 許可されたデルタを名付ける: このラウンドで許可される 1 つの変更を分離
- 編集プロンプトを最適化: フェーズ 1 のみを実行(フェーズ 2/3 をスキップ)。保守的に保ち、デルタを分離
- コマンドをビルド:
python3 {baseDir}/scripts/bananahub.py edit "<prompt>" --input <image_path> [--ref <ref1> ...] [--model MODEL] [--output PATH]--refは最大 13 個の参照画像を受け入れます。合計画像(入力 + 参照)≤ 14。 この編集がアクティブなテンプレート/ワークフロー内で実行される場合、以下も渡します:--template-id <id> --template-repo <repo> --template-distribution bundled|remote --template-source curated|discovered - 成功時:
✅ 图片已编辑 📁 路径: [file_path] 📥 原图: [input_path] 📎 参考图: [ref_images, if any] 🔧 模型: [model] | 尺寸: [WxH] 📝 使用的 Prompt: [final prompt used]
マルチ画像ユースケース: スタイル転送、キャラクター一貫性、マルチ画像ブレンディング、オブジェクト置換。
イテレーションガイド
- 一度に 1 つの変数を変更
- 最後の有効なプロンプトをベースとして保持
- フォローアップを完全な書き換えではなく、デルタとして扱う
- ユーザーが明示的に変更しない限り、ロックされた制約を保持
- ユーザーが出力を受け入
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- bananahub-ai
- ライセンス
- MIT
- 最終更新
- 2026/5/8
Source: https://github.com/bananahub-ai/bananahub-skill / ライセンス: MIT