AutoCLI

April 7, 2026 · View on GitHub

旧名 opencli-rs。v0.2.4 より AutoCLI に改名。

English | 中文 | 日本語

autocli

https://autocli.ai — AI 駆動アダプターマーケットプレイス&クラウド API


更新履歴

v0.3.2

  • Chrome 拡張セレクターツール — 必要なコアデータを選ぶだけで、ページ要素をビジュアルに精確選択し、CSS セレクターで目的のコンテンツを正確にターゲット
  • AutoCLI.ai による AI 生成 — 選択したデータを基に、AI が関連フィールドを自動拡張・発見し、完全なスクレイピングルールを生成
  • ローカル + クラウド同期 — 生成されたアダプターは自動保存& AutoCLI.ai に同期、即座に利用可能

超高速・メモリ安全なコマンドラインツール —— 1コマンドであらゆるWebサイトの情報を即座に取得。Twitter/X、Reddit、YouTube、HackerNews、Bilibili、知乎、小紅書など 55以上のサイトをカバーし、Electron デスクトップアプリの制御やローカル CLI ツール(ghdockerkubectl)の統合もサポート。ブラウザセッションの再利用と AI ネイティブディスカバリー機能により駆動されます。

OpenCLI(TypeScript)を 純 Rust で完全リライト。機能は同等で、最大12倍高速メモリ使用量1/10単一ファイル 4.7MB、ランタイム依存ゼロ。

OpenClaw/Agent の最良のパートナー —— AI Agent にウェブ全体の情報にアクセスする能力を与え、1コマンドで55以上のサイトのリアルタイムデータを取得。 AI Agentのために設計: AGENT.md.cursorrulesautocli list を設定すれば、AI が利用可能な全ツールを自動的に発見できます。ローカル CLI を登録(autocli register mycli)すれば、AI があなたの全ツールを完璧に呼び出せます。

🚀 パフォーマンス比較

指標🦀 autocli (Rust)📦 opencli (Node.js)改善
💾 メモリ使用量 (Public コマンド)15 MB99 MB6.6x
💾 メモリ使用量 (Browser コマンド)9 MB95 MB10.6x
📏 バイナリサイズ4.7 MB~50 MB (node_modules)10x
🔗 ランタイム依存なしNode.js 20+ゼロ依存
テスト通過率103/122 (84%)104/122 (85%)ほぼ同等

⚡ 実測コマンド所要時間比較:

コマンド🦀 autocli📦 opencli高速化倍率
bilibili hot1.66s20.1s🔥 12x
zhihu hot1.77s20.5s🔥 11.6x
xueqiu search 茅台1.82s9.2s5x
xiaohongshu search5.1s14s2.7x

122コマンド(55サイト)の自動テストに基づく。macOS Apple Silicon 環境。

機能

  • 55サイト、333コマンド —— Bilibili、Twitter、Reddit、知乎、小紅書、YouTube、Hacker News などをカバー
  • ブラウザセッション再利用 —— Chrome 拡張機能でログイン済み状態を再利用、トークン管理不要
  • 宣言型 YAML Pipeline —— YAML でデータ取得フローを記述、コードゼロで新しいアダプターを追加
  • AI ネイティブディスカバリー —— explore でサイト API を分析、generate で1コマンドでアダプターを自動生成、cascade で認証ストラテジーを探索
  • AI パワード生成 —— generate --ai で LLM がWebサイトを分析し、アダプターを自動生成。autocli.ai でクラウド共有
  • メディア&記事ダウンロード —— 動画ダウンロード(yt-dlp)、記事を Markdown にエクスポート+画像のローカル保存
  • 外部 CLI パススルー —— GitHub CLI、Docker、Kubernetes などのツールを統合
  • 複数出力フォーマット —— table、JSON、YAML、CSV、Markdown
  • 単一バイナリ —— 4MB の静的バイナリにコンパイル、ランタイム依存ゼロ

