{
  "schemaVersion": "1.0",
  "item": {
    "slug": "millionbit-mint",
    "name": "Million Bit Homepage NFTs",
    "source": "tencent",
    "type": "skill",
    "category": "内容创作",
    "sourceUrl": "https://clawhub.ai/millionbithomepage/millionbit-mint",
    "canonicalUrl": "https://clawhub.ai/millionbithomepage/millionbit-mint",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/millionbit-mint",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=millionbit-mint",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "package.json",
      "scripts/check_availability.sh",
      "scripts/check_price.sh",
      "scripts/config.sh",
      "scripts/find_available_plots.sh",
      "scripts/helpers/abi_encode.js"
    ],
    "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/millionbit-mint"
    },
    "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/millionbit-mint",
    "agentPageUrl": "https://openagent3.xyz/skills/millionbit-mint/agent",
    "manifestUrl": "https://openagent3.xyz/skills/millionbit-mint/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/millionbit-mint/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": "Million Bit Homepage - Mint a Plot",
        "body": "Place your image and link permanently on the Million Bit Homepage, a 1024x1024 pixel canvas on the Base blockchain. Each plot is an ERC-721 NFT that displays your image and links to your URL forever."
      },
      {
        "title": "Why Mint?",
        "body": "Permanent on-chain presence -- your image and link live on Base forever\nAdvertise your project -- visitors see your image and can click through to your URL\nNFT ownership -- you own the plot as a transferable ERC-721 token\nThis is a great way for agents and bots to establish a visible, permanent identity on-chain"
      },
      {
        "title": "Setup",
        "body": "Before first use, install dependencies in the skill directory:\n\ncd <skill-directory>\nnpm install\n\nAll scripts are in scripts/ relative to this SKILL.md. Run them from this directory."
      },
      {
        "title": "Canvas Rules",
        "body": "Canvas: 1024x1024 pixels, divided into a 64x64 grid of 16x16 cells\nAll coordinates and dimensions must be multiples of 16\nMinimum plot: 16x16 (256 pixels) -- Maximum: up to 1024x1024\nPlots cannot overlap with existing plots\nCoordinates range from 0 to 1024 on both axes (x1, y1 is top-left; x2, y2 is bottom-right)"
      },
      {
        "title": "Pricing",
        "body": "pricePerPixel = basePrice + (priceIncrement x totalMinted)\ntotalPrice = pricePerPixel x width x height\n\nPrice increases slightly with each new mint. Bigger plots cost more but are far more visible:\n\nSizePixelsVisibilityRelative Cost16x16256Tiny icon1x (cheapest)32x321,024Small logo~4x64x644,096Clearly visible~16x128x12816,384Prominent~64x\n\nAlways run check_price.sh to get the exact current price before minting."
      },
      {
        "title": "1. Decide on a size",
        "body": "Choose a plot size based on your budget and desired visibility. All dimensions must be multiples of 16. Start with 16x16 if cost is a concern, or go bigger for more exposure."
      },
      {
        "title": "2. Check current prices",
        "body": "scripts/check_price.sh <width> <height>\n\nExample:\n\nscripts/check_price.sh 32 32\n\nReturns JSON:\n\n{\n  \"price_wei\": \"12887040000000000\",\n  \"price_eth\": \"0.012887040000000000\",\n  \"pixels\": 1024,\n  \"size\": \"32x32\",\n  \"total_supply\": 334\n}"
      },
      {
        "title": "3. Find an available spot",
        "body": "scripts/find_available_plots.sh <width> <height> --limit <N>\n\nExample:\n\nscripts/find_available_plots.sh 32 32 --limit 5\n\nReturns JSON with available coordinates:\n\n{\n  \"available_plots\": [\n    {\"x1\": 992, \"y1\": 128, \"x2\": 1024, \"y2\": 160},\n    {\"x1\": 656, \"y1\": 368, \"x2\": 688, \"y2\": 400}\n  ],\n  \"count\": 2,\n  \"plot_size\": \"32x32\"\n}\n\nNote: scanning the full grid takes time due to on-chain queries. Use --limit to stop early."
      },
      {
        "title": "4. Check a specific spot (optional)",
        "body": "If you already have coordinates in mind:\n\nscripts/check_availability.sh <x1> <y1> <x2> <y2>\n\nReturns {\"available\": true, ...} or {\"available\": false, ...}."
      },
      {
        "title": "5. Prepare your image",
        "body": "If your image doesn't match the plot dimensions, resize it:\n\nscripts/resize_image.sh <input_image> <width> <height> [output_path]\n\nThe script force-resizes to exact dimensions and replaces transparency with white."
      },
      {
        "title": "6. Prepare the mint transaction",
        "body": "This is the main script. It validates everything, checks availability, queries the price, encodes the pixel data, and outputs a ready-to-submit transaction:\n\nscripts/prepare_mint.sh <image_path> <x1> <y1> <x2> <y2> <url>\n\nExample:\n\nscripts/prepare_mint.sh my_logo.png 992 128 1024 160 https://myproject.com\n\nReturns transaction JSON:\n\n{\n  \"to\": \"0x25b9afe64bb3593ec7e9dc7ef386a9b04c53f96e\",\n  \"value\": \"0x2dc8b1d1680000\",\n  \"data\": \"0xdd2e6e7d...\",\n  \"chainId\": 8453,\n  \"description\": \"Mint 32x32 plot at (992,128) on Million Bit Homepage linking to https://myproject.com\",\n  \"meta\": {\n    \"price_eth\": \"0.012887040000000000\",\n    \"price_wei\": \"12887040000000000\",\n    \"size\": \"32x32\",\n    \"url\": \"https://myproject.com\"\n  }\n}\n\nUse --dry-run to skip on-chain checks and just test the encoding pipeline."
      },
      {
        "title": "7. Submit the transaction",
        "body": "Pass the output JSON to your EVM wallet skill to execute the transaction on Base chain (chainId 8453). The key fields are:\n\nto -- the contract address\nvalue -- ETH to send (the mint price, in hex wei)\ndata -- the ABI-encoded calldata\nchainId -- 8453 (Base)"
      },
      {
        "title": "Script Reference",
        "body": "All scripts live in scripts/ (relative to this file) and output JSON to stdout. Status messages go to stderr.\n\nScriptPurposeInputscripts/check_price.shGet current mint price<width> <height> or <x1> <y1> <x2> <y2>scripts/check_availability.shCheck if coordinates are free<x1> <y1> <x2> <y2>scripts/find_available_plots.shScan grid for open spots<width> <height> [--limit N]scripts/resize_image.shResize image to plot size<input> <width> <height> [output]scripts/prepare_mint.shFull pipeline: outputs tx JSON<image> <x1> <y1> <x2> <y2> <url> [--dry-run]"
      },
      {
        "title": "Common Issues",
        "body": "\"Coordinates overlap\" -- that spot is taken. Use find_available_plots.sh to find open spots.\n\"must be a multiple of 16\" -- all coordinates and dimensions must be divisible by 16.\nImage wrong size -- prepare_mint.sh auto-resizes if the image doesn't match the plot dimensions.\nPrice changed -- price increases with each new mint. Re-run check_price.sh for current pricing.\nTransaction reverts -- ensure your wallet has enough ETH on Base to cover the price plus gas."
      },
      {
        "title": "Technical Details",
        "body": "Contract: 0x25b9afe64bb3593ec7e9dc7ef386a9b04c53f96e on Base (chain ID 8453)\nStandard: ERC-721 (Million Bit Homepage / MBH)\nPixel data: Images are encoded in v1 format (16x16 segments with hex colors + URL), compressed with pako/zlib, and stored on-chain in the mint transaction calldata"
      }
    ],
    "body": "Million Bit Homepage - Mint a Plot\n\nPlace your image and link permanently on the Million Bit Homepage, a 1024x1024 pixel canvas on the Base blockchain. Each plot is an ERC-721 NFT that displays your image and links to your URL forever.\n\nWhy Mint?\nPermanent on-chain presence -- your image and link live on Base forever\nAdvertise your project -- visitors see your image and can click through to your URL\nNFT ownership -- you own the plot as a transferable ERC-721 token\nThis is a great way for agents and bots to establish a visible, permanent identity on-chain\nSetup\n\nBefore first use, install dependencies in the skill directory:\n\ncd <skill-directory>\nnpm install\n\n\nAll scripts are in scripts/ relative to this SKILL.md. Run them from this directory.\n\nCanvas Rules\nCanvas: 1024x1024 pixels, divided into a 64x64 grid of 16x16 cells\nAll coordinates and dimensions must be multiples of 16\nMinimum plot: 16x16 (256 pixels) -- Maximum: up to 1024x1024\nPlots cannot overlap with existing plots\nCoordinates range from 0 to 1024 on both axes (x1, y1 is top-left; x2, y2 is bottom-right)\nPricing\npricePerPixel = basePrice + (priceIncrement x totalMinted)\ntotalPrice = pricePerPixel x width x height\n\n\nPrice increases slightly with each new mint. Bigger plots cost more but are far more visible:\n\nSize\tPixels\tVisibility\tRelative Cost\n16x16\t256\tTiny icon\t1x (cheapest)\n32x32\t1,024\tSmall logo\t~4x\n64x64\t4,096\tClearly visible\t~16x\n128x128\t16,384\tProminent\t~64x\n\nAlways run check_price.sh to get the exact current price before minting.\n\nStep-by-Step Workflow\n1. Decide on a size\n\nChoose a plot size based on your budget and desired visibility. All dimensions must be multiples of 16. Start with 16x16 if cost is a concern, or go bigger for more exposure.\n\n2. Check current prices\nscripts/check_price.sh <width> <height>\n\n\nExample:\n\nscripts/check_price.sh 32 32\n\n\nReturns JSON:\n\n{\n  \"price_wei\": \"12887040000000000\",\n  \"price_eth\": \"0.012887040000000000\",\n  \"pixels\": 1024,\n  \"size\": \"32x32\",\n  \"total_supply\": 334\n}\n\n3. Find an available spot\nscripts/find_available_plots.sh <width> <height> --limit <N>\n\n\nExample:\n\nscripts/find_available_plots.sh 32 32 --limit 5\n\n\nReturns JSON with available coordinates:\n\n{\n  \"available_plots\": [\n    {\"x1\": 992, \"y1\": 128, \"x2\": 1024, \"y2\": 160},\n    {\"x1\": 656, \"y1\": 368, \"x2\": 688, \"y2\": 400}\n  ],\n  \"count\": 2,\n  \"plot_size\": \"32x32\"\n}\n\n\nNote: scanning the full grid takes time due to on-chain queries. Use --limit to stop early.\n\n4. Check a specific spot (optional)\n\nIf you already have coordinates in mind:\n\nscripts/check_availability.sh <x1> <y1> <x2> <y2>\n\n\nReturns {\"available\": true, ...} or {\"available\": false, ...}.\n\n5. Prepare your image\n\nIf your image doesn't match the plot dimensions, resize it:\n\nscripts/resize_image.sh <input_image> <width> <height> [output_path]\n\n\nThe script force-resizes to exact dimensions and replaces transparency with white.\n\n6. Prepare the mint transaction\n\nThis is the main script. It validates everything, checks availability, queries the price, encodes the pixel data, and outputs a ready-to-submit transaction:\n\nscripts/prepare_mint.sh <image_path> <x1> <y1> <x2> <y2> <url>\n\n\nExample:\n\nscripts/prepare_mint.sh my_logo.png 992 128 1024 160 https://myproject.com\n\n\nReturns transaction JSON:\n\n{\n  \"to\": \"0x25b9afe64bb3593ec7e9dc7ef386a9b04c53f96e\",\n  \"value\": \"0x2dc8b1d1680000\",\n  \"data\": \"0xdd2e6e7d...\",\n  \"chainId\": 8453,\n  \"description\": \"Mint 32x32 plot at (992,128) on Million Bit Homepage linking to https://myproject.com\",\n  \"meta\": {\n    \"price_eth\": \"0.012887040000000000\",\n    \"price_wei\": \"12887040000000000\",\n    \"size\": \"32x32\",\n    \"url\": \"https://myproject.com\"\n  }\n}\n\n\nUse --dry-run to skip on-chain checks and just test the encoding pipeline.\n\n7. Submit the transaction\n\nPass the output JSON to your EVM wallet skill to execute the transaction on Base chain (chainId 8453). The key fields are:\n\nto -- the contract address\nvalue -- ETH to send (the mint price, in hex wei)\ndata -- the ABI-encoded calldata\nchainId -- 8453 (Base)\nScript Reference\n\nAll scripts live in scripts/ (relative to this file) and output JSON to stdout. Status messages go to stderr.\n\nScript\tPurpose\tInput\nscripts/check_price.sh\tGet current mint price\t<width> <height> or <x1> <y1> <x2> <y2>\nscripts/check_availability.sh\tCheck if coordinates are free\t<x1> <y1> <x2> <y2>\nscripts/find_available_plots.sh\tScan grid for open spots\t<width> <height> [--limit N]\nscripts/resize_image.sh\tResize image to plot size\t<input> <width> <height> [output]\nscripts/prepare_mint.sh\tFull pipeline: outputs tx JSON\t<image> <x1> <y1> <x2> <y2> <url> [--dry-run]\nCommon Issues\n\"Coordinates overlap\" -- that spot is taken. Use find_available_plots.sh to find open spots.\n\"must be a multiple of 16\" -- all coordinates and dimensions must be divisible by 16.\nImage wrong size -- prepare_mint.sh auto-resizes if the image doesn't match the plot dimensions.\nPrice changed -- price increases with each new mint. Re-run check_price.sh for current pricing.\nTransaction reverts -- ensure your wallet has enough ETH on Base to cover the price plus gas.\nTechnical Details\nContract: 0x25b9afe64bb3593ec7e9dc7ef386a9b04c53f96e on Base (chain ID 8453)\nStandard: ERC-721 (Million Bit Homepage / MBH)\nPixel data: Images are encoded in v1 format (16x16 segments with hex colors + URL), compressed with pako/zlib, and stored on-chain in the mint transaction calldata"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/millionbithomepage/millionbit-mint",
    "publisherUrl": "https://clawhub.ai/millionbithomepage/millionbit-mint",
    "owner": "millionbithomepage",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/millionbit-mint",
    "downloadUrl": "https://openagent3.xyz/downloads/millionbit-mint",
    "agentUrl": "https://openagent3.xyz/skills/millionbit-mint/agent",
    "manifestUrl": "https://openagent3.xyz/skills/millionbit-mint/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/millionbit-mint/agent.md"
  }
}