Skip to content
nano-banana2-gen-image logo

nano-banana2 图片生成工具

nano-banana2-gen-image

使用 nano-banana2 模型生成图片,支持多种比例和高质量输出

NeverSight/skills_feed0installs215starsOther

SKILL.md

Full skill instructions

nano-banana2 图片生成工具

API 端点

生产环境

POST https://gpt-i18n.byteintl.net/​gpt/​openapi/​online/​multimodal/​crawl?ak=gGoT3706okXuOVHBBhA1SBG8erOvgihU_GPT_AK

办公网络环境

POST https://genai-sg-og.tiktok-row.org/​gpt/​openapi/​online/​multimodal/​crawl?ak=gGoT3706okXuOVHBBhA1SBG8erOvgihU_GPT_AK

完整请求示例

import requests
import json
import base64
import uuid
from datetime import datetime

def generate_image_nano_banana(prompt, aspect_ratio="1:1", image_size="1K", network="production"):
    """
    使用 nano-banana2 生成图片
    
    Args:
        prompt: 图片描述提示词
        aspect_ratio: 图片比例,支持 21:9, 16:9, 4:3, 3:2, 1:1, 9:16, 3:4, 2:3, 5:4, 4:5
        image_size: 图片大小,支持 "1K" 或 "2K"
        network: 网络环境,"production" 或 "office"
    
    Returns:
        dict: 包含图片base64数据和元信息
    """
    
    # 选择正确的端点
    if network == "office":
        url = "https://genai-sg-og.tiktok-row.org/​gpt/​openapi/​online/​multimodal/​crawl"
    else:
        url = "https://gpt-i18n.byteintl.net/​gpt/​openapi/​online/​multimodal/​crawl"
    
    # 添加 API key
    url += "?ak=gGoT3706okXuOVHBBhA1SBG8erOvgihU_GPT_AK"
    
    # 生成 logid
    logid = f"nanobanana_{uuid.uuid4().hex}_{int(datetime.now().timestamp())}"
    
    headers = {
        "Content-Type": "application/​json",
        "X-TT-LOGID": logid
    }
    
    data = {
        "stream": False,
        "model": "nano-banana2",
        "max_tokens": 20000,
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "text",
                        "text": prompt
                    }
                ]
            }
        ],
        "response_modalities": ["TEXT", "IMAGE"],
        "image_config": {
            "aspectRatio": aspect_ratio,
            "imageSize": image_size,
            "imageOutputOptions": {
                "mimeType": "image/​png"
            }
        }
    }
    
    response = requests.post(url, headers=headers, json=data)
    
    if response.status_code == 200:
        result = response.json()
        if result.get("code") == 0:
            # 提取图片数据
            messages = result.get("data", {}).get("choices", [])[0].get("message", {})
            multimodal_contents = messages.get("multimodal_contents", [])
            
            images = []
            for content in multimodal_contents:
                if content.get("type") == "inline_data":
                    image_data = content.get("inline_data", {})
                    images.append({
                        "base64": image_data.get("data"),
                        "mime_type": image_data.get("mime_type"),
                        "prompt": prompt,
                        "aspect_ratio": aspect_ratio
                    })
            
            return {
                "status": "success",
                "images": images,
                "logid": logid
            }
    
    return {
        "status": "error",
        "error": f"Request failed: {response.status_code}",
        "response": response.text
    }

def save_base64_image(base64_data, filename):
    """保存 base64 图片到文件"""
    image_data = base64.b64decode(base64_data)
    with open(filename, 'wb') as f:
        f.write(image_data)
    print(f"Image saved: {filename}")

# 使用示例
# result = generate_image_nano_banana("一只可爱的柴犬在公园里玩耍", aspect_ratio="16:9", image_size="2K")
# if result["status"] == "success" and result["images"]:
#     save_base64_image(result["images"][0]["base64"], "shiba_inu.png")

Bash 命令示例

