🍌

Google公式の Nano Banana プロンプトテンプレートが参考になったので試してみた

に公開

これはなに?

Google AI Studio が以下のX投稿で Nano Banana 向けのプロンプトテンプレートを公開していました。

個人的に画像生成のPromptingはあまり経験がなく、写経しながら試してみたところ「こんなに詳しく書かないとまともな絵が出てこないのね」と勉強になったので備忘録としてメモを残します📝

https://x.com/googleaistudio/status/1962957615262224511

以下、ガイドに書かれていた原則、および、日本語で試す際の注意点に少し触れたのち、プロンプトテンプレートの日本語版とそれを実際に僕が試した事例の紹介へと進みます。

プロンプトテンプレートはわかりやすく日本語に翻訳してありますが、多少意訳しているため正確な翻訳ではないことにご留意ください。

前提条件

覚えておくべき原則

ガイドではプロンプトテンプレートの話に入る前に "原則" が紹介されていました。端的に言うと「描いてほしい内容をなるべく詳しく伝えろ」ってことですね。

キーワードを羅列するのではなく、シーンを描写しましょう。このモデルの強みは、深い言語理解力にあります。物語的で描写的な段落は、断片的な単語の羅列よりも、より優れた、より一貫性のあるイメージを生み出すことがほとんどです。

以下に紹介するプロンプトテンプレートは全てこの原則に沿っています。

注意点: APIでNanoBananaするときは英語プロンプトを書くべし

これは公式のガイドに載っていませんが、2025年9月4日現在だとNanoBananaのAPIに日本語のプロンプトを投げると画像が返ってこない事例が頻発しました。日本語のプロンプトで試したい場合はGeminiのサイトからUI経由で試すことをお勧めします。

以下、ガイドの内容を意訳しながら紹介します。

1.写実的なシーン

説明

公式ガイドの内容は以下のとおりです

  • リアルな画像を生成するには、写真家の視点で考えよう。
  • カメラアングル、レンズタイプ、照明条件などディテールまで具体的に記述することで、モデルが写実的な(フォトリアリスティックな)結果を生成する手助けになる。

テンプレート例

※ []の中に適切な内容を入れて使います (以下同じ)

[撮影手法]による[被写体]のフォトリアリスティックな描写。[動作/表情]を見せるシーンで、[環境設定]の中に配置されています。[照明描写]によって[雰囲気]が演出されています。[カメラ/レンズ詳細]で撮影され、[主要な質感/ディテール]が強調されています。[アスペクト比]形式で出力すること。

具体例

※ 公式ガイドでは具体例のPromptに[]は入っていませんが、わかりやすくするために入れました。また[]に言葉を入れると多少文章の繋がりが変になるのですが気にせずに入れました。動いたので問題ないと思います(たぶん)。(以下同じ)

[自然光ポートレート撮影]による[高齢の日本人陶芸家]のフォトリアリスティックな描写。[新しく釉薬をかけた茶碗を両手で点検し穏やかに微笑む]を見せるシーンで、[木の作業台と棚がある素朴な工房]の中に配置されています。
[西向きの窓から差すゴールデンアワーの柔らかな光が肌と陶器の質感を際立たせる]によって[静謐で熟練の技を感じさせる雰囲気]が演出されています。[85mm f/1.8のポートレートレンズ/浅い被写界深度/背景は大きなボケ]で撮影され、[手指の質感と茶碗の縁の微細な反射]が強調されています。[4:5の縦構図]形式で出力すること。

上記のプロンプトを実際に実行した結果は以下のようになりました。アスペクト比は守られてないのですがその他は素晴らしい出来だと思います。
(前述の通りUI経由だと日本語でも問題なく画像生成できます / 以下の例も同様です)

2. イラストやステッカー

説明

公式ガイドの内容は以下のとおりです

  • ステッカーやプロジェクト用アセットを作成する場合、スタイルを明確に指定し、必要に応じて白背景を要求しましょう。

テンプレート例

[スタイル]調の[被写体]ステッカー。[主要な特徴]を備え、[カラーパレット]を採用。[線画スタイル]と[陰影表現]を採用。背景は必ず白色にしてください。

具体例

[かわいいデフォルメ]調の[レッサーパンダ]ステッカー。[小さな竹笠/ふわふわの太い尾/丸い頬]を備え、[緑(竹)・オレンジ(毛並み)・クリーム(ハイライト)中心の鮮やかな配色]を採用。[太めでクリーンなアウトライン]と[シンプルなセルシェーディング]を採用。背景は必ず白色にしてください。

3. 画像内の正確なテキスト表示

説明

公式ガイドの内容は以下のとおりです

  • Geminiはテキストレンダリングに優れている。
  • テキスト内容、フォントスタイル、全体のデザインを明確に指定しよう。

テンプレート例

[画像タイプ]を作成し、[ブランド/コンセプト]向けに「[表示テキスト]」を[フォントスタイル]で配置。[デザインスタイル]を採用し、[カラースキーム]を設定してください。

具体例

[ロゴタイプ]を作成し、[スペシャルティコーヒーショップ]向けに「[The Daily Grind]」を[幾何学的で太字のサンセリフ体(Futura/Helvetica系相当)]で配置。[モダンでミニマルなスタイル]を採用し、[黒と白のみのモノクロ配色]を設定してください。

