Token导航 LogoToken导航TokenDH.com
研究检索操作浏览器github未标认证来源可访问许可证需确认审计提醒

actionbook-scraper行动手册刮刀

Agent Skill

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

总安装

3,089

周安装

130

GitHub Stars

1,517

下载量

1,082
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

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

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

命令行安装

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

skills.shnpx skills
npx skills add https://github.com/actionbook/actionbook --skill actionbook-scraper

简介

Actionbook Scraper 用于浏览器自动化、网页内容提取和前端流程验证,支持页面交互与数据抓取任务。

  • 适合需要让 Agent 打开网页、读取 DOM 结构或测试用户界面的场景,如表单填写、动态内容加载等。
  • 生成的脚本必须通过运行正确性和数据准确性双重校验,确保提取结果真实有效。
  • 需从 GitHub 仓库安装,使用前请确认是否允许执行命令和访问外部网站。
  • 注意该技能涉及网络请求和潜在敏感操作,建议在可控环境中部署并限制其作用范围。

SKILL.md

Actionbook Scraper Skill

⚠️ CRITICAL: Two-Part Verification

Every generated script MUST pass BOTH checks:

CheckWhat to VerifyFailure Example
Part 1: Script RunsNo errors, no timeoutsSelector not found
Part 2: Data CorrectContent matches expectedExtracted "Click to expand" instead of name
┌─────────────────────────────────────────────────────┐
│   1. Generate Script                                │
│          ↓                                          │
│   2. Execute Script                                 │
│          ↓                                          │
│   3. Check Part 1: Script runs without errors?      │
│          ↓                                          │
│   4. Check Part 2: Data content is correct?         │
│      - Not empty                                    │
│      - Not placeholder text ("Loading...")          │
│      - Not UI text ("Click to expand")              │
│      - Fields mapped correctly                      │
│          ↓                                          │
│      ┌───┴───┐                                      │
│   BOTH Pass  Either Fails                           │
│      │           │                                  │
│      │           ↓                                  │
│      │       Is it Actionbook data issue?           │
│      │           │                                  │
│      │       ┌───┴───┐                              │
│      │      Yes      No                             │
│      │       │       │                              │
│      │       ↓       ↓                              │
│      │    Log to   Fix script                       │
│      │    .actionbook-issues.log                    │
│      │       │       │                              │
│      │       └───┬───┘                              │
│      │           ↓                                  │
│      │       Retry (max 3x)                         │
│      ↓                                              │
│   Output Script                                     │
└─────────────────────────────────────────────────────┘

Default Output Format

/actionbook-scraper:generate <url>

DEFAULT = agent-browser script (bash commands)

agent-browser open "https://example.com"
agent-browser scroll down 2000
agent-browser get text ".selector"
agent-browser close

With --standalone Flag

/actionbook-scraper:generate <url> --standalone

Output = Playwright JavaScript code


Verification Requirements

Two-Part Verification

Every generated script must pass BOTH checks:

CheckWhat to VerifyFailure Action
1. Script RunsNo errors, no timeoutsFix syntax/selector errors
2. Data CorrectContent matches expected fieldsFix extraction logic

Part 1: Script Execution Check

  • No runtime errors
  • No timeout errors
  • Browser closes properly

Part 2: Data Content Check (CRITICAL)

Verify extracted data matches the expected structure:

Expected: Company name, description, website, year founded
Actual:   "Click to expand", "Loading...", empty strings

→ FAIL: Data content incorrect, need to fix extraction logic

Data validation rules:

RuleExample FailureFix
Fields not emptyname: ""Check selector targets correct element
No placeholder textname: "Loading..."Add wait for dynamic content
No UI textname: "Click to expand"Extract after expanding, not button text
Correct data typeyear: "View Details"Wrong selector, fix field mapping
Reasonable countExpected ~100, got 3Add scroll/pagination handling

For agent-browser Scripts

  1. Execute the generated commands
  2. Check script runs without errors
  3. Check data content is correct:

- Fields match expected structure - Values are actual data, not UI text - Count is reasonable

  1. If failed:

- Analyze what's wrong (script error vs data error) - Fix selector, wait logic, or extraction - Re-execute

  1. If success:

