MCPInstall

nano-banana

Generate professional presentation slides and high-quality illustrations using Gemini image generation API (Nano Banana 2), with interactive browser-based review and iterative editing. Full workflow: content planning conversation → slidesplan.json → batch image generation → review with feedback → targeted slide editing → PPTX packaging. Use when: user wants to create a presentation, make slides, generate a PPT/PPTX, prepare a talk deck, design visual slide content, or generate high-quality figures/illustrations for papers and documents. Do NOT use for: writing academic papers (use paper-writing) or planning academic conference talk narrative structure (use academic-slides).

Installs
281
Last 24h
—
Trending rank
—
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/evoscientist/evoskills --skill nano-banana
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads nano-banana automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Nano Banana

Generate high-quality presentation slides as images using Gemini's image generation API, review them interactively in a browser, and iteratively edit based on feedback.

When to Use This Skill

  • User asks to create a presentation, slide deck, or PPT
  • User wants to generate visual slides for a talk or lecture
  • User has a document or outline and wants slides based on it
  • User says "make me a PPT", "generate slides", "create a presentation"
  • User wants to edit or refine existing generated slides
  • User needs high-quality figures, diagrams, or illustrations for papers or documents
  • User asks to generate research figures, architecture diagrams, or concept illustrations

Do NOT use for:

  • Writing academic papers → use paper-writing
  • Planning academic conference talk narrative structure → use academic-slides

Before You Start: Prerequisites

Before proceeding with any slide generation, verify these prerequisites. Script and style paths in this document are relative to this skill's directory.

  1. Dependencies: pip install pillow google-genai python-pptx python-dotenv (also listed in requirements.txt at the skill root). Install into the environment the user is working in.

  2. API Key: Check that a Google API key is available. Run:

    echo $GOOGLE_API_KEY
    

    If empty, ask the user to provide one. They can either:

    • Set it via config: EvoSci config set google_api_key <key>
    • Provide it directly (pass via --api-key argument)
    • If the user provides the key in conversation, pass it to scripts with --api-key
  3. Language: Ask the user what language the slide content should be in. This affects the content you write in slides_plan.json, not the style template.


Core Workflow

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

Follow these phases in order. Do NOT skip Phase 1 — the quality of generated slides depends directly on planning depth.


Phase 1: Content Planning Conversation

This is the most critical phase. Rushing to generation without proper planning produces mediocre slides. Engage the user in a structured conversation:

Step 1 — Understand the context:

  • What is the topic of the presentation?
  • Who is the audience? (technical peers, executives, students, general public)
  • How long is the talk? (this determines page count)
  • What is the occasion? (conference, internal talk, lecture, pitch)

Step 2 — Define the storyline:

  • What is the opening hook? (a surprising fact, a question, a trend)
  • What are the 3-5 main sections or arguments?
  • What is the key takeaway the audience should remember?
  • What is the closing message?

Step 3 — Outline per-page content:

  • For each slide, agree on: title + 2-4 key points + visual description
  • Identify which slides are cover, content, or data type
  • Ensure logical flow between pages

Duration-to-page-count guidance:

DurationPagesStructure
5 min5Cover + 3 content + closing
10-15 min8-12Cover + intro + 3-4 sections + summary + closing
20-30 min15-20Cover + intro + 5-6 sections + summary + closing
45-60 min25-30Cover + intro + 7-9 sections (2-3 pages each) + summary + closing

If the user provides a document or outline, read it thoroughly, then propose a slide breakdown for approval before proceeding.


Phase 2: Generate slides_plan.json

Create a slides_plan.json file in the workspace root with this schema:

