Token导航 LogoToken导航

Agent Skill · 研究检索

pinchtab(pinchtab 网页抓取)

pinchtab 用于处理浏览器自动化、网页检查和页面信息提取,适合在 OpenClaw 中需要让 Agent 打开页面、读取网页或验证前端流程时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

pinchtab 是研究检索类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为操作浏览器;许可证为 MIT-0,第三方扫描有提醒项,按安装量在研究检索类的 73,675 个 Skill 里排第 2,517。

总安装 59,609周安装 2,435GitHub Stars 1下载 19,090核验 2026-05-01

安装说明

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

安装方式

通过对话安装

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

请帮我安装这个 Agent Skill:pinchtab(pinchtab 网页抓取)
来源仓库:https://github.com/luigi-agosti/pinchtab
安装命令:
openclaw skills install pinchtab
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

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

ClawHubOpenClaw
openclaw skills install pinchtab

这个 Skill 是做什么的

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

PinchTab实现浏览器自动化包括导航、表单填写与元素抓取。适合需要模拟用户操作网页或提取页面数据的任务。支持单击按钮、滚动加载与等待条件设置等高级交互。运行时会启动无头浏览器实例消耗额外内存资源。pinchtab 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

部分网站反爬机制可能导致操作失败需配合重试逻辑。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

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

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install pinchtab;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

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

  4. 4

    按最小权限试用

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

常见问题

6 条

pinchtab 怎么安装?

在终端执行 openclaw skills install pinchtab。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

pinchtab 支持哪些 AI 工具?

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

pinchtab 需要什么权限?

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

pinchtab 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

pinchtab 用的人多吗?

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

pinchtab 安全吗?

第三方扫描有提醒项,说明存在需要人工确认的行为。安装前请打开源码看清它读了什么、联网到哪里。

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

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。

先想清楚的地方

  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

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

不太适合

  • 需要厂商级技术支持和 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调用外部服务未明确有提醒
pinchtab

pinchtab 网页抓取 · 本页

59,6091操作浏览器MIT-0有提醒

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

SKILL.md 原文

name
pinchtab
description
Use this skill when a task needs browser automation through PinchTab: open a website, inspect interactive elements, click through flows, fill out forms, scrape page text, log into sites with a persistent profile, export screenshots or PDFs, manage multiple browser instances, or fall back to the HTTP API when the CLI is unavailable. Prefer this skill for token-efficient browser work driven by stable accessibility refs such as e5 and e12.
metadata
openclaw
requires
bins
anyBins
homepage
https://github.com/pinchtab/pinchtab
install
formula
pinchtab/tap/pinchtab
bins
[pinchtab]
package
github.com/pinchtab/pinchtab/cmd/pinchtab@latest
bins
[pinchtab]

Browser Automation with PinchTab

CLI-first browser skill. Use pinchtab commands.

Core Workflow

  1. Ensure the right server/profile/instance is active.
  2. Navigate: pinchtab nav <url> --snap — returns tab ID + interactive snapshot in one call.
  3. Interact: pinchtab click <ref> --snap-diff — returns OK + only changed elements (most token-efficient).
  4. For read-only observation: pinchtab text when you won't act on refs.

Key optimization: Use --snap-diff on click, fill, select, back, forward, reload to get only added/changed/removed elements — most token-efficient for multi-step flows. Use --snap when you need the full snapshot (e.g., first navigation, or after major page changes). Use --text when you need prose content for verification (skips snap, returns page text directly).

--snap-diff returns the same compact format as snap, but with change markers and a header showing counts:

# Page Title | URL | 57 nodes | +2 ~1 -0
e0:link "Home"
e5:button "Submit" [+]
e12:textbox val="updated" [~]
# removed: e99

[+] = added, [~] = changed, removed refs listed at end. All valid refs are shown — no need to remember previous snapshot. Do not follow with redundant snap; only call text when you need prose content.