# 生成图片的 curl 命令
curl --location 'https://gpt-i18n.byteintl.net/​gpt/​openapi/​online/​multimodal/​crawl?ak=gGoT3706okXuOVHBBhA1SBG8erOvgihU_GPT_AK' \
--header 'Content-Type: application/​json' \
--header 'X-TT-LOGID: nanobanana_test_'$(date +%s) \
--data '{
    "stream": false,
    "model": "nano-banana2",
    "max_tokens": 20000,
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "生成一张南方小城老旧居民区的照片,写实风格"
                }
            ]
        }
    ],
    "response_modalities": ["TEXT","IMAGE"],
    "image_config": {
        "aspectRatio": "16:9",
        "imageSize": "2K",
        "imageOutputOptions": {
            "mimeType": "image/​png"
        }
    }
}' | jq '.data.choices[0].message.multimodal_contents[] | select(.type=="inline_data") | .inline_data.data' -r | base64 -d > output.png

参数说明

必填参数

参数类型说明
messagesarray用户消息数组,包含文本提示词
modelstring固定值 "nano-banana2"

可选参数

参数类型默认值说明
aspect_ratiostring"1:1"图片比例
image_sizestring"1K"图片尺寸
max_tokensnumber20000最大token数

支持的比例

  • 横向: 21:9, 16:9, 4:3, 3:2
  • 方形: 1:1
  • 纵向: 9:16, 3:4, 2:3
  • 灵活: 5:4, 4:5

图片尺寸

  • 1K: 标准质量(默认)
  • 2K: 高质量

响应处理

成功响应结构

{
    "code": 0,
    "msg": "success",
    "data": {
        "choices": [{
            "finish_reason": "stop",
            "message": {
                "multimodal_contents": [
                    {
                        "type": "text",
                        "text": "好的,为你生成..."
                    },
                    {
                        "type": "inline_data",
                        "inline_data": {
                            "mime_type": "image/​png",
                            "data": "base64_encoded_image_data"
                        }
                    }
                ]
            }
        }]
    }
}

提取图片数据

# 从响应中提取所有图片
def extract_images(response_json):
    images = []
    choices = response_json.get("data", {}).get("choices", [])
    
    for choice in choices:
        contents = choice.get("message", {}).get("multimodal_contents", [])
        for content in contents:
            if content.get("type") == "inline_data":
                images.append(content.get("inline_data"))
    
    return images

使用建议

  1. 提示词优化

    • 使用详细的描述获得更好的结果
    • 指明风格、光线、氛围等细节
    • 可以使用中文或英文提示词
  2. 比例选择

    • 角色肖像:使用 2:3 或 3:4
    • 场景横幅:使用 16:9 或 21:9
    • 社交媒体:使用 1:1 或 9:16
  3. 批量生成

    • 可以通过多次调用实现批量生成
    • 建议每批控制在 5-10 张
  4. 网络环境

    • 办公网络使用 tiktok-row.org 域名
    • 其他环境使用 byteintl.net 域名

错误处理

def handle_error(response):
    if response.status_code == 400:
        return "请求参数错误,请检查参数格式"
    elif response.status_code == 401:
        return "API Key 无效或过期"
    elif response.status_code == 429:
        return "请求频率过高,请稍后重试"
    else:
        return f"未知错误: {response.status_code}"

注意事项

  1. API Key 安全:请勿在生产环境中硬编码 API Key
  2. 图片存储:生成的图片为 base64 格式,需要及时保存
  3. 请求频率:避免过于频繁的请求,建议间隔 1-2 秒
  4. 内容审核:生成内容需符合相关法律法规

More Other skills

Delegate independent tasks to specialized agents working concurrently with isolated context.

295.4K 206.3K
View

Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.

179.7K 100.1K
View

Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors/fonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.

179.7K 89.5K
View

A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).

179.7K 76.1K
View

Fundamental design principles for writing maintainable, testable Python code.

40.2K 21.9K
View

Modern responsive layouts using container queries, fluid typography, CSS Grid, and mobile-first strategies.

40.2K 20K
View

Generate Playwright tests from scenarios using interactive browser exploration and validation.

39.7K 18.2K
View

Modern React state management with Redux Toolkit, Zustand, Jotai, and React Query for every state category.

40.2K 14.7K
View

GDPR-compliant data handling with consent management, data subject rights, and privacy controls.

40.2K 14.3K
View

Python error handling patterns including input validation, exception hierarchies, and partial failure handling. Use when implementing validation logic, designing exception strategies, handling batch processing failures, or building robust APIs.

40.2K 13.5K
View

Detailed multi-file refactor planning with safety checks and rollback guidance.

39.7K 13K
View