- Output the verified script - Show data preview with field validation

For Playwright Scripts (--standalone)

  1. Write script to temp file
  2. Run with node script.js
  3. Check script runs without errors
  4. Check output data is correct:

- JSON structure matches expected fields - Values contain actual data - Count matches expected range

  1. If failed:

- Analyze error type - Fix script - Re-run

  1. If success:

- Output the verified script

Architecture Overview

/generate <url>              → OUTPUT: agent-browser bash commands
/generate <url> --standalone → OUTPUT: Playwright .js file
┌─────────────────────────────────────────────────────────────┐
│                   /generate <url>                           │
│                                                             │
│   1. Search Actionbook → get selectors                      │
│   2. Generate OUTPUT:                                       │
│                                                             │
│      WITHOUT --standalone    │    WITH --standalone         │
│      ─────────────────────   │    ──────────────────        │
│      agent-browser commands  │    Playwright .js code       │
│                              │                              │
│      ```bash                 │    ```javascript             │
│      agent-browser open ...  │    const { chromium } = ...  │
│      agent-browser get ...   │    await page.goto(...)      │
│      agent-browser close     │    ```                       │
│      ```                     │                              │
└─────────────────────────────────────────────────────────────┘

Tool Priority

OperationPrimary ToolFallbackNotes
Find selectors for URLsearch_actionsNoneSearch by domain/keywords
Get full selector detailsget_action_by_idNoneUse action_id from search
List available sourceslist_sourcessearch_sourcesBrowse all indexed sites
Generate agent-browser scriptAgent (sonnet)-Default mode for /generate
Generate Playwright scriptAgent (sonnet)-Use --standalone flag
Structure analysisAgent (haiku)-Parse Actionbook response
Request new websiteagent-browserManualSubmit to actionbook.dev (ONLY command that executes agent-browser)

Workflow Rules

CRITICAL: Generate → Verify → Fix

Every generated script MUST be verified by executing it.

StepAction
1Generate script with Actionbook selectors
2Execute script to verify it works
3If failed: analyze error, fix script, go to step 2
4If success: output verified script + data preview

Verification Process

For agent-browser scripts:

# Execute each command
agent-browser open "https://example.com"
agent-browser wait --load networkidle
agent-browser get text ".selector"
# Check if data is returned
# If error → fix and retry
agent-browser close

For Playwright scripts (--standalone):

# Write to temp file and execute
node /tmp/scraper.js
# Check if output file has data
# If error → fix and retry

Critical Rules

  1. ALWAYS verify generated scripts - Execute and check BOTH parts
  2. Part 1: Script must run - No errors, no timeouts
  3. Part 2: Data must be correct - Not empty, not UI text, fields mapped correctly
  4. Fix errors automatically - Don't output broken scripts or wrong data
  5. Use Actionbook MCP tools first - Never guess selectors
  6. Include scroll handling for lazy-loaded pages
  7. Include expand/collapse logic for card-based layouts
  8. Always close browser - Include agent-browser close
  9. Retry up to 3 times - If still failing, report the specific issue

Common Data Errors to Catch

ErrorExampleFix
Extracted button textname: "Click to expand"Extract content after expanding
Extracted placeholderdesc: "Loading..."Add wait for dynamic content
Empty fieldsname: ""Fix selector
Wrong field mappingyear: "San Francisco"Fix selector for each field
Too few itemsExpected 100, got 3Add scroll/pagination

Record Actionbook Data Issues

If Actionbook selectors are wrong or outdated, record to local file:

.actionbook-issues.log

When to record:

  • Selector doesn't exist on page
  • Selector returns wrong element
  • Page structure has changed
  • Missing selectors for key elements

Log format:

[YYYY-MM-DD HH:MM] URL: {url}
Action ID: {action_id}
Issue Type: {selector_error | outdated | missing}
Details: {description}
Selector: {selector}
Expected: {what it should select}
Actual: {what it actually selects or error}
---

Selector Priority

When Actionbook provides multiple selectors, prefer in this order:

  1. data-testid - Most stable, designed for automation
  2. aria-label - Accessibility-based, semantic
  3. css - Class-based selectors
  4. xpath - Last resort, most fragile

Commands

CommandDescriptionAgent
/actionbook-scraper:analyze <url>Analyze page structure and show available selectorsstructure-analyzer
/actionbook-scraper:generate <url>Generate agent-browser scraper scriptcode-generator
/actionbook-scraper:generate <url> --standaloneGenerate Playwright/Puppeteer scriptcode-generator
/actionbook-scraper:list-sourcesList websites with Actionbook data-
/actionbook-scraper:request-website <url>Request new website to be indexed (uses agent-browser)website-requester

Data Flow

Analyze Command

1. User: /actionbook-scraper:analyze https://example.com/page
2. Extract domain from URL → "example.com"
3. search_actions("example page") → [action_ids]
4. For best match: get_action_by_id(action_id) → full selector data
5. Structure-analyzer agent formats and presents findings

Generate Command (Default: agent-browser script)

User: /actionbook-scraper:generate https://example.com/page

Step 1: Search Actionbook
  search_actions("example.com page") → action_ids

Step 2: Get selectors
  get_action_by_id(best_match) → selectors

Step 3: Generate agent-browser script

agent-browser open "https://example.com/page" agent-browser wait --load networkidle agent-browser scroll down 2000 agent-browser get text ".item-container" agent-browser close


Step 4: VERIFY script (REQUIRED) Execute the commands and check if data is extracted If failed → analyze error → fix script → retry (max 3x)

Step 5: Return verified script + data preview

Example Output:

## Verified Scraper (agent-browser)

**Status**: ✅ Verified (extracted 50 items)

Run these commands to scrape:

agent-browser open "https://example.com/page" agent-browser wait --load networkidle agent-browser scroll down 2000 agent-browser get text ".item-container" agent-browser close


### Data Preview