4. 製品モックアップ&商業用写真撮影

説明

公式ガイドの内容は以下のとおりです

  • ECサイト、広告、ブランディング用途に適した、洗練されたプロフェッショナルな製品写真も制作可能です。

テンプレート例

[製品説明]を[背景素材/説明]の上に配置した、スタジオ照明による高解像度製品写真。照明は[照明セットアップ (例:3点ソフトボックスセットアップ)]を採用し、[照明の目的]を実現しています。カメラアングルは[角度タイプ]に設定し、[特定の特徴]を強調しています。極めてリアルな描写で、[主要ディテール]にシャープな焦点を合わせています。[アスペクト比]。

具体例

[マットブラック仕上げのミニマルデザイン陶磁器製コーヒーカップ]を[磨き上げられたコンクリート面]の上に配置した、スタジオ照明による高解像度製品写真。照明は[3点ソフトボックスセットアップ]を採用し、[柔らかな拡散光でハイライトを作り強い影を排除]を実現しています。
カメラアングルは[45度のわずかな俯瞰]に設定し、[取っ手のラインと曲面]を強調しています。極めてリアルな描写で、[立ち上る湯気とカップ縁の微細な反射]にシャープな焦点を合わせています。[1:1(正方形)]。

5. ミニマル&ネガティブスペースデザイン

説明

公式ガイドの内容は以下のとおりです

  • ウェブサイトやプレゼンテーション、マーケティング資料など、テキストを重ね合わせる背景画像の作成も可能です。

テンプレート例

フレームの[右下/左上/その他]位置に配置された単一の[被写体]を特徴とするミニマル構成。背景は広大な余白のある[色]のキャンバスで、十分なネガティブスペースを確保しています。柔らかく控えめな照明。[アスペクト比]。

具体例

フレームの[右下]位置に配置された単一の[赤いカエデの葉1枚]を特徴とするミニマル構成。背景は広大な余白のある[オフホワイト]のキャンバスで、十分なネガティブスペースを確保しています。柔らかく控えめな照明。[1:1]。

6. 連続アート(コミックパネル/ストーリーボード)

説明

公式ガイドの内容は以下のとおりです

  • 明確なシーン描写に焦点を当てることで、ストーリーボードやコミックストリップ、その他の連続アート形式に最適な、魅力的なビジュアルをパネル単位で制作可能です。

テンプレート例

[アートスタイル]スタイルによる単一のコミックブックパネル。前景には[キャラクター説明とアクション]が配置されています。背景には[設定詳細]が描かれています。パネルには[セリフ/キャプションボックス]が設けられ、テキストは「[テキスト]」と表示されています。照明は[ムード]な雰囲気を作り出しています。[アスペクト比]。

具体例

[ノワール(白黒インク/高コントラスト)]スタイルによる単一のコミックブックパネル。前景には[トレンチコートの探偵が点滅する街灯の下で煙草に火をつけ雨に濡れている]が配置されています。背景には[寂れたバーのネオンサインが濡れた舗道の水たまりに反射している夜の街角]が描かれています。
パネルには[キャプションボックス(上部)]が設けられ、テキストは「[この街は秘密を守るには過酷な場所だった]」と表示されています。照明は[ドラマチックで重苦しい]な雰囲気を作り出しています。[3:2の横長]。

おまけ

最初は asapさんの記事 を参考にしてOpenRouter経由の無料API(google/gemini-2.5-flash-image-preview:free)を使って実行しようと思っていました。

日本語プロンプトだとほぼ画像返ってこなかった(※)ので結局使わなかったのですが、翻訳のステップ挟めば使えると思うので参考までに置いておきます😇 (※Gemini APIを直接叩いても一緒)

import base64
import os
from io import BytesIO

import requests
from dotenv import load_dotenv
from PIL import Image

load_dotenv()
API_KEY = os.getenv("OPENROUTER_API_KEY", "")
ENDPOINT = "https://openrouter.ai/api/v1/chat/completions"
MODEL = "google/gemini-2.5-flash-image-preview:free"

PROMPT = """
A photorealistic close-up portrait of an elderly Japanese ceramicist with deep, sun-etched wrinkles and a warm, knowing smile.
He is carefully inspecting a freshly glazed tea bowl. The setting is his rustic, sun-drenched workshop.
The scene is illuminated by soft, golden hour light streaming through a window, highlighting the fine texture of the clay.
Captured with an 85mm portrait lens, resulting in a soft, blurred background (bokeh).
The overall mood is serene and masterful. Vertical portrait orientation.
"""


def main():
    if not API_KEY:
        raise ValueError("OPENROUTER_API_KEY is not set")

    headers = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
    payload = {
        "model": MODEL,
        "messages": [{"role": "user", "content": PROMPT}],
        "modalities": ["image", "text"],
    }

    resp = requests.post(ENDPOINT, headers=headers, json=payload, timeout=120)
    resp.raise_for_status()
    result = resp.json()
    data_url = result["choices"][0]["message"]["images"][0]["image_url"]["url"]

    b64 = data_url.split(",", 1)[1]
    image = Image.open(BytesIO(base64.b64decode(b64)))
    image.save("test.png")
    image.show()
    print("Saved: test.png")


if __name__ == "__main__":
    main()

Discussion