{
  "schemaVersion": "1.0",
  "item": {
    "slug": "nano-banana-pro-openrouter",
    "name": "Nano Banana Pro OpenRouter",
    "source": "tencent",
    "type": "skill",
    "category": "内容创作",
    "sourceUrl": "https://clawhub.ai/DuffyCoder/nano-banana-pro-openrouter",
    "canonicalUrl": "https://clawhub.ai/DuffyCoder/nano-banana-pro-openrouter",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/nano-banana-pro-openrouter",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=nano-banana-pro-openrouter",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/generate_image.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/nano-banana-pro-openrouter"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/nano-banana-pro-openrouter",
    "agentPageUrl": "https://openagent3.xyz/skills/nano-banana-pro-openrouter/agent",
    "manifestUrl": "https://openagent3.xyz/skills/nano-banana-pro-openrouter/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/nano-banana-pro-openrouter/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Nano Banana Pro Image Generation",
        "body": "Generate new images using OpenRouter's Nano Banana Pro (Gemini 3 Pro Image Preview)."
      },
      {
        "title": "Usage",
        "body": "Run the script using an absolute path (do NOT cd to the skill directory first):\n\nGenerate new image:\n\nsh ~/.openclaw/workspace/skills/nano-banana-pro-openrouter/scripts/generate_image.sh --prompt \"your image description\" [--filename \"output-name.png\" | --filename auto] [--resolution 1K|2K|4K] [--api-key KEY]\n\nNote: the shell version currently supports generation only (no input image editing).\n\nImportant:\n\nImages are always saved under ~/.openclaw/workspace/outputs/nano-banana-pro-openrouter\nIf --filename contains a path, only the basename is used"
      },
      {
        "title": "Default Workflow (draft -> iterate -> final)",
        "body": "Goal: fast iteration without burning time on 4K until the prompt is correct.\n\nDraft (1K): quick feedback loop\n\nsh ~/.openclaw/workspace/skills/nano-banana-pro-openrouter/scripts/generate_image.sh --prompt \"<draft prompt>\" --filename auto --resolution 1K\n\n\nIterate: adjust prompt in small diffs; keep filename new per run\nFinal (4K): only when prompt is locked\n\nsh ~/.openclaw/workspace/skills/nano-banana-pro-openrouter/scripts/generate_image.sh --prompt \"<final prompt>\" --filename auto --resolution 4K"
      },
      {
        "title": "Resolution Options",
        "body": "The Gemini 3 Pro Image API supports three resolutions (uppercase K required):\n\n1K (default) - ~1024px resolution\n2K - ~2048px resolution\n4K - ~4096px resolution\n\nMap user requests to API parameters:\n\nNo mention of resolution -> 1K\n\"low resolution\", \"1080\", \"1080p\", \"1K\" -> 1K\n\"2K\", \"2048\", \"normal\", \"medium resolution\" -> 2K\n\"high resolution\", \"high-res\", \"hi-res\", \"4K\", \"ultra\" -> 4K"
      },
      {
        "title": "API Key and Base URL",
        "body": "The script checks for the API key in this order:\n\n--api-key argument (use if user provided a key in chat)\nOPENROUTER_API_KEY environment variable\n\nThe API base URL must be set via OPENROUTER_BASE_URL. Use the full chat\ncompletions endpoint (for OpenRouter: https://openrouter.ai/api/v1/chat/completions).\n\nThe script also loads .env files automatically (if present):\n\nCurrent working directory .env\nSkill directory .env\n\nImportant: If a .env file exists, do not ask the user for the key up front.\nJust run the script and only ask if it errors with \"No API key provided.\""
      },
      {
        "title": "OpenClaw Chat Execution Rules",
        "body": "OpenClaw does NOT auto-source the skill .env file\nIf ~/.openclaw/workspace/skills/nano-banana-pro-openrouter/.env exists:\n\nUse the read tool to read .env\nExtract OPENROUTER_API_KEY and OPENROUTER_BASE_URL\nAlways pass the key via --api-key when running the script\n\n\nOnly ask the user if .env is missing or the key cannot be read\nIf the user asks for a timestamped filename, prefer --filename auto (do not handwrite dates)\n\nIf neither is available, the script exits with an error message."
      },
      {
        "title": "Preflight and Common Failures (fast fixes)",
        "body": "Preflight:\n\ncommand -v sh (must exist)\ncommand -v curl (must exist)\ncommand -v base64 (must exist)\n\nCommon failures:\n\nError: No API key provided. -> read .env and retry with --api-key; if still failing, ask the user to set OPENROUTER_API_KEY\nError: No API base URL provided. -> ensure OPENROUTER_BASE_URL is set to a full chat completions endpoint\nError loading input image: -> wrong path or unreadable file; verify --input-image points to a real image\n\"quota/permission/403\" style API errors -> wrong key, no access, or quota exceeded; try a different key/account"
      },
      {
        "title": "Filename Generation",
        "body": "Generate filenames with the pattern: yyyy-mm-dd-hh-mm-ss-name.png\n\nFormat: {timestamp}-{descriptive-name}.png\n\nTimestamp: Current date/time in format yyyy-mm-dd-hh-mm-ss (24-hour format)\nName: Descriptive lowercase text with hyphens\nKeep the descriptive part concise (1-5 words typically)\nUse context from the user's prompt or conversation\nIf unclear, use image\n\nExamples:\n\nPrompt \"A serene Japanese garden\" -> 2025-11-23-14-23-05-japanese-garden.png\nPrompt \"sunset over mountains\" -> 2025-11-23-15-30-12-sunset-mountains.png\nPrompt \"create an image of a robot\" -> 2025-11-23-16-45-33-robot.png\nUnclear context -> 2025-11-23-17-12-48-image.png\n\nTip: To avoid incorrect timestamps, pass --filename auto and let the script\ngenerate the filename using the system clock."
      },
      {
        "title": "Image Editing (Not Supported in Shell Version)",
        "body": "The shell script only supports generating new images. Editing an input image is not available in this version."
      },
      {
        "title": "Prompt Handling",
        "body": "For generation: pass the user's image description as-is to --prompt. Only rework if clearly insufficient."
      },
      {
        "title": "Prompt Templates (high hit-rate)",
        "body": "Use templates when the user is vague or when edits must be precise.\n\nGeneration template:\n\n\"Create an image of: <subject>. Style: <style>. Composition: <camera/shot>. Lighting: <lighting>. Background: <background>. Color palette: <palette>. Avoid: <list>.\""
      },
      {
        "title": "Output",
        "body": "Saves PNG to ~/.openclaw/workspace/outputs/nano-banana-pro-openrouter\nIf --filename includes a path, only the basename is used\nScript outputs the full path to the generated image\nScript also outputs MEDIA_URL=file:///absolute/path for each image"
      },
      {
        "title": "Show the image in the reply",
        "body": "Use the MEDIA_URL value to attach the image in the model response\nIn OpenClaw, prefer sending a message with mediaUrl set to that file:// URL\nAlso include the file path in text for reference"
      },
      {
        "title": "Examples",
        "body": "Generate new image:\n\nsh ~/.openclaw/workspace/skills/nano-banana-pro-openrouter/scripts/generate_image.sh --prompt \"A serene Japanese garden with cherry blossoms\" --filename auto --resolution 4K"
      }
    ],
    "body": "Nano Banana Pro Image Generation\n\nGenerate new images using OpenRouter's Nano Banana Pro (Gemini 3 Pro Image Preview).\n\nUsage\n\nRun the script using an absolute path (do NOT cd to the skill directory first):\n\nGenerate new image:\n\nsh ~/.openclaw/workspace/skills/nano-banana-pro-openrouter/scripts/generate_image.sh --prompt \"your image description\" [--filename \"output-name.png\" | --filename auto] [--resolution 1K|2K|4K] [--api-key KEY]\n\n\nNote: the shell version currently supports generation only (no input image editing).\n\nImportant:\n\nImages are always saved under ~/.openclaw/workspace/outputs/nano-banana-pro-openrouter\nIf --filename contains a path, only the basename is used\nDefault Workflow (draft -> iterate -> final)\n\nGoal: fast iteration without burning time on 4K until the prompt is correct.\n\nDraft (1K): quick feedback loop\nsh ~/.openclaw/workspace/skills/nano-banana-pro-openrouter/scripts/generate_image.sh --prompt \"<draft prompt>\" --filename auto --resolution 1K\nIterate: adjust prompt in small diffs; keep filename new per run\nFinal (4K): only when prompt is locked\nsh ~/.openclaw/workspace/skills/nano-banana-pro-openrouter/scripts/generate_image.sh --prompt \"<final prompt>\" --filename auto --resolution 4K\nResolution Options\n\nThe Gemini 3 Pro Image API supports three resolutions (uppercase K required):\n\n1K (default) - ~1024px resolution\n2K - ~2048px resolution\n4K - ~4096px resolution\n\nMap user requests to API parameters:\n\nNo mention of resolution -> 1K\n\"low resolution\", \"1080\", \"1080p\", \"1K\" -> 1K\n\"2K\", \"2048\", \"normal\", \"medium resolution\" -> 2K\n\"high resolution\", \"high-res\", \"hi-res\", \"4K\", \"ultra\" -> 4K\nAPI Key and Base URL\n\nThe script checks for the API key in this order:\n\n--api-key argument (use if user provided a key in chat)\nOPENROUTER_API_KEY environment variable\n\nThe API base URL must be set via OPENROUTER_BASE_URL. Use the full chat completions endpoint (for OpenRouter: https://openrouter.ai/api/v1/chat/completions).\n\nThe script also loads .env files automatically (if present):\n\nCurrent working directory .env\nSkill directory .env\n\nImportant: If a .env file exists, do not ask the user for the key up front. Just run the script and only ask if it errors with \"No API key provided.\"\n\nOpenClaw Chat Execution Rules\nOpenClaw does NOT auto-source the skill .env file\nIf ~/.openclaw/workspace/skills/nano-banana-pro-openrouter/.env exists:\nUse the read tool to read .env\nExtract OPENROUTER_API_KEY and OPENROUTER_BASE_URL\nAlways pass the key via --api-key when running the script\nOnly ask the user if .env is missing or the key cannot be read\nIf the user asks for a timestamped filename, prefer --filename auto (do not handwrite dates)\n\nIf neither is available, the script exits with an error message.\n\nPreflight and Common Failures (fast fixes)\n\nPreflight:\n\ncommand -v sh (must exist)\ncommand -v curl (must exist)\ncommand -v base64 (must exist)\n\nCommon failures:\n\nError: No API key provided. -> read .env and retry with --api-key; if still failing, ask the user to set OPENROUTER_API_KEY\nError: No API base URL provided. -> ensure OPENROUTER_BASE_URL is set to a full chat completions endpoint\nError loading input image: -> wrong path or unreadable file; verify --input-image points to a real image\n\"quota/permission/403\" style API errors -> wrong key, no access, or quota exceeded; try a different key/account\nFilename Generation\n\nGenerate filenames with the pattern: yyyy-mm-dd-hh-mm-ss-name.png\n\nFormat: {timestamp}-{descriptive-name}.png\n\nTimestamp: Current date/time in format yyyy-mm-dd-hh-mm-ss (24-hour format)\nName: Descriptive lowercase text with hyphens\nKeep the descriptive part concise (1-5 words typically)\nUse context from the user's prompt or conversation\nIf unclear, use image\n\nExamples:\n\nPrompt \"A serene Japanese garden\" -> 2025-11-23-14-23-05-japanese-garden.png\nPrompt \"sunset over mountains\" -> 2025-11-23-15-30-12-sunset-mountains.png\nPrompt \"create an image of a robot\" -> 2025-11-23-16-45-33-robot.png\nUnclear context -> 2025-11-23-17-12-48-image.png\n\nTip: To avoid incorrect timestamps, pass --filename auto and let the script generate the filename using the system clock.\n\nImage Editing (Not Supported in Shell Version)\n\nThe shell script only supports generating new images. Editing an input image is not available in this version.\n\nPrompt Handling\n\nFor generation: pass the user's image description as-is to --prompt. Only rework if clearly insufficient.\n\nPrompt Templates (high hit-rate)\n\nUse templates when the user is vague or when edits must be precise.\n\nGeneration template:\n\n\"Create an image of: <subject>. Style: <style>. Composition: <camera/shot>. Lighting: <lighting>. Background: <background>. Color palette: <palette>. Avoid: <list>.\"\nOutput\nSaves PNG to ~/.openclaw/workspace/outputs/nano-banana-pro-openrouter\nIf --filename includes a path, only the basename is used\nScript outputs the full path to the generated image\nScript also outputs MEDIA_URL=file:///absolute/path for each image\nShow the image in the reply\nUse the MEDIA_URL value to attach the image in the model response\nIn OpenClaw, prefer sending a message with mediaUrl set to that file:// URL\nAlso include the file path in text for reference\nExamples\n\nGenerate new image:\n\nsh ~/.openclaw/workspace/skills/nano-banana-pro-openrouter/scripts/generate_image.sh --prompt \"A serene Japanese garden with cherry blossoms\" --filename auto --resolution 4K"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/DuffyCoder/nano-banana-pro-openrouter",
    "publisherUrl": "https://clawhub.ai/DuffyCoder/nano-banana-pro-openrouter",
    "owner": "DuffyCoder",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/nano-banana-pro-openrouter",
    "downloadUrl": "https://openagent3.xyz/downloads/nano-banana-pro-openrouter",
    "agentUrl": "https://openagent3.xyz/skills/nano-banana-pro-openrouter/agent",
    "manifestUrl": "https://openagent3.xyz/skills/nano-banana-pro-openrouter/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/nano-banana-pro-openrouter/agent.md"
  }
}