Pinchtab:AI エージェント向け12MBのGoブラウザAPI
Pinchtab: AI エージェント向け12 MBのGoブラウザAPI
AI エージェントは信頼性が高く、低コストでウェブページを読んだり、対話したり、制御したりする必要があります。既存の Playwright、Puppeteer、Browser Use などは、重いランタイム、厳格な言語バインディング、あるいは不要なオーバーヘッドを伴うことが多いです。Pinchtab は、1つの自己完結型 Go バイナリで、ヘッドレス Chrome インスタンスを起動し、純粋な HTTP API を公開し、トークン効率が高く、大規模で読み込みの多いワークロードに適しています。
Pinchtab とは
- スタンドアロン HTTP サーバ – 言語 SDK は不要。curl、Python、Rust、OpenAI エージェントなどどのクライアントからも通信可能。
- 12 MB Go バイナリ –
go buildで生成、ランタイム時に外部依存は無し。 - Chrome をバックエンドに – 実際の Chromium を管理しつつ、整った API で抽象化しています。
- 双方向モード –
headlessで完全自動化パイプライン、headedで人間インタラクション付きワークフロー。 - 組み込みステルス –
navigator.webdriverを自動でパッチし、User‑Agent などを偽装。 - セッション永続化 – クッキーとローカルストレージは再起動後も保持。マルチステップログインに便利。
- トークン効率の高い出力 –
/text(~800 トークン) と?filter=interactive(~3 600 トークン) スナップショットモードで、LLM へ入力する際のコストを削減。
結果は「LLM プラグインのように感じるブラウザツール」です。起動が速く、使いやすく、非常に設定可能です。
Pinchtab が優れている理由
| 機能 | Pinchtab | Playwright MCP | Browser Use |
|---|---|---|---|
| バイナリサイズ | 12 MB 単一バイナリ | 10 + GB 依存ツリー | 5 GB コンテナ |
| プロトコル | REST + WebSocket | CDP + カスタムラッパー | WebSocket + RPC |
| 移植性 | Go クロスコンパイル | Node.js ランタイム | Docker 必須 |
| トークンコスト | /text 800 tokens/ページ |
フルスナップショット 10 k+ tokens | 10 k+ tokens |
| ヘッドレス/ヘッド付き | 組み込みトグル | CLI でヘッドレスのみ | ヘッドレスのみ |
| ステルス | 組み込みパッチ | カスタムスクリプト必要 | ネイティブサポートなし |
ページを読むだけ、ボタンをクリックするだけなら、Pinchtab のテキストやインタラクティブスナップショットは、ビジョンモデルで完全スクリーンショットを撮るより 3–10 倍 安く、トークンコストを大幅に抑えられます。
はじめに
1. インストール
# ソースから
$ go install github.com/pinchtab/pinchtab@latest
# もしくは Docker(最も手軽)
$ docker run -d -p 9867:9867 --security-opt seccomp=unconfined pinchtab/pinchtab
デフォルトでリッスンするポートは 9867。BRIDGE_PORT=9870 ./pinchtab で上書き可能です。
2. 基本的な curl の使い方
# ヘルスチェック
$ curl http://localhost:9867/health
# ページを読む
$ curl http://localhost:9867/text?tabId=1
# 参照でボタンをクリック(スナップショットで取得した ID)
$ curl -X POST http://localhost:9867/action \
-d '{"kind":"click","ref":"e5"}'
全てのエンドポイントは純粋な JSON を返します。詳細は API セクションをご覧ください。
3. ヘッド付きモード(人間+エージェント)
$ BRIDGE_HEADLESS=false ./pinchtab
ブラウザーウィンドウを開き、ログイン、CAPTCHA の解決後、エージェント側から同じプロファイルの API(例: http://localhost:9869)を利用します。プロファイルは ~/.pinchtab/profiles/<name>/ に保存され、再起動時も保持されます。
4. ダッシュボードの使用
$ pinchtab dashboard
# ブラウザーで http://localhost:9867/dashboard を開く
# プロファイルの作成/インポート、ヘッド付きインスタンスの起動・停止
ダッシュボードは複数プロファイルとインスタンスを管理するシンプルな UI を提供します。
コア API の概要
| メソッド | パス | 説明 |
|---|---|---|
| GET | /health |
サーバー状態 |
| GET | /tabs |
開いているタブの一覧 |
| GET | /snapshot |
アクセシビリティツリー(構造化 JSON) |
| GET | /screenshot |
JPEG 画像 |
| GET | /text |
ページテキスト (readability または raw) |
| POST | /navigate |
URL に移動 |
| POST | /action |
クリック、タイプ、スクロールなど |
| POST | /evaluate |
任意の JavaScript を実行 |
| POST | /tab |
タブのオープン/クローズ |
| POST | /tab/lock / /unlock |
タブへの排他アクセスをロック |
スナップショットのクエリパラメータ
filter=interactive– ボタン、リンク、入力要素のみを含む、サイズを削減。format=text– プレーンテキストツリー、JSON より 40–60 % トークン削減。diff=true– 前回のスナップショットとの差分のみを返す。noAnimations=true– CSS アニメーションを無効化し、決定論的な出力を実現。
テキストのクエリパラメータ
mode=raw– 生の inner‑text;それ以外は readability によって広告やナビゲーションを除外。
高度な機能
ステルスモード
Pinchtab は light(基本フラグ)と full(カンバス/WebGL/フォント偽装)という二段階ステルスを提供します。BRIDGE_STEALTH=fullで有効化。強力なボット検出対策が必要なサイトで必須です。
セッション永続化
デフォルトでは Cookie、ローカルストレージ、さらに開いているタブを ~/.pinchtab に書き出します。BRIDGE_PROFILE=/my/profile でカスタムディレクトリを指定できます。ヘッドレスモードでは POST /cookies で Cookie を直接注入可能です。
画像 & メディアブロック
BRIDGE_BLOCK_IMAGES=true または BRIDGE_BLOCK_MEDIA=true を設定すると帯域を削減し、スナップショットの高速化に貢献します。
カスタム Chrome フラグ
任意の Chrome フラグを CHROME_FLAGS="--no-sandbox --disable-gpu" で渡せます。CI 環境やリソース制限で便利です。
セキュリティ上の注意点
Pinchtab は実際のブラウザを介してエージェントに直接制御を与えます。必ず以下を守ってください。
- HTTP エンドポイントを
BRIDGE_TOKENで保護。 - 制限付きネットワーク/ファイアウォールの背後で稼働。
- 実験的なエージェントには使い捨て Chrome プロファイルを使用。
バイナリは外部にデータを送信しません。~/.pinchtab はパスワードと同様に保護してください。
ダッシュボードを使った操作のクイックリファレンス
# ダッシュボード起動
$ pinchtab dashboard
# UI 上で
# 1. プロファイルをインポート(「Import Profile」クリック)
# 2. 新しいインスタンスを起動(ヘッド付き/ヘッドレスを選択)
# 3. エージェントで返ってくる API URL を使用
ダッシュボードは POST /start/{id} と /stop/{id} を公開し、プログラムからライフサイクルを制御できます。
よくあるユースケース
| ユースケース | Pinchtab のメリット | 例 |
|---|---|---|
| ウェブスクレイピング | 高速で低トークンのテキスト抽出 | 100 ページのニュース記事を $0.05 程度で収集 |
| AI 補助チャットボット | スムーズなブラウザ統合 | OpenAI LLM がリアルタイムでクリックアクションを送信 |
| 自動テスト | 視覚デバッグのためヘッド付きモード | Docker Compose + ヘッド付きインスタンスで統合テスト実行 |
| データパイプライン | セッションを保持して再利用 | 一度ログインして毎日レポート取得 |
結論
Pinchtab は、ブラウザを AI ワークフローに組み込む際の摩擦を解消する実用的かつオープンソースのソリューションです。その軽量構成、HTTP ファーストのインターフェース、トークン効率の高い出力は、読み書き・操作を必要とする次世代 AI エージェントに最適です。12 MB のバイナリはノートパソコン、サーバー、Docker 内でも動作し、 API はまるで新しいプラグインのように感じられます。