{
  "schemaVersion": "1.0",
  "item": {
    "slug": "browser-use-local",
    "name": "Browser Use Local",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/fengjiajie/browser-use-local",
    "canonicalUrl": "https://clawhub.ai/fengjiajie/browser-use-local",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/browser-use-local",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=browser-use-local",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/crop_candidates.py",
      "scripts/extract_data_images.py",
      "scripts/run_agent_kimi.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/browser-use-local"
    },
    "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-use-local",
    "agentPageUrl": "https://openagent3.xyz/skills/browser-use-local/agent",
    "manifestUrl": "https://openagent3.xyz/skills/browser-use-local/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/browser-use-local/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": "Default constraints in this environment",
        "body": "Prefer browser-use (CLI/Python) over OpenClaw browser tool here; OpenClaw browser may fail if no supported system browser is present.\nUse persistent sessions to do multi-step flows: --session <name>."
      },
      {
        "title": "Quick CLI workflow (non-agent)",
        "body": "Open\n\nbrowser-use --session demo open https://example.com\n\nInspect (sometimes state returns 0 elements on heavy/JS sites)\n\nbrowser-use --session demo --json state | jq '.data | {url,title,elements:(.elements|length)}'\n\nScreenshot (always works; best debugging primitive)\n\nbrowser-use --session demo screenshot /home/node/.openclaw/workspace/page.png\n\nHTML for link discovery (works even when state is empty)\n\nbrowser-use --session demo --json get html > /tmp/page_html.json\npython3 - <<'PY'\nimport json,re\nhtml=json.load(open('/tmp/page_html.json')).get('data',{}).get('html','')\nurls=set(re.findall(r\"https?://[^\\s\\\"'<>]+\", html))\nfor u in sorted([u for u in urls if any(k in u for k in ['demo','login','console','qr','qrcode'])])[:200]:\n    print(u)\nPY\n\nLightweight DOM queries via JS (useful when state is empty)\n\nbrowser-use --session demo --json eval \"location.href\"\nbrowser-use --session demo --json eval \"document.title\""
      },
      {
        "title": "Agent workflow with OpenAI-compatible LLM (Moonshot/Kimi)",
        "body": "Use Python for Agent runs when the CLI run path requires Browser-Use cloud keys or when you need strict control over LLM parameters."
      },
      {
        "title": "Minimal working Kimi example",
        "body": "Create .env (or export env vars) with:\n\nOPENAI_API_KEY=...\nOPENAI_BASE_URL=https://api.moonshot.cn/v1\n\nThen run the bundled script:\n\nsource /home/node/.openclaw/workspace/.venv-browser-use/bin/activate\npython /home/node/.openclaw/workspace/skills/browser-use-local/scripts/run_agent_kimi.py\n\nKimi/Moonshot quirks observed in practice (fixes):\n\ntemperature must be 1 for kimi-k2.5.\nfrequency_penalty must be 0 for kimi-k2.5.\nMoonshot can reject strict JSON Schema used for structured output. Enable:\n\nremove_defaults_from_schema=True\nremove_min_items_from_schema=True\n\nIf you get a 400 error mentioning response_format.json_schema ... keyword 'default' is not allowed or min_items unsupported, those two flags are the first thing to set."
      },
      {
        "title": "Preferred order",
        "body": "Screenshot the page and crop candidate regions (fast, robust).\nIf HTML contains data:image/png;base64,..., extract and decode it."
      },
      {
        "title": "Crop candidates",
        "body": "Use scripts/crop_candidates.py to generate multiple likely QR crops from a screenshot.\n\nsource /home/node/.openclaw/workspace/.venv-browser-use/bin/activate\npython skills/browser-use-local/scripts/crop_candidates.py \\\n  --in /home/node/.openclaw/workspace/login.png \\\n  --outdir /home/node/.openclaw/workspace/qr_crops"
      },
      {
        "title": "Extract base64-embedded images from HTML",
        "body": "source /home/node/.openclaw/workspace/.venv-browser-use/bin/activate\nbrowser-use --session demo --json get html > /tmp/page_html.json\npython skills/browser-use-local/scripts/extract_data_images.py \\\n  --in /tmp/page_html.json \\\n  --outdir /home/node/.openclaw/workspace/data_imgs"
      },
      {
        "title": "Troubleshooting",
        "body": "state shows elements: 0: use get html + regex discovery, plus screenshots; use eval to query DOM.\nPage readiness timeout warnings: usually harmless; rely on screenshot + HTML.\nCLI flags order: global flags go before the subcommand:\n\n✅ browser-use --browser chromium --json open https://...\n❌ browser-use open https://... --browser chromium"
      }
    ],
    "body": "browser-use (local) playbook\nDefault constraints in this environment\nPrefer browser-use (CLI/Python) over OpenClaw browser tool here; OpenClaw browser may fail if no supported system browser is present.\nUse persistent sessions to do multi-step flows: --session <name>.\nQuick CLI workflow (non-agent)\nOpen\nbrowser-use --session demo open https://example.com\n\nInspect (sometimes state returns 0 elements on heavy/JS sites)\nbrowser-use --session demo --json state | jq '.data | {url,title,elements:(.elements|length)}'\n\nScreenshot (always works; best debugging primitive)\nbrowser-use --session demo screenshot /home/node/.openclaw/workspace/page.png\n\nHTML for link discovery (works even when state is empty)\nbrowser-use --session demo --json get html > /tmp/page_html.json\npython3 - <<'PY'\nimport json,re\nhtml=json.load(open('/tmp/page_html.json')).get('data',{}).get('html','')\nurls=set(re.findall(r\"https?://[^\\s\\\"'<>]+\", html))\nfor u in sorted([u for u in urls if any(k in u for k in ['demo','login','console','qr','qrcode'])])[:200]:\n    print(u)\nPY\n\nLightweight DOM queries via JS (useful when state is empty)\nbrowser-use --session demo --json eval \"location.href\"\nbrowser-use --session demo --json eval \"document.title\"\n\nAgent workflow with OpenAI-compatible LLM (Moonshot/Kimi)\n\nUse Python for Agent runs when the CLI run path requires Browser-Use cloud keys or when you need strict control over LLM parameters.\n\nMinimal working Kimi example\n\nCreate .env (or export env vars) with:\n\nOPENAI_API_KEY=...\nOPENAI_BASE_URL=https://api.moonshot.cn/v1\n\nThen run the bundled script:\n\nsource /home/node/.openclaw/workspace/.venv-browser-use/bin/activate\npython /home/node/.openclaw/workspace/skills/browser-use-local/scripts/run_agent_kimi.py\n\n\nKimi/Moonshot quirks observed in practice (fixes):\n\ntemperature must be 1 for kimi-k2.5.\nfrequency_penalty must be 0 for kimi-k2.5.\nMoonshot can reject strict JSON Schema used for structured output. Enable:\nremove_defaults_from_schema=True\nremove_min_items_from_schema=True\n\nIf you get a 400 error mentioning response_format.json_schema ... keyword 'default' is not allowed or min_items unsupported, those two flags are the first thing to set.\n\nQR code extraction (login/demo pages)\nPreferred order\nScreenshot the page and crop candidate regions (fast, robust).\nIf HTML contains data:image/png;base64,..., extract and decode it.\nCrop candidates\n\nUse scripts/crop_candidates.py to generate multiple likely QR crops from a screenshot.\n\nsource /home/node/.openclaw/workspace/.venv-browser-use/bin/activate\npython skills/browser-use-local/scripts/crop_candidates.py \\\n  --in /home/node/.openclaw/workspace/login.png \\\n  --outdir /home/node/.openclaw/workspace/qr_crops\n\nExtract base64-embedded images from HTML\nsource /home/node/.openclaw/workspace/.venv-browser-use/bin/activate\nbrowser-use --session demo --json get html > /tmp/page_html.json\npython skills/browser-use-local/scripts/extract_data_images.py \\\n  --in /tmp/page_html.json \\\n  --outdir /home/node/.openclaw/workspace/data_imgs\n\nTroubleshooting\nstate shows elements: 0: use get html + regex discovery, plus screenshots; use eval to query DOM.\nPage readiness timeout warnings: usually harmless; rely on screenshot + HTML.\nCLI flags order: global flags go before the subcommand:\n✅ browser-use --browser chromium --json open https://...\n❌ browser-use open https://... --browser chromium"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/fengjiajie/browser-use-local",
    "publisherUrl": "https://clawhub.ai/fengjiajie/browser-use-local",
    "owner": "fengjiajie",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/browser-use-local",
    "downloadUrl": "https://openagent3.xyz/downloads/browser-use-local",
    "agentUrl": "https://openagent3.xyz/skills/browser-use-local/agent",
    "manifestUrl": "https://openagent3.xyz/skills/browser-use-local/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/browser-use-local/agent.md"
  }
}