{
  "schemaVersion": "1.0",
  "item": {
    "slug": "browser-ladder",
    "name": "Browser Ladder",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/ktpriyatham/browser-ladder",
    "canonicalUrl": "https://clawhub.ai/ktpriyatham/browser-ladder",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/browser-ladder",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=browser-ladder",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/setup.sh",
      "scripts/browse.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-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/browser-ladder"
    },
    "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/browser-ladder",
    "agentPageUrl": "https://openagent3.xyz/skills/browser-ladder/agent",
    "manifestUrl": "https://openagent3.xyz/skills/browser-ladder/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/browser-ladder/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": "Browser Ladder 🪜",
        "body": "Climb from free to paid only when you need to."
      },
      {
        "title": "Quick Setup",
        "body": "Run the setup script after installation:\n\n./skills/browser-ladder/scripts/setup.sh\n\nOr manually add to your .env:\n\n# Optional - only needed for Rungs 3-4\nBROWSERCAT_API_KEY=your-key    # Free: https://browsercat.com\nBROWSERLESS_TOKEN=your-token   # Paid: https://browserless.io"
      },
      {
        "title": "The Ladder",
        "body": "┌─────────────────────────────────────────────┐\n│  🪜 Rung 4: Browserless.io (Cloud Paid)     │\n│  • CAPTCHA solving, bot detection bypass    │\n│  • Cost: $10+/mo                            │\n│  • Requires: BROWSERLESS_TOKEN              │\n├─────────────────────────────────────────────┤\n│  🪜 Rung 3: BrowserCat (Cloud Free)         │\n│  • When local Docker fails                  │\n│  • Cost: FREE (limited)                     │\n│  • Requires: BROWSERCAT_API_KEY             │\n├─────────────────────────────────────────────┤\n│  🪜 Rung 2: Playwright Docker (Local)       │\n│  • JavaScript rendering, screenshots        │\n│  • Cost: FREE (CPU only)                    │\n│  • Requires: Docker installed               │\n├─────────────────────────────────────────────┤\n│  🪜 Rung 1: web_fetch (No browser)          │\n│  • Static pages, APIs, simple HTML          │\n│  • Cost: FREE                               │\n│  • Requires: Nothing                        │\n└─────────────────────────────────────────────┘\n\nStart at the bottom. Climb only when needed."
      },
      {
        "title": "When to Climb",
        "body": "SituationRungWhyStatic HTML, APIs1No JS neededReact/Vue/SPA apps2JS renderingDocker unavailable3Cloud fallbackCAPTCHA/Cloudflare4Bot bypass neededOAuth/MFA flows4Complex auth"
      },
      {
        "title": "Decision Flow",
        "body": "Need to access a URL\n         │\n         ▼\n    Static content? ──YES──▶ Rung 1 (web_fetch)\n         │ NO\n         ▼\n    JS rendering only? ──YES──▶ Rung 2 (Playwright Docker)\n         │ NO                        │\n         │                     Success? ──NO──▶ Rung 3\n         ▼                           │ YES\n    CAPTCHA/bot detection? ────────────────────▶ DONE\n         │ YES\n         ▼\n    Rung 4 (Browserless.io) ──▶ DONE"
      },
      {
        "title": "Rung 1: Static content",
        "body": "// Built into Clawdbot\nconst content = await web_fetch(\"https://example.com\");"
      },
      {
        "title": "Rung 2: JS-rendered page",
        "body": "docker run --rm -v /tmp:/output mcr.microsoft.com/playwright:v1.58.0-jammy \\\n  npx playwright screenshot https://spa-app.com /output/shot.png"
      },
      {
        "title": "Rung 3: Cloud browser (BrowserCat)",
        "body": "const { chromium } = require('playwright');\nconst browser = await chromium.connect('wss://api.browsercat.com/connect', {\n  headers: { 'Api-Key': process.env.BROWSERCAT_API_KEY }\n});"
      },
      {
        "title": "Rung 4: CAPTCHA bypass (Browserless)",
        "body": "const { chromium } = require('playwright');\nconst browser = await chromium.connectOverCDP(\n  `wss://production-sfo.browserless.io?token=${process.env.BROWSERLESS_TOKEN}`\n);\n// CAPTCHA handled automatically"
      },
      {
        "title": "Cost Optimization",
        "body": "Start low — Always try Rung 1 first\nCache results — Don't re-fetch unnecessarily\nBatch requests — One browser session for multiple pages\nCheck success — Only climb if lower rung fails"
      },
      {
        "title": "Get Your Keys",
        "body": "ServiceCostSign UpBrowserCatFree tierhttps://browsercat.comBrowserless.io$10+/mohttps://browserless.io\n\nBoth are optional — Rungs 1-2 work without any API keys."
      }
    ],
    "body": "Browser Ladder 🪜\n\nClimb from free to paid only when you need to.\n\nQuick Setup\n\nRun the setup script after installation:\n\n./skills/browser-ladder/scripts/setup.sh\n\n\nOr manually add to your .env:\n\n# Optional - only needed for Rungs 3-4\nBROWSERCAT_API_KEY=your-key    # Free: https://browsercat.com\nBROWSERLESS_TOKEN=your-token   # Paid: https://browserless.io\n\nThe Ladder\n┌─────────────────────────────────────────────┐\n│  🪜 Rung 4: Browserless.io (Cloud Paid)     │\n│  • CAPTCHA solving, bot detection bypass    │\n│  • Cost: $10+/mo                            │\n│  • Requires: BROWSERLESS_TOKEN              │\n├─────────────────────────────────────────────┤\n│  🪜 Rung 3: BrowserCat (Cloud Free)         │\n│  • When local Docker fails                  │\n│  • Cost: FREE (limited)                     │\n│  • Requires: BROWSERCAT_API_KEY             │\n├─────────────────────────────────────────────┤\n│  🪜 Rung 2: Playwright Docker (Local)       │\n│  • JavaScript rendering, screenshots        │\n│  • Cost: FREE (CPU only)                    │\n│  • Requires: Docker installed               │\n├─────────────────────────────────────────────┤\n│  🪜 Rung 1: web_fetch (No browser)          │\n│  • Static pages, APIs, simple HTML          │\n│  • Cost: FREE                               │\n│  • Requires: Nothing                        │\n└─────────────────────────────────────────────┘\n\nStart at the bottom. Climb only when needed.\n\nWhen to Climb\nSituation\tRung\tWhy\nStatic HTML, APIs\t1\tNo JS needed\nReact/Vue/SPA apps\t2\tJS rendering\nDocker unavailable\t3\tCloud fallback\nCAPTCHA/Cloudflare\t4\tBot bypass needed\nOAuth/MFA flows\t4\tComplex auth\nDecision Flow\nNeed to access a URL\n         │\n         ▼\n    Static content? ──YES──▶ Rung 1 (web_fetch)\n         │ NO\n         ▼\n    JS rendering only? ──YES──▶ Rung 2 (Playwright Docker)\n         │ NO                        │\n         │                     Success? ──NO──▶ Rung 3\n         ▼                           │ YES\n    CAPTCHA/bot detection? ────────────────────▶ DONE\n         │ YES\n         ▼\n    Rung 4 (Browserless.io) ──▶ DONE\n\nUsage Examples\nRung 1: Static content\n// Built into Clawdbot\nconst content = await web_fetch(\"https://example.com\");\n\nRung 2: JS-rendered page\ndocker run --rm -v /tmp:/output mcr.microsoft.com/playwright:v1.58.0-jammy \\\n  npx playwright screenshot https://spa-app.com /output/shot.png\n\nRung 3: Cloud browser (BrowserCat)\nconst { chromium } = require('playwright');\nconst browser = await chromium.connect('wss://api.browsercat.com/connect', {\n  headers: { 'Api-Key': process.env.BROWSERCAT_API_KEY }\n});\n\nRung 4: CAPTCHA bypass (Browserless)\nconst { chromium } = require('playwright');\nconst browser = await chromium.connectOverCDP(\n  `wss://production-sfo.browserless.io?token=${process.env.BROWSERLESS_TOKEN}`\n);\n// CAPTCHA handled automatically\n\nCost Optimization\nStart low — Always try Rung 1 first\nCache results — Don't re-fetch unnecessarily\nBatch requests — One browser session for multiple pages\nCheck success — Only climb if lower rung fails\nGet Your Keys\nService\tCost\tSign Up\nBrowserCat\tFree tier\thttps://browsercat.com\nBrowserless.io\t$10+/mo\thttps://browserless.io\n\nBoth are optional — Rungs 1-2 work without any API keys."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ktpriyatham/browser-ladder",
    "publisherUrl": "https://clawhub.ai/ktpriyatham/browser-ladder",
    "owner": "ktpriyatham",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/browser-ladder",
    "downloadUrl": "https://openagent3.xyz/downloads/browser-ladder",
    "agentUrl": "https://openagent3.xyz/skills/browser-ladder/agent",
    "manifestUrl": "https://openagent3.xyz/skills/browser-ladder/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/browser-ladder/agent.md"
  }
}