{
  "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 values: cover, content, data

Critical Content Field Rules

The content field is what gets passed to the image generation model. Follow these rules strictly:

  1. DO write descriptive titles and bullet points
  2. DO describe the visual layout you want (e.g., "left-right comparison", "4 icon cards")
  3. DO NOT prefix lines with "Slogan:", "Visual:", "Points:", or any meta-labels — the model will render these as visible text on the slide
  4. DO NOT put the same sentence in both the title area and the bottom of the content — it causes duplication
  5. DO NOT include footer text, page numbers, or watermark instructions

Bad example (meta-labels leak as visible text):

Title: Why AI Matters
Visual: left-right comparison chart
Points:
- Point one
- Point two
Slogan: AI changes everything

Good example (clean, no meta-labels):

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

Phase 3: Select Style & Generate Slides

Available Styles

StyleFileVisual CharacteristicsBest For
Lineal Colorstyles/lineal-color.mdWhite background, teal accents, flat 2D icons, info cardsTechnical talks, lectures, educational
Gradient Glassstyles/gradient-glass.mdLight pastel background, frosted glass cards, Apple Keynote feelProduct launches, pitches, SaaS
Vector Illustrationstyles/vector-illustration.mdCream background, black outlines, retro colors, toy-model charmEducational, children's content, brand stories

Present the styles to the user and let them choose. If unsure, recommend Lineal Color as the default.

Available Models

ModelSpeedQualityWhen to Use
gemini-3-pro-image-previewModerateBestFinal version, important presentations
gemini-3.1-flash-image-previewFastGoodDrafts, rapid iteration, large decks
gemini-2.5-flash-imageFastestBasicQuick prototypes, bulk generation

For first-time generation, recommend gemini-3.1-flash-image-preview (fast iteration). Switch to gemini-3-pro-image-preview for the final version.

Generate Command

python scripts/generate_ppt.py \
  --plan slides_plan.json \
  --style styles/lineal-color.md \
  --model gemini-3.1-flash-image-preview \
  --output ppt_output

Arguments:

  • --plan (required): Path to slides_plan.json
  • --style (required): Path to style template
  • --model: Image generation model (default: gemini-3-pro-image-preview)
  • --resolution: 2K (default) or 4K
  • --output: Output directory (default: ppt_output/TIMESTAMP)
  • --api-key: Google API key (if not in environment)
  • --workers: Number of parallel workers (default: 1, recommended: 3-5 for large decks)

Output structure:

ppt_output/
├── images/
│   ├── slide-01.png
│   ├── slide-02.png
│   └── ...
├── prompts.json    # All prompts used (for debugging)
└── index.html      # Browser viewer

Exit code. 0 means every slide was generated. 2 means a partial deck was written: the last line on stderr lists the missing slide numbers (Failed slides: 3, 7), and each failure is printed as [n/total] FAIL: <reason>. Re-running the command regenerates the whole deck, so when the failures share one reason (quota, key, model name) fix that first. 1 means no slide was generated (or the API key / library is missing); there is nothing to review yet.


Phase 4: Launch Review Server

Start the interactive review server so the user can review slides and write feedback:

python scripts/serve_viewer.py \
  --dir ppt_output \
  --plan slides_plan.json \
  --port 8080 \
  --pid-file .viewer.pid

Tell the user:

Review server is running at http://localhost:8080. Open it in your browser to review each slide. Write feedback in the text box below any slide that needs changes, then click "Save Feedback". Tell me when you're done.

The server saves feedback directly into slides_plan.json as a feedback field on each slide.

Wait for the user to confirm they have saved their feedback before proceeding.


Phase 5: Apply Feedback Edits

Read slides_plan.json and find all slides with a non-empty feedback field. For each one, run the edit script:

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

Arguments:

  • --input (required): Path to the original slide image
  • --instruction (required): The edit instruction (from feedback field)
  • --output: Output path (default: overwrite input)
  • --model: Image generation model
  • --api-key: Google API key (if not in environment)

After editing all slides with feedback, clear the feedback fields from slides_plan.json and tell the user to refresh the browser to see updated slides.

If the user has more feedback, repeat Phase 4-5. This review-edit cycle continues until the user is satisfied.


Phase 6: Package as PPTX

Once the user approves all slides, ask for the desired filename and package them:

python scripts/package_pptx.py \
  --dir ppt_output/images \
  --output presentation.pptx \
  --kill-server .viewer.pid

Arguments:

  • --dir (required): Directory containing slide-XX.png images
  • --output (required): Output .pptx file path
  • --kill-server: PID file from serve_viewer.py — automatically stops the review server after packaging

Phase 7: Cleanup

  • The review server is automatically stopped by package_pptx.py --kill-server
  • Ask the user if they want to keep ppt_output/ directory or clean it up
  • The slides_plan.json can be kept for future re-generation

Counterintuitive Rules

  1. Never include meta-labels in content — Words like "Slogan:", "Visual:", "Points:" will be rendered as visible text on the slide. Describe what you want without prefixes.

  2. Content describes WHAT, not HOW — The style template handles visual layout. The content field should focus on text and logical structure, not colors or positioning.

  3. More planning = better slides — Spending 10 minutes on Phase 1 conversation saves hours of re-generation. Do not rush to Phase 3.

  4. Edit, don't regenerate — When a slide needs minor changes (text fix, color change, remove footer), use edit_slide.py instead of regenerating from scratch. Editing preserves visual consistency.

  5. Use flash model for drafts — gemini-3.1-flash-image-preview is fast enough for iteration. Only switch to gemini-3-pro-image-preview for the final version after all feedback is addressed.

  6. Never read generated images yourself — Not all models support multimodal input. Do NOT use read_file on generated PNG images to check quality. Always launch the review server and let the user inspect slides visually in the browser. The user's feedback is your only quality signal.

  7. One idea per slide — Do not pack multiple concepts into a single slide. If a slide has more than 4 bullet points, split it into two slides.

  8. Bottom taglines should not repeat the title — If the title says "Why AI Matters", the bottom tagline should add new insight, not restate the title.


Scripts Reference

ScriptPurposeKey Arguments
scripts/generate_ppt.pyBatch generate all slides from plan--plan, --style, --model, --output, --resolution, --api-key, --workers
scripts/edit_slide.pyEdit a single slide based on instruction--input, --instruction, --output, --model, --api-key
scripts/serve_viewer.pyLocal review server with feedback--dir, --plan, --port, --no-open, --pid-file
scripts/package_pptx.pyPackage slide images into .pptx--dir, --output, --kill-server

Style Template Format

Style templates are markdown files in styles/ with a fixed structure that generate_ppt.py parses:

SectionPurposeParsed by Code
## Base PromptVisual specifications shared by all slidesYes — injected into every prompt
## Page TemplatesLayout descriptions per page typeFallback only
## ExamplesActual prompt templates with {Base Prompt} and [Content] placeholdersYes — primary templates
Other sectionsDocumentation onlyNo

To create a new style: copy an existing .md file, modify the ## Base Prompt and ## Examples sections. The code extracts ### Cover, ### Content, and ### Data code blocks from ## Examples.

FAQ

What does the nano-banana skill do?

Generate professional presentation slides and high-quality illustrations using Gemini image generation API (Nano Banana 2), with interactive browser-based review and iterative editing. Full workflow: content planning conversation → slidesplan.json → batch image generation → review with feedback → targeted slide editing → PPTX packaging. Use when: user wants to create a presentation, make slides, generate a PPT/PPTX, prepare a talk deck, design visual slide content, or generate high-quality figures/illustrations for papers and documents. Do NOT use for: writing academic papers (use paper-writing) or planning academic conference talk narrative structure (use academic-slides).

How do I install nano-banana?

Run npx skills add https://github.com/evoscientist/evoskills --skill nano-banana in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/nano-banana/ (personal) or .claude/skills/nano-banana/ (project).

Which AI agents can use nano-banana?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is nano-banana safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains nano-banana?

It is published by evoscientist in evoscientist/evoskills. It has 281 recorded installs.

More from evoscientist/evoskills

View all →

paper-review

evoscientist/evoskills

Guides self-review of YOUR OWN academic paper before submission with adversarial stress-testing. Core method: three passes (adversarial deep read; 5-aspect checklist — contribution sufficiency, writing clarity, results quality, testing completeness, method design; mechanical consistency scans and experimental protocol audit of data flow, assumptions, leakage), counterintuitive protocol (reject-first simulation, delete unsupported claims, score trust, promote limitations, attack novelty), reverse-outlining, and figure/table quality checks. Use when: user wants to self-review or self-check their own paper draft before submission, stress-test their claims, prepare for reviewer criticism, or mentions 'self-review', 'check my draft', 'is my paper ready'. Do NOT use for writing a peer review of someone else's paper, and do NOT use after receiving actual reviews (use paper-rebuttal instead). Also runs as a background expert: dispatch it async with a draft path and it reviews end-to-end while

paper-writing

evoscientist/evoskills

Guides writing academic papers section by section using an 11-step workflow with LaTeX templates and counterintuitive writing tactics. Covers Abstract, Introduction, Method, Experiments, Related Work, Conclusion, and Supplementary. Use when: user asks to write or draft a paper section, needs LaTeX templates, wants to improve academic writing quality, optimize novelty framing, or mentions 'write introduction', 'draft method', 'paper writing'. Do NOT use for pre-submission review (use paper-review), experiment execution (use experiment-pipeline), or paper planning/story design (use paper-planning).

research-ideation

evoscientist/evoskills

End-to-end research ideation pipeline: literature grounding → multi-track idea generation (3 personas: innovator/pragmatist/critic) → iterative refinement → ELO tournament ranking → update evo-memory (IDE) → user selects direction → expand into manuscript-quality proposal. Use when: user wants to find a research direction, brainstorm ideas, evaluate idea novelty, design a novel solution, rank/compare research ideas, or generate a research proposal. Do NOT use for finding/searching/reading papers (use paper-navigator), literature survey reports (use research-survey), or planning a paper (use paper-planning).

academic-slides

evoscientist/evoskills

Use this skill for creating or refining an academic slide deck and the talk built around it: structuring a conference talk, thesis defense, lab meeting, or paper-to-slides deck; deciding the narrative arc and slide breakdown; improving slide design and visual hierarchy; planning rehearsal, timing, Q&A, and backup slides; or generating the .pptx. Reach for it when the user is shaping the presentation itself. Do not use for writing the paper, producing standalone speaker notes/scripts/transcripts, making posters, creating isolated figures/charts outside a slide deck, or building non-academic presentations.

Docs & Writing482 installs

paper-rebuttal

evoscientist/evoskills

Guides writing effective rebuttals after receiving peer review feedback. Covers review diagnosis (score-driven color-coding), response strategy (champion identification, common-theme consolidation), tactical writing (18 rules), and counterintuitive rebuttal principles. Use when: user received reviewer scores/comments, needs to write a rebuttal or author response, wants to respond to specific criticism (e.g. 'limited novelty', 'missing baselines'), mentions 'rebuttal', 'reviewer comments', 'author response', or 'respond to reviewers'. Do NOT use for pre-submission self-review (use paper-review instead).

paper-planning

evoscientist/evoskills

Guides pre-writing planning for academic papers with 4 structured steps: story design (task-challenge-insight-contribution-advantage), experiment planning (comparisons + ablations), figure design (pipeline + teaser), and 4-week timeline management. Includes counterintuitive planning tactics (write a mock rejection letter to identify weaknesses before writing, narrow before broad claims, design ablations first). Use when: user wants to plan a paper before writing, design story/contributions, plan experiments, create figure sketches, set a writing timeline, or write a pre-emptive rejection letter for planning purposes. Do NOT use for actual writing (use paper-writing), running experiments (use experiment-pipeline), self-reviewing a finished draft (use paper-review), or finding research problems (use research-ideation).

Popular docs & writing skills

View category →

grill-with-docs

mattpocock/skills

A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.

Docs & Writing1.2M installs

lark-markdown

open.feishu.cn

飞书 Markdown:查看、创建、上传、编辑和比较飞书中的原生 Markdown 文件。当用户要操作飞书 Markdown 文件,或比较其远端版本及本地草稿时使用。纯本地 Markdown 文件操作不触发本 skill。不负责将 Markdown 导入为飞书在线文档,也不负责文件搜索、权限、评论、移动、删除等云空间管理操作。

Docs & Writing778.7K installs

writing-beats

mattpocock/skills

Writing, exploit; assemble raw material into a journey of beats, grounding each term before a beat leans on it.

Docs & Writing490.7K installs

writing-shape

mattpocock/skills

Writing, exploit: shape raw material into an article, paragraph by paragraph.

Docs & Writing490.2K installs

writing-fragments

mattpocock/skills

Writing, explore: mine raw fragments, no structure yet.

Docs & Writing489.6K installs

writing-for-agents

mattpocock/skills

Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.

Docs & Writing479.3K installs