Install
openclaw skills install webwrightRun long-horizon, multi-step browser automation by delegating to the Microsoft webwright CLI, which writes and executes Playwright scripts to drive a real Chromium browser. Use for logins, multi-page forms, checkout/wizard flows, and repeatable site navigation; not for simple single-page reads.
openclaw skills install webwrightDelegate browser tasks to the webwright CLI. Webwright is a code-as-action web
agent: an LLM writes and runs Playwright scripts to drive a real Chromium browser,
which is more robust and repeatable than click-by-click automation.
web_fetch / built-in web tools.This skill is opt-in. It only becomes available once
skills.entries.webwright.enabled is true (an unset value counts as off), so
enable it first:
openclaw config set skills.entries.webwright.enabled true
Run webwright doctor next as a setup check. Note its key check is
OpenAI-specific: it always runs an OpenAI Key check, so if you intend to use
Anthropic or OpenRouter, a doctor OpenAI Key FAIL is expected and is NOT a
blocker — verify your chosen provider's key separately (step 3). Then confirm:
webwright is on PATH (this skill is gated on it). If missing, see
references/setup.md.playwright install chromium.OPENAI_API_KEY (default model_openai.yaml), ANTHROPIC_API_KEY
(model_claude.yaml), or OPENROUTER_API_KEY (model_openrouter.yaml).python, python3, and playwright that webwright's generated scripts
will invoke must be webwright's own install (with Chromium). If you installed
webwright in a venv, activate it (or prepend its bin to PATH) before
running — otherwise generated scripts can pick up a different system Python
that lacks the browser. See references/setup.md.~/.openclaw, $OPENCLAW_STATE_DIR, or any active OpenClaw state directory.The CLI uses a main subcommand:
webwright main \
-t "TASK INSTRUCTION" \
--start-url "https://example.com" \
-c base.yaml -c model_openai.yaml \
--task-id my_task \
-o ./webwright-out/my_task
-c defaults to base.yaml model_openai.yaml. You can also stack inline
overrides, e.g. -c agent.step_limit=20 to cap the agent's step budget.
Then read the run artifacts (generated final_script.py, plan.md, step logs,
screenshots under final_runs/run_<id>/) from the -o directory and report the
generated script path to the user.
See references/cli.md for every flag, config stacking, and the output layout.
-o pointing inside the workspace; never inside OpenClaw state dirs.--start-url and a specific, scoped -t task.-t task text. The task is sent to the model provider
and recorded in run artifacts (trajectories, logs, process args), so passwords
or tokens placed there are exposed. For login-walled tasks, pass credentials via
environment variables and tell the agent the env var NAMES to read in its
generated script (e.g. "log in using $SITE_USER / $SITE_PASS"), or pre-authenticate
a persistent browser profile — never the literal secret values.model_openai.yaml, model_claude.yaml,
model_openrouter.yaml) whose matching API key is present in the environment.Search flights and read the results:
webwright main -t "Search flights SEA to JFK departing 2026-08-15 returning 2026-08-20" \
--start-url "https://www.google.com/flights" \
-c base.yaml -c model_openai.yaml --task-id flights -o ./webwright-out/flights
Extract a table behind a multi-step navigation (Claude model):
webwright main -t "Open the docs, go to the pricing page, and list every plan and price" \
--start-url "https://example.com" \
-c base.yaml -c model_claude.yaml --task-id pricing -o ./webwright-out/pricing