インストール

ファイルは1つだけ、ダウンロードすればすぐ使えます。 Node.js、Python やその他のランタイムは不要、PATH に配置するだけで実行可能。

ワンライナーインストールスクリプト(macOS / Linux)

curl -fsSL https://raw.githubusercontent.com/nashsu/autocli/main/scripts/install.sh | sh

システムとアーキテクチャを自動検出し、対応するバイナリをダウンロードして /usr/local/bin/ にインストールします。

Windows (PowerShell)

Invoke-WebRequest -Uri "https://github.com/nashsu/autocli/releases/latest/download/autocli-x86_64-pc-windows-msvc.zip" -OutFile autocli.zip
Expand-Archive autocli.zip -DestinationPath .
Move-Item autocli.exe "$env:LOCALAPPDATA\Microsoft\WindowsApps\"

手動ダウンロード(最も簡単)

GitHub Releases から対応プラットフォームのファイルをダウンロード:

プラットフォームファイル
macOS (Apple Silicon)autocli-aarch64-apple-darwin.tar.gz
macOS (Intel)autocli-x86_64-apple-darwin.tar.gz
Linux (x86_64)autocli-x86_64-unknown-linux-musl.tar.gz
Linux (ARM64)autocli-aarch64-unknown-linux-musl.tar.gz
Windows (x64)autocli-x86_64-pc-windows-msvc.zip

解凍後、autocli(Windows は autocli.exe)をシステム PATH に配置してください。

ソースからビルド

git clone https://github.com/nashsu/autocli.git
cd autocli
cargo build --release
cp target/release/autocli /usr/local/bin/   # macOS / Linux

アップデート

インストールコマンドを再実行するか、最新バージョンをダウンロードして上書きしてください。

Chrome 拡張機能のインストール(ブラウザコマンドに必要)

  1. GitHub Releases から autocli-chrome-extension.zip をダウンロード
  2. 任意のディレクトリに解凍
  3. Chrome を開き、chrome://extensions にアクセス
  4. 右上の「デベロッパーモード」を有効化
  5. 「パッケージ化されていない拡張機能を読み込む」をクリックし、解凍したフォルダを選択
  6. 拡張機能は自動的に autocli daemon に接続されます

Public モードのコマンド(hackernews、devto、lobsters など)は拡張機能なしで使用できます。

Skill インストール

ワンクリックで AI Agent に autocli skill をインストール:

npx skills add https://github.com/nashsu/autocli-skill

クイックスタート

# 利用可能な全コマンドを表示
autocli --help

# 特定サイトのコマンドを表示
autocli hackernews --help

# Hacker News の人気記事を取得(公開 API、ブラウザ不要)
autocli hackernews top --limit 10

# JSON 形式で出力
autocli hackernews top --limit 5 --format json

# Bilibili の人気動画を取得(ブラウザ + Cookie が必要)
autocli bilibili hot --limit 20

# Twitter を検索(ブラウザ + ログインが必要)
autocli twitter search "rust lang" --limit 10

# 診断を実行
autocli doctor

# シェル補完を生成
autocli completion bash >> ~/.bashrc
autocli completion zsh >> ~/.zshrc
autocli completion fish > ~/.config/fish/completions/autocli.fish

AI コマンド

autocli.ai によるサポート — API トークンを取得し、コミュニティとアダプターを共有し、AI で任意のWebサイトのアダプターを生成。

ステップ 1:認証

autocli auth

実行すると:

  1. ブラウザで https://autocli.ai/get-token を自動的に開く
  2. トークンの入力を求める
  3. サーバーでトークンを検証
  4. ~/.autocli/config.json に保存

ステップ 2:Chrome 拡張で必要なデータを正確に選択し、生成ボタンをクリックすると、AI が自動的にページを分析し、関連データを拡張してアダプターを生成します:

autocli

生成が完了すると、autocli で新しく生成されたコマンドを使ってデータを取得できます。

autocli

ステップ 3:既存アダプターを検索

# URL で検索
autocli search https://www.example.com

# ドメイン名でもOK(自動的に https:// を補完)
autocli search example.com

autocli.ai でコミュニティ共有アダプターを検索。インタラクティブリストから選択すると、自動的にダウンロードしてローカルに保存 — すぐに使用可能。

環境変数

変数説明デフォルト
AUTOCLI_API_BASEサーバー URL を上書きhttps://www.autocli.ai

組み込みコマンド

autocli --help を実行して利用可能な全コマンドを確認できます。

サイトコマンドモード
hackernewstop new best ask show jobs search userPublic
devtotop tag userPublic
lobstershot newest active tagPublic
stackoverflowhot search bounties unansweredPublic
steamtop-sellersPublic
linux-dohot latest search categories category topicPublic
arxivsearch paperPublic
wikipediasearch summary random trendingPublic
apple-podcastssearch episodes topPublic
xiaoyuzhoupodcast podcast-episodes episodePublic
bbcnewsPublic
hftopPublic
sinafinancenewsPublic
googlenews search suggest trendsPublic / Browser
v2exhot latest topic node user member replies nodes daily me notificationsPublic / Browser
bloombergmain markets economics industries tech politics businessweek opinions feeds newsPublic / Browser
twittertrending bookmarks profile search timeline thread following followers notifications post reply delete like article follow unfollow bookmark unbookmark download accept reply-dm block unblock hide-replyBrowser
bilibilihot search me favorite history feed subtitle dynamic ranking following user-videos downloadBrowser
reddithot frontpage popular search subreddit read user user-posts user-comments upvote save comment subscribe saved upvotedBrowser
zhihuhot search question downloadBrowser
xiaohongshusearch notifications feed user download publish creator-notes creator-note-detail creator-notes-summary creator-profile creator-statsBrowser
xueqiufeed hot-stock hot search stock watchlist earnings-dateBrowser
weibohot searchBrowser
doubansearch top250 subject marks reviews movie-hot book-hotBrowser
wereadshelf search book highlights notes notebooks rankingBrowser
youtubesearch video transcriptBrowser
mediumfeed search userBrowser
substackfeed search publicationBrowser
sinabloghot search article userBrowser
bosssearch detail recommend joblist greet batchgreet send chatlist chatmsg invite mark exchange resume statsBrowser
jikefeed search create like comment repost notifications post topic userBrowser
facebookfeed profile search friends groups events notifications memories add-friend join-groupBrowser
instagramexplore profile search user followers following follow unfollow like unlike comment save unsave savedBrowser
tiktokexplore search profile user following follow unfollow like unlike comment save unsave live notifications friendsBrowser
yollomigenerate video edit upload models remove-bg upscale face-swap restore try-on background object-removerBrowser
yahoo-financequoteBrowser
barchartquote options greeks flowBrowser
linkedinsearchBrowser
reuterssearchBrowser
smzdmsearchBrowser
ctripsearchBrowser
coupangsearch add-to-cartBrowser
grokaskBrowser
jimenggenerate historyBrowser
chaoxingassignments examsBrowser
weixindownloadBrowser
doubaostatus new send read askBrowser
cursorstatus send read new dump composer model extract-code ask screenshot history exportDesktop
codexstatus send read new dump extract-diff model ask screenshot history exportDesktop
chatwisestatus new send read ask model history export screenshotDesktop
chatgptstatus new send read askDesktop
doubao-appstatus new send read ask screenshot dumpDesktop
notionstatus search read new write sidebar favorites exportDesktop
discord-appstatus send read channels servers search membersDesktop
antigravitystatus send read new dump extract-code model watchDesktop

モード説明: Public = パブリック(ブラウザ不要)、直接 API を呼び出し;Browser = ブラウザ(Chrome + 拡張機能が必要);Desktop = デスクトップ(アプリの起動が必要)

