# Browser Automation

> Browser automation via Playwright MCP for tasks requiring an interactive web session: login, click flows, screenshots, form-fill, multi-step scraping. Complement to the scraping skill (tier 4). [WHAT] Playwright skill for: fetching content behind login, filling forms (government services, subscriptions), screenshots for evidence preservation (OSINT, source verification), interactive scraping of heavy SPAs. Headless by default; headed mode when needed. [WHEN] Use when: browser automation, playwright, click on, fill form, screenshot of site, login-required scrape, "log in to X and fetch", multi-step flow, "fetch behind paywall via subscription". NOT for: simple GET requests (use scraping tier 1-3), background jobs (Playwright is synchronous). [LANGUAGE] English and other languages.

- Skill: `carlheath/browser-automation` (Agent Skill)
- Install (CLI): `npx skillmds@latest add carlheath/browser-automation`
- Raw SKILL.md: https://api.skillmd.com/api/skills/carlheath/browser-automation/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: carlheath (https://skillmd.com/u/carlheath)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/carlheath/browser-automation

---


# Browser automation

**Role:** interactive browser automation via Playwright MCP.

## Workflows

### 1. Fetch behind login

```
1. browser_navigate → login page
2. browser_fill_form (username, password)
3. browser_click → submit
4. browser_wait_for → success element
5. browser_navigate → target URL
6. browser_snapshot → markdown extraction
```

**Auth convention:** credentials are read from `~/.claude/.env`, never hardcoded. If credentials are missing, ask the user.

### 2. Screenshot for evidence preservation

OSINT use: capture site state at a given moment.

```
browser_navigate → URL
browser_take_screenshot → ~/Pictures/ogmios/evidence/[YYYY-MM-DDTHH:MM]_[domain].png
```

Add a metadata file with URL, timestamp, sha256 of the screenshot.

### 3. Filling government / service forms

Common use: tedious forms (insurance claims, subscriptions, government applications).

```
browser_fill_form with {selector: value} mapping
```

ALWAYS verify with `browser_snapshot` before submit. The user must be able to review.

### 4. Multi-step scraping (SPA)

For sites where tier 3 (BrightData) fails due to JS rendering or multi-page navigation.

```
loop:
  browser_navigate
  browser_wait_for
  browser_snapshot
  → extract data
  → click "next"
```

### 5. Browser-agent mode

For complex tasks ("log in to site X and fetch all reports I haven't read"), delegate to a browser agent (Playwright MCP via agent flow). Convention: the agent must be interruptible between steps.

## Security

- **Never save credentials in logs** (sanitize output)
- **Never leave a headed browser open** (always `browser_close` at the end)
- **Ask the user before login** to sensitive accounts (bank, government)
- **Preserved screenshots:** user-only path, never shared

## Output format

| Task | Output |
|------|--------|
| Scrape | Markdown to stdout/file |
| Screenshot | PNG in `~/Pictures/ogmios/evidence/` |
| Form-fill | Confirmation + screenshot of success page |
| Multi-step | JSON array with extracted data |

## Version history

- v3.0 (2026-05-02): initial public release.

