vibe-check by vibiumdev/vibium
npx skills add https://github.com/vibiumdev/vibium --skill vibe-checkvibium CLI 通过命令行自动化 Chrome 浏览器。浏览器在首次使用时自动启动(守护进程模式使其在命令之间保持运行状态)。
vibium go <url> && vibium map && vibium click @e1 && vibium map
所有浏览器自动化都遵循以下模式:
vibium go <url>vibium map (获取元素引用,如 @e1, @e2)vibium click @e1vibium map 获取新的引用广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
在运行任何命令之前,先解析一次 vibium 二进制文件路径:
vibium (如果通过 npm install -g vibium 全局安装则有效)./clicker/bin/vibium (开发环境,在项目根目录下)./node_modules/.bin/vibium (本地 npm 安装)运行 vibium --help (或解析后的路径) 以确认。对所有后续命令使用解析后的路径。
Windows 注意: 在路径中使用正斜杠 (例如 ./clicker/bin/vibium.exe) 并引用包含空格的路径。
使用 && 链接命令以顺序运行它们。链在第一个错误处停止:
vibium go https://example.com && vibium map && vibium click @e3 && vibium diff map
何时使用链式: 对于应该连续发生的序列使用 && (导航 → 交互 → 验证)。当需要在步骤之间检查输出时,请单独运行命令。
何时不使用链式: 不要链接依赖于解析前一个输出的命令 (例如,读取映射输出来决定点击什么)。单独运行这些命令,以便可以先分析结果。
vibium map — 使用 @refs 映射交互元素 (交互前推荐)vibium map --selector "nav" — 将映射范围限定在 CSS 子树内的元素vibium diff map — 比较当前与上次的映射 (查看变化)vibium go <url> — 跳转到页面vibium back — 后退历史记录vibium forward — 前进历史记录vibium reload — 重新加载当前页面vibium url — 打印当前 URLvibium title — 打印页面标题vibium text — 获取所有页面文本vibium text "<selector>" — 获取特定元素的文本vibium html — 获取页面 HTML (使用 --outer 获取 outerHTML)vibium find "<selector>" — 查找元素,返回 @e1 引用 (可通过 vibium click @e1 点击)vibium find "<selector>" --all — 查找所有匹配元素 → @e1, @e2, ... (--limit N)vibium find text "Sign In" — 通过文本内容查找元素 → @e1vibium find label "Email" — 通过标签查找输入框 → @e1vibium find placeholder "Search" — 通过占位符查找 → @e1vibium find testid "submit-btn" — 通过 data-testid 查找 → @e1vibium find xpath "//div[@class]" — 通过 XPath 查找 → @e1vibium find alt "Logo" — 通过 alt 属性查找 → @e1vibium find title "Settings" — 通过 title 属性查找 → @e1vibium find role <role> — 通过 ARIA 角色查找元素 → @e1 (--name 用于可访问名称过滤器)vibium eval "<js>" — 运行 JavaScript 并打印结果 (--stdin 从 stdin 读取)vibium count "<selector>" — 统计匹配元素数量vibium screenshot -o file.png — 捕获屏幕截图 (--full-page, --annotate)vibium a11y-tree — 可访问性树 (--everything 获取所有节点)vibium click "<selector>" — 点击元素 (也接受来自映射的 @ref)vibium dblclick "<selector>" — 双击元素vibium type "<selector>" "<text>" — 在输入框中键入 (追加到现有值)vibium fill "<selector>" "<text>" — 清空字段并键入新文本 (替换值)vibium press <key> [selector] — 在元素或聚焦元素上按键vibium focus "<selector>" — 聚焦元素vibium hover "<selector>" — 悬停在元素上vibium scroll [direction] — 滚动页面 (--amount N, --selector)vibium scroll into-view "<selector>" — 将元素滚动到视图中 (居中)vibium keys "<combo>" — 按键 (Enter, Control+a, Shift+Tab)vibium select "<selector>" "<value>" — 选择下拉选项vibium check "<selector>" — 勾选复选框/单选按钮 (幂等操作)vibium uncheck "<selector>" — 取消勾选复选框 (幂等操作)vibium mouse click [x] [y] — 在坐标或当前位置点击 (--button 0|1|2)vibium mouse move <x> <y> — 移动鼠标到坐标vibium mouse down — 按下鼠标按钮 (--button 0|1|2)vibium mouse up — 释放鼠标按钮 (--button 0|1|2)vibium drag "<source>" "<target>" — 从一个元素拖拽到另一个元素vibium value "<selector>" — 获取 input/textarea/select 的值vibium attr "<selector>" "<attribute>" — 获取 HTML 属性值vibium is visible "<selector>" — 检查元素是否可见 (true/false)vibium is enabled "<selector>" — 检查元素是否启用 (true/false)vibium is checked "<selector>" — 检查复选框/单选按钮是否被选中 (true/false)vibium is actionable "<selector>" — 检查元素是否可操作 (true/false)vibium wait "<selector>" — 等待元素 (--state visible|hidden|attached, --timeout ms)vibium wait url "<pattern>" — 等待直到 URL 包含子字符串 (--timeout ms)vibium wait load — 等待直到页面完全加载 (--timeout ms)vibium wait text "<text>" — 等待直到文本出现在页面上 (--timeout ms)vibium wait fn "<expression>" — 等待直到 JS 表达式返回真值 (--timeout ms)vibium sleep <ms> — 暂停执行 (最长 30000ms)vibium screenshot -o file.png — 捕获屏幕截图 (--full-page, --annotate)vibium pdf -o file.pdf — 将页面保存为 PDFvibium dialog accept [text] — 接受对话框 (可选择提供提示文本)vibium dialog dismiss — 关闭对话框vibium viewport — 获取当前视口尺寸vibium viewport <width> <height> — 设置视口大小 (--dpr 用于设备像素比)vibium window — 获取操作系统浏览器窗口尺寸和状态vibium window <width> <height> [x] [y] — 设置窗口大小和位置 (--state)vibium media — 覆盖 CSS 媒体特性 (--color-scheme, --reduced-motion, --forced-colors, --contrast, --media)vibium geolocation <lat> <lng> — 覆盖地理位置 (--accuracy)vibium content "<html>" — 替换页面 HTML (--stdin 从 stdin 读取)vibium frames — 列出页面上的所有 iframevibium frame "<nameOrUrl>" — 通过名称或 URL 子字符串查找框架vibium upload "<selector>" <files...> — 在 input[type=file] 上设置文件vibium record start — 开始录制 (--screenshots, --snapshots, --name)vibium record stop — 停止录制并保存 ZIP (-o path)vibium cookies — 列出所有 cookiesvibium cookies <name> <value> — 设置 cookievibium cookies clear — 清除所有 cookiesvibium storage — 导出 cookies + localStorage + sessionStorage (-o state.json)vibium storage restore <path> — 从 JSON 文件恢复状态vibium download dir <path> — 设置下载目录vibium pages — 列出打开的页面vibium page new [url] — 打开新页面vibium page switch <index|url> — 切换页面vibium page close [index] — 关闭页面vibium highlight "<selector>" — 视觉上高亮元素 (3 秒)vibium start — 启动本地浏览器会话vibium start <url> — 启动连接到远程浏览器vibium stop — 停止浏览器会话vibium daemon start — 启动后台浏览器vibium daemon status — 检查是否在运行vibium daemon stop — 停止守护进程vibium go https://example.com
vibium map
vibium click @e1
vibium map # 交互后重新映射
vibium map
vibium click @e3
vibium diff map # 查看变化
vibium go https://example.com && vibium text
vibium go https://example.com/login
vibium map
# 查看映射输出以识别表单字段
vibium fill @e1 "user@example.com"
vibium fill @e2 "secret"
vibium click @e3
vibium wait url "/dashboard"
vibium screenshot -o after-login.png
vibium map --selector "nav" # 仅映射 <nav> 中的元素
vibium map --selector "#sidebar" # 仅映射 #sidebar 中的元素
vibium map --selector "form" # 仅映射表单控件
vibium find text "Sign In" # → @e1 [button] "Sign In"
vibium find label "Email" # → @e1 [input] placeholder="Email"
vibium click @e1 # 点击找到的元素
vibium find placeholder "Search..." # → @e1 [input] placeholder="Search..."
vibium find testid "submit-btn" # → @e1 [button] "Submit"
vibium find alt "Company logo" # → @e1 [img] alt="Company logo"
vibium find title "Close" # → @e1 [button] title="Close"
vibium find xpath "//a[@href='/about']" # → @e1 [a] "About"
# 登录一次并保存状态
vibium go https://app.example.com/login
vibium fill "input[name=email]" "user@example.com"
vibium fill "input[name=password]" "secret"
vibium click "button[type=submit]"
vibium wait url "/dashboard"
vibium storage -o auth.json
# 在后续会话中恢复 (跳过登录)
vibium storage restore auth.json
vibium go https://app.example.com/dashboard
vibium go https://example.com
vibium eval "JSON.stringify([...document.querySelectorAll('a')].map(a => ({text: a.textContent.trim(), href: a.href})))"
vibium go https://example.com && vibium a11y-tree
vibium start ws://remote-host:9515/session
vibium go https://example.com
vibium map
vibium stop
vibium page new https://docs.example.com
vibium text "h1"
vibium page switch 0
vibium screenshot -o annotated.png --annotate
vibium attr "a" "href"
vibium value "input[name=email]"
vibium is visible ".modal"
vibium go https://example.com && vibium pdf -o page.pdf
vibium eval 是 CLI 未直接涵盖的任何 DOM 查询或操作的逃生舱口。
简单表达式 — 使用单引号:
vibium eval 'document.title'
vibium eval 'document.querySelectorAll("li").length'
复杂脚本 — 使用带有 heredoc 的 --stdin:
vibium eval --stdin <<'EOF'
const rows = [...document.querySelectorAll('table tbody tr')];
JSON.stringify(rows.map(r => {
const cells = r.querySelectorAll('td');
return { name: cells[0].textContent.trim(), price: cells[1].textContent.trim() };
}));
EOF
JSON 输出 — 使用 --json 获取机器可读的输出:
vibium eval --json 'JSON.stringify({url: location.href, title: document.title})'
重要: eval 返回表达式结果。如果你的脚本没有返回值,你将得到 null。请确保最后一个表达式求值为你想要的数据。
所有交互命令 (click, fill, type 等) 都会自动等待目标元素变为可操作状态。通常你不需要显式等待。
在以下情况下使用显式等待:
vibium wait url "/dashboard" — 点击导航链接后vibium wait text "Success" — 表单提交后,等待确认信息vibium wait ".modal" — 等待模态框出现vibium wait load — 导航到慢速页面后vibium wait fn "window.appReady === true" — 等待应用初始化vibium sleep 2000 — 仅当没有更好的信号时使用 (最长 30 秒)所有等待命令都接受 --timeout <ms> (默认值因命令而异)。
当页面发生变化时,引用 (@e1, @e2) 会失效。在以下操作后务必重新映射:
| 标志 | 描述 |
|---|---|
--headless | 隐藏浏览器窗口 |
--json | 以 JSON 格式输出 |
-v, --verbose | 调试日志记录 |
vibium map 的 @refvibium map 来发现交互元素vibium map --selector 以减少干扰vibium fill 替换字段值,使用 vibium type 追加到字段值vibium find text / find label / find testid 进行语义元素查找 (比 CSS 选择器更可靠)vibium find role 进行基于 ARIA 角色的查找vibium a11y-tree 在不进行视觉渲染的情况下理解页面结构vibium text "<selector>" 读取特定部分vibium diff map 查看变化vibium eval 是复杂 DOM 查询的逃生舱口vibium check/vibium uncheck 是幂等的 — 无需先检查状态即可安全调用-o 可更改)vibium storage / vibium storage restore 在会话之间持久化身份验证每周安装量
224
代码仓库
GitHub 星标数
2.7K
首次出现
2026 年 2 月 9 日
安全审计
安装于
opencode211
codex204
gemini-cli204
github-copilot201
kimi-cli197
amp197
The vibium CLI automates Chrome via the command line. The browser auto-launches on first use (daemon mode keeps it running between commands).
vibium go <url> && vibium map && vibium click @e1 && vibium map
Every browser automation follows this pattern:
vibium go <url>vibium map (get element refs like @e1, @e2)vibium click @e1vibium mapBefore running any commands, resolve the vibium binary path once:
vibium directly (works if globally installed via npm install -g vibium)./clicker/bin/vibium (dev environment, in project root)./node_modules/.bin/vibium (local npm install)Run vibium --help (or the resolved path) to confirm. Use the resolved path for all subsequent commands.
Windows note: Use forward slashes in paths (e.g. ./clicker/bin/vibium.exe) and quote paths containing spaces.
Chain commands with && to run them sequentially. The chain stops on first error:
vibium go https://example.com && vibium map && vibium click @e3 && vibium diff map
When to chain: Use && for sequences that should happen back-to-back (navigate → interact → verify). Run commands separately when you need to inspect output between steps.
When NOT to chain: Don't chain commands that depend on parsing the previous output (e.g. reading map output to decide what to click). Run those separately so you can analyze the result first.
vibium map — map interactive elements with @refs (recommended before interacting)vibium map --selector "nav" — scope map to elements within a CSS subtreevibium diff map — compare current vs last map (see what changed)vibium go <url> — go to a pagevibium back — go back in historyvibium forward — go forward in historyvibium reload — reload the current pagevibium url — print current URLvibium title — print page titlevibium text — get all page textvibium text "<selector>" — get text of a specific elementvibium html — get page HTML (use --outer for outerHTML)vibium find "<selector>" — find element, return @e1 ref (clickable with vibium click @e1)vibium find "<selector>" --all — find all matching elements → @e1, @e2, ... ()vibium click "<selector>" — click an element (also accepts @ref from map)vibium dblclick "<selector>" — double-click an elementvibium type "<selector>" "<text>" — type into an input (appends to existing value)vibium fill "<selector>" "<text>" — clear field and type new text (replaces value)vibium press <key> [selector] — press a key on element or focused elementvibium focus "<selector>" — focus an elementvibium hover "<selector>" — hover over an elementvibium scroll [direction] — scroll page (, )vibium mouse click [x] [y] — click at coordinates or current position (--button 0|1|2)vibium mouse move <x> <y> — move mouse to coordinatesvibium mouse down — press mouse button (--button 0|1|2)vibium mouse up — release mouse button (--button 0|1|2)vibium drag "<source>" "<target>" — drag from one element to anothervibium value "<selector>" — get input/textarea/select valuevibium attr "<selector>" "<attribute>" — get HTML attribute valuevibium is visible "<selector>" — check if element is visible (true/false)vibium is enabled "<selector>" — check if element is enabled (true/false)vibium is checked "<selector>" — check if checkbox/radio is checked (true/false)vibium is actionable "<selector>" — check if element is actionable (true/false)vibium wait "<selector>" — wait for element (--state visible|hidden|attached, --timeout ms)vibium wait url "<pattern>" — wait until URL contains substring (--timeout ms)vibium wait load — wait until page is fully loaded (--timeout ms)vibium wait text "<text>" — wait until text appears on page (--timeout ms)vibium wait fn "<expression>" — wait until JS expression returns truthy ()vibium screenshot -o file.png — capture screenshot (--full-page, --annotate)vibium pdf -o file.pdf — save page as PDFvibium dialog accept [text] — accept dialog (optionally with prompt text)vibium dialog dismiss — dismiss dialogvibium viewport — get current viewport dimensionsvibium viewport <width> <height> — set viewport size (--dpr for device pixel ratio)vibium window — get OS browser window dimensions and statevibium window <width> <height> [x] [y] — set window size and position (--state)vibium media — override CSS media features (--color-scheme, --reduced-motion, --forced-colors, , )vibium frames — list all iframes on the pagevibium frame "<nameOrUrl>" — find a frame by name or URL substringvibium upload "<selector>" <files...> — set files on input[type=file]vibium record start — start recording (--screenshots, --snapshots, --name)vibium record stop — stop recording and save ZIP (-o path)vibium cookies — list all cookiesvibium cookies <name> <value> — set a cookievibium cookies clear — clear all cookiesvibium storage — export cookies + localStorage + sessionStorage (-o state.json)vibium storage restore <path> — restore state from JSON filevibium download dir <path> — set download directoryvibium pages — list open pagesvibium page new [url] — open new pagevibium page switch <index|url> — switch pagevibium page close [index] — close pagevibium highlight "<selector>" — highlight element visually (3 seconds)vibium start — start a local browser sessionvibium start <url> — start connected to a remote browservibium stop — stop the browser sessionvibium daemon start — start background browservibium daemon status — check if runningvibium daemon stop — stop daemonvibium go https://example.com
vibium map
vibium click @e1
vibium map # re-map after interaction
vibium map
vibium click @e3
vibium diff map # see what changed
vibium go https://example.com && vibium text
vibium go https://example.com/login
vibium map
# Look at map output to identify form fields
vibium fill @e1 "user@example.com"
vibium fill @e2 "secret"
vibium click @e3
vibium wait url "/dashboard"
vibium screenshot -o after-login.png
vibium map --selector "nav" # Only map elements in <nav>
vibium map --selector "#sidebar" # Only map elements in #sidebar
vibium map --selector "form" # Only map form controls
vibium find text "Sign In" # → @e1 [button] "Sign In"
vibium find label "Email" # → @e1 [input] placeholder="Email"
vibium click @e1 # Click the found element
vibium find placeholder "Search..." # → @e1 [input] placeholder="Search..."
vibium find testid "submit-btn" # → @e1 [button] "Submit"
vibium find alt "Company logo" # → @e1 [img] alt="Company logo"
vibium find title "Close" # → @e1 [button] title="Close"
vibium find xpath "//a[@href='/about']" # → @e1 [a] "About"
# Log in once and save state
vibium go https://app.example.com/login
vibium fill "input[name=email]" "user@example.com"
vibium fill "input[name=password]" "secret"
vibium click "button[type=submit]"
vibium wait url "/dashboard"
vibium storage -o auth.json
# Restore in a later session (skips login)
vibium storage restore auth.json
vibium go https://app.example.com/dashboard
vibium go https://example.com
vibium eval "JSON.stringify([...document.querySelectorAll('a')].map(a => ({text: a.textContent.trim(), href: a.href})))"
vibium go https://example.com && vibium a11y-tree
vibium start ws://remote-host:9515/session
vibium go https://example.com
vibium map
vibium stop
vibium page new https://docs.example.com
vibium text "h1"
vibium page switch 0
vibium screenshot -o annotated.png --annotate
vibium attr "a" "href"
vibium value "input[name=email]"
vibium is visible ".modal"
vibium go https://example.com && vibium pdf -o page.pdf
vibium eval is the escape hatch for any DOM query or mutation the CLI doesn't cover directly.
Simple expressions — use single quotes:
vibium eval 'document.title'
vibium eval 'document.querySelectorAll("li").length'
Complex scripts — use --stdin with a heredoc:
vibium eval --stdin <<'EOF'
const rows = [...document.querySelectorAll('table tbody tr')];
JSON.stringify(rows.map(r => {
const cells = r.querySelectorAll('td');
return { name: cells[0].textContent.trim(), price: cells[1].textContent.trim() };
}));
EOF
JSON output — use --json to get machine-readable output:
vibium eval --json 'JSON.stringify({url: location.href, title: document.title})'
Important: eval returns the expression result. If your script doesn't return a value, you'll get null. Always make sure the last expression evaluates to the data you want.
All interaction commands (click, fill, type, etc.) auto-wait for the target element to be actionable. You usually don't need explicit waits.
Use explicit waits when:
vibium wait url "/dashboard" — after clicking a link that navigatesvibium wait text "Success" — after form submission, wait for confirmationvibium wait ".modal" — wait for a modal to appearvibium wait load — after navigation to a slow pagevibium wait fn "window.appReady === true" — wait for app initializationvibium sleep 2000 — only when no better signal exists (max 30s)All wait commands accept --timeout <ms> (default varies by command).
Refs (@e1, @e2) are invalidated when the page changes. Always re-map after:
| Flag | Description |
|---|---|
--headless | Hide browser window |
--json | Output as JSON |
-v, --verbose | Debug logging |
@ref from vibium mapvibium map before interacting to discover interactive elementsvibium map --selector to reduce noise on large pagesvibium fill to replace a field's value, vibium type to append to itvibium find text / find label / find testid for semantic element lookup (more reliable than CSS selectors)vibium find role for ARIA-role-based lookupWeekly Installs
224
Repository
GitHub Stars
2.7K
First Seen
Feb 9, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykFail
Installed on
opencode211
codex204
gemini-cli204
github-copilot201
kimi-cli197
amp197
通过 LiteLLM 代理让 Claude Code 对接 GitHub Copilot 运行 | 高级变通方案指南
29,800 周安装
邮件网关集成指南:Resend、SendGrid、Mailgun、SMTP2Go 多提供商API代码示例
342 周安装
react-grab:AI 开发助手,一键复制 React 组件上下文到剪贴板
343 周安装
Go语言最佳实践指南:Google/Uber生产级代码规范与Go 1.25新特性
347 周安装
Solana 命令行工具:支付、钱包与交易一站式管理 | Solana CLI 指南
347 周安装
系统设计框架:大规模分布式系统设计原则、四步流程与构建模块详解
360 周安装
OpenAI Responses API 指南:有状态对话、内置工具与 Chat Completions 对比
346 周安装
--limit Nvibium find text "Sign In" — find element by text content → @e1vibium find label "Email" — find input by label → @e1vibium find placeholder "Search" — find by placeholder → @e1vibium find testid "submit-btn" — find by data-testid → @e1vibium find xpath "//div[@class]" — find by XPath → @e1vibium find alt "Logo" — find by alt attribute → @e1vibium find title "Settings" — find by title attribute → @e1vibium find role <role> — find element by ARIA role → @e1 (--name for accessible name filter)vibium eval "<js>" — run JavaScript and print result (--stdin to read from stdin)vibium count "<selector>" — count matching elementsvibium screenshot -o file.png — capture screenshot (--full-page, --annotate)vibium a11y-tree — accessibility tree (--everything for all nodes)--amount N--selectorvibium scroll into-view "<selector>" — scroll element into view (centered)vibium keys "<combo>" — press keys (Enter, Control+a, Shift+Tab)vibium select "<selector>" "<value>" — pick a dropdown optionvibium check "<selector>" — check a checkbox/radio (idempotent)vibium uncheck "<selector>" — uncheck a checkbox (idempotent)--timeout msvibium sleep <ms> — pause execution (max 30000ms)--contrast--mediavibium geolocation <lat> <lng> — override geolocation (--accuracy)vibium content "<html>" — replace page HTML (--stdin to read from stdin)vibium a11y-tree to understand page structure without visual renderingvibium text "<selector>" to read specific sectionsvibium diff map after interactions to see what changedvibium eval is the escape hatch for complex DOM queriesvibium check/vibium uncheck are idempotent — safe to call without checking state first-o to change)vibium storage / vibium storage restore to persist auth across sessions