# Claude Code에 나노바나나 연결: 스킬·MCP와 현행 모델 ID

> Claude Code에서 나노바나나는 스킬이나 MCP로 Gemini API를 불러 씁니다. 2026년 9월 기준 -preview 없는 GA ID만 동작하고, 무료 등급이 없어 결제가 필요합니다.

- URL: https://blog.laozhang.ai/ko/posts/nano-banana-claude-code
- Published: 2026-09-24
- Updated: 2026-09-24
- Author: LaoZhang AI Team (https://blog.laozhang.ai/ko/about)
- Category: Claude Code
- Tags: Claude Code, 나노바나나, Gemini API, MCP, Skills, gemini-3.1-flash-image

---
Claude는 PNG 같은 래스터 이미지를 직접 그리지 않습니다. Claude Code에서 나노바나나(Nano Banana)로 썸네일이나 목업을 만들려면 Claude가 Gemini API를 호출하는 스크립트를 실행하게 하거나(스킬), 이미지 생성 도구를 가진 MCP 서버를 연결해야 합니다. 그림은 나노바나나가 그리고, Claude는 프롬프트를 정리하고 명령을 실행하고 파일을 원하는 위치에 저장하는 역할을 맡습니다.

2026년 9월 24일 기준으로 Gemini API에서 호출할 수 있는 모델 ID는 `gemini-3.1-flash-image`(나노바나나 2), `gemini-3-pro-image`(나노바나나 프로), `gemini-3.1-flash-lite-image`(나노바나나 2 라이트) 세 가지입니다. 이미지 모델에는 API 무료 등급이 없으므로 Google AI Studio 키에 결제를 연결해야 하고, 나노바나나 2로 만드는 1K 이미지는 장당 약 $0.067입니다.

올해 상반기 영상이나 인스타그램 튜토리얼대로 연결했는데 지금 이미지가 나오지 않는다면 설정 속 모델 ID부터 확인해야 합니다. `gemini-3.1-flash-image-preview`와 `gemini-3-pro-image-preview`는 Gemini API에서 2026년 6월 25일에 서비스가 종료됐고, 구형 `gemini-2.5-flash-image`도 2026년 10월 2일에 종료됩니다([Gemini API 지원 중단 일정](https://ai.google.dev/gemini-api/docs/deprecations)). Vertex AI는 종료 날짜가 다르므로 [Vertex AI 나노바나나 API 정리](https://blog.laozhang.ai/ko/posts/vertex-ai-nano-banana-api)를 따로 보면 됩니다.

## 스킬과 MCP 중 무엇을 고를까

두 방식 모두 결과물은 프로젝트 폴더에 저장되는 이미지 파일이지만, Claude가 나노바나나에 닿는 방식이 다릅니다. 스킬은 `SKILL.md`에 적힌 지시에 따라 Claude가 터미널에서 스크립트를 실행하는 구조이고, MCP는 따로 떠 있는 서버가 `generate_image` 같은 도구를 내놓고 Claude가 그 도구를 호출하는 구조입니다.

![스킬은 Claude가 generate.py를 실행해 지정한 경로에 저장하고, MCP는 nanobanana 서버의 generate_image 도구를 호출해 nanobanana-output 폴더에 저장하는 두 경로 비교](https://blog.laozhang.ai/posts/ko/nano-banana-claude-code/img/skill-vs-mcp-flow.webp)

| 비교 항목 | 스킬 | MCP 서버 |
|---|---|---|
| 동작 방식 | Claude가 Bash로 Python 스크립트를 실행 | Claude가 서버의 도구를 호출 |
| 준비물 | Python, `google-genai` 패키지, 스크립트 1개 | Node.js 20 이상, 서버 빌드, `claude mcp add` 등록 |
| 모델 ID를 정하는 곳 | 스크립트 안의 허용 목록 | 서버 코드의 기본값 또는 환경 변수 |
| 저장 위치 | 호출할 때 지정한 경로 | Google nanobanana 확장은 `./nanobanana-output/` |
| 잘 맞는 작업 | 썸네일·배너·상세페이지 이미지를 정해진 경로에 한 장씩 저장 | 아이콘 세트, 반복 패턴, 다이어그램처럼 전용 도구가 있는 작업 |

새로 시작한다면 스킬 쪽이 관리하기 쉽습니다. 스크립트가 60여 줄이라 모델 ID가 바뀌어도 한 줄만 고치면 되고, API 키가 제3자 서버를 거치지 않습니다. MCP는 Google의 Gemini CLI용 nanobanana 확장이 제공하는 아이콘·패턴·다이어그램 도구가 필요할 때 고르되, 뒤에서 설명하듯 모델 ID를 반드시 직접 지정해야 합니다.

호스팅형 나노바나나 MCP 서버, 스킬 마켓에 올라온 스킬, 플러그인 마켓플레이스로 설치하는 방식도 있습니다. 이런 방식은 설치가 간단한 대신 프롬프트와 참조 이미지, 대개는 API 키까지 운영자의 서버를 거칩니다. 설치 전에 운영 주체가 누구인지, 어떤 모델 ID를 호출하는지, 키를 어디에 보관하는지를 확인할 수 없다면 쓰지 않는 편이 낫습니다. MCP 서버를 고르는 일반적인 기준은 [Claude Code에서 먼저 추가할 MCP](https://blog.laozhang.ai/ko/posts/claude-code-best-mcp-servers)에 따로 정리돼 있습니다.

### Claude 앱마다 되는 곳과 안 되는 곳

같은 Claude라도 실행 환경에 따라 스킬이 로드되는 위치가 다릅니다([Claude Code 스킬 문서](https://code.claude.com/docs/en/skills)).

- **로컬 Claude Code**: 터미널과 데스크톱 앱 Code 탭의 로컬 세션에서는 개인 스킬(`~/.claude/skills/`), 프로젝트 스킬(`.claude/skills/`), 로컬 MCP 서버를 모두 쓸 수 있습니다. 아래 설정은 이 환경을 기준으로 합니다.
- **클라우드 세션과 루틴**: 내 컴퓨터의 `~/.claude/skills/`를 읽지 않습니다. 저장소의 `.claude/skills/`에 커밋한 스킬은 로드되지만, 스크립트가 읽을 `GEMINI_API_KEY`도 그 환경에 따로 마련해야 합니다.
- **Cowork**: 로컬 `~/.claude/skills/`를 읽지 않고, 데스크톱 앱의 Customize에서 claude.ai 계정에 켠 스킬만 세션 시작 때 불러옵니다. 로컬에서 만든 설정이 그대로 따라가지 않습니다.
- **claude.ai 채팅**: 나노바나나를 호출해 이미지 파일을 만드는 경로가 없습니다. SVG나 차트 코드는 직접 쓸 수 있는데, 그 범위는 [Claude는 이미지를 생성할 수 있을까?](https://blog.laozhang.ai/ko/posts/can-claude-generate-images)에서 다룹니다.

## 예전 설정에서 이미지가 안 나올 때: 경로별 점검표

설정마다 기본으로 호출되는 모델 ID가 다르고, 그 ID가 이미 종료됐는지에 따라 고칠 곳이 달라집니다. 아래 표의 날짜는 모두 Gemini API 기준입니다.

![6월 25일 종료된 preview ID와 10월 2일 종료되는 gemini-2.5-flash-image를 각각 바꿔 넣을 GA 모델 ID와 짝지은 표](https://blog.laozhang.ai/posts/ko/nano-banana-claude-code/img/model-id-status.webp)

| 설정 | 실제로 호출되는 모델 | 2026년 9월 24일 상태 | 2026년 10월 2일 이후 | 고치는 법 |
|---|---|---|---|---|
| Google nanobanana 확장(MCP), `NANOBANANA_MODEL` 미설정 | `gemini-3.1-flash-image-preview` (코드 기본값) | 6월 25일 종료된 ID | 동일 | `NANOBANANA_MODEL=gemini-3.1-flash-image` |
| 같은 확장, README 예시대로 `NANOBANANA_MODEL=gemini-3-pro-image-preview` | 지정한 preview ID | 6월 25일 종료된 ID | 동일 | `gemini-3-pro-image`로 교체 |
| 같은 확장, `NANOBANANA_MODEL=gemini-2.5-flash-image` | `gemini-2.5-flash-image` | 호출 가능 | 종료 | `gemini-3.1-flash-lite-image` 또는 `gemini-3.1-flash-image` |
| cc-nano-banana 스킬(Gemini CLI 확장을 호출) | README는 `gemini-2.5-flash-image`가 기본이라고 적었지만 실제 모델은 확장의 설정을 따름 | 위 세 줄 중 해당 행과 같음 | 위와 같음 | 셸에서 `NANOBANANA_MODEL`을 GA ID로 지정 |
| 대화창에 OpenRouter 키를 붙여 넣는 방식 | `google/gemini-3.1-flash-image` | 호출 가능 | 영향 없음 | 모델은 문제없음, 키를 교체하고 환경 변수로 옮김 |
| 직접 만든 스크립트에 preview ID를 적어 둔 경우 | 적어 둔 ID | 6월 25일 종료된 ID | 동일 | GA ID로 교체 |

nanobanana 확장의 기본값은 [저장소 코드](https://github.com/gemini-cli-extensions/nanobanana)의 `DEFAULT_MODEL = 'gemini-3.1-flash-image-preview'`이고, `NANOBANANA_MODEL`에 어떤 문자열을 넣든 검사 없이 그대로 씁니다. 저장소의 마지막 커밋은 2026년 3월 7일이라 5월 28일에 나온 GA ID가 반영되지 않았습니다. 첫 행이 실패한다는 것은 이 기본값과 종료 일정에서 나온 추론이며, 종료된 ID를 호출할 때 돌아오는 정확한 오류 문구는 공개 문서에 나와 있지 않습니다. 오류 메시지를 해석하기보다 설정된 모델 ID를 먼저 보는 편이 빠릅니다.

[cc-nano-banana](https://github.com/kkoppenhaver/cc-nano-banana)는 Claude Code 스킬이지만 그림을 직접 요청하지 않고 Gemini CLI의 nanobanana 확장을 불러 씁니다. 그래서 README에 적힌 기본 모델(`gemini-2.5-flash-image`, 장당 약 $0.04)과 달리 실제로는 확장 쪽 설정이 적용되고, README가 고품질용으로 권한 `gemini-3-pro-image-preview`는 이미 종료된 ID입니다.

내 환경이 어느 행에 해당하는지는 다음 명령으로 확인할 수 있습니다.

```bash
# 셸에 모델이 지정돼 있는지
echo "$NANOBANANA_MODEL"
grep -n "NANOBANANA\|GEMINI" ~/.zshrc ~/.bashrc 2>/dev/null

# Claude Code 설정·스킬·프로젝트 파일에 preview ID가 남아 있는지
grep -rn "image-preview" ~/.claude.json ~/.claude/skills .mcp.json .claude 2>/dev/null

# 등록된 MCP 서버의 명령과 환경 변수
claude mcp get nanobanana
```

nanobanana 확장의 MCP 서버는 키를 찾으면 시작할 때 표준 오류로 `DEBUG - Using image model: <모델 ID>` 한 줄을 출력하도록 작성돼 있습니다. 서버를 터미널에서 단독으로 실행해 이 줄을 보면 어떤 ID가 쓰이는지 바로 알 수 있습니다.

모델 ID는 맞는데 요청이 200으로 끝나고 이미지만 비어 있다면 원인이 다릅니다. 안전 필터나 `finishReason`별 대처는 [나노바나나 API 이미지 안 나옴: 응답별 원인과 조치](https://blog.laozhang.ai/ko/posts/nano-banana-2-200-ok-no-image)에 정리돼 있습니다.

## 방법 1: 현행 모델 ID로 직접 만드는 스킬

스킬 폴더 하나에 `SKILL.md`와 Python 스크립트 하나를 넣는 구성입니다. 개인용이면 `~/.claude/skills/nano-banana/`, 팀과 공유하려면 프로젝트의 `.claude/skills/nano-banana/`에 두고 커밋합니다. 폴더 이름이 곧 `/nano-banana` 명령이 됩니다.

```text
~/.claude/skills/nano-banana/
├── SKILL.md
└── scripts/
    └── generate.py
```

### 키는 대화창이 아니라 환경 변수로

[Google AI Studio](https://aistudio.google.com/apikey)에서 API 키를 만들고 결제 계정을 연결합니다. 결제가 연결되지 않은 키로는 이미지 모델을 호출할 수 없습니다. 유료 등급에서 보낸 프롬프트와 이미지는 Google 요금 페이지 기준으로 제품 개선에 쓰이지 않습니다.

키는 셸 설정 파일에 넣고, 새 터미널에서 Claude Code를 실행합니다.

```bash
# ~/.zshrc 또는 ~/.bashrc 에 추가한 뒤 새 터미널을 엽니다
export GEMINI_API_KEY="AI Studio에서 발급한 키"
```

키를 Claude Code 대화창에 붙여 넣고 Claude에게 `APIs.env` 같은 파일에 저장하게 하면 키가 세션 대화 기록에 남고, 프로젝트 폴더 안 파일에 적히면 git 커밋에 섞여 올라갈 수 있습니다. 이미 붙여 넣었다면 AI Studio에서 그 키를 삭제하고 새로 발급한 뒤 위처럼 환경 변수로 옮기는 편이 안전합니다.

### 설치와 SKILL.md

```bash
mkdir -p ~/.claude/skills/nano-banana/scripts
python3 -m pip install google-genai
```

`SKILL.md`의 `description`은 Claude가 이 스킬을 언제 불러올지 판단하는 기준이므로 실제로 시킬 작업을 구체적으로 적습니다.

````markdown
---
name: nano-banana
description: 나노바나나(Gemini 이미지 모델)로 이미지를 생성하거나 기존 이미지를 편집해 프로젝트 파일로 저장한다. 썸네일, 배너, 상세페이지 이미지, 아이콘, UI 목업을 만들거나 고쳐 달라는 요청에 사용한다.
---

## 실행

python3 ${CLAUDE_SKILL_DIR}/scripts/generate.py "<프롬프트>" --out <저장 경로> [--model <ID>] [--aspect 16:9] [--size 2K] [--input <참조 이미지>]

## 규칙

- 모델 기본값은 gemini-3.1-flash-image(나노바나나 2).
  글자가 많은 인포그래픽이나 브랜드 일관성이 중요한 작업은 gemini-3-pro-image,
  저렴한 초안 대량 생성은 gemini-3.1-flash-lite-image(1K 전용, 여러 장 참조 편집에는 부적합).
- --size는 1K, 2K, 4K 중 선택. 라이트는 1K만, 프로는 1K/2K/4K.
- 저장 경로를 사용자가 말하지 않으면 ./images/ 아래에 내용을 설명하는 파일명으로 저장.
- 편집 요청이면 원본을 --input으로 넘기고, 결과는 새 파일로 저장해 원본을 덮어쓰지 않는다.
- 한 번에 여러 장을 요청받으면 장수와 예상 비용을 먼저 알리고 확인을 받는다.
- API 키를 묻거나 출력하지 않는다. GEMINI_API_KEY가 없다는 오류가 나면 셸에 설정하는 방법만 안내한다.
- 종료 코드 1(이미지 없음)이면 출력된 blockReason과 finishReason을 전하고 프롬프트 수정안을 제시한다.
````

`${CLAUDE_SKILL_DIR}`은 Claude Code가 스킬 폴더 경로로 바꿔 주는 변수라 개인·프로젝트 어느 위치에 두어도 같은 문장이 동작합니다. frontmatter에 `allowed-tools: Bash(python3 ${CLAUDE_SKILL_DIR}/scripts/generate.py *)`를 추가하면 실행할 때마다 권한 확인을 묻지 않지만, 호출 한 번이 곧 비용이므로 처음에는 확인 창을 남겨 두는 편이 안전합니다.

### scripts/generate.py

```python
#!/usr/bin/env python3
"""나노바나나로 이미지 1장을 생성하거나 편집해 저장한다 (Gemini API).

사용법:
  python3 generate.py "프롬프트" --out images/hero.png [--model gemini-3.1-flash-image]
                      [--aspect 16:9] [--size 2K] [--input ref.png ...]
키는 GEMINI_API_KEY 환경 변수에서만 읽는다 (명령줄 인자로 받지 않음).
"""
import argparse
import os
import pathlib
import sys

from google import genai
from google.genai import types

MODELS = {
    "gemini-3.1-flash-lite-image",  # 나노바나나 2 라이트, 1K 전용
    "gemini-3.1-flash-image",       # 나노바나나 2, 512/1K/2K/4K
    "gemini-3-pro-image",           # 나노바나나 프로, 1K/2K/4K
}

def main() -> int:
    p = argparse.ArgumentParser()
    p.add_argument("prompt")
    p.add_argument("--out", required=True)
    p.add_argument("--model", default="gemini-3.1-flash-image")
    p.add_argument("--aspect", default="1:1")
    p.add_argument("--size", default="1K")
    p.add_argument("--input", action="append", default=[])
    a = p.parse_args()

    if a.model not in MODELS:
        print(f"Unknown or retired model id: {a.model}. Use one of {sorted(MODELS)}", file=sys.stderr)
        return 2
    if not os.environ.get("GEMINI_API_KEY"):
        print("GEMINI_API_KEY is not set", file=sys.stderr)
        return 2

    contents = [a.prompt]
    for path in a.input:
        data = pathlib.Path(path).read_bytes()
        mime = "image/png" if path.lower().endswith(".png") else "image/jpeg"
        contents.append(types.Part.from_bytes(data=data, mime_type=mime))

    # 선택: Gemini 호환 게이트웨이를 쓸 때만 GEMINI_BASE_URL 지정
    base_url = os.environ.get("GEMINI_BASE_URL")
    client = genai.Client(http_options=types.HttpOptions(base_url=base_url)) if base_url else genai.Client()
    resp = client.models.generate_content(
        model=a.model,
        contents=contents,
        config=types.GenerateContentConfig(
            response_modalities=["IMAGE"],
            image_config=types.ImageConfig(aspect_ratio=a.aspect, image_size=a.size),
        ),
    )

    for cand in resp.candidates or []:
        for part in (cand.content.parts if cand.content else []) or []:
            if part.inline_data and part.inline_data.data:
                out = pathlib.Path(a.out)
                out.parent.mkdir(parents=True, exist_ok=True)
                out.write_bytes(part.inline_data.data)
                print(f"saved {out} ({len(part.inline_data.data)} bytes)")
                return 0

    fb = getattr(resp, "prompt_feedback", None)
    reason = resp.candidates[0].finish_reason if resp.candidates else None
    print(f"No image returned. blockReason={getattr(fb, 'block_reason', None)} finishReason={reason}", file=sys.stderr)
    return 1

if __name__ == "__main__":
    sys.exit(main())
```

이 스크립트가 예전 설정과 다른 점은 세 가지입니다. 허용 목록에 GA ID 세 개만 있어서 preview ID를 넣으면 요청을 보내기 전에 종료 코드 2와 함께 쓸 수 있는 ID 목록을 보여 줍니다. 키는 환경 변수에서만 읽고, `response_modalities=["IMAGE"]`로 이미지만 받아 지정한 경로에 저장합니다.

이 코드가 검증된 범위는 google-genai 2.25.0, Python 3.12에서 실제 키 없이 돌려 본 인자 검사와 요청 도달까지입니다. 키가 없으면 종료 코드 2, 종료된 ID를 넣으면 종료 코드 2로 멈추고, 가짜 키로 실행하면 요청이 `generativelanguage.googleapis.com`에 도달해 `API_KEY_INVALID`가 돌아옵니다. 실제 이미지 생성과 소요 시간, 화질은 이 검증 범위 밖이므로 처음에는 1K 한 장으로 파일이 저장되는지부터 확인하는 편이 좋습니다.

### 쓰는 법

Claude Code에서 평소처럼 요청하면 `description`과 맞는 요청일 때 Claude가 스킬을 불러옵니다. `/nano-banana`로 직접 부를 수도 있습니다.

- "블로그 썸네일을 16:9, 2K로 만들어서 `public/images/hero.png`에 저장해 줘. 밝은 책상 위 노트북과 커피잔, 글자는 넣지 마."
- "`images/product.jpg`를 참조해서 배경만 흰색 스튜디오로 바꾼 상세페이지용 이미지를 `images/product-white.png`로 만들어 줘."

두 번째 요청이라면 Claude는 대략 다음 명령을 실행합니다.

```bash
python3 ~/.claude/skills/nano-banana/scripts/generate.py \
  "Keep the product exactly as in the reference. Replace only the background with a clean white studio backdrop and soft shadow." \
  --input images/product.jpg --out images/product-white.png --aspect 4:5 --size 2K
```

기본은 나노바나나 2로 두고, 작업 성격에 따라 모델을 바꾸면 됩니다. 나노바나나 2와 프로는 참조 이미지를 최대 14장까지 섞을 수 있고, 라이트는 1K만 지원하며 여러 장 참조나 대화형 연속 편집에 맞춰져 있지 않습니다. 모델별 결과 차이는 [나노바나나 2 라이트·2·프로 작업별 선택법](https://blog.laozhang.ai/ko/posts/nano-banana-pro-vs-nano-banana-2)을, 프롬프트 구성은 [나노바나나 프롬프트 작성법](https://blog.laozhang.ai/ko/posts/how-to-prompt-nano-banana)을 참고하면 됩니다. 스킬 자체의 구조가 처음이라면 [Claude Code에서 먼저 써야 할 Skills](https://blog.laozhang.ai/ko/posts/claude-code-best-skills)가 출발점으로 좋습니다.

## 방법 2: Google nanobanana 확장을 Claude Code MCP로 등록

Google의 [nanobanana 확장](https://github.com/gemini-cli-extensions/nanobanana)은 Gemini CLI용으로 만들어졌지만 내부는 `@modelcontextprotocol/sdk`로 작성된 stdio MCP 서버입니다. 확장 설정 파일(`gemini-extension.json`)은 `node <확장 경로>/mcp-server/dist/index.js`로 서버를 띄우므로, Claude Code에도 같은 명령으로 등록할 수 있습니다. 저장소 문서는 Gemini CLI 기준으로만 쓰여 있어 Claude Code 등록 절차는 아래처럼 직접 구성해야 합니다. 저장소에는 빌드 결과물인 `dist/`가 들어 있지 않으므로 복제한 뒤 한 번 빌드해야 합니다. 저장소 최상위에서 `npm install`을 실행하면 설치 후 스크립트가 서버 의존성 설치와 빌드까지 이어서 처리합니다.

```bash
# Node.js 20 이상 권장 (package.json은 18 이상, README는 20 이상으로 표기)
git clone https://github.com/gemini-cli-extensions/nanobanana ~/tools/nanobanana
cd ~/tools/nanobanana
npm install   # 의존성 설치 + mcp-server 빌드 → mcp-server/dist/index.js 생성

# 모델 ID를 반드시 지정해서 등록 (--env 뒤에 --transport를 두어야 이름이 env로 읽히지 않음)
claude mcp add --env NANOBANANA_MODEL=gemini-3.1-flash-image --transport stdio nanobanana \
  -- node ~/tools/nanobanana/mcp-server/dist/index.js

claude mcp get nanobanana
```

기본 등록 범위는 현재 프로젝트에만 적용되는 local입니다. 모든 프로젝트에서 쓰려면 `--scope user`를 붙입니다. Claude Code 안에서는 `/mcp`로 연결 상태를 볼 수 있습니다.

키는 서버가 `NANOBANANA_API_KEY`, `NANOBANANA_GEMINI_API_KEY`, `NANOBANANA_GOOGLE_API_KEY`, `GEMINI_API_KEY`, `GOOGLE_API_KEY` 순서로 찾습니다. 앞에서처럼 셸에 `GEMINI_API_KEY`를 넣고 그 셸에서 Claude Code를 실행했다면 등록 명령에 키를 적을 필요가 없습니다. `--env`로 키를 직접 넣으면 값이 `~/.claude.json` 설정 파일에 그대로 기록됩니다. 팀이 함께 쓰는 `.mcp.json`에 등록할 때는 키 자리에 `${GEMINI_API_KEY}`처럼 환경 변수 참조를 적으면 Claude Code가 실행 시점에 값을 채워 넣습니다.

등록이 끝나면 서버가 `generate_image`, `edit_image`, `restore_image`, `generate_icon`, `generate_pattern`, `generate_story`, `generate_diagram` 도구를 내놓고, "앱 아이콘을 64·128·256 크기로 만들어 줘"처럼 자연어로 요청하면 Claude가 알맞은 도구를 고릅니다. 결과는 서버 프로세스의 작업 디렉터리 아래 `nanobanana-output/`에 저장됩니다. Claude Code가 프로젝트에서 서버를 띄우면 보통 프로젝트 폴더 안에 생기지만, 파일이 보이지 않으면 서버가 실행된 위치를 확인하고 원하는 경로로 옮기는 것까지 Claude에게 함께 시키면 됩니다. 편집할 원본 이미지는 같은 작업 디렉터리와 `./images/`, `./input/`, `./nanobanana-output/`에서 찾습니다.

이미 cc-nano-banana처럼 Gemini CLI를 거치는 스킬을 쓰고 있다면 다시 설치할 필요는 없습니다. 셸 설정 파일에 `export NANOBANANA_MODEL=gemini-3.1-flash-image`를 추가하고 터미널과 Claude Code를 다시 시작하면 됩니다. 이 확장은 모델 ID를 검사하지 않으므로 다음에 Google이 ID를 바꿀 때도 이 값을 직접 갱신해야 합니다.

## 비용: 한 장에 얼마이고 무료로 되나

Gemini API의 이미지 모델 세 종 모두 무료 등급이 "Not available"입니다. 결제를 연결하지 않은 AI Studio 키로는 Claude Code에서도 나노바나나를 쓸 수 없습니다. 2026년 9월 24일 기준 [Gemini API 요금](https://ai.google.dev/gemini-api/docs/pricing)의 출력 이미지 1장당 가격은 다음과 같습니다.

| 모델 (모델 ID) | 512 | 1K | 2K | 4K |
|---|---|---|---|---|
| 나노바나나 2 라이트 (`gemini-3.1-flash-lite-image`) | 없음 | $0.0336 | 없음 | 없음 |
| 나노바나나 2 (`gemini-3.1-flash-image`) | $0.045 | $0.067 | $0.101 | $0.151 |
| 나노바나나 프로 (`gemini-3-pro-image`) | 없음 | $0.134 | $0.134 | $0.24 |

참조 이미지를 넣으면 입력 이미지 1장당 약 $0.0011씩 더해지고, 텍스트 토큰 비용은 이보다 작습니다. 계산은 "만든 장수 × 장당 가격"으로 충분합니다. 예를 들어 상세페이지 시안 12장을 나노바나나 2, 2K로 만들면 12 × $0.101 = 약 $1.21이고, 같은 12장을 프로 2K로 만들면 12 × $0.134 = 약 $1.61입니다. 마음에 들지 않아 다시 뽑은 장수도 모두 장수에 들어갑니다. Batch API는 가격이 절반이지만 결과를 나중에 받는 방식이라 Claude Code에서 한 장씩 주고받는 작업에는 맞지 않습니다. Claude Code 사용료(Claude 요금제 또는 Anthropic API 비용)는 이와 별도입니다. 모델별 무료 경계와 결제 경로는 [나노바나나 API 가격 정리](https://blog.laozhang.ai/ko/posts/nano-banana-api-pricing-free-vs-pro)에 더 자세히 있습니다.

Google 결제 계정을 열기 어렵다면 서드파티 게이트웨이도 선택지입니다. [laozhang.ai](https://docs.laozhang.ai/api-capabilities/nano-banana-image)는 같은 GA 모델 ID를 해상도와 관계없는 호출당 고정 요금으로 제공하며, 2026년 9월 24일 기준 나노바나나 2가 $0.055, 프로가 $0.09, 라이트가 $0.025입니다. Gemini 형식의 `generateContent` 엔드포인트를 받기 때문에 위 스크립트에서는 `GEMINI_BASE_URL=https://api.laozhang.ai`와 해당 서비스의 키를 `GEMINI_API_KEY`에 넣는 것만 바꾸면 됩니다. Google 표준 요금과 비교하면 나노바나나 2의 512 해상도를 제외한 모든 경우에 더 낮습니다. 다만 Google이 아니므로 Google의 SLA와 데이터 약관은 적용되지 않고, 프롬프트와 이미지가 이 서비스를 거칩니다.

## 자주 묻는 질문

### Claude 데스크톱 앱이나 claude.ai 채팅에서도 나노바나나를 쓸 수 있나요?

데스크톱 앱 Code 탭의 로컬 세션이라면 위에서 설명한 스킬과 MCP 설정이 그대로 적용됩니다. Cowork는 내 컴퓨터의 `~/.claude/skills/`를 읽지 않고 claude.ai 계정에서 켠 스킬만 불러오므로, 로컬에서 만든 스킬이 자동으로 따라가지 않습니다. claude.ai 채팅에는 나노바나나를 호출해 이미지 파일을 만드는 경로가 없습니다.

### 무료 Gemini API 키로도 되나요?

되지 않습니다. 2026년 9월 24일 기준 나노바나나 2 라이트, 나노바나나 2, 나노바나나 프로 모두 Gemini API 무료 등급이 제공되지 않아 AI Studio 키에 결제를 연결해야 합니다. 가장 싼 선택은 1K 한 장에 $0.0336인 나노바나나 2 라이트입니다.

### 플러그인 마켓플레이스에서 나노바나나 플러그인을 설치해도 되나요?

설치 자체는 가능하지만, 설치하기 전에 두 가지를 확인해야 합니다. 첫째, 플러그인이 호출하는 모델 ID가 `-preview` 없는 GA ID인지 봐야 합니다. 6월 25일 이전에 만들어진 플러그인이라면 종료된 preview ID를 가리키고 있을 수 있습니다. 둘째, 키와 이미지가 누구의 서버를 거치는지 알아야 합니다. 둘 중 하나라도 확인할 수 없다면 직접 만든 스킬이 더 안전합니다.

### 생성한 이미지에 워터마크가 들어가나요?

Gemini API로 만든 나노바나나 이미지에는 모두 SynthID 워터마크가 들어갑니다. 스킬로 만들든 MCP로 만들든 같습니다.
