
あらゆるWebアプリケーションをAPIに変える。Chrome拡張機能がブラウザトラフィックをキャプチャし、スキーマを自動生成し、AIが直接APIをリプレイできるようにする。公式APIは不要。
あらゆるWebアプリケーションをAPIに変える。 公式APIは不要。ブラウザ自動化も不要。
NeoはChrome拡張機能で、ブラウザが発行するすべてのAPI呼び出しを受動的にキャプチャし、パターンを学習し、AI(またはユーザー)が直接リプレイできるようにします。
現在、Webアプリケーションを操作するAIエージェントには、どちらも欠点のある2つの選択肢しかありません。
| アプローチ | 問題点 |
|---|---|
| 公式API | ほとんどのSaaSにはAPIがないか、機能の10%しか公開していない |
| ブラウザ自動化 | スクリーンショット → OCR → クリック。遅く、脆弱で、UI変更のたびに壊れる |
Neoは第三の方法です。 あらゆるWebアプリケーションにはすでに完全な内部APIが存在します。何かをクリックするたびにフロントエンドがそのAPIを呼び出しています。Neoはそれらの呼び出しをキャプチャし、リプレイ可能にします。
v2: UI自動化を追加。 Neo v2では、アクセシビリティツリーに基づくUIレイヤー(snapshot、click、fill、type、press、hover、scroll、select、screenshot、get、wait)を追加しました。APIが存在する場合は直接使用し、存在しない場合は同じCLIを通じてUIを操作できます。1つのツールで両方のレイヤーをカバーします。
通常通りブラウジング → NeoがすべてのAPIトラフィックを記録 → スキーマを自動生成 → AIがAPIを直接リプレイ
→ またはa11yツリー経由でUIを操作
Chrome拡張機能は、すべてのfetch()とXMLHttpRequest(URL、ヘッダー、リクエスト/レスポンスボディ、タイミング、さらにどのDOM要素が呼び出しをトリガーしたか)をインターセプトします。
ドメイン上でneo-schemaを実行すると、APIマップ(エンドポイント、必要な認証ヘッダー、クエリパラメータ、レスポンス構造、エラーコード)が自動生成されます。
Chrome DevTools Protocolを介して、ブラウザタブのコンテキスト内でAPI呼び出しを実行します。Cookie、CSRFトークン、セッション認証はすべて自動的に継承されます。トークン管理は不要です。
| ブラウザ | タイプ | 最適な用途 |
|---|---|---|
| Chrome / Chromium | フルブラウザ | APIキャプチャ + UI自動化(デフォルト) |
| Lightpanda | ヘッドレス(Zig) | AIエージェント、スクレイピング — 11倍高速、9倍メモリ節約 |
git clone https://github.com/4ier/neo.git
cd neo && npm install && npm run build
npm link # `neo`をグローバルで使用可能に
拡張機能を読み込む:
chrome://extensions を開くextension/dist/ を選択# Lightpandaをインストール
curl -L -o lightpanda https://github.com/lightpanda-io/browser/releases/download/nightly/lightpanda-x86_64-linux
chmod +x lightpanda && sudo mv lightpanda /usr/local/bin/
# Lightpandaを使用するようNeoを設定
# ~/.neo/config.json 内:
# { "chromePath": "/usr/local/bin/lightpanda", "browserType": "lightpanda", "cdpPort": 9222 }
neo start # Lightpanda CDPサーバーを起動
neo connect # 接続
neo open https://example.com
neo snapshot # 完全なa11yツリー
すべてのコマンドは単一のCLI neo <command> を介して実行します。
CDP(Chrome DevTools Protocol)が有効なブラウザが必要です。
# --- 接続とセッション ---
neo connect [port] # CDPに接続し、セッションを保存
neo connect --electron <app-name> # ElectronアプリのCDPポートを自動検出
neo launch <app> [--port N] # CDPを有効にしてElectronアプリを起動
neo discover # localhostで到達可能なCDPエンドポイントを検出
neo sessions # 保存されたセッションを一覧表示
neo tab # アクティブセッションのCDPターゲットを一覧表示
neo tab <index> | neo tab --url <pattern> # アクティブタブのターゲットを切り替え
neo inject [--persist] [--tab pattern] # Neoキャプチャスクリプトをターゲットに注入
# --- キャプチャとトラフィック ---
neo status # キャプチャデータの概要
neo capture summary # クイック概要
neo capture list github.com --limit 10 # リプレイ/詳細用のIDを表示
neo capture list --since 1h # 時間フィルター
neo capture domains
neo capture search "CreateTweet" --method POST
neo capture watch x.com # ライブテール(tail -f と同様)
neo capture stats x.com # メソッド/ステータス/タイミングの内訳
neo capture export x.com --since 2h > x.json
neo capture export x.com --format har > x.har # Postman/devtools向けHAR 1.2
neo capture import x-captures.json
neo capture prune --older-than 7d
neo capture gc x.com [--dry-run] # スマート重複排除
# --- APIリプレイと実行 ---
neo replay <capture-id> --tab x.com # キャプチャした呼び出しをリプレイ
neo exec <url> --method POST --body '{...}' --tab example.com --auto-headers
neo api x.com HomeTimeline # スマート呼び出し(スキーマ検索 + 自動認証)
# --- スキーマと分析 ---
neo schema generate x.com # キャプチャから生成
neo schema generate --all # 全ドメインを一括
neo schema show x.com [--json]
neo schema openapi x.com # OpenAPI 3.0仕様をエクスポート
neo schema diff x.com # 以前のバージョンからの変更点
neo schema coverage # スキーマがある/ないドメイン
neo label x.com [--dry-run] # セマンティックエンドポイントラベル
neo flows x.com [--window 5000] # API呼び出しシーケンスパターン
neo deps x.com [--min-confidence 1] # レスポンス→リクエストのデータ依存関係
neo workflow discover|show|run <name> # マルチステップワークフローの発見とリプレイ
neo suggest x.com # AI機能分析
neo export-skill x.com # エージェント対応のSKILL.mdを生成
# --- UI自動化(v2) ---
neo snapshot [-i] [-C] [--json] # @refマッピング付きa11yツリー
neo click @ref [--new-tab] # @refで要素をクリック
neo fill @ref "text" # 入力欄をクリアしてテキストを入力
neo type @ref "text" # 入力欄にテキストを追加
neo press <key> # キーボードキー(Ctrl+a、Enterなど対応)
neo hover @ref # 要素にホバー
neo scroll <dir> [px] [--selector css] # 方向指定でスクロール
neo select @ref "value" # ドロップダウンの値を設定
neo screenshot [path] [--full] [--annotate] # スクリーンショットを撮る
neo get text @ref | neo get url | neo get title # 情報を取得
neo wait @ref | neo wait --load networkidle | neo wait <ms> # 要素/ロード/時間を待機
# --- ページ操作 ---
neo read github.com # 読みやすいテキストを抽出
neo eval "document.title" --tab github.com # ページ内でJSを実行
neo open https://example.com # URLを開く
# --- モックとブリッジ ---
neo mock x.com [--port 8080 --latency 200] # スキーマからモックサーバーを生成
neo bridge [--json] [--interactive] # リアルタイムWebSocketキャプチャストリーム
# --- 診断 ---
neo doctor # Chrome、拡張機能、スキーマをチェック
neo reload # CLIから拡張機能をリロード
neo tabs [filter] # 開いているChromeタブを一覧表示
NeoはChromeだけではありません。CDPをサポートする任意のアプリ(Electronアプリを含む)で動作します:
# VS CodeをCDPで起動して接続
neo launch code --port 9230
neo snapshot # VS Codeのアクセシビリティツリーを表示
neo click @14 # メニュー項目をクリック
# または、すでに実行中のElectronアプリに接続
neo connect --electron slack
# Neoのキャプチャスクリプトを任意のCDPターゲットに注入
neo inject --persist # ページナビゲーション後も持続
neo inject --tab slack # 特定のタブをターゲット
セッションは自動的に保存されます。`--session`で切り替え:
```bash
neo --session vscode snapshot
neo --session chrome api x.com HomeTimeline
Neo v2では、アクセシビリティツリーに基づく完全なUI操作レイヤーを追加しました。スクリーンショット、座標、ピクセルマッチングは不要です:
# 1. スナップショットを撮る — 各インタラクティブ要素に@refが付与される
neo snapshot
# @1 button "Sign in"
# @2 textbox "Search"
# @3 link "Pricing"
# 2. @refで操作
neo click @1
neo fill @2 "AI agents"
neo press Enter
neo screenshot results.png --full
これにより、AIエージェントは高速かつセマンティックな方法で任意のUIと対話できます。APIキャプチャと組み合わせてデュアルチャネルアプローチを実現:APIが存在する場合はAPIを使用し、存在しない場合はUIにフォールバックします。
ブリッジは、拡張機能とCLIの間に永続的なWebSocketチャネルを作成します。拡張機能は自動的にws://127.0.0.1:9234に接続し、すべてのキャプチャをリアルタイムでストリームします。インタラクティブモードでは、拡張機能に直接クエリを実行できます:ping、status、capture.count、capture.list、capture.domains、capture.search、capture.clear。