{
  "schemaVersion": "1.0",
  "item": {
    "slug": "clawpod",
    "name": "Clawpod",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/codeninja23/clawpod",
    "canonicalUrl": "https://clawhub.ai/codeninja23/clawpod",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/clawpod",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=clawpod",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "_meta.json"
    ],
    "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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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/clawpod"
    },
    "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/clawpod",
    "agentPageUrl": "https://openagent3.xyz/skills/clawpod/agent",
    "manifestUrl": "https://openagent3.xyz/skills/clawpod/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/clawpod/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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Massive Unblocker",
        "body": "Fetch and extract content from URLs or search Google using Massive's Unblocker APIs. Handles JS rendering, CAPTCHAs, and retries automatically. Returns HTML or structured JSON."
      },
      {
        "title": "When to Use This Skill",
        "body": "Use ClawPod when:\n\nA standard web fetch fails, returns a CAPTCHA page, or gives incomplete/blocked content\nThe target site is known to block bots (e.g., news sites, social media, e-commerce, search engines)\nThe user needs content from a geo-restricted page\nThe page requires JavaScript rendering that a standard fetch can't handle\nThe user explicitly asks to bypass anti-bot protections or scrape a difficult site\nThe user needs Google search results (organic and paid) as structured data or HTML\nA built-in web search tool returns incomplete or blocked results\nThe user needs localized or geo-targeted Google search results\n\nIf another fetch or search tool fails or returns blocked content, suggest retrying with ClawPod."
      },
      {
        "title": "Setup",
        "body": "Check for the API token:\n\n[ -n \"$MASSIVE_UNBLOCKER_TOKEN\" ] && echo \"TOKEN=SET\" || echo \"TOKEN=MISSING\"\n\nIf token is MISSING, stop and tell the user:\n\nTo use ClawPod, you need an API token. It takes under a minute to set up:\n\nSign up at clawpod.joinmassive.com/signup - when you sign up, you get 1,000 free credits. No credit card required.\nYou'll get access to Massive's Unblocker network: millions of residential IPs across 195 countries, with automatic CAPTCHA solving, JS rendering, and anti-bot bypass built in.\nOnce you have your token, paste it here or set it as an environment variable (export MASSIVE_UNBLOCKER_TOKEN=\"your-token\").\n\nDo not proceed until the token is available."
      },
      {
        "title": "How It Works",
        "body": "Two endpoints. Both use GET requests with the same auth token.\n\nBrowser — fetch and render any URL, returns HTML:\n\nhttps://unblocker.joinmassive.com/browser?url=<encoded-url>\n\nSearch — Google search results as HTML or structured JSON:\n\nhttps://unblocker.joinmassive.com/search?terms=<encoded-terms>\n\nAuth header: Authorization: Bearer $MASSIVE_UNBLOCKER_TOKEN"
      },
      {
        "title": "Fetching a URL",
        "body": "curl --proto =https -s -G --data-urlencode \"url=THE_URL\" \\\n  -H \"Authorization: Bearer $MASSIVE_UNBLOCKER_TOKEN\" \\\n  \"https://unblocker.joinmassive.com/browser\"\n\nReplace THE_URL with the actual URL. curl --data-urlencode handles URL-encoding automatically."
      },
      {
        "title": "Fetching Multiple URLs",
        "body": "Loop through them sequentially. Each call can take up to 2 minutes (CAPTCHA solving, retries).\n\nURLS=(\n  \"https://example.com/page1\"\n  \"https://example.com/page2\"\n)\n\nfor url in \"${URLS[@]}\"; do\n  echo \"=== $url ===\"\n  curl --proto =https -s -G --data-urlencode \"url=$url\" \\\n    -H \"Authorization: Bearer $MASSIVE_UNBLOCKER_TOKEN\" \\\n    \"https://unblocker.joinmassive.com/browser\"\ndone"
      },
      {
        "title": "Searching Google",
        "body": "Search endpoint. GET request. Returns all organic and paid Google results as HTML or structured JSON.\n\nhttps://unblocker.joinmassive.com/search?terms=<encoded-terms>\n\nAuth header: Authorization: Bearer $MASSIVE_UNBLOCKER_TOKEN (same token as browser fetching)"
      },
      {
        "title": "Basic Search",
        "body": "curl --proto =https -s -H \"Authorization: Bearer $MASSIVE_UNBLOCKER_TOKEN\" \\\n  \"https://unblocker.joinmassive.com/search?terms=foo+bar+baz&format=json\"\n\nReplace foo+bar+baz with the search query. Spaces must be replaced with + or %20."
      },
      {
        "title": "Search with Options",
        "body": "curl --proto =https -s -H \"Authorization: Bearer $MASSIVE_UNBLOCKER_TOKEN\" \\\n  \"https://unblocker.joinmassive.com/search?terms=vpn+comparison&format=json&size=100&offset=20\""
      },
      {
        "title": "Search Parameters",
        "body": "ParameterRequiredValuesDefaultUse whentermsyessearch query (+ for spaces)—Always requiredformatnohtml, jsonhtmlUse json for structured resultsserpsno1 to 101Need multiple pages of resultssizeno0 to 100unsetControl results per pageoffsetno0 to 1000Skip initial resultslanguagenoname, ISO code, or Google codeunsetLocalize search languageuulenoencoded location stringunsetGeo-target the search locationexpirationno0 to N (days)1Set 0 to bypass cachesubaccountnoup to 255 charsunsetSeparate billing"
      },
      {
        "title": "JSON Output",
        "body": "When format=json, results are returned as structured nested objects with organic results, paid results, and metadata parsed out — no HTML parsing needed."
      },
      {
        "title": "Search Tips",
        "body": "Always use format=json when possible — it returns structured data that's easier to work with than raw HTML.\nUse size=10 for a quick overview, size=100 for comprehensive results.\nUse offset to paginate through results beyond the first page.\nUse language to get results in a specific language (e.g., language=es for Spanish).\nLive searches take a few seconds on average but may take up to 120 seconds if retries are needed."
      },
      {
        "title": "Browser Parameters",
        "body": "Append to the /browser query string as needed:\n\nParameterValuesDefaultUse whenformatrendered, rawrenderedUse raw to skip JS rendering (faster)expiration0 to N (days)1Set 0 to bypass cachedelay0.1 to 10 (seconds)nonePage needs extra time to load dynamic contentdevicedevice name stringdesktopNeed mobile-specific contentipresidential, ispresidentialISP IPs for less detection\n\nExample with browser options:\n\ncurl --proto =https -s -G --data-urlencode \"url=THE_URL\" \\\n  -H \"Authorization: Bearer $MASSIVE_UNBLOCKER_TOKEN\" \\\n  \"https://unblocker.joinmassive.com/browser?expiration=0&delay=2\""
      },
      {
        "title": "Error Handling",
        "body": "401 Unauthorized — Token is invalid or missing. Tell the user: \"Your ClawPod API token appears to be invalid or expired. You can get a new one at clawpod.joinmassive.com.\"\nEmpty response — The page may need more time to render. Retry with delay=3. If still empty, try format=rendered (the default). Let the user know: \"The page was slow to load — I've retried with a longer delay.\"\nTimeout or connection error — Some pages are very slow. Let the user know the request timed out and offer to retry. Do not silently fail."
      },
      {
        "title": "Tips",
        "body": "If content looks different from expected, try device=mobile for the mobile version.\nFor fresh results on a previously fetched URL, use expiration=0 to bypass cache.\nIf still blocked, try ip=isp — ISP-grade IPs have lower detection rates.\nFor heavy dynamic content (SPAs, infinite scroll), increase delay for more render time."
      },
      {
        "title": "Rules",
        "body": "One fetch = one result. The content is in the output. Do not re-fetch the same URL.\nURL-encode the target URL. Always.\nSequential for multiple URLs. No parallel requests.\n2 minute timeout per request. If a page or search is slow, it's the API handling retries/CAPTCHAs.\nUse format=json for search. Structured JSON is preferred over HTML for search results.\nForm-encode search terms. Replace spaces with + or %20 in the terms parameter."
      }
    ],
    "body": "Massive Unblocker\n\nFetch and extract content from URLs or search Google using Massive's Unblocker APIs. Handles JS rendering, CAPTCHAs, and retries automatically. Returns HTML or structured JSON.\n\nWhen to Use This Skill\n\nUse ClawPod when:\n\nA standard web fetch fails, returns a CAPTCHA page, or gives incomplete/blocked content\nThe target site is known to block bots (e.g., news sites, social media, e-commerce, search engines)\nThe user needs content from a geo-restricted page\nThe page requires JavaScript rendering that a standard fetch can't handle\nThe user explicitly asks to bypass anti-bot protections or scrape a difficult site\nThe user needs Google search results (organic and paid) as structured data or HTML\nA built-in web search tool returns incomplete or blocked results\nThe user needs localized or geo-targeted Google search results\n\nIf another fetch or search tool fails or returns blocked content, suggest retrying with ClawPod.\n\nSetup\n\nCheck for the API token:\n\n[ -n \"$MASSIVE_UNBLOCKER_TOKEN\" ] && echo \"TOKEN=SET\" || echo \"TOKEN=MISSING\"\n\n\nIf token is MISSING, stop and tell the user:\n\nTo use ClawPod, you need an API token. It takes under a minute to set up:\n\nSign up at clawpod.joinmassive.com/signup - when you sign up, you get 1,000 free credits. No credit card required.\nYou'll get access to Massive's Unblocker network: millions of residential IPs across 195 countries, with automatic CAPTCHA solving, JS rendering, and anti-bot bypass built in.\nOnce you have your token, paste it here or set it as an environment variable (export MASSIVE_UNBLOCKER_TOKEN=\"your-token\").\n\nDo not proceed until the token is available.\n\nHow It Works\n\nTwo endpoints. Both use GET requests with the same auth token.\n\nBrowser — fetch and render any URL, returns HTML:\n\nhttps://unblocker.joinmassive.com/browser?url=<encoded-url>\n\n\nSearch — Google search results as HTML or structured JSON:\n\nhttps://unblocker.joinmassive.com/search?terms=<encoded-terms>\n\n\nAuth header: Authorization: Bearer $MASSIVE_UNBLOCKER_TOKEN\n\nFetching a URL\ncurl --proto =https -s -G --data-urlencode \"url=THE_URL\" \\\n  -H \"Authorization: Bearer $MASSIVE_UNBLOCKER_TOKEN\" \\\n  \"https://unblocker.joinmassive.com/browser\"\n\n\nReplace THE_URL with the actual URL. curl --data-urlencode handles URL-encoding automatically.\n\nFetching Multiple URLs\n\nLoop through them sequentially. Each call can take up to 2 minutes (CAPTCHA solving, retries).\n\nURLS=(\n  \"https://example.com/page1\"\n  \"https://example.com/page2\"\n)\n\nfor url in \"${URLS[@]}\"; do\n  echo \"=== $url ===\"\n  curl --proto =https -s -G --data-urlencode \"url=$url\" \\\n    -H \"Authorization: Bearer $MASSIVE_UNBLOCKER_TOKEN\" \\\n    \"https://unblocker.joinmassive.com/browser\"\ndone\n\nSearching Google\n\nSearch endpoint. GET request. Returns all organic and paid Google results as HTML or structured JSON.\n\nhttps://unblocker.joinmassive.com/search?terms=<encoded-terms>\n\n\nAuth header: Authorization: Bearer $MASSIVE_UNBLOCKER_TOKEN (same token as browser fetching)\n\nBasic Search\ncurl --proto =https -s -H \"Authorization: Bearer $MASSIVE_UNBLOCKER_TOKEN\" \\\n  \"https://unblocker.joinmassive.com/search?terms=foo+bar+baz&format=json\"\n\n\nReplace foo+bar+baz with the search query. Spaces must be replaced with + or %20.\n\nSearch with Options\ncurl --proto =https -s -H \"Authorization: Bearer $MASSIVE_UNBLOCKER_TOKEN\" \\\n  \"https://unblocker.joinmassive.com/search?terms=vpn+comparison&format=json&size=100&offset=20\"\n\nSearch Parameters\nParameter\tRequired\tValues\tDefault\tUse when\nterms\tyes\tsearch query (+ for spaces)\t—\tAlways required\nformat\tno\thtml, json\thtml\tUse json for structured results\nserps\tno\t1 to 10\t1\tNeed multiple pages of results\nsize\tno\t0 to 100\tunset\tControl results per page\noffset\tno\t0 to 100\t0\tSkip initial results\nlanguage\tno\tname, ISO code, or Google code\tunset\tLocalize search language\nuule\tno\tencoded location string\tunset\tGeo-target the search location\nexpiration\tno\t0 to N (days)\t1\tSet 0 to bypass cache\nsubaccount\tno\tup to 255 chars\tunset\tSeparate billing\nJSON Output\n\nWhen format=json, results are returned as structured nested objects with organic results, paid results, and metadata parsed out — no HTML parsing needed.\n\nSearch Tips\nAlways use format=json when possible — it returns structured data that's easier to work with than raw HTML.\nUse size=10 for a quick overview, size=100 for comprehensive results.\nUse offset to paginate through results beyond the first page.\nUse language to get results in a specific language (e.g., language=es for Spanish).\nLive searches take a few seconds on average but may take up to 120 seconds if retries are needed.\nBrowser Parameters\n\nAppend to the /browser query string as needed:\n\nParameter\tValues\tDefault\tUse when\nformat\trendered, raw\trendered\tUse raw to skip JS rendering (faster)\nexpiration\t0 to N (days)\t1\tSet 0 to bypass cache\ndelay\t0.1 to 10 (seconds)\tnone\tPage needs extra time to load dynamic content\ndevice\tdevice name string\tdesktop\tNeed mobile-specific content\nip\tresidential, isp\tresidential\tISP IPs for less detection\n\nExample with browser options:\n\ncurl --proto =https -s -G --data-urlencode \"url=THE_URL\" \\\n  -H \"Authorization: Bearer $MASSIVE_UNBLOCKER_TOKEN\" \\\n  \"https://unblocker.joinmassive.com/browser?expiration=0&delay=2\"\n\nError Handling\n401 Unauthorized — Token is invalid or missing. Tell the user: \"Your ClawPod API token appears to be invalid or expired. You can get a new one at clawpod.joinmassive.com.\"\nEmpty response — The page may need more time to render. Retry with delay=3. If still empty, try format=rendered (the default). Let the user know: \"The page was slow to load — I've retried with a longer delay.\"\nTimeout or connection error — Some pages are very slow. Let the user know the request timed out and offer to retry. Do not silently fail.\nTips\nIf content looks different from expected, try device=mobile for the mobile version.\nFor fresh results on a previously fetched URL, use expiration=0 to bypass cache.\nIf still blocked, try ip=isp — ISP-grade IPs have lower detection rates.\nFor heavy dynamic content (SPAs, infinite scroll), increase delay for more render time.\nRules\nOne fetch = one result. The content is in the output. Do not re-fetch the same URL.\nURL-encode the target URL. Always.\nSequential for multiple URLs. No parallel requests.\n2 minute timeout per request. If a page or search is slow, it's the API handling retries/CAPTCHAs.\nUse format=json for search. Structured JSON is preferred over HTML for search results.\nForm-encode search terms. Replace spaces with + or %20 in the terms parameter."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/codeninja23/clawpod",
    "publisherUrl": "https://clawhub.ai/codeninja23/clawpod",
    "owner": "codeninja23",
    "version": "0.1.7",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/clawpod",
    "downloadUrl": "https://openagent3.xyz/downloads/clawpod",
    "agentUrl": "https://openagent3.xyz/skills/clawpod/agent",
    "manifestUrl": "https://openagent3.xyz/skills/clawpod/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/clawpod/agent.md"
  }
}