{
  "schemaVersion": "1.0",
  "item": {
    "slug": "gemini-watermark",
    "name": "Gemini Watermark",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/h1bomb/gemini-watermark",
    "canonicalUrl": "https://clawhub.ai/h1bomb/gemini-watermark",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/gemini-watermark",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=gemini-watermark",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/algorithm.md",
      "scripts/remove_watermark.py"
    ],
    "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-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.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/gemini-watermark"
    },
    "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/gemini-watermark",
    "agentPageUrl": "https://openagent3.xyz/skills/gemini-watermark/agent",
    "manifestUrl": "https://openagent3.xyz/skills/gemini-watermark/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/gemini-watermark/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": "Gemini Watermark Remover",
        "body": "Remove the visible Gemini AI watermark (star/sparkle logo) from generated images using mathematically accurate reverse alpha blending.\n\nFully offline — pure Python, no external binary downloads, no network access."
      },
      {
        "title": "When to Use",
        "body": "Remove the Gemini watermark from AI-generated images\nBatch process a directory of Gemini-generated images\nClean images before publishing or sharing\nAutomate watermark removal in pipelines"
      },
      {
        "title": "Install Dependencies (one-time)",
        "body": "pip install Pillow numpy\n\n# Recommended: use uv for faster, isolated installs\nuv pip install Pillow numpy\n\nRequires: Python ≥ 3.9. No Rust toolchain, no compiled binaries, no downloads."
      },
      {
        "title": "Basic Usage",
        "body": "# Single image (auto-detect watermark, save as photo_cleaned.jpg)\npython3 scripts/remove_watermark.py photo.jpg\n\n# Specify output path\npython3 scripts/remove_watermark.py photo.jpg -o clean_photo.jpg\n\n# Batch process directory\npython3 scripts/remove_watermark.py ./input_dir -o ./output_dir\n\n# Force removal without detection\npython3 scripts/remove_watermark.py photo.jpg -o clean.jpg --force"
      },
      {
        "title": "How It Works",
        "body": "Gemini adds a semi-transparent white star/sparkle logo to generated images using alpha blending:\n\nwatermarked = alpha * 255 + (1 - alpha) * original\n\nThis tool reverses the equation to recover the original pixels:\n\noriginal = (watermarked - alpha * 255) / (1 - alpha)\n\nThe alpha map (watermark transparency pattern) is generated mathematically as a\n4-pointed star (central Gaussian core + 4 elongated cardinal rays) at two sizes:\n\n48×48 with 32 px margin — images where either dimension ≤ 1024 px\n96×96 with 64 px margin — images where both dimensions > 1024 px\n\nFor improved accuracy you can supply your own alpha map derived from a background\ncapture of the Gemini watermark on a white background (--alpha-map)."
      },
      {
        "title": "Detection",
        "body": "Before removal, a three-stage algorithm checks whether a watermark is present:\n\nSpatial NCC (50% weight) — normalised cross-correlation with the alpha map\nGradient NCC (30% weight) — edge signature matching via Sobel operators\nVariance Analysis (20% weight) — texture dampening detection\n\nImages without detected watermarks are automatically skipped."
      },
      {
        "title": "CLI Parameters",
        "body": "ParameterShortDefaultDescriptioninput(required)Input image file or directory--output-o{name}_cleaned.{ext}Output file or directory--force-ffalseSkip detection, process unconditionally--threshold-t0.35Detection confidence threshold (0.0–1.0)--force-smallfalseForce 48×48 watermark size--force-largefalseForce 96×96 watermark size--alpha-map(built-in)Custom grayscale alpha map image--verbose-vfalseEnable detailed output--quiet-qfalseSuppress all non-error output"
      },
      {
        "title": "Supported Formats",
        "body": "FormatReadWriteJPEG (.jpg, .jpeg)YesYes (quality 100)PNG (.png)YesYesWebP (.webp)YesYesBMP (.bmp)YesYes"
      },
      {
        "title": "Usage Examples",
        "body": "# Verbose output (shows detection confidence, watermark coordinates)\npython3 scripts/remove_watermark.py photo.png -o clean.png -v\n\n# Lower detection threshold (more sensitive)\npython3 scripts/remove_watermark.py photo.jpg -t 0.15\n\n# Force large watermark size regardless of image dimensions\npython3 scripts/remove_watermark.py photo.jpg --force-large -o clean.jpg\n\n# Batch process, quiet mode\npython3 scripts/remove_watermark.py ./gemini_images/ -o ./cleaned/ -q\n\n# Supply a custom alpha map for higher accuracy\npython3 scripts/remove_watermark.py photo.jpg --alpha-map my_alpha.png"
      },
      {
        "title": "Deriving a Custom Alpha Map",
        "body": "For pixel-perfect removal, capture the Gemini watermark on a pure white\nbackground and compute:\n\nalpha(x, y) = max(R, G, B) / 255\n\nSave the result as a grayscale PNG and pass it via --alpha-map."
      },
      {
        "title": "Output",
        "body": "Single file — saves to -o path, or {name}_cleaned.{ext} by default\nDirectory — saves all processed images to the output directory\nSkipped images — images without detected watermarks are not modified (unless --force)\nExit code — 0 on success, 1 if any image fails"
      },
      {
        "title": "\"No watermark detected\" on a watermarked image",
        "body": "Try lowering the threshold: -t 0.1\nOr bypass detection entirely: --force\nConsider supplying a custom alpha map for your watermark variant"
      },
      {
        "title": "Image looks distorted after removal",
        "body": "The image may not have a Gemini watermark. Use detection (avoid --force)\nTry --force-small or --force-large to match the correct size\nSupply a custom alpha map for better precision"
      },
      {
        "title": "\"Image too small\" warning",
        "body": "The image dimensions are smaller than the watermark region. This typically\nmeans the image does not have a Gemini watermark."
      },
      {
        "title": "ModuleNotFoundError: Pillow or numpy",
        "body": "pip install Pillow numpy\n# or\nuv pip install Pillow numpy"
      },
      {
        "title": "Limitations",
        "body": "Visible watermark only — this tool removes the visible star/sparkle logo watermark\nCannot remove SynthID — Google's invisible watermark (SynthID) is embedded at the pixel level during generation and cannot be reversed\nFixed position only — handles watermarks in the standard bottom-right position only\nBuilt-in alpha map is approximate — use --alpha-map with a captured reference for exact results"
      }
    ],
    "body": "Gemini Watermark Remover\n\nRemove the visible Gemini AI watermark (star/sparkle logo) from generated images using mathematically accurate reverse alpha blending.\n\nFully offline — pure Python, no external binary downloads, no network access.\n\nWhen to Use\nRemove the Gemini watermark from AI-generated images\nBatch process a directory of Gemini-generated images\nClean images before publishing or sharing\nAutomate watermark removal in pipelines\nQuick Start\nInstall Dependencies (one-time)\npip install Pillow numpy\n\n# Recommended: use uv for faster, isolated installs\nuv pip install Pillow numpy\n\n\nRequires: Python ≥ 3.9. No Rust toolchain, no compiled binaries, no downloads.\n\nBasic Usage\n# Single image (auto-detect watermark, save as photo_cleaned.jpg)\npython3 scripts/remove_watermark.py photo.jpg\n\n# Specify output path\npython3 scripts/remove_watermark.py photo.jpg -o clean_photo.jpg\n\n# Batch process directory\npython3 scripts/remove_watermark.py ./input_dir -o ./output_dir\n\n# Force removal without detection\npython3 scripts/remove_watermark.py photo.jpg -o clean.jpg --force\n\nHow It Works\n\nGemini adds a semi-transparent white star/sparkle logo to generated images using alpha blending:\n\nwatermarked = alpha * 255 + (1 - alpha) * original\n\n\nThis tool reverses the equation to recover the original pixels:\n\noriginal = (watermarked - alpha * 255) / (1 - alpha)\n\n\nThe alpha map (watermark transparency pattern) is generated mathematically as a 4-pointed star (central Gaussian core + 4 elongated cardinal rays) at two sizes:\n\n48×48 with 32 px margin — images where either dimension ≤ 1024 px\n96×96 with 64 px margin — images where both dimensions > 1024 px\n\nFor improved accuracy you can supply your own alpha map derived from a background capture of the Gemini watermark on a white background (--alpha-map).\n\nDetection\n\nBefore removal, a three-stage algorithm checks whether a watermark is present:\n\nSpatial NCC (50% weight) — normalised cross-correlation with the alpha map\nGradient NCC (30% weight) — edge signature matching via Sobel operators\nVariance Analysis (20% weight) — texture dampening detection\n\nImages without detected watermarks are automatically skipped.\n\nCLI Parameters\nParameter\tShort\tDefault\tDescription\ninput\t\t(required)\tInput image file or directory\n--output\t-o\t{name}_cleaned.{ext}\tOutput file or directory\n--force\t-f\tfalse\tSkip detection, process unconditionally\n--threshold\t-t\t0.35\tDetection confidence threshold (0.0–1.0)\n--force-small\t\tfalse\tForce 48×48 watermark size\n--force-large\t\tfalse\tForce 96×96 watermark size\n--alpha-map\t\t(built-in)\tCustom grayscale alpha map image\n--verbose\t-v\tfalse\tEnable detailed output\n--quiet\t-q\tfalse\tSuppress all non-error output\nSupported Formats\nFormat\tRead\tWrite\nJPEG (.jpg, .jpeg)\tYes\tYes (quality 100)\nPNG (.png)\tYes\tYes\nWebP (.webp)\tYes\tYes\nBMP (.bmp)\tYes\tYes\nUsage Examples\n# Verbose output (shows detection confidence, watermark coordinates)\npython3 scripts/remove_watermark.py photo.png -o clean.png -v\n\n# Lower detection threshold (more sensitive)\npython3 scripts/remove_watermark.py photo.jpg -t 0.15\n\n# Force large watermark size regardless of image dimensions\npython3 scripts/remove_watermark.py photo.jpg --force-large -o clean.jpg\n\n# Batch process, quiet mode\npython3 scripts/remove_watermark.py ./gemini_images/ -o ./cleaned/ -q\n\n# Supply a custom alpha map for higher accuracy\npython3 scripts/remove_watermark.py photo.jpg --alpha-map my_alpha.png\n\nDeriving a Custom Alpha Map\n\nFor pixel-perfect removal, capture the Gemini watermark on a pure white background and compute:\n\nalpha(x, y) = max(R, G, B) / 255\n\n\nSave the result as a grayscale PNG and pass it via --alpha-map.\n\nOutput\nSingle file — saves to -o path, or {name}_cleaned.{ext} by default\nDirectory — saves all processed images to the output directory\nSkipped images — images without detected watermarks are not modified (unless --force)\nExit code — 0 on success, 1 if any image fails\nTroubleshooting\n\"No watermark detected\" on a watermarked image\nTry lowering the threshold: -t 0.1\nOr bypass detection entirely: --force\nConsider supplying a custom alpha map for your watermark variant\nImage looks distorted after removal\nThe image may not have a Gemini watermark. Use detection (avoid --force)\nTry --force-small or --force-large to match the correct size\nSupply a custom alpha map for better precision\n\"Image too small\" warning\n\nThe image dimensions are smaller than the watermark region. This typically means the image does not have a Gemini watermark.\n\nModuleNotFoundError: Pillow or numpy\npip install Pillow numpy\n# or\nuv pip install Pillow numpy\n\nLimitations\nVisible watermark only — this tool removes the visible star/sparkle logo watermark\nCannot remove SynthID — Google's invisible watermark (SynthID) is embedded at the pixel level during generation and cannot be reversed\nFixed position only — handles watermarks in the standard bottom-right position only\nBuilt-in alpha map is approximate — use --alpha-map with a captured reference for exact results"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/h1bomb/gemini-watermark",
    "publisherUrl": "https://clawhub.ai/h1bomb/gemini-watermark",
    "owner": "h1bomb",
    "version": "2.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/gemini-watermark",
    "downloadUrl": "https://openagent3.xyz/downloads/gemini-watermark",
    "agentUrl": "https://openagent3.xyz/skills/gemini-watermark/agent",
    "manifestUrl": "https://openagent3.xyz/skills/gemini-watermark/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/gemini-watermark/agent.md"
  }
}