nano-banana について
Nano Banana は、Gemini の画像生成 API を使って、計画した内容から画像ベースのスライドを作るプレゼンテーション作成者や研究者向けスキルです。ブラウザーでの確認、反復編集、PPTX へのパッケージ化に対応します。
主な機能
- 01アウトラインからスライド内容を計画
- 02Gemini API によるスライド画像の生成
- 03ビジュアルスタイルと画像モデルの選択
- 04ブラウザーでの確認とフィードバック入力
- 05スライド画像の PPTX 化
活用シーン
- 01文書やアウトラインを基にしたプレゼン作成
- 02講演、報告、提案用のビジュアルスライド生成
- 03研究用の図表、ダイアグラム、構成図の作成
- 04レビュー内容に基づくスライドの修正
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ evoscientist/ evoskills --skill nano-bananaインストール後、Claude Code で/nano-bananaを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
requirements.txtscripts/atlas_image.pyedit_slide.pygenerate_ppt.pypackage_pptx.pyserve_viewer.pystyles/gradient-glass.mdlineal-color.mdvector-illustration.mdtemplates/viewer.html詳細
Nano Banana
Gemini の画像生成 API を使用して高品質なプレゼンテーションスライドを画像として生成し、ブラウザーでインタラクティブにレビューして、フィードバックに基づいて繰り返し編集します。
このスキルを使用するタイミング
- ユーザーがプレゼンテーション、スライドデッキ、または PPT の作成を依頼した場合
- ユーザーが講演や講義用のビジュアルスライドの生成を希望する場合
- ユーザーがドキュメントやアウトラインをもとにスライドを作成したい場合
- ユーザーが「PPT を作って」「スライドを生成して」「プレゼンテーションを作成して」と依頼した場合
- ユーザーが既存の生成済みスライドの編集や調整を希望する場合
- ユーザーが論文やドキュメント向けに高品質な図、ダイアグラム、イラストを必要としている場合
- ユーザーが研究用の図、アーキテクチャ図、概念イラストの生成を依頼した場合
次の用途には使用しないでください:
- 学術論文の執筆 →
paper-writingを使用してください - 学術会議での講演のストーリー構成の計画 →
academic-slidesを使用してください
始める前に:前提条件
スライドの生成に進む前に、次の前提条件を確認してください。このドキュメント内のスクリプトとスタイルのパスは、このスキルのディレクトリを基準にしています。
-
依存関係:
pip install pillow google-genai python-pptx python-dotenv(スキルのルートにあるrequirements.txtにも記載されています)。ユーザーが作業している環境にインストールしてください。Atlas Cloud も同じ依存関係を使用するため、追加の SDK は不要です。 -
プロバイダーと API キー:デフォルトのプロバイダーは Gemini です。API キーが利用可能か確認してください:
echo $GOOGLE_API_KEY空の場合は、ユーザーにキーの提供を依頼してください。キーは次のいずれかの方法で指定できます:
- 設定で指定する:
EvoSci config set google_api_key <key> - 直接提供する(
--api-key引数で渡す) - ユーザーが会話内でキーを提供した場合は、
--api-keyを指定してスクリプトに渡す
代わりに Atlas Cloud を使用するには、
ATLASCLOUD_API_KEYを設定して--provider atlasを渡します。Atlas Cloud はオプトイン方式であり、デフォルトの Gemini ワークフローは変更されません。 - 設定で指定する:
-
言語:スライドの内容をどの言語にするか、ユーザーに確認してください。これは
slides_plan.jsonに記述する内容に影響しますが、スタイルテンプレートには影響しません。
基本的なワークフロー
Phase 1: Content Planning Conversation ← most important phase
Phase 2: Generate slides_plan.json
Phase 3: Select Style & Generate Slides
Phase 4: Launch Review Server
Phase 5: Apply Feedback Edits ← repeat Phase 4-5 until satisfied
Phase 6: Package as PPTX
Phase 7: Cleanup
以下のフェーズを順番に進めてください。フェーズ 1 を省略しないでください。生成されるスライドの品質は、計画の深さに直接左右されます。
フェーズ 1:コンテンツ計画のための対話
これは最も重要なフェーズです。十分な計画を立てずに生成を急ぐと、平凡なスライドになってしまいます。ユーザーと構造化された対話を行ってください。
ステップ 1 — 背景を把握する:
- プレゼンテーションのテーマは何ですか?
- 対象者は誰ですか?(技術分野の同僚、経営幹部、学生、一般の人々)
- 講演時間はどのくらいですか?(ページ数を決める際の参考になります)
- どのような場面で使用しますか?(会議、社内講演、講義、ピッチ)
ステップ 2 — ストーリーラインを定める:
- 冒頭のつかみは何ですか?(意外な事実、問いかけ、トレンド)
- 主なセクションや論点は何ですか?(3~5 個)
- 聴衆に覚えておいてほしい重要なメッセージは何ですか?
- 締めくくりのメッセージは何ですか?
ステップ 3 — ページごとの内容を概説する:
- 各スライドについて、タイトル+重要なポイント 2~4 個+ビジュアルの説明を合意します
- 表紙、コンテンツ、データのどのタイプに当たるか、各スライドを特定します
- ページ間の論理的な流れを確保します
時間に応じたページ数の目安:
| 時間 | ページ数 | 構成 |
|---|---|---|
| 5 分 | 5 | 表紙+コンテンツ 3 ページ+締めくくり |
| 10~15 分 | 8~12 | 表紙+導入+3~4 セクション+まとめ+締めくくり |
| 20~30 分 | 15~20 | 表紙+導入+5~6 セクション+まとめ+締めくくり |
| 45~60 分 | 25~30 | 表紙+導入+7~9 セクション(各 2~3 ページ)+まとめ+締めくくり |
ユーザーがドキュメントやアウトラインを提供した場合は、内容を十分に読み込んだうえで、先にスライドの構成案を提示し、承認を得てから進めてください。
フェーズ 2:slides_plan.json の生成
次のスキーマで、ワークスペースのルートに slides_plan.json ファイルを作成します。
{
"title": "Presentation Title",
"total_slides": 10,
"slides": [
{
"slide_number": 1,
"page_type": "cover",
"content": "Title: My Presentation\nSubtitle: A subtitle here\nLabel: 2026 Edition"
},
{
"slide_number": 2,
"page_type": "content",
"content": "Title: First Topic\nKey points:\n- Point one\n- Point two\n- Point three"
},
{
"slide_number": 3,
"page_type": "data",
"content": "Title: Key Metrics\nMetric 1: 95% accuracy\nMetric 2: 3x faster\nMetric 3: 10k users"
}
]
}
page_type の値: cover、content、data
重要なコンテンツフィールドのルール
content フィールドは、画像生成モデルに渡される内容です。以下のルールを厳守してください。
- 必ず説明的なタイトルと箇条書きを書いてください
- 必ず希望するビジュアルレイアウトを説明してください(例:「左右の比較」、「4つのアイコンカード」)
- 「Slogan:」「Visual:」「Points:」などのメタラベルで行を始めないでください。モデルがこれらをスライド上に表示するテキストとして描画してしまいます
- タイトル部分とコンテンツの下部に同じ文を記載しないでください。重複して表示されます
- フッターのテキスト、ページ番号、透かしの指示を含めないでください
悪い例(メタラベルが表示テキストとして混入します):
Title: Why AI Matters
Visual: left-right comparison chart
Points:
- Point one
- Point two
Slogan: AI changes everything
良い例(メタラベルがなく、すっきりしています):
Title: Why AI Matters
Visual layout: left-right comparison chart showing traditional vs AI approach
Key points:
- Point one with brief explanation
- Point two with brief explanation
Bottom tagline: AI changes everything
フェーズ 3:スタイルを選択してスライドを生成する
利用可能なスタイル
| スタイル | ファイル | ビジュアルの特徴 | 最適な用途 |
|---|---|---|---|
| Lineal Color | styles/lineal-color.md | 白い背景、ティールのアクセント、フラットな2Dアイコン、情報カード | 技術講演、講義、教育 |
| Gradient Glass | styles/gradient-glass.md | 明るいパステル調の背景、すりガラス風のカード、Apple Keynoteのような雰囲気 | 製品発表、ピッチ、SaaS |
| Vector Illustration | styles/vector-illustration.md | クリーム色の背景、黒い輪郭線、レトロな色使い、おもちゃのような魅力 | 教育、子ども向けコンテンツ、ブランドストーリー |
スタイルをユーザーに提示して、選んでもらってください。迷っている場合は、デフォルトとして Lineal Color をおすすめしてください。
利用可能なモデル
| モデル | 速度 | 品質 | 使用する場面 |
|---|---|---|---|
gemini-3-pro-image-preview | 中程度 | 最高 | 最終版、重要なプレゼンテーション |
gemini-3.1-flash-image-preview | 高速 | 良好 | ドラフト、迅速な反復、大規模なスライドデッキ |
gemini-2.5-flash-image | 最速 | 基本 | 手早いプロトタイプ、大量生成 |
google/nano-banana-2-lite/text-to-image | 高速 | 良好 | Atlas Cloudでの1Kスライド生成 |
google/nano-banana-2-lite/edit | 高速 | 良好 | Atlas Cloudでの1Kスライド編集 |
初回の生成では、反復を素早く行える gemini-3.1-flash-image-preview をおすすめしてください。最終版では gemini-3-pro-image-preview に切り替えてください。
生成コマンド
python scripts/generate_ppt.py \
--plan slides_plan.json \
--style styles/lineal-color.md \
--model gemini-3.1-flash-image-preview \
--output ppt_output
Atlas Cloud はオプションのプロバイダーとして利用できます。
python scripts/generate_ppt.py \
--plan slides_plan.json \
--style styles/lineal-color.md \
--provider atlas \
--output ppt_output
引数:
--plan(必須):slides_plan.json へのパス--style(必須):スタイルテンプレートへのパス--provider:gemini(デフォルト)またはatlas--model:画像生成モデル(デフォルトはgemini-3-pro-image-preview。Atlas で指定できるのはgoogle/nano-banana-2-lite/text-to-imageのみです)--resolution:Gemini では2K(デフォルト)または4Kをサポートします。Atlas では1Kを使用します--output:出力ディレクトリ(デフォルト:ppt_output/TIMESTAMP)--api-key:プロバイダーの環境変数に設定されていない場合に指定する、プロバイダーの API キー--workers:並列ワーカー数(デフォルト:1、大規模なスライドデッキでは3~5を推奨)
出力構成:
ppt_output/
├── images/
│ ├── slide-01.png
│ ├── slide-02.png
│ └── ...
├── prompts.json # All prompts used (for debugging)
└── index.html # Browser viewer
終了コード。 0 はすべてのスライドが生成されたことを意味します。2 は一部のスライドのみを含むデッキが出力されたことを意味します。この場合、stderr の最終行に生成されなかったスライド番号が表示され(Failed slides: 3, 7)、各失敗は [n/total] FAIL: <reason> として出力されます。コマンドを再実行するとデッキ全体が再生成されるため、失敗の原因が共通している場合(クォータ、キー、モデル名)は、まずその問題を修正してください。1 はスライドが1枚も生成されなかったこと(または API キー/ライブラリが不足していること)を意味します。まだ確認できるものはありません。
フェーズ 4:レビューサーバーを起動する
ユーザーがスライドを確認してフィードバックを記入できるよう、対話型レビューサーバーを起動します。
python scripts/serve_viewer.py \
--dir ppt_output \
--plan slides_plan.json \
--port 8080 \
--pid-file .viewer.pid
ユーザーに次のように伝えてください。
レビューサーバーは http://localhost:8080 で実行中です。ブラウザーで開いて、各スライドを確認してください。変更が必要なスライドの下にあるテキストボックスにフィードバックを記入し、「Save Feedback」をクリックしてください。完了したら、私に知らせてください。
サーバーはフィードバックを各スライドの feedback フィールドとして、slides_plan.json に直接保存します。
次に進む前に、フィードバックを保存したことをユーザーが確認するまで待ってください。
フェーズ 5:フィードバックに基づく編集
slides_plan.json を読み込み、feedback フィールドが空でないすべてのスライドを探します。それぞれについて、編集スクリプトを実行します。
python scripts/edit_slide.py \
--input ppt_output/images/slide-{NUMBER}.png \
--instruction "{FEEDBACK_TEXT}" \
--output ppt_output/images/slide-{NUMBER}.png \
--model gemini-3.1-flash-image-preview
Atlas Cloud 経由で編集する場合、編集タスクを送信する前に、一時的な生成用途としてローカルのソース画像がスクリプトによってアップロードされます。
python scripts/edit_slide.py \
--input ppt_output/images/slide-01.png \
--instruction "Remove the footer text at the bottom" \
--output ppt_output/images/slide-01.png \
--provider atlas
引数:
--input(必須):元のスライド画像のパス--instruction(必須):編集指示(feedback フィールドの内容)--output:出力先のパス(デフォルト:入力ファイルを上書き)--provider:gemini(デフォルト)またはatlas--model:画像編集モデル(デフォルトはgemini-3-pro-image-preview。Atlas ではgoogle/nano-banana-2-lite/editのみ使用できます)--api-key:プロバイダーの環境変数に設定されていない場合の、プロバイダー API キー
成功すると、edit_slide.py は OK: <path> を出力して 0 で終了します。失敗すると、FAIL: <reason> を出力して 1 で終了します。どちらのスクリプトも、必要な Python パッケージが不足している場合は、リクエストを送信する前に 1 で終了します。
Atlas の生成 POST リクエストは一度だけ送信され、再試行されることはありません。予測 GET リクエストのみ、上限付きのポーリングを行います。
フィードバックがあるすべてのスライドを編集したら、slides_plan.json の feedback フィールドを空にし、更新されたスライドを確認するにはブラウザーを更新するようユーザーに伝えます。
ユーザーから追加のフィードバックがある場合は、フェーズ 4~5 を繰り返します。このレビューと編集のサイクルは、ユーザーが満足するまで続けます。
フェーズ 6:PPTX としてパッケージ化
ユーザーがすべてのスライドを承認したら、希望するファイル名を尋ねてパッケージ化します。
python scripts/package_pptx.py \
--dir ppt_output/images \
--output presentation.pptx \
--kill-server .viewer.pid
引数:
--dir(必須):slide-XX.png 画像を含むディレクトリ--output(必須):出力する .pptx ファイルのパス--kill-server:serve_viewer.py の PID ファイル。パッケージ化後にレビューサーバーを自動停止します
フェーズ 7:クリーンアップ
- レビューサーバーは
package_pptx.py --kill-serverによって自動的に停止します ppt_output/ディレクトリを残すか、削除するかをユーザーに尋ねます- 今後の再生成に備えて、
slides_plan.jsonを残しておくこともできます
直感に反するルール
-
コンテンツにメタラベルを含めない — 「スローガン:」「ビジュアル:」「ポイント:」などの言葉は、スライド上に表示されます。接頭辞を付けずに、希望する内容を説明してください。
-
コンテンツでは「何を」を記述し、「どのように」は記述しない — スタイルテンプレートが視覚的なレイアウトを処理します。コンテンツフィールドでは色や配置ではなく、テキストと論理的な構成に焦点を当ててください。
-
計画を充実させるほど、スライドの質が高まる — フェーズ 1 の会話に 10 分かけることで、何時間もの再生成を省けます。フェーズ 3 を急がないでください。
-
再生成ではなく編集する — テキストの修正、色の変更、フッターの削除など、スライドに小さな変更が必要な場合は、最初から再生成するのではなく
edit_slide.pyを使用してください。編集すれば、視覚的な一貫性を保てます。 -
ドラフトには Flash モデルを使う —
gemini-3.1-flash-image-previewは反復作業に十分な速さです。フィードバックをすべて反映した後、最終版を作成する場合にのみgemini-3-pro-image-previewに切り替えてください。 -
生成した画像を自分で読まない — すべてのモデルがマルチモーダル入力に対応しているわけではありません。品質確認のために生成された PNG 画像に
read_fileを使用しないでください。必ずレビューサーバーを起動し、ユーザーがブラウザーでスライドを目視確認できるようにしてください。品質を判断する手掛かりは、ユーザーのフィードバックのみです。 -
スライド 1 枚につきアイデアは 1 つ — 1 枚のスライドに複数のコンセプトを詰め込まないでください。箇条書きが 4 項目を超える場合は、2 枚のスライドに分けてください。
-
下部のキャッチフレーズでタイトルを繰り返さない — タイトルが「AI が重要な理由」の場合、下部のキャッチフレーズではタイトルを言い換えるのではなく、新たな知見を加えてください。
スクリプトのリファレンス
| スクリプト | 目的 | 主な引数 |
|---|---|---|
scripts/generate_ppt.py | プランからすべてのスライドを一括生成します | --plan、--style、--provider、--model、--output、--resolution、--api-key、--workers |
scripts/edit_slide.py | 指示に基づいて単一のスライドを編集します | --input、--instruction、--output、--provider、--model、--api-key |
scripts/atlas_image.py | オプションの Atlas Cloud 画像タスクを送信し、状態を確認します | 生成スクリプトと編集スクリプトで使用します |
scripts/serve_viewer.py | フィードバック機能付きのローカルレビューサーバーです | --dir、--plan、--port、--no-open、--pid-file |
scripts/package_pptx.py | スライド画像を .pptx にパッケージ化します | --dir、--output、--kill-server |
スタイルテンプレートの形式
スタイルテンプレートは styles/ 内の Markdown ファイルで、generate_ppt.py が解析する固定の構造になっています。
| セクション | 目的 | コードによる解析 |
|---|---|---|
## Base Prompt | すべてのスライドに共通するビジュアル仕様 | はい — すべてのプロンプトに挿入されます |
## Page Templates | ページタイプごとのレイアウトの説明 | フォールバックのみ |
## Examples | {Base Prompt} と [Content] のプレースホルダーを含む実際のプロンプトテンプレート | はい — 主なテンプレートです |
| その他のセクション | ドキュメントのみ | いいえ |
新しいスタイルを作成するには、既存の .md ファイルをコピーし、## Base Prompt と ## Examples のセクションを変更します。コードは ## Examples から ### Cover、### Content、### Data のコードブロックを抽出します。