Token导航 LogoToken导航

Agent Skill · 研究检索

webact(webact 搜索)

webact 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

webact 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为操作浏览器;许可证信息还不明确,第三方扫描有未通过项,按安装量在研究检索类的 73,675 个 Skill 里排第 50,054。

总安装 630周安装 26GitHub Stars 2下载 206核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:webact(webact 搜索)
来源仓库:https://github.com/kilospark/webact
仓库路径:skills/webact
安装命令:
npx skills add https://github.com/kilospark/webact --skill webact
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/kilospark/webact --skill webact

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

webact 用于查找、检索和筛选相关信息,适合在多种宿主环境中快速定位内容。适用于根据关键词或任务场景从来源线索中筛选信息的需求。通过 npx skills add 命令安装,需结合原始 README 核验具体用法。安装前建议确认权限范围、维护状态及是否触发联网或文件操作。

webact 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

来源仓库内路径:skills/webact

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/kilospark/webact --skill webact;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要操作浏览器,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

webact 怎么安装?

在终端执行 npx skills add https://github.com/kilospark/webact --skill webact。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

webact 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

webact 需要什么权限?

权限级别是操作浏览器。该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

webact 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

webact 用的人多吗?

公开数据是累计安装 630 次,近一周安装 26 次,下载 206 次,GitHub 2 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

webact 安全吗?

第三方扫描有未通过项,风险较高。除非你确认过源码,否则不建议直接安装到常用环境。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
webact

webact 搜索 · 本页

6302操作浏览器未明确未通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

WebAct Browser Control

Control Chrome directly via the Chrome DevTools Protocol. Raw CDP through a CLI helper.

If you have webact MCP tools available (e.g. navigate, click), stop here and use those instead. The MCP server handles session management and tab isolation automatically. The rest of this file is for CLI-only environments where MCP tools are not available.

How to Run Commands

All commands use the webact CLI (the webact binary). Use the binary on PATH.

Session Setup (once)

webact launch

This launches Chrome (or connects to an existing instance) and creates a session. All subsequent commands auto-discover the session — no session ID needed. Use --headless for invisible operation. Use --tab <id> to target a specific tab (creates an isolated session to avoid polluting the original).

Running Commands

Use direct CLI commands. Each is a single bash call:

webact navigate https://example.com
webact click button.submit
webact keyboard "hello world"
webact press Enter
webact dom

Auto-brief: State-changing commands (navigate, click, hover, press Enter/Tab, scroll, select, waitfor) auto-print a compact page summary showing URL, title, inputs, buttons, links, and total element counts. Read it first. Do not take a screenshot after every action. Use axtree -i or observe when you need actionable elements, read for content, dom only when you need HTML structure.

Command Reference

