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,即刻可用

极速、安全的命令行工具 —— 一行命令快速获取任意网站信息。覆盖 Bilibili、知乎、小红书、Twitter/X、Reddit、YouTube、HackerNews 等 55+ 站点,同时支持控制 Electron 桌面应用、集成本地 CLI 工具(ghdockerkubectl),通过浏览器会话复用和 AI 原生发现能力驱动。

基于 OpenCLI(TypeScript)用 纯 Rust 完整重写。功能对等,最高快 12 倍内存省 10 倍单文件 4.7MB,零运行时依赖。

OpenClaw/Agent 的最佳搭档 —— 赋予你的 AI Agent 触达全网信息的能力,一行命令获取 55+ 站点的实时数据。 为 AI Agent 而生:AGENT.md.cursorrules 中配置 autocli 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 扩展复用已登录状态,无需管理 token
  • 声明式 YAML Pipeline —— 用 YAML 描述数据抓取流程,零代码新增适配器
  • AI 原生发现 —— explore 分析网站 API、generate 一键生成适配器、cascade 探测认证策略
  • AI 智能生成 —— generate --ai 使用大模型分析任意网站,自动生成适配器,通过 autocli.ai 云端共享
  • 下载媒体和文章 —— 视频下载(yt-dlp)、文章导出为 Markdown 并本地化配图
  • 外部 CLI 透传 —— 集成 GitHub CLI、Docker、Kubernetes 等工具
  • 多格式输出 —— table、JSON、YAML、CSV、Markdown
  • 单一二进制 —— 编译为 4MB 静态二进制,零运行时依赖

安装

只有一个文件,下载即可使用。 无需 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

# 生成 Shell 补全
autocli completion bash >> ~/.bashrc
autocli completion zsh >> ~/.zshrc
autocli completion fish > ~/.config/fish/completions/autocli.fish

AI 命令

autocli.ai 提供支持 —— 获取 API Token,与社区共享适配器,让 AI 为任意网站生成适配器。

第一步:认证

autocli auth

执行后会:

  1. 自动打开浏览器到 https://autocli.ai/get-token
  2. 提示你输入 Token
  3. 与服务器验证 Token 合法性
  4. 保存到 ~/.autocli/config.json

第二步:通过 Chrome 浏览器插件,精准选择特定网站上你需要的数据,点击生成按钮后,AI 会自动分析并生成页面,扩展相关数据并生成适配器:

autocli

生成完成后,就可以使用 autocli 使用新生成的指令检索需要的数据了。

autocli

第三步:搜索已有适配器

# 通过 URL 搜索
autocli search https://www.example.com

# 直接输入域名也可以(自动补全 https://)
autocli search example.com

autocli.ai 搜索社区共享的适配器。从交互式列表中选择后,自动下载并保存到本地,即可使用。

环境变量

变量说明默认值
AUTOCLI_API_BASE覆盖服务器地址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 发现能力

两种方式自动生成适配器:

# 🤖 AI 驱动(推荐):大模型分析页面并生成适配器
autocli generate https://www.example.com --goal hot --ai
# 优先从 autocli.ai 搜索已有适配器,未找到则使用 AI 生成

# 🔧 规则驱动:无需 AI 的启发式分析
autocli generate https://www.example.com --goal hot

# 探索网站 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 发现和 Action 映射
  • --goal search 自动发现搜索端点
  • 框架检测(Vue/React/Next.js/Nuxt)

下载

下载支持站点的媒体和文章:

# 下载 B 站视频(需要 yt-dlp)
autocli bilibili download BV1xxx --output ./videos --quality 1080p

# 下载知乎文章为 Markdown(含配图)
autocli zhihu download "https://zhuanlan.zhihu.com/p/xxx" --output ./articles

# 下载微信公众号文章为 Markdown(含配图)
autocli weixin download "https://mp.weixin.qq.com/s/xxx" --output ./articles

# 下载 Twitter/X 媒体(图片 + 视频)
autocli twitter download nash_su --limit 10 --output ./twitter
autocli twitter download --tweet-url "https://x.com/user/status/123" --output ./twitter

下载特性:

  • 视频通过 yt-dlp 下载(自动从浏览器提取 cookies,无需系统授权)
  • 文章导出为 Markdown + YAML 头信息(标题、作者、日期、来源)
  • 配图自动下载并本地化(远程 URL 替换为本地 images/img_001.jpg
  • 输出结构:output/文章标题/标题.md + output/文章标题/images/

外部 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需要拦截网络请求
ui需要 UI 交互

自定义适配器

~/.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浏览器中执行 JSevaluate: "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"

# Fallback
"${{ 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 helpers
│   ├── 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