AI ディスカバリー機能

アダプターを自動生成する2つの方法:

# 🤖 AI 駆動(推奨):LLM がページを分析しアダプターを生成
autocli generate https://www.example.com --goal hot --ai
# autocli.ai で既存アダプターを先に検索し、見つからなければ AI で生成

# 🔧 ルールベース:AI なしのヒューリスティック分析
autocli generate https://www.example.com --goal hot

# Web サイトの API を探索(エンドポイント、フレームワーク、Store)
autocli explore https://www.example.com --site mysite

# インタラクティブファジング(ボタンクリックで隠し API を発見)
autocli explore https://www.example.com --auto --click "コメント,字幕"

# 認証ストラテジー自動検出(PUBLIC → COOKIE → HEADER)
autocli cascade https://api.example.com/hot

ディスカバリー機能:

  • .json サフィックスプローブ(Reddit 式 REST ディスカバリー)
  • __INITIAL_STATE__ 抽出(Bilibili、小紅書などの SSR サイト)
  • Pinia/Vuex Store 発見とアクションマッピング
  • --goal search による検索エンドポイント自動発見
  • フレームワーク検出(Vue/React/Next.js/Nuxt)

ダウンロード

対応サイトからメディアと記事をダウンロード:

# Bilibili 動画ダウンロード(yt-dlp が必要)
autocli bilibili download BV1xxx --output ./videos --quality 1080p

# 知乎記事を Markdown でダウンロード(画像付き)
autocli zhihu download "https://zhuanlan.zhihu.com/p/xxx" --output ./articles

# WeChat 公式アカウント記事を Markdown でダウンロード(画像付き)
autocli weixin download "https://mp.weixin.qq.com/s/xxx" --output ./articles

# Twitter/X メディアダウンロード(画像 + 動画)
autocli twitter download nash_su --limit 10 --output ./twitter

ダウンロード機能:

  • yt-dlp による動画ダウンロード(ブラウザから Cookie を自動取得、システム認証不要)
  • YAML フロントマター付き Markdown エクスポート(タイトル、著者、日付、出典)
  • 画像の自動ダウンロードとローカル化(リモート URL をローカル images/img_001.jpg に置換)

外部 CLI 統合

統合済みの外部ツール(パススルー実行):

ツール説明
ghGitHub CLI
dockerDocker CLI
kubectlKubernetes CLI
obsidianObsidian ノート管理
readwiseReadwise 読書管理
gwsGoogle Workspace CLI
# GitHub CLI にパススルー
autocli gh repo list

# kubectl にパススルー
autocli kubectl get pods

出力フォーマット

--format グローバルパラメータで出力フォーマットを切り替え:

autocli hackernews top --format table    # ASCII テーブル(デフォルト)
autocli hackernews top --format json     # JSON
autocli hackernews top --format yaml     # YAML
autocli hackernews top --format csv      # CSV
autocli hackernews top --format md       # Markdown テーブル

認証ストラテジー

各コマンドは異なる認証ストラテジーを使用します:

ストラテジー説明ブラウザが必要か
public公開 API、認証不要いいえ
cookieブラウザ Cookie が必要はい
header特定のリクエストヘッダーが必要はい
interceptネットワークリクエストの傍受が必要はい
uiUI インタラクションが必要はい

カスタムアダプター

~/.autocli/adapters/ に YAML ファイルを作成するだけでカスタムアダプターを追加できます:

# ~/.autocli/adapters/mysite/hot.yaml
site: mysite
name: hot
description: My site hot posts
strategy: public
browser: false

args:
  limit:
    type: int
    default: 20
    description: Number of items

columns: [rank, title, score]

pipeline:
  - fetch: https://api.mysite.com/hot
  - select: data.posts
  - map:
      rank: "${{ index + 1 }}"
      title: "${{ item.title }}"
      score: "${{ item.score }}"
  - limit: "${{ args.limit }}"

Pipeline ステップ

ステップ機能
fetchHTTP リクエストfetch: https://api.example.com/data
evaluateブラウザ内で JS を実行evaluate: "document.title"
navigateページナビゲーションnavigate: https://example.com
click要素をクリックclick: "#button"
typeテキスト入力type: { selector: "#input", text: "hello" }
wait待機wait: 2000
selectネストデータを選択select: data.items
mapデータマッピングmap: { title: "${{ item.title }}" }
filterデータフィルタリングfilter: "item.score > 10"
sortソートsort: { by: score, order: desc }
limit切り詰めlimit: "${{ args.limit }}"
interceptネットワーク傍受intercept: { pattern: "*/api/*" }
tap状態管理ブリッジtap: { action: "store.fetch", url: "*/api/*" }
downloadダウンロードdownload: { type: media }

テンプレート式

Pipeline では ${{ expression }} 構文を使用します:

# 変数アクセス
"${{ args.limit }}"
"${{ item.title }}"
"${{ index + 1 }}"

# 比較と論理演算
"${{ item.score > 10 }}"
"${{ item.title && !item.deleted }}"

# 三項演算子
"${{ item.active ? 'yes' : 'no' }}"

# パイプフィルター
"${{ item.title | truncate(30) }}"
"${{ item.tags | join(', ') }}"
"${{ item.name | lower | trim }}"

# 文字列補間
"https://api.com/${{ item.id }}.json"

# フォールバック
"${{ item.subtitle || 'N/A' }}"

# 数学関数
"${{ Math.min(args.limit, 50) }}"

組み込みフィルター(16個): default, join, upper, lower, trim, truncate, replace, keys, length, first, last, json, slugify, sanitize, ext, basename

設定

環境変数

変数デフォルト値説明
OPENCLI_VERBOSE-詳細出力を有効化
OPENCLI_DAEMON_PORT19825Daemon ポート
OPENCLI_CDP_ENDPOINT-CDP 直接接続エンドポイント(Daemon をスキップ)
OPENCLI_BROWSER_COMMAND_TIMEOUT60コマンドタイムアウト(秒)
OPENCLI_BROWSER_CONNECT_TIMEOUT30ブラウザ接続タイムアウト(秒)
OPENCLI_BROWSER_EXPLORE_TIMEOUT120Explore タイムアウト(秒)

ファイルパス

パス説明
~/.autocli/adapters/ユーザーカスタムアダプター
~/.autocli/plugins/ユーザープラグイン
~/.autocli/external-clis.yamlユーザー外部 CLI レジストリ

アーキテクチャ

┌─────────────────────────────────────────────────────────────────┐
│                      ユーザー / AI Agent                         │
│                     autocli <site> <command>                  │
└─────────────────────┬───────────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────┐
│                      CLI 層 (clap)                               │
│  main.rs → discovery → clap 動的サブコマンド → execution.rs      │
│  ┌───────────┐  ┌───────────────┐  ┌──────────────────┐        │
│  │ 組み込み   │  │ サイトアダプター│  │ 外部 CLI パススルー│        │
│  │ コマンド   │  │ コマンド       │  │                  │        │
│  │ explore    │  │ bilibili hot  │  │ gh, docker, k8s  │        │
│  │ doctor     │  │ twitter feed  │  │                  │        │
│  └───────────┘  └───────┬───────┘  └──────────────────┘        │
└─────────────────────────┼───────────────────────────────────────┘


┌─────────────────────────────────────────────────────────────────┐
│                     実行エンジン (execution.rs)                   │
│               パラメータ検証 → 機能ルーティング → タイムアウト制御  │
│                    ┌─────────┼─────────┐                        │
│                    ▼         ▼         ▼                        │
│              YAML Pipeline  Rust Func  External CLI              │
└────────────────┬────────────────────────────────────────────────┘