CommandExample
launch [options]webact launch or webact launch --headless or webact launch --profile bot
navigate <url>webact navigate https://example.com
killwebact kill
batch <json>webact batch '{"actions": [{"tool": "click", "target": "..."}]}'
grid [spec]webact grid or webact grid 8x6 or webact grid off
installwebact install
media <features>webact media dark or webact media reset
animations <action>webact animations pause or webact animations resume
security <action>webact security ignore-certs or webact security strict
storage <action>webact storage clear everything or webact storage get
sw <action>webact sw unregister or webact sw list
backwebact back
forwardwebact forward
reloadwebact reload
feedback <1-5> [text]webact feedback 5 "Works great!"
read [selector] [--tokens=N]webact read or webact read article or webact read --tokens=2000
text [selector] [--tokens=N]webact text or webact text --tokens=2000
dom [selector] [--tokens=N]webact dom or webact dom.results or webact dom --tokens=1000
axtree [selector] [-i]webact axtree or webact axtree -i
observewebact observe
screenshot [options]webact screenshot or webact screenshot --ref=3 or webact screenshot --selector=.main --scale=1
fill <sel val...>webact fill "#email" "user@example.com" "#pass" "secret"
pdf [path]webact pdf or webact pdf /tmp/page.pdf
`click <sel\x,y\--text>`webact click button.submit or click 550,197 or click --text Close
`doubleclick <sel\x,y\--text>`webact doubleclick td.cell or doubleclick 550,197
`rightclick <sel\x,y\--text>`webact rightclick.context-target or rightclick 550,197
`hover <sel\x,y\--text>`webact hover.menu-trigger or hover --text Settings
focus <selector>webact focus input[name=q]
clear <selector>webact clear input[name=q]
type <selector> <text>webact type input[name=q] search query
keyboard <text>webact keyboard hello world
paste <text>webact paste Hello world
select <selector> <value>webact select select#country US
upload <selector> <file>webact upload input[type=file] /tmp/photo.png
drag <from> <to>webact drag.card.dropzone
`dialog <accept\dismiss> [text]`webact dialog accept
waitfor <selector> [ms]webact waitfor.dropdown 5000
waitfornav [ms]webact waitfornav
`press <key\combo>`webact press Enter or webact press Ctrl+A
scroll <target> [px]webact scroll down 500 or webact scroll top
eval <js>webact eval document.title
`cookies [get\set\clear\delete]`webact cookies or webact cookies set name val
`console [show\errors\listen]`webact console or webact console errors
`network [capture\show]`webact network capture 10 api or webact network show cloudwatch
block <pattern>webact block images css or webact block off
viewport <w> <h>webact viewport mobile or webact viewport 1024 768
zoom <level>webact zoom 50 or webact zoom out or webact zoom reset
frameswebact frames
`frame <id\selector>`webact frame main or webact frame iframe#embed
`download [path\list]`webact download path /tmp/dl or webact download list
tabswebact tabs
tab <id>webact tab ABC123
newtab [url]webact newtab https://example.com
closewebact close
activatewebact activate
minimizewebact minimize
resolve <selector>webact resolve a.apply-btn or webact resolve 3
find <query>webact find "submit button"
updatewebact update
search <query> [--engine=E]webact search "best restaurants" or webact search "query" --engine=duckduckgo
readurls <url...>webact readurls https://a.com https://b.com
connectwebact connect
run <sid>webact run a1b2c3d4
`humanclick <sel\x,y>`webact humanclick button.submit
humantype <sel> <text>webact humantype input[name=q] hello
lock [seconds]webact lock 30
unlockwebact unlock
uninstallwebact uninstall
mcpwebact mcp (run as MCP server via stdio)
`clipboard <html\text>`webact clipboard --html="<b>bold</b>" --text="bold"
inserttext <text>webact inserttext "large block of text"
`config <get\set> [key] [value]`webact config get or webact config set telemetry false

type vs keyboard vs paste vs clipboard vs inserttext: Use type to focus a specific input and fill it. Use keyboard to type at the current caret position — essential for rich text editors (Slack, Google Docs, Notion) where type's focus call resets the cursor. Use paste to insert text via a ClipboardEvent — works with apps that intercept paste and is faster than keyboard for large text. Use clipboard to paste HTML/rich text via real clipboard API + Cmd+V — works with Google Docs, Sheets, Notion. Use inserttext for fast plain text insertion at cursor via CDP Input.insertText.

click behavior: Prefer refs from axtree -i or observe. Otherwise use a CSS selector or --text. Waits up to 5s for the element, scrolls it into view, then clicks. When multiple elements match --text, interactive elements (button, a, input, [role=button]) are preferred over generic containers (div, span). Use coordinates from a screenshot only as a last resort for canvas/image/iframe-heavy pages where ref, text, and selector targeting have all failed.

fill: Fill multiple form fields in one call. Pass alternating selector/value pairs: fill "#email" "user@example.com" "#password" "secret". More efficient than multiple type calls. Supports ref numbers from axtree -i.

screenshot options: Expensive (~500+ vision tokens). Defaults to 800px wide JPEG for token efficiency. Use --ref=N to crop to a ref number from axtree -i (cheapest visual option), --selector=CSS to crop to an element, --scale=1 for full viewport resolution (or any multiplier), --format=png for lossless, --quality=N (1-100), --pad=N to control padding around ref/selector crops (default: 48).

dialog behavior: Sets a one-shot auto-handler. Run BEFORE the action that triggers the dialog.

read: Reader-mode text extraction. Strips navigation, sidebars, ads, and returns just the main content as clean text with headings, lists, and paragraphs. Best for articles, docs, search results, and information retrieval.

text: Full page in reading order, interleaving static text with interactive elements (numbered refs). Like a screen reader view. Generates ref map as side effect, so you can use ref numbers in click/type/etc afterward. Best for complex pages where you need both content and interaction targets.

axtree vs dom: The accessibility tree shows semantic roles (button, link, heading, textbox) and accessible names - better for understanding page structure. Use dom when you need HTML structure/selectors; use axtree when you need to understand what's on the page.