[ {"name": "Item 1", "description": "..."}, {"name": "Item 2", "description": "..."}, // ... showing first 3 items ]

Generate Command (--standalone: Playwright script)

User: /actionbook-scraper:generate https://example.com/page --standalone

Step 1: Search Actionbook for selectors
Step 2: Get full selector data
Step 3: Generate Playwright/Puppeteer script
Step 4: VERIFY script (REQUIRED)
  Write to temp file → node /tmp/scraper.js → check output
  If failed → analyze error → fix script → retry (max 3x)
Step 5: Return verified script + data preview

Example Output:

## Verified Scraper (Playwright)

**Status**: ✅ Verified (extracted 50 items)

const { chromium } = require('playwright'); // ... generated code with Actionbook selectors


Usage:

npm install playwright node scraper.js


### Data Preview

[ {"name": "Item 1", "description": "..."}, // ... first 3 items ]

Request Website Command

1. User: /actionbook-scraper:request-website https://newsite.com/page
2. Launch website-requester agent (uses agent-browser)
3. Agent workflow:
   a. agent-browser open "https://actionbook.dev/request-website"
   b. agent-browser snapshot -i (discover form selectors)
   c. agent-browser type <url-field> "https://newsite.com/page"
   d. agent-browser type <email-field> (optional)
   e. agent-browser type <usecase-field> (optional)
   f. agent-browser click <submit-button>
   g. agent-browser snapshot -i (verify submission)
   h. agent-browser close
4. Output: Confirmation of submission

Selector Data Structure

Actionbook returns selector data in this format:

{
  "url": "https://example.com/page",
  "title": "Page Title",
  "content": "## Selector Reference\n\n| Element | CSS | XPath | Type |\n..."
}

Common Selector Patterns

Card-based layouts:

Container: .card-list, .grid-container
Card item: .card, .list-item
Card name: .card__title, .card-name
Card description: .card__description
Expand button: .card__expand, button.expand

Detail extraction (dt/dd pattern):

// Common pattern for key-value pairs
const items = container.querySelectorAll('.info-item');
items.forEach(item => {
  const label = item.querySelector('dt').textContent;
  const value = item.querySelector('dd').textContent;
});

Table layouts:

Table: table, .data-table
Header: thead th, .table-header
Row: tbody tr, .table-row
Cell: td, .table-cell

Page Type Detection

IndicatorPage TypeTemplate
Scroll to load moreDynamic/Infiniteplaywright-js (with scroll)
Click to expandCard-basedplaywright-js (with click)
Pagination linksPaginatedplaywright-js (with pagination)
Static contentStaticpuppeteer or playwright
SPA framework detectedSPAplaywright-js (network idle)

Output Formats

Analysis Output

## Page Analysis: {url}

### Matched Action
- **Action ID**: {action_id}
- **Confidence**: HIGH | MEDIUM | LOW

### Available Selectors

| Element | Selector | Type | Methods |
|---------|----------|------|---------|
| {name} | {selector} | {type} | {methods} |

### Page Structure
- **Type**: {static|dynamic|spa}
- **Data Pattern**: {cards|table|list}
- **Lazy Loading**: {yes|no}
- **Expand/Collapse**: {yes|no}

### Recommendations
- Suggested template: {template}
- Special handling needed: {notes}

Generated Code Output

## Generated Scraper

**Target URL**: {url}
**Template**: {template}
**Expected Output**: {description}

### Dependencies

npm install playwright


### Code

{generated_code}


### Usage

node scraper.js


### Output

Results saved to `{output_file}`

Templates Reference

TemplateFlagOutputRun With
agent-browser(default)CLI commandsagent-browser CLI
playwright-js--standalone.js filenode scraper.js
playwright-python--standalone --template playwright-python.py filepython scraper.py
puppeteer--standalone --template puppeteer.js filenode scraper.js

Error Handling

ErrorCauseSolution
No actions foundURL not indexedUse /actionbook-scraper:request-website to request indexing
Selectors not workingPage updatedReport to Actionbook, try alternative selectors
TimeoutSlow page loadIncrease timeout, add retry logic
Empty dataDynamic contentAdd scroll/wait handling
Form submission failedNetwork/page issueRetry or submit manually at actionbook.dev

agent-browser Usage

For the request-website command, the plugin uses agent-browser CLI to automate form submission.

agent-browser Commands

# Open a URL
agent-browser open "https://actionbook.dev/request-website"

# Get page snapshot (discover selectors)
agent-browser snapshot -i

# Type into form field
agent-browser type "input[name='url']" "https://example.com"

# Click button
agent-browser click "button[type='submit']"

# Close browser (ALWAYS do this)
agent-browser close

Selector Discovery

If form selectors are unknown, use snapshot to discover them:

agent-browser open "https://actionbook.dev/request-website"
agent-browser snapshot -i  # Returns page structure with selectors

Always Close Browser

Critical: Always run agent-browser close at the end of any agent-browser session, even if errors occur.

Rate Limiting

  • Actionbook MCP: No rate limit for local usage
  • Target websites: Respect robots.txt and add delays between requests
  • Recommended: 1-2 second delay between page requests

Examples

Example 1: Generate agent-browser Script (Default)

/actionbook-scraper:generate https://firstround.com/companies

Output: agent-browser commands

agent-browser open "https://firstround.com/companies" agent-browser scroll down 2000 agent-browser get text ".company-list-card-small" agent-browser close


User runs these commands to scrape.

Example 2: Generate Playwright Script


/actionbook-scraper:generate [https://firstround.com/companies](https://firstround.com/companies) --standalone

Output: Playwright JavaScript code

const { chromium } = require('playwright'); // ... full script


User runs: `node scraper.js`

Example 3: Analyze Page Structure


/actionbook-scraper:analyze [https://example.com/products](https://example.com/products)

Output: Analysis showing:

- Available selectors
- Page structure
- Recommended approach

Example 4: Request New Website


/actionbook-scraper:request-website [https://newsite.com/data](https://newsite.com/data)

Action: Submits form to actionbook.dev (this command DOES execute agent-browser)

Best Practices

  1. Always analyze before generating - Understand the page structure first
  2. Check list-sources - Verify the site is indexed before attempting
  3. Review generated code - Verify selectors match expected elements
  4. Add appropriate delays - Be respectful to target servers
  5. Handle edge cases - Empty states, loading states, errors
  6. Test incrementally - Run on small subset before full scrape

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

31.22%
按下载量换算338

Claude

31.13%
按下载量换算337

Cursor

18.91%
按下载量换算205

Gemini CLI

8.86%
按下载量换算96

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

操作浏览器

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

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills