{
  "schemaVersion": "1.0",
  "item": {
    "slug": "warren-deploy",
    "name": "Warren - On-Chain Website Deploy",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/planetai87/warren-deploy",
    "canonicalUrl": "https://clawhub.ai/planetai87/warren-deploy",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/warren-deploy",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=warren-deploy",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "setup.sh",
      "deploy.js",
      "SKILL.md"
    ],
    "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/warren-deploy"
    },
    "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/warren-deploy",
    "agentPageUrl": "https://openagent3.xyz/skills/warren-deploy/agent",
    "manifestUrl": "https://openagent3.xyz/skills/warren-deploy/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/warren-deploy/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": "Warren - On-Chain Website Deployment",
        "body": "Deploy websites permanently on MegaETH blockchain. Content is stored on-chain using SSTORE2 and cannot be deleted.\n\nNetwork: MegaETH Testnet (Chain ID: 6343)\nRPC: https://carrot.megaeth.com/rpc\nExplorer: https://megaeth-testnet-v2.blockscout.com"
      },
      {
        "title": "Setup (One Time)",
        "body": "cd {baseDir}\nbash setup.sh\n\nThis installs ethers.js, the only dependency."
      },
      {
        "title": "1. Create a Wallet",
        "body": "node -e \"const w = require('ethers').Wallet.createRandom(); console.log('Address:', w.address); console.log('Private Key:', w.privateKey)\"\n\nSet the private key:\n\nexport PRIVATE_KEY=0xYourPrivateKey"
      },
      {
        "title": "2. Get Testnet ETH",
        "body": "Visit https://docs.megaeth.com/faucet and enter your wallet address. This requires a captcha. You need ~0.1 ETH for multiple deployments.\n\nCheck balance:\n\nnode -e \"const{ethers}=require('ethers');new ethers.JsonRpcProvider('https://carrot.megaeth.com/rpc',6343).getBalance('$YOUR_ADDRESS').then(b=>console.log(ethers.formatEther(b),'ETH'))\""
      },
      {
        "title": "3. Genesis Key NFT",
        "body": "The deploy script automatically mints a free Genesis Key NFT if you don't have one. No manual action needed."
      },
      {
        "title": "Deploy HTML string",
        "body": "cd {baseDir}\nPRIVATE_KEY=0x... node deploy.js \\\n  --html \"<html><body><h1>Hello Warren!</h1></body></html>\" \\\n  --name \"My First Site\""
      },
      {
        "title": "Deploy HTML file",
        "body": "PRIVATE_KEY=0x... node deploy.js \\\n  --file ./my-site.html \\\n  --name \"My Website\""
      },
      {
        "title": "Deploy via stdin",
        "body": "echo \"<h1>Hello</h1>\" | PRIVATE_KEY=0x... node deploy.js --name \"Piped\""
      },
      {
        "title": "CLI Options",
        "body": "--private-key <key>   Wallet private key (or PRIVATE_KEY env)\n--html <string>       HTML content to deploy\n--file <path>         Path to file to deploy\n--name <name>         Site name (default: \"Untitled\")\n--type <type>         file|image|video|audio|script (default: \"file\")"
      },
      {
        "title": "Output",
        "body": "{\n  \"tokenId\": 102,\n  \"rootChunk\": \"0x019E5E...\",\n  \"depth\": 0,\n  \"url\": \"https://megawarren.xyz/loader.html?registry=0x7bb4233017CFd4f938C61d1dCeEF4eBE837b05F9&id=102\"\n}"
      },
      {
        "title": "Deploy multiple random sites",
        "body": "cd {baseDir}\nfor i in $(seq 1 10); do\n  HTML=\"<html><body><h1>Stress Test #$i</h1><p>$(date)</p></body></html>\"\n  PRIVATE_KEY=0x... node deploy.js --html \"$HTML\" --name \"Stress Test $i\"\n  sleep 2\ndone"
      },
      {
        "title": "Deploy a larger site (~50KB)",
        "body": "python3 -c \"\nhtml = '<html><body>'\nfor i in range(1000):\n    html += f'<p>Paragraph {i}: Lorem ipsum dolor sit amet</p>'\nhtml += '</body></html>'\nprint(html)\n\" > large-site.html\n\nPRIVATE_KEY=0x... node deploy.js --file large-site.html --name \"Large Test\""
      },
      {
        "title": "Check leaderboard",
        "body": "curl -s https://megawarren.xyz/api/stress-test/leaderboard | node -e \"process.stdin.on('data',d=>console.log(JSON.parse(d)))\""
      },
      {
        "title": "Gas Costs",
        "body": "SizeChunksCost< 10KB1~0.0005 ETH50KB1~0.002 ETH100KB1~0.004 ETH200KB2~0.008 ETH500KB5~0.02 ETH\n\nPlus ~0.0001 ETH for MasterNFT minting per site."
      },
      {
        "title": "Contract Addresses",
        "body": "ContractAddressGenesis Key NFT0x954a7cd0e2f03041A6Abb203f4Cfd8E62D2aa692MasterNFT Registry0x7bb4233017CFd4f938C61d1dCeEF4eBE837b05F9"
      },
      {
        "title": "View Sites",
        "body": "https://megawarren.xyz/loader.html?registry=0x7bb4233017CFd4f938C61d1dCeEF4eBE837b05F9&id={TOKEN_ID}"
      },
      {
        "title": "Troubleshooting",
        "body": "\"No ETH\" → Get from https://docs.megaeth.com/faucet (captcha required)\n\n\"RPC rate limit\" → Built-in retry. Add sleep 5 between batch deploys.\n\n\"Insufficient funds\" → ~0.001-0.02 ETH per deploy. Get more from faucet.\n\nSite doesn't load → Wait 10-30s. Check URL has correct registry and token ID."
      },
      {
        "title": "Notes",
        "body": "Testnet only — may reset\nMax 500KB per deployment\nContent is immutable once on-chain\nYou pay gas from your own wallet\nGenesis Key NFT auto-mints (free)"
      }
    ],
    "body": "Warren - On-Chain Website Deployment\n\nDeploy websites permanently on MegaETH blockchain. Content is stored on-chain using SSTORE2 and cannot be deleted.\n\nNetwork: MegaETH Testnet (Chain ID: 6343) RPC: https://carrot.megaeth.com/rpc Explorer: https://megaeth-testnet-v2.blockscout.com\n\nSetup (One Time)\ncd {baseDir}\nbash setup.sh\n\n\nThis installs ethers.js, the only dependency.\n\nPrerequisites\n1. Create a Wallet\nnode -e \"const w = require('ethers').Wallet.createRandom(); console.log('Address:', w.address); console.log('Private Key:', w.privateKey)\"\n\n\nSet the private key:\n\nexport PRIVATE_KEY=0xYourPrivateKey\n\n2. Get Testnet ETH\n\nVisit https://docs.megaeth.com/faucet and enter your wallet address. This requires a captcha. You need ~0.1 ETH for multiple deployments.\n\nCheck balance:\n\nnode -e \"const{ethers}=require('ethers');new ethers.JsonRpcProvider('https://carrot.megaeth.com/rpc',6343).getBalance('$YOUR_ADDRESS').then(b=>console.log(ethers.formatEther(b),'ETH'))\"\n\n3. Genesis Key NFT\n\nThe deploy script automatically mints a free Genesis Key NFT if you don't have one. No manual action needed.\n\nDeploy\nDeploy HTML string\ncd {baseDir}\nPRIVATE_KEY=0x... node deploy.js \\\n  --html \"<html><body><h1>Hello Warren!</h1></body></html>\" \\\n  --name \"My First Site\"\n\nDeploy HTML file\nPRIVATE_KEY=0x... node deploy.js \\\n  --file ./my-site.html \\\n  --name \"My Website\"\n\nDeploy via stdin\necho \"<h1>Hello</h1>\" | PRIVATE_KEY=0x... node deploy.js --name \"Piped\"\n\nCLI Options\n--private-key <key>   Wallet private key (or PRIVATE_KEY env)\n--html <string>       HTML content to deploy\n--file <path>         Path to file to deploy\n--name <name>         Site name (default: \"Untitled\")\n--type <type>         file|image|video|audio|script (default: \"file\")\n\nOutput\n{\n  \"tokenId\": 102,\n  \"rootChunk\": \"0x019E5E...\",\n  \"depth\": 0,\n  \"url\": \"https://megawarren.xyz/loader.html?registry=0x7bb4233017CFd4f938C61d1dCeEF4eBE837b05F9&id=102\"\n}\n\nStress Test Workflows\nDeploy multiple random sites\ncd {baseDir}\nfor i in $(seq 1 10); do\n  HTML=\"<html><body><h1>Stress Test #$i</h1><p>$(date)</p></body></html>\"\n  PRIVATE_KEY=0x... node deploy.js --html \"$HTML\" --name \"Stress Test $i\"\n  sleep 2\ndone\n\nDeploy a larger site (~50KB)\npython3 -c \"\nhtml = '<html><body>'\nfor i in range(1000):\n    html += f'<p>Paragraph {i}: Lorem ipsum dolor sit amet</p>'\nhtml += '</body></html>'\nprint(html)\n\" > large-site.html\n\nPRIVATE_KEY=0x... node deploy.js --file large-site.html --name \"Large Test\"\n\nCheck leaderboard\ncurl -s https://megawarren.xyz/api/stress-test/leaderboard | node -e \"process.stdin.on('data',d=>console.log(JSON.parse(d)))\"\n\nGas Costs\nSize\tChunks\tCost\n< 10KB\t1\t~0.0005 ETH\n50KB\t1\t~0.002 ETH\n100KB\t1\t~0.004 ETH\n200KB\t2\t~0.008 ETH\n500KB\t5\t~0.02 ETH\n\nPlus ~0.0001 ETH for MasterNFT minting per site.\n\nContract Addresses\nContract\tAddress\nGenesis Key NFT\t0x954a7cd0e2f03041A6Abb203f4Cfd8E62D2aa692\nMasterNFT Registry\t0x7bb4233017CFd4f938C61d1dCeEF4eBE837b05F9\nView Sites\nhttps://megawarren.xyz/loader.html?registry=0x7bb4233017CFd4f938C61d1dCeEF4eBE837b05F9&id={TOKEN_ID}\n\nTroubleshooting\n\n\"No ETH\" → Get from https://docs.megaeth.com/faucet (captcha required)\n\n\"RPC rate limit\" → Built-in retry. Add sleep 5 between batch deploys.\n\n\"Insufficient funds\" → ~0.001-0.02 ETH per deploy. Get more from faucet.\n\nSite doesn't load → Wait 10-30s. Check URL has correct registry and token ID.\n\nNotes\nTestnet only — may reset\nMax 500KB per deployment\nContent is immutable once on-chain\nYou pay gas from your own wallet\nGenesis Key NFT auto-mints (free)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/planetai87/warren-deploy",
    "publisherUrl": "https://clawhub.ai/planetai87/warren-deploy",
    "owner": "planetai87",
    "version": "1.0.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/warren-deploy",
    "downloadUrl": "https://openagent3.xyz/downloads/warren-deploy",
    "agentUrl": "https://openagent3.xyz/skills/warren-deploy/agent",
    "manifestUrl": "https://openagent3.xyz/skills/warren-deploy/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/warren-deploy/agent.md"
  }
}