axtree -i (interactive mode): Shows only actionable elements (buttons, links, inputs, etc.) as a flat numbered list. Most token-efficient way to see what you can interact with on a page. After running axtree -i, use the ref numbers directly as selectors: click 1, type 3 hello. Refs are cached per URL and reused on revisits.

observe: Like axtree -i but formats each element as a ready-to-use command (e.g. click 1, type 3 <text>, select 5 <value>). Generates the ref map as a side effect.

Ref-based targeting: After axtree -i or observe, numeric refs work in all selector-accepting commands: click, type, select, hover, focus, clear, doubleclick, rightclick, upload, drag, waitfor, dom.

press combos: Supports modifier keys: Ctrl+A (select all), Ctrl+C (copy), Meta+V (paste on Mac), Shift+Enter, etc. Modifiers: Ctrl, Alt, Shift, Meta/Cmd.

Mac keyboard note: On macOS, app shortcuts documented as Ctrl+Alt+<key> (e.g., Google Docs heading shortcuts Ctrl+Alt+1 through Ctrl+Alt+6) must be sent as Meta+Alt+<key> through CDP. Mac's Ctrl key is not the Command key these apps expect. Example: press Meta+Alt+2 for Heading 2 in Google Docs.

scroll targets: up/down (default 400px, or specify pixels), top/bottom, or a CSS selector to scroll an element into view. Element-scoped: scroll <selector> <up|down|top|bottom> [px] scrolls within a container element instead of the page — essential for apps with custom scroll containers (Google Docs, Slack).

network capture: Captures XHR/fetch/API requests for a duration. network capture 10 captures for 10 seconds. network capture 15 api/query captures for 15s, filtering to URLs containing "api/query". network show re-displays the last capture. network show cloudwatch filters saved results. Shows method, URL, status, type, timing, and POST body. Essential for diagnosing API issues in SPAs.

block patterns: Block resource types (images, css, fonts, media, scripts) or URL substrings. Speeds up page loads. Use block off to disable.

viewport presets: mobile (375x667), iphone (390x844), ipad (820x1180), tablet (768x1024), desktop (1280x800). Or specify exact width and height.

frames: Lists all frames/iframes on the page. Use frame <id> to switch context, frame main to return to the top frame.

Profiles: Use profiles to launch isolated browser instances with separate data.

  • webact launch uses the default shared profile.
  • webact launch --profile shopping-bot creates or reuses a named profile.
  • webact launch --profile new auto-generates a profile ID and returns it.
  • Each profile runs its own browser process on its own port. Custom profiles can be killed with webact kill.

batch: Execute multiple actions sequentially in one call. Use a JSON array of actions. Smart waits are applied after successful state-changing actions (navigate, click, fill, select, type). Batch stops on the first non-optional error.

webact batch '{"actions": [{"tool": "click", "target": "--text Submit"}, {"tool": "waitfornav"}]}'
  • Add "retries": N and "retry_delay": ms to retry flaky steps.
  • Add "optional": true for dismissals or branches that can fail without aborting the batch.
  • Add "wait": ms to override the post-step smart wait for a specific action.

grid: Overlay a coordinate grid for targeting elements in canvas/image-heavy apps. Each cell displays its center coordinate.

  • webact grid (default 10x10)
  • webact grid 8x6 (cols x rows)
  • webact grid 50 (50px cell size)
  • webact grid off (remove overlay)

install: Register webact as an MCP server with all detected clients (Claude Code, Cursor, Windsurf, Claude Desktop, etc.) without re-downloading the binary.

Troubleshooting SPAs and Stale Pages:

  • sw unregister: remove service workers that cache old content.
  • storage clear everything: clear all storage, caches, cookies, and service workers for the origin.
  • reload: force a fresh page load.

Media and Animations:

  • media dark: switch to dark color scheme.
  • media reset: restore defaults.
  • animations pause: freeze JS animations (sets playback rate to 0).
  • animations resume: restore normal playback.
  • security ignore-certs: accept self-signed certificates for the current origin.

Tab Isolation

Each session creates and owns its own tabs. Sessions never reuse tabs from other sessions or pre-existing tabs.

  • launch/connect creates a new blank tab for the session
  • newtab opens an additional tab within the session
  • tabs only lists tabs owned by the current session
  • tab <id> only switches to session-owned tabs
  • close removes the tab from the session
  • Clicks that open a new tab via target=_blank or window.open are auto-adopted into your session and become the active tab

This means two agents can work side by side in the same Chrome instance without interfering with each other.

