この記事ではAIエージェントに特化して解説します。AIエージェント全般は AIエージェントフレームワーク比較2026年版 をご覧ください。
OpenCLIとは:Webもアプリもバイナリも「1つのCLI」に統一するOSS
OpenCLIは、Webサイト・ブラウザセッション・Electronアプリ・ローカルツールを決定論的なCLIインターフェースに変換するオープンソースプラットフォームだ。npmパッケージ @jackwener/opencli として公開されており、Node.js 21以上の環境で動作する。
従来、AIエージェントが複数のツールやサービスを操作するには、個別のAPI連携やスクレイピング処理を手書きで実装する必要があった。OpenCLIはこの問題を「すべてをCLI化する」というアプローチで解決する。Bilibili、Reddit、HackerNews、Twitter/X、Zhihu、Xiaohongshuなど87以上のサイト・サービスに対応する組み込みアダプタを備え、さらに gh、docker、obsidian などの外部CLIもハブとして統一管理できる。
AIエージェント向けの自律ツール操作基盤としては、OpenHandsのようなコーディング特化型エージェントとは異なるレイヤーを担う。OpenHandsがコード生成・修正を自動化するのに対し、OpenCLIはあらゆるツール・サービスへの統一アクセス層を提供する。このレイヤー分離は、AIエージェントの設計思想として重要な意味を持つ。エージェントが直接API・DOM・プロトコルを扱うのではなく、CLIという統一面を介して操作することで、エージェント側のロジックは「コマンドを発行するだけ」という極めてシンプルな形に保たれる。
# インストール
npm install -g @jackwener/opencli
# 環境チェック(デーモン・拡張機能・ブラウザ接続の自動診断)
opencli doctor
# 利用可能なコマンド一覧
opencli list
opencli reddit hot)で設計されている。AIエージェントは `opencli list` の出力を読むだけで、利用可能な全コマンドを自動発見できるため、ドキュメントを逐次読み込む必要がない。
OpenCLIはWeb・Electronアプリ・ローカルバイナリを「1つのCLI」に統一するプラットフォーム
87以上の組み込みアダプタと外部CLIハブ機能でエージェントのツール連携を劇的に簡素化
Node.js 21以上で動作し、npmワンコマンドで導入できる低摩擦設計
アーキテクチャ:3つの自動化レイヤーの仕組み
OpenCLIは3つの異なる自動化レイヤーを提供し、タスクの性質に応じて使い分ける設計になっている。
87+ サイト対応"] B --> D["ブラウザ直接操作
click / type / screenshot"] B --> E["外部CLIハブ
gh / docker / obsidian"] B --> F["Electronアダプタ
Cursor / Notion / Discord"] C -->|"Browser Bridge"| G["Chrome / Chromium
ログイン済みセッション再利用"] D -->|"CDP"| G F -->|"CDP"| H["デスクトップアプリ"] E -->|"パススルー"| I["ローカルバイナリ"]
レイヤー1:組み込みアダプタは、サイト固有のコマンドを決定論的に実行する。opencli hackernews top や opencli reddit hot のように、同じコマンドは常に同じスキーマの出力を返す。パイプライン処理やCI/CDに適している。内部ではBrowser Bridgeがログイン済みのChromeセッションを再利用するため、APIキーやOAuthトークンを別途設定する必要がない。
レイヤー2:ブラウザ直接操作は、opencli browser コマンドでページ上のクリック・入力・スクリーンショット・DOM取得などをリアルタイムで実行する。アダプタが存在しないサイトや、対話的な操作が必要なタスクに使う。Playwright/Puppeteerと異なり、ヘッドレスブラウザを別起動せず、ユーザーが普段使っているブラウザに直接アタッチするため、ログインやCAPTCHAを人間が1度解けばそのままエージェントが操作を引き継げる。
レイヤー3:外部CLI・Electronアダプタは、ローカルのCLIツールやデスクトップアプリをOpenCLIの統一検索面に統合する。opencli register mycli で独自ツールを登録でき、AIエージェントが opencli list で自動発見できるようになる。社内独自のツールチェーンを抱えるチームでも、既存CLIを1行登録するだけで、同じ統一操作面に取り込める設計だ。
この3層構造は「最適化済みのレーン」「汎用レーン」「拡張レーン」という役割分担に対応している。頻繁に使う操作は組み込みアダプタで決定論的に実行し、未対応サイトはブラウザ操作でカバーし、独自ツールは外部CLI層で統合する——タスクの性質に応じて自然に使い分けられる。
組み込みアダプタ/ブラウザ直接操作/外部CLI統合という3層構造
既存ChromeのログインセッションをBrowser Bridge経由で再利用する設計
独自CLIも `opencli register` で統一検索面に加われる拡張性
導入手順:インストールからブラウザ連携まで
OpenCLIのセットアップは3ステップで完了する。ブラウザ連携を使うには、Browser Bridge拡張機能のインストールが必要だ。
ステップ1:npmパッケージのインストール
npm install -g @jackwener/opencli
# バージョン確認
opencli --version
ステップ2:Browser Bridge拡張機能の導入
ブラウザ連携コマンド(サイトアダプタ、ブラウザ操作)を使うには、Chrome/Chromiumに軽量な拡張機能をインストールする。
- GitHubのReleasesページから
opencli-extension.zipをダウンロード chrome://extensionsを開き、デベロッパーモードを有効化- 「パッケージ化されていない拡張機能を読み込む」で解凍フォルダを選択
デーモン(ローカルHTTPブリッジ)はコマンド実行時に自動起動するため、手動で管理する必要はない。
ステップ3:環境の検証
# ブラウザ接続・デーモン・拡張機能の状態を一括診断
opencli doctor
# 動作確認:HackerNewsのトップ記事を取得
opencli hackernews top --limit 5
# 出力形式を変更(json / yaml / csv / md / table)
opencli hackernews top --limit 5 -f json
opencli doctor は接続問題を自動診断するだけでなく、デーモンや拡張機能の未起動を検知して自動修復する「自己修復」機能を持っている。AIエージェントがCI/CD上でOpenCLIを呼ぶ場合、この doctor コマンドを起動フックに組み込むと、環境構成のドリフトを自動で吸収できる。
トラブルシューティングで典型的に出る症状と対応関係は以下の通りだ。
| 症状 | 終了コード | 対応アクション |
|---|---|---|
| Browser Bridge拡張機能が未起動 | 69 | chrome://extensions で拡張機能を有効化 |
| Chromeが未起動 | 69 | ログイン済みChromeを起動 |
| 認証セッション切れ(Spotify/Twitter等) | 77 | 対象サイトにブラウザから再ログイン |
| デーモンポート競合 | 1 | OPENCLI_DAEMON_PORT で別ポート指定 |
インストール→Browser Bridge拡張機能→`doctor` 検証の3ステップで導入完了
デーモンはコマンド実行時に自動起動、手動管理が不要
`opencli doctor` が環境問題を自己診断・自己修復する
組み込みアダプタ:87以上のサイトをコマンド1つで操作
OpenCLIの最大の特徴は、事前構築済みの豊富なアダプタだ。以下は主要なサイトと利用可能なコマンドの一部。
| プラットフォーム | 主要コマンド | 用途 |
|---|---|---|
| HackerNews | top search |
テック系トレンド取得 |
hot search subreddit comment |
コミュニティ情報収集 | |
| Twitter/X | trending search post like follow |
SNS自動化・情報収集 |
| Bilibili | hot search download subtitle |
動画プラットフォーム操作 |
| Xiaohongshu | search note download publish |
コンテンツ取得・投稿 |
| GitHub (gh) | pr list issue create 等 |
開発ワークフロー |
| Spotify | play pause search queue |
音楽再生制御 |
| Amazon | bestsellers search product |
EC情報取得 |
| Gemini | ask deep-research |
AI API操作 |
さらに、Cursor、Notion、Discord、ChatGPTなどのデスクトップElectronアプリもCDP(Chrome DevTools Protocol)経由で操作できる。MCPサーバーの構築に興味がある方は、MCPサーバーの作り方ガイドも参照してほしい。OpenCLIとMCPは異なるアプローチだが、AIエージェントのツール拡張という同じ課題を解決する。
# 複数プラットフォームのトレンドを一括取得
opencli hackernews top --limit 10 -f json | jq '.[] | .title'
opencli reddit hot --limit 10 -f json
opencli bilibili hot --limit 5
# Electronアプリの操作
opencli cursor composer "Refactor the auth module"
opencli notion search query="プロジェクト計画"
どのアダプタも共通の「出力契約」を守るため、コマンド名が変わっても後処理(jqやスクリプト)を書き換える必要が少ない。たとえば「タイトル一覧を取り出す」だけなら、HackerNewsでもRedditでもBilibiliでも jq '.[] | .title' の1パターンで通る。この一貫性がエージェントの再利用性を大きく高めている。
HackerNews/Reddit/X/Bilibili/GitHubなど87以上の主要サイトに即対応
Cursor・Notion・Discord等のElectronアプリもCDP経由で制御可能
出力スキーマが統一されているため、jqなど後段処理が使い回せる
AIエージェント向け機能:自動アダプタ生成とブラウザ操作
OpenCLIが単なるスクレイピングツールと決定的に異なるのは、AIエージェントが新しいアダプタを自律生成できる仕組みを備えている点だ。
explore / synthesize / generate:未対応サイトの自動CLI化
対応サイトがまだない場合、3つのコマンドでアダプタを自動生成できる。
# 1. サイトのAPI・機能を自動探索
opencli explore https://example.com --site mysite
# 2. 探索結果からJSアダプタを自動生成
opencli synthesize mysite
# 3. ワンショット:探索→生成→登録を一発で実行
opencli generate https://example.com --goal "hot"
# 4. 認証戦略の自動探索(PUBLIC → COOKIE → HEADER)
opencli cascade https://api.example.com/data
cascade コマンドは認証が必要なAPIに対して、パブリックエンドポイント → Cookie認証 → カスタムヘッダーの順に自動でフォールバック戦略を探索する。ForgeCodeのようなAIコーディングツールと組み合わせれば、アダプタ生成からコード修正まで一貫した自動化パイプラインが構築できる。
browser:リアルタイムブラウザ操作
アダプタでカバーできない対話的操作には、opencli browser でページを直接制御する。
# ページを開く
opencli browser open "https://example.com"
# 要素をクリック
opencli browser click "#login-button"
# テキスト入力
opencli browser type "#search-box" "AI agent framework"
# スクリーンショット取得
opencli browser screenshot --output ./capture.png
# ページの現在状態を取得
opencli browser state
利用可能なブラウザコマンドは open、state、click、type、select、keys、wait、get、screenshot、scroll、back、eval、network、init、verify、close の16種類。Chrome/Chromiumのログイン済みセッションをそのまま再利用するため、認証情報がブラウザ外に出ることはない。Cookieやトークンをエージェント側で扱わずに済むこのモデルは、セキュリティ監査・社内ガイドラインの観点でも通しやすい。
opencli explore で生成されるアダプタはJavaScriptファイルとして保存されるため、Gitで差分管理できる。AIエージェントが生成したアダプタを人間がレビュー・微修正してマージする「半自動化パイプライン」を組むと、信頼性と開発速度を両立できる。
`explore` → `synthesize` → `generate` で未対応サイトのアダプタを自動生成
`cascade` が認証戦略をPUBLIC→COOKIE→HEADERで自動フォールバック
`browser` の16コマンドでアダプタ不要の対話的操作をカバー
競合ツールとの比較:なぜOpenCLIを選ぶのか
| 比較項目 | OpenCLI | Make / Zapier | Selenium / Playwright | MCPサーバー |
|---|---|---|---|---|
| 対象範囲 | Web・アプリ・バイナリ全対応 | SaaS API特化 | Webブラウザのみ | AI↔ツール接続 |
| AIエージェント統合 | 自動発見・自動実行 | 手動フロー設計 | コード記述必要 | プロトコル準拠 |
| LLMコスト | ゼロ(決定論的実行) | N/A | N/A | ツール呼び出し時にトークン消費 |
| アダプタ自動生成 | explore → generate | なし | なし | 手動実装 |
| 認証方式 | ブラウザセッション再利用 | OAuth / APIキー | 独自実装 | 独自実装 |
| 出力の再現性 | 決定論的(同一スキーマ保証) | ワークフロー依存 | DOM構造依存 | ツール実装依存 |
| プラグイン拡張 | plugin install で即追加 |
マーケットプレイス | ライブラリ依存 | サーバー追加 |
OpenCLIの差別化ポイントは3つある。第一に、LLMコストゼロで決定論的な出力を返すこと。同じコマンドを1万回実行してもAPIトークンは消費されない。第二に、ブラウザのログイン済みセッションを再利用するため、OAuthトークン管理やAPIキー設定が不要なこと。第三に、explore / generate によるアダプタ自動生成で、未対応サイトへの対応コストが極めて低いこと。
Make/Zapierは特定SaaSの連携に最適化された優れたツールだが、ローカルバイナリやElectronアプリには対応しない。Selenium/Playwrightはブラウザ自動化に強いが、AIエージェントからの自動発見・実行には追加の設計が必要になる。MCPサーバーは「エージェントにツールを見せる」プロトコルとして優秀だが、実行本体は別途実装が必要で、ここをOpenCLIに任せるとMCPサーバーの記述量を大幅に減らせる。
LLMコストゼロ・決定論的出力・ブラウザセッション再利用の3点で競合と差別化
Make/Zapier/Selenium/Playwright/MCPとは対象範囲も抽象レベルも異なる
アダプタ自動生成により、未対応サイトの追加コストが限りなく低い
設定と環境変数:本番運用のチューニング
OpenCLIの挙動は環境変数で細かく制御できる。
| 環境変数 | デフォルト | 用途 |
|---|---|---|
OPENCLI_DAEMON_PORT |
19825 |
デーモンのHTTPポート |
OPENCLI_BROWSER_CONNECT_TIMEOUT |
30 |
ブラウザ接続タイムアウト(秒) |
OPENCLI_BROWSER_COMMAND_TIMEOUT |
60 |
コマンド実行タイムアウト(秒) |
OPENCLI_BROWSER_EXPLORE_TIMEOUT |
120 |
explore/record操作タイムアウト(秒) |
OPENCLI_CDP_ENDPOINT |
— | リモートブラウザ用CDPエンドポイント |
OPENCLI_VERBOSE |
false |
詳細ログ出力 |
OUTPUT |
— | 出力形式の強制指定(json/yaml/table) |
# タイムアウトを延長してexploreを実行
OPENCLI_BROWSER_EXPLORE_TIMEOUT=300 opencli explore https://complex-site.com --site mysite
# JSON出力をjqでパイプ処理
OUTPUT=json opencli bilibili hot | jq '.[] | {title, views}'
# デーモンの状態確認
curl localhost:19825/status
# デーモンのログ確認
curl localhost:19825/logs
Unixの sysexits.h 規約に準拠した終了コードを返すため、シェルスクリプトやCI/CDパイプラインとの統合も容易だ。終了コード 69 はBrowser Bridge未接続、77 は認証切れを意味する。
# 認証切れの自動検知と再認証
opencli spotify status || echo "exit $?"
[ $? -eq 77 ] && echo "ログインが必要です"
運用面では、AIエージェントが長時間走るワーカーとして稼働するケースを想定し、OPENCLI_BROWSER_COMMAND_TIMEOUT を60秒程度、OPENCLI_BROWSER_EXPLORE_TIMEOUT を120〜300秒に設定しておくと、サイト側が重いときの誤停止を抑えられる。詳細ログは OPENCLI_VERBOSE=true でオンにできるが、本番では出力量が増えるため、再現調査時だけ一時的に有効化する運用が現実的だ。
環境変数でデーモンポート・タイムアウト・出力形式を細かく制御
`sysexits.h` 準拠の終了コードでシェル/CIと統合しやすい
`OUTPUT=json` + `jq` でエージェントが扱いやすい構造化データに変換可能
プラグインで拡張:コミュニティ製アダプタの導入
OpenCLIはプラグインシステムで機能を拡張できる。コミュニティが開発したアダプタを plugin install コマンドで即座に追加可能だ。
# プラグインのインストール
opencli plugin install github:ByteYue/opencli-plugin-github-trending
# インストール済みプラグインの一覧
opencli plugin list
# 全プラグインの一括更新
opencli plugin update --all
公開されている主要プラグインには、GitHub Trendingリポジトリ取得、マルチプラットフォームのトレンド集約、掘金(Juejin)のホット記事取得、VK(VKontakte)のウォール・フィード操作などがある。独自プラグインの開発も可能で、clis/ フォルダにJSアダプタを配置するだけで自動登録される「ダイナミックローダー」方式を採用している。
AIエージェントの開発フレームワーク選定については、AIエージェントフレームワーク比較の記事も参考になるだろう。OpenCLIは特定のフレームワークに依存せず、どのエージェントからでもCLI経由で呼び出せる汎用的なツール層として機能する。
プラグインシステムの真価は「OSS全体の開発効率」にある。1人が作ったアダプタを他のエージェント開発者が再利用できるため、「X社のサイトに対応する」という作業が重複せず、コミュニティ全体で資産化されていく。フォーク・PR・バージョン管理といったGitHubネイティブのフローに乗っているのも、普及を後押しする要素だ。
`plugin install` でコミュニティ製アダプタを即追加・一括更新が可能
`clis/` フォルダへの配置だけで自動登録されるダイナミックローダー方式
GitHubネイティブのOSSフローでアダプタ資産をコミュニティ全体で共有
📌 まとめ:OpenCLIが変えるAIエージェントのツール連携
OpenCLIは「すべてをCLI化する」という明快なアプローチで、AIエージェントのツール連携の複雑さを解消するプロジェクトだ。87以上の組み込みアダプタ、ブラウザ直接操作、外部CLI統合、Electronアプリ対応という4つの柱で、あらゆるツールへの統一アクセス層を提供する。
特に注目すべきは、LLMコストゼロの決定論的実行とアダプタ自動生成の組み合わせだ。既存のSelenium/Playwrightベースの自動化とは異なり、AIエージェントが自律的にツールを発見・学習・実行できるエコシステムを構築できる。1万回コマンドを叩いてもAPIコストが発生しない点は、長時間走るエージェントやバッチ処理の設計上、極めて大きな意味を持つ。
開発はTypeScript/Node.jsベースで、Apache 2.0ライセンスのもと活発に進行中。AIエージェント開発に携わるエンジニアにとって、ツール連携層の選択肢として検討する価値がある。まずは npm install -g @jackwener/opencli と opencli doctor を実行し、HackerNewsやRedditのトレンド取得から動作確認を始めてみるのが最短ルートだ。
OpenCLIは4つの柱(組み込みアダプタ・ブラウザ操作・外部CLI・Electron対応)で統一アクセス層を提供
LLMコストゼロ×決定論的実行×アダプタ自動生成が競合との決定的な差
npm導入から `opencli doctor` までワンライナーで試せるため、まずは触れてみる価値がある