Fallback observation (when --snap wasn't used):

  • pinchtab snap — interactive elements + headings in compact format (default).
  • pinchtab snap --full — all nodes as JSON (for debugging).
  • pinchtab text — content only (use when snap is missing prose you need).

Rules: never act on stale refs; screenshots only for visual/debug; choose the instance/profile up front for parallel or multi-site work.

Selectors

Unified selectors accepted by any element-targeting command:

  • Ref: e5 — from snapshot cache (fastest).
  • CSS: #login, .btn, [data-testid="x"] — document.querySelector.
  • XPath: xpath://button[@id="submit"] — CDP search.
  • Text: text:Sign In — visible text match.
  • Semantic: find:login button — natural language via /find.

Auto-detection: bare eN→ref, #/./[...]→CSS, //→XPath. Use explicit css:/xpath:/text:/find: prefixes when ambiguous. HTTP API uses the same syntax in the selector field (legacy ref still accepted).

Command Chaining

&& when you don't need intermediate output (pinchtab nav <url> --snap && pinchtab click e3 --snap-diff). Run separately when you must read refs before acting.

Challenge Solving

Pages showing "Just a moment..." etc.: POST /solve {"maxAttempts":3} (or /tabs/TAB_ID/solve). Best with stealthLevel:"full". Safe to call speculatively — returns immediately if no challenge. See api.md.

Authentication and State

Patterns: (1) one-off pinchtab instance start; (2) reuse profile instance start --profile work --mode headed, switch to headless after login; (3) HTTP POST /profiles then POST /profiles/<name>/start; (4) human-assisted headed login, agent reuses headless. Agent sessions: pinchtab session create --agent-id <id> or POST /sessions → set PINCHTAB_SESSION=ses_....

Essential Commands

Server and targeting

pinchtab server | daemon install | health
pinchtab instances | profiles
pinchtab --server http://localhost:9868 snap -i -c  # target a specific instance

Navigation and tabs

pinchtab nav <url>                                  # flags: --snap, --new-tab, --tab <id>, --block-images, --block-ads, --print-tab-id
pinchtab back | forward | reload                    # all support --snap, --snap-diff, --text
pinchtab tab                                        # list tabs
pinchtab tab <tab-id>                               # focus tab
pinchtab tab new <url> | tab close <tab-id>
pinchtab instance navigate <instance-id> <url>

Tab state is automatic: nav persists the tab ID to a state file, and subsequent commands read it. No need for export PINCHTAB_TAB=... boilerplate. Just run pinchtab nav URL then pinchtab snap -i -c — the tab is remembered. For explicit control: --tab <id> flag or PINCHTAB_TAB env var override the state file.

Observation

pinchtab snap                                       # default: compact + interactive; flags: --full (JSON), -d (diff), --selector <css>, --max-tokens <n>
pinchtab text                                       # Readability-filtered page text
pinchtab text --full                                # raw document.body.innerText (alias: --raw)
pinchtab text <selector>                            # ref / -s CSS / xpath:... — text from one element
pinchtab text --json                                # full JSON (url/title/truncated)
pinchtab find <query>                               # semantic search; --ref-only for just the ref

Guidance:

  • snap — default observation (compact + interactive). Returns interactive elements + headings. Prefer this over separate text calls.
  • snap --full — all nodes as JSON; for debugging or when you need the full tree.
  • snap -d — standalone diff from previous snapshot. Use only when you need a diff without performing an action; for any click/fill/select/back/forward/reload, --snap-diff on the action itself already gives you the authoritative post-action state.
  • text — reading articles/dashboards when you won't act on refs. Falls back to --full when Readability drops content you need.
  • text <selector> — read one element without pulling the whole page.
  • find <query> — skip the snapshot when you can describe the target in a phrase. --ref-only pipes straight into click/fill/type.
  • Refs from snap -i and full snap are numbered differently — do not mix; re-snapshot before acting if you switched modes.
  • Use --block-images on nav for read-heavy tasks. Reserve screenshots/PDFs for visual verification.

Interaction

All interaction commands accept unified selectors (see Selectors above).

pinchtab click <selector>                           # flags: --snap, --snap-diff, --text, --wait-nav, --x/--y (coords), --dialog-action accept|dismiss [--dialog-text "..."]
pinchtab dblclick <selector>
pinchtab mouse move|down|up <selector|x y>          # --button left|middle|right
pinchtab mouse wheel <ms> --dx <n> --dy <n>
pinchtab drag <from> <to>                           # or: drag <selector> --drag-x <n> --drag-y <n>
pinchtab type <selector> <text>                     # keystroke events
pinchtab fill <selector> <text>                     # set value directly; flags: --snap, --snap-diff, --text
pinchtab press <key>                                # Enter, Tab, Escape, ...
pinchtab hover <selector>
pinchtab select <selector> <value|text>             # flags: --snap, --snap-diff, --text; matches value attr, falls back to visible text
pinchtab scroll <pixels|direction|selector>         # `scroll 1500`, `scroll down`, `scroll '#footer'`

Rules:

  • Default output is OK; use --json for recovery metadata. Errors go to stderr as ERROR: <cmd>: <reason>.
  • Prefer --snap-diff with click, fill, select, back, forward, reload — returns OK + only changed elements. Use --snap when you need the full snapshot (first nav, major page change).
  • Prefer fill for form entry; type only when the site depends on keystroke events.
  • click --wait-nav when a click navigates. May return {"success":true} or Error 409: unexpected page navigation — treat 409 as success and verify with fresh snap/text.
  • Use low-level mouse only for drag handles, canvas widgets, or exact pointer sequences.
  • JS dialogs: --dialog-action accept|dismiss, --dialog-text for prompt() responses.
  • HTTP scroll action: "scrollX"/"scrollY" for pixel deltas, "selector" to scroll into view — x/y are viewport coords, not deltas.
  • HTTP GET /download?url=... returns JSON {contentType, data (base64), size, url}; only http/https; private/internal hosts blocked unless in security.downloadAllowedDomains.

Waiting

Use for async DOM settling (spinners, toasts, XHR).

pinchtab wait <selector>                            # default: visible; --state hidden to wait for disappear
pinchtab wait --text "..." | --not-text "..."       # text appear / disappear
pinchtab wait --url "**/dashboard" | --load networkidle
pinchtab wait 500                                   # fixed ms delay (last resort)

Timeout 10s default, 30s max via --timeout <ms>. Prefer --not-text/--state hidden over polling.

Export, debug, verification

pinchtab screenshot [-o path.png] [-q <jpeg-quality>]   # format by extension
pinchtab pdf [-o path.pdf] [--landscape]

Advanced (explicit opt-in only)

pinchtab eval "document.title"                      # --await-promise for async
pinchtab download <url> -o /tmp/out.bin
pinchtab upload /absolute/path -s <css>
  • eval: narrow read-only DOM inspection unless user asks for mutation.
  • download: prefer temp/workspace path over arbitrary filesystem.
  • upload: path must be user-provided or clearly approved.

HTTP API fallback

Use curl only when CLI is unavailable. Instance port (e.g. 9867):

  • POST /navigate {"url":"..."}
  • GET /snapshot?filter=interactive&format=compact
  • POST /action {"kind":"fill","selector":"e3","text":"..."} — kinds: click (waitNav:true), fill, type, press, select, hover, scroll (scrollX/scrollY/selector), drag (dragX/dragY).
  • POST /actions — batch in one round-trip. Body: array or {"actions":[...],"stopOnError":true,"tabId":"..."}. Response has per-step {index, success, result?, error?}.
  • GET /text, POST /solve {"maxAttempts":3}.
  • Tab-scoped: /tabs/TAB_ID/<endpoint> for navigate|snapshot|text|action|actions|screenshot|pdf|back|forward|close|wait|download|upload|handoff|resume|solve. Auth: Authorization: Bearer <token>.

Common Patterns

  • Form: nav --snap → fill <ref> <text> --snap-diff per field → click --wait-nav --snap-diff submit → verify with text. Always click submit; never press Enter.
  • Multi-step: use click --snap-diff to get only changed refs with each action — most token-efficient for flows with many steps.
  • Direct selectors: skip the snapshot when structure is known — click "text:Accept", fill "#search" "q".

Verification & Gotchas

  • text confirms success messages / navigation outcomes. Default is Readability-filtered; may drop nav, repeated headlines, short-text nodes, or collapse lists. Use text --full (raw document.body.innerText) when verifying list/grid/tab/accordion pages, the marker is short, or a default read came back missing content you saw in snap.
  • Stale refs after a change are expected — fetch fresh refs instead of retrying.
  • {"clicked":true,"submitted":true} means the event fired, not that the server accepted or HTML validation passed. Verify via snap/text — or use --snap-diff on the action itself, which already reflects the post-event page state.
  • Same-origin iframes: pinchtab frame <target> sets a stateful scope inherited by subsequent selector-based snap/action/text calls. Target accepts main, an iframe ref, CSS for the iframe, a frame name, or a URL. Nested iframes need multiple hops. Full snap (no -i) flattens same-origin iframe descendants and ref-based actions work across the boundary. Cross-origin iframes aren't exposed as scopes — fall back to eval against iframe.contentDocument. text --frame <frameId> takes a 32-char hex frameId (from pinchtab frame output), not a CSS selector. One-shot read idiom: FID=$(pinchtab frame '#f' | jq -r .current.frameId); pinchtab frame main; pinchtab text --full --frame "$FID".
  • eval → always IIFE when introducing identifiers. Top-level const/let/class collide across calls in the shared realm (SyntaxError: Identifier 'x' has already been declared). Also needed to project DOMRect into a JSON-serializable object: pinchtab eval "(() => { const r = document.querySelector('#x').getBoundingClientRect(); return {x: r.x, y: r.y, w: r.width, h: r.height}; })()". Single expressions without identifiers (document.title) are fine bare.
  • text reads hidden nodes: both default and --full include display:none / visibility:hidden content because they read raw DOM. To confirm something is *actually visible*, use snap (accessibility tree respects visibility) or eval against offsetHeight / getComputedStyle().display. Common trap: pre-seeded hidden success <div> reported by text before submission.
  • Compact snap shows <option> by visible text, not value. select accepts either; only eval + Array.from(select.options) to debug a no-match.
  • text:<value> selectors use JS-level search and can flake with DOM Error / context deadline exceeded on large pages. Prefer refs from a fresh snap -i -c — they resolve by backend node IDs.
  • snap -i -c skips non-interactive descendants. For iframe interiors set a frame scope or use full snap.
  • aria-expanded is usually on the outer container of accordions/menus, not the click trigger. Verify via the wrapper's attribute.

References

平台分布

OpenClaw

84.71%
按下载量换算16,171

安全审计

VirusTotal

可疑

ClawScan

通过

Static analysis

通过

权限和风险

操作浏览器

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

安装前确认

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

继续浏览同类 Skills