---
sidebar_position: 5
title: ローカルClaude Code + Playwright CLIでブラウザ自動化エージェントを作る
description: Claude Code + Playwright CLIで安定したブラウザ自動化環境を構築する方法
hide_table_of_contents: false
displayed_sidebar: null
image: ./banner.png
---

# ローカルClaude Code + Playwright CLIで「自分だけのブラウザ自動化エージェント」を作る

## はじめに

[前回の記事](/tech/dgx-spark-claude-code-local)で、Claude Codeをローカルで動かす方法を紹介しました。

今回はその続き。**Playwright CLI**を組み合わせて、ブラウザを自動操作できるエージェントを作ります。

### 何ができるようになる？

- ✅ 「このサイトの情報を集めて」→ 自動でスクレイピング
- ✅ 「ログインしてデータをダウンロード」→ 認証も自動
- ✅ 「このフォームに入力して送信」→ ブラウザ操作を自動化
- ✅ 「E2Eテストを書いて実行」→ テストコード生成＆実行

しかも**完全ローカル**。データはどこにも送られません。

## なぜMCPではなくCLI？

ブラウザ自動化には2つの方式があります：

| 方式 | 特徴 | 成功率 |
|------|------|--------|
| Playwright MCP | リアルタイム状態管理 | △ 不安定なことがある |
| **Playwright CLI + SKILLS** | トークン効率が良い | **◎ 安定して動く** |

:::tip CLI方式をおすすめする理由
1. **トークン効率が良い** - 巨大なツールスキーマやアクセシビリティツリーをコンテキストに読み込まない
2. **安定している** - シンプルなコマンド実行なので失敗しにくい
3. **デバッグしやすい** - 同じコマンドを手動でも実行できる
:::

## 前提条件

- [Claude Codeのローカル環境](/tech/dgx-spark-claude-code-local)が動作済み
- Node.js 18以上

## セットアップ

### Step 1: Playwright CLIをインストール

```bash
npm install -g @playwright/cli@latest
```

確認：

```bash
playwright-cli --help
```

### Step 2: SKILLSをインストール

```bash
playwright-cli install --skills
```

これでClaude Codeが自動的にPlaywright CLIのスキルを認識します。

### Step 3: 動作確認

```bash
claude-local  # ローカルモデルで起動
```

Claude Codeで：


## スキルを使わせるコツ

:::warning Claude Codeがplaywright-cliを使ってくれない？
デフォルトではClaude Codeは`playwright-cli`の存在を知りません。以下の方法で認識させましょう。
:::

### 方法1: 明示的に指示する

プロンプトで**明示的に**`playwright-cli`を指定します：

```text
playwright-cli を使って https://example.com のスクリーンショットを撮って
```

最初に「`playwright-cli --help` を確認して」と言うのも効果的：

```text
playwright-cli --help を確認して、そのコマンドを使ってブラウザ操作をして
```

### 方法2: CLAUDE.mdにスキルを記述

プロジェクトのルートに `CLAUDE.md` を作成し、スキルを記述します：

```markdown title="CLAUDE.md"
# プロジェクト設定

## ブラウザ操作

このプロジェクトではブラウザ操作に **playwright-cli** を使用してください。
Web検索やFetchではなく、必ず playwright-cli コマンドを使ってください。

利用可能なコマンド:
- playwright-cli open <url> - ブラウザを開く
- playwright-cli snapshot - ページ構造を取得
- playwright-cli click <ref> - 要素をクリック
- playwright-cli type <text> - テキスト入力
- playwright-cli screenshot - スクリーンショット
```

### 方法3: セッション開始時に宣言

Claude Codeを起動したら、最初にこう言います：

```text
このセッションではブラウザ操作に playwright-cli を使います。
playwright-cli --help で使い方を確認してください。
```

これでClaude Codeが`playwright-cli`の存在を認識し、以降のブラウザ操作で使ってくれます。

```text
> playwright-cli --help を確認して、https://example.com のスクリーンショットを撮って
```

## 公式SKILLSリファレンス

Playwright CLIには公式のSKILLSファイルがあります。以下は主要なコマンド：

### Quick Start

```bash
playwright-cli open                        # ブラウザを開く
playwright-cli goto https://playwright.dev # URLに移動
playwright-cli click e15                   # 要素refでクリック
playwright-cli type "page.click"           # テキスト入力
playwright-cli press Enter                 # Enterキー
playwright-cli screenshot                  # スクリーンショット
playwright-cli close                       # ブラウザを閉じる
```

### Core Commands

```bash
playwright-cli open https://example.com     # ページを開く
playwright-cli goto https://example.com     # URLに移動
playwright-cli type "検索キーワード"          # テキスト入力
playwright-cli click e3                      # 要素をクリック（refで指定）
playwright-cli fill e5 "user@example.com"   # 入力欄に値を設定
playwright-cli select e9 "option-value"     # セレクトボックス選択
playwright-cli check e12                     # チェックボックスON
playwright-cli uncheck e12                   # チェックボックスOFF
playwright-cli upload ./document.pdf        # ファイルアップロード
playwright-cli snapshot                      # ページ構造を取得
playwright-cli screenshot                    # スクリーンショット
```

### Navigation

```bash
playwright-cli go-back       # 戻る
playwright-cli go-forward    # 進む
playwright-cli reload        # リロード
```

### Keyboard

```bash
playwright-cli press Enter
playwright-cli press ArrowDown
playwright-cli keydown Shift
playwright-cli keyup Shift
```

### Tabs

```bash
playwright-cli tab-list       # タブ一覧
playwright-cli tab-new        # 新しいタブ
playwright-cli tab-new https://example.com  # URLを指定して新しいタブ
playwright-cli tab-select 0   # タブを選択
playwright-cli tab-close      # タブを閉じる
```

### Storage（Cookie/LocalStorage）

```bash
# 状態の保存・読み込み
playwright-cli state-save auth.json
playwright-cli state-load auth.json

# Cookie操作
playwright-cli cookie-list
playwright-cli cookie-get session_id
playwright-cli cookie-set session_id abc123
playwright-cli cookie-clear

# LocalStorage操作
playwright-cli localstorage-list
playwright-cli localstorage-get theme
playwright-cli localstorage-set theme dark
```

### Sessions

```bash
playwright-cli list                            # セッション一覧
playwright-cli -s=myproject open https://example.com  # 特定セッションで操作
playwright-cli open --persistent               # 永続セッション（Cookie保存）
playwright-cli close-all                       # 全セッション終了
playwright-cli kill-all                        # 強制終了
```

### DevTools

```bash
playwright-cli console       # コンソールログ
playwright-cli network       # ネットワークリクエスト
playwright-cli tracing-start # トレース開始
playwright-cli tracing-stop  # トレース終了
playwright-cli video-start   # 動画記録開始
playwright-cli video-stop video.webm  # 動画記録終了
```

## Snapshots

各コマンド実行後、Playwright CLIはページの**スナップショット**を返します：

```text
> playwright-cli goto https://example.com
Page URL: https://example.com/
Page Title: Example Domain
Snapshot: .playwright-cli/page-2026-02-19T13-30-00.yml
```

スナップショットには要素の**ref（e1, e2, e15など）** が含まれており、これを使ってクリックや入力を行います。

## 実践例

### 例1: フォーム入力

```bash
playwright-cli open https://example.com/form
playwright-cli snapshot
playwright-cli fill e1 "user@example.com"
playwright-cli fill e2 "password123"
playwright-cli click e3
playwright-cli snapshot
playwright-cli close
```

### 例2: 複数タブ操作

```bash
playwright-cli open https://example.com
playwright-cli tab-new https://example.com/other
playwright-cli tab-list
playwright-cli tab-select 0
playwright-cli snapshot
playwright-cli close
```

### 例3: 認証状態の保存

```bash
# ログイン後に状態を保存
playwright-cli state-save auth.json

# 次回は状態を読み込んでスキップ
playwright-cli open --persistent
playwright-cli state-load auth.json
```

## トラブルシューティング

### ブラウザが起動しない

```bash
npx playwright install chromium
```

### セッションが残っている

```bash
playwright-cli kill-all
```

### 要素が見つからない

```bash
playwright-cli snapshot
```

スナップショットで要素のrefを確認。

## まとめ

**ポイント**：

1. **CLI方式を使う** - MCPより安定している
2. **公式SKILLSを使う** - `playwright-cli install --skills`
3. **snapshotでref確認** - 要素はe1, e2などのrefで指定
4. **セッションを活用** - ログイン状態を保持

## 参考リンク

- [Playwright CLI（Microsoft）](https://github.com/microsoft/playwright-cli)
- [公式SKILLS](https://raw.githubusercontent.com/microsoft/playwright-cli/main/skills/playwright-cli/SKILL.md)
- [Playwright公式](https://playwright.dev/)
- [前回の記事: Claude Codeローカル化](/tech/dgx-spark-claude-code-local)

---

*この記事は2026年2月時点の情報です。*