┌──────────────────────────────────────────────────────────────────┐
│  Pipeline エンジン                      ブラウザブリッジ           │
│  ┌────────────┐                      ┌─────────────────────┐    │
│  │ fetch      │                      │ BrowserBridge       │    │
│  │ evaluate   │  ──── IPage ────▶    │ DaemonClient (HTTP) │    │
│  │ navigate   │                      │ CdpPage (WebSocket) │    │
│  │ map/filter │                      └──────────┬──────────┘    │
│  │ sort/limit │                                 │               │
│  │ intercept  │                      Daemon (axum:19825)        │
│  │ tap        │                        HTTP + WebSocket          │
│  └────────────┘                                 │               │
│                                                 ▼               │
│  式エンジン (pest)                      Chrome 拡張機能 (CDP)     │
│  ${{ expr | filter }}                 chrome.debugger API        │
└──────────────────────────────────────────────────────────────────┘

Workspace 構造

autocli/
├── crates/
│   ├── autocli-core/        # コアデータモデル:Strategy, CliCommand, Registry, IPage trait, Error
│   ├── autocli-pipeline/    # Pipeline エンジン:pest 式, 実行器, 14種のステップ
│   ├── autocli-browser/     # ブラウザブリッジ:Daemon, DaemonPage, CdpPage, DOM ヘルパー
│   ├── autocli-output/      # 出力レンダリング:table, json, yaml, csv, markdown
│   ├── autocli-discovery/   # アダプター発見:YAML パース, build.rs コンパイル時埋め込み
│   ├── autocli-external/    # 外部 CLI:読み込み, 検出, パススルー実行
│   ├── autocli-ai/          # AI 機能:explore, synthesize, cascade, generate
│   └── autocli-cli/         # CLI エントリポイント:clap, 実行オーケストレーション, doctor, completion
├── adapters/                   # 333個の YAML アダプター定義
│   ├── hackernews/
│   ├── bilibili/
│   ├── twitter/
│   └── ...(55サイト)
└── resources/
    └── external-clis.yaml      # 外部 CLI レジストリ

TypeScript 版からの改善点

改善項目原版 (TypeScript)autocli (Rust)
配布方式Node.js + npm install (~100MB)単一バイナリ (4.1MB)
起動速度manifest JSON 読み込み → パース → 登録コンパイル時埋め込み、ファイル I/O ゼロ
テンプレートエンジンJS eval (セキュリティリスク)pest PEG parser (型安全)
並行 fetch非ブラウザモード pool=5FuturesUnordered, 並行度 10
エラーシステム単一 hint 文字列構造化エラーチェーン + 複数の提案
HTTP 接続毎回 new fetchreqwest 接続プール再利用
メモリ安全性GC所有権システム、GC 停止ゼロ

開発

# ビルド
cargo build

# テスト(166テスト)
cargo test --workspace

# Release ビルド(LTO 有効、約 4MB)
cargo build --release

# 新しいアダプターを追加
# 1. adapters/<site>/ に YAML ファイルを作成
# 2. 再コンパイル(build.rs が自動で埋め込み)
cargo build

サポートサイト

全55サイトを展開して表示
サイトコマンド数ストラテジー
hackernews8public
bilibili12cookie
twitter24cookie/intercept
reddit15public/cookie
zhihu2cookie
xiaohongshu11cookie
douban7cookie
weibo2cookie
v2ex11public/cookie
bloomberg10cookie
youtube4cookie
wikipedia4public
google4public/cookie
facebook10cookie
instagram14cookie
tiktok15cookie
notion8ui
cursor12ui
chatgpt6public
stackoverflow4public
devto3public
lobsters4public
medium3cookie
substack3cookie
weread7cookie
xueqiu7cookie
boss14cookie
jike10cookie
その他27サイト......

Star History

Star History Chart

謝辞

本プロジェクトは OpenCLI(作者: jackwener)をベースに構築されています。本プロジェクトを可能にしたオリジナルの成果に感謝いたします。

ライセンス

Apache-2.0