Shared Chrome awareness: When multiple agents share Chrome, link clicks on sites like Slack can hijack your tab (e.g. Slack's link unfurling navigates to Jira). Always record your tab ID after launch/newtab and verify you're on the right tab before acting. If your tab's URL has changed unexpectedly, use tab <id> to switch back or tabs to audit your session.

The Perceive-Act Loop

  1. PLAN — Break the goal into steps.
  2. ACT — Run the appropriate command. State-changing commands auto-print a page brief.
  3. DECIDE — Read the brief. If you need more, use the cheapest sufficient perception tool (see escalation order below).
  4. REPEAT until done or blocked.

Rules

  1. Read the brief after acting. State-changing commands auto-print a page brief. Read it before deciding your next step.
  2. Text tools before screenshot. Only use screenshot when the page is canvas/image-heavy, you need visual verification, or text tools are insufficient. Start with --ref=N or --selector crops — not full page.
  3. Report actual content. When the goal is information retrieval, extract and present the actual text from the page. Do not summarize — show what IS there.
  4. Stop when blocked. If you encounter a login wall, CAPTCHA, 2FA, or cookie consent, run activate to bring the browser to front, then tell the user. Do not guess credentials.
  5. Wait for dynamic content. After clicks that trigger page loads, use waitfornav or waitfor <selector> before reading DOM.
  6. Prefer ref-based targeting. Use refs from axtree -i, observe, or text. Use CSS selectors when you need DOM structure or a ref is unavailable. Use coordinates only as a last resort for canvas/iframe surfaces.
  7. Clean up tabs. Close tabs opened with newtab when done. Run tabs before reporting completion.
  8. Track tab IDs. Note tab IDs from launch/newtab output. Verify you're on the expected tab before acting.

Perception Escalation

Stop at the first tool that gives you what you need:

PriorityToolUse forCost
1readPage content (articles, docs, search results)Low
2axtree -i / observeActionable elements with refsLow
3textFull visible text + refs (cap with --tokens=N)Low-Med
4domHTML structure/selectors (scope with selector or --tokens=N)Medium
5screenshot --ref=N or --selectorVisual of one element (800px wide)Medium
6screenshotFull page visual fallback (800px wide)High
7zoom out then screenshotMore content per screenshotHigh
8screenshot --scale=1Full viewport resolution (last resort)Highest

Targeting Elements (priority order)

  1. refs: from axtree -i, observe, or text — click 3, type 5 hello, screenshot --ref=7
  2. text search: click --text Submit — finds the smallest visible text match, then clicks the nearest actionable ancestor (button/link/tab/etc.) when needed
  3. CSS selectors: #id, [data-testid="..."], [aria-label="..."], .class, structural
  4. eval: eval with querySelector when the element is present but hard to target
  5. coordinates: click 550,197 — last resort for canvas/iframes only, after all above have failed

Common Patterns

All examples assume you've already run webact launch.

Navigate and read (navigate auto-prints brief - no separate dom needed):

webact navigate https://news.ycombinator.com

Fill a form:

# Multiple fields at once:
webact fill "input[name=q]" "search query"
# Or one at a time:
webact click input[name=q]
webact type input[name=q] search query
webact press Enter

Rich text editors and @mentions:

webact click .ql-editor
webact keyboard Hello @alice
webact waitfor [data-qa='tab_complete_ui_item'] 5000
webact click [data-qa='tab_complete_ui_item']
webact keyboard " check this out"

Complex Web Apps

Portals, shadow DOM, and overlays:

  • Modal dialogs, dropdowns, and popups often render in portal containers — CSS selectors from parent context won't find them
  • axtree -i and observe include deep overlays, nested menus, and portal content — try refs first
  • click --text finds elements inside portals and across shadow DOM boundaries, then walks up to the nearest actionable ancestor before clicking
  • dom traverses open shadow roots — web component internals are visible
  • When all else fails, use eval to find and .click() directly
  • Coordinate clicks from screenshots are a last resort for canvas/iframe-only surfaces

Configuration

Settings file: ~/.config/webact/webact.json

{
  "telemetry": true,
  "feedback": true
}

Set telemetry to false to opt out of anonymous usage statistics (tool counts per session, no PII). Edit the file directly or use webact config set <key> <true|false>.

平台分布

Codex

33.81%
按下载量换算70

Claude

30.73%
按下载量换算63

Cursor

20.41%
按下载量换算42

Gemini CLI

9.59%
按下载量换算20

安全审计

Gen Agent Trust Hub

未通过

Socket

可疑

Snyk

未通过

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills