Chrome Devtools
einverne/dotfiles
Browser automation, debugging, and performance analysis using Puppeteer CLI scripts.
Generate and verify web scraper scripts using Actionbook's verified selectors.
$ npx skills add actionbook/actionbook --skill actionbook-scraper -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install actionbook/actionbook actionbook-scraper --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/actionbook/actionbook.git skills-src && mkdir -p .claude/skills && cp -r skills-src/playground/actionbook-scraper/skills/actionbook-scraper .claude/skills/actionbook-scraper && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "actionbook-scraper" agent skill from https://github.com/actionbook/actionbook/tree/main/playground/actionbook-scraper/skills/actionbook-scraper into .claude/skills/actionbook-scraper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "actionbook-scraper", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/actionbook/actionbook/tree/main/playground/actionbook-scraper/skills/actionbook-scraperType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add actionbook/actionbook --skill actionbook-scraper -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install actionbook/actionbook actionbook-scraper --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/actionbook/actionbook.git skills-src && mkdir -p .agents/skills && cp -r skills-src/playground/actionbook-scraper/skills/actionbook-scraper .agents/skills/actionbook-scraper && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "actionbook-scraper" agent skill from https://github.com/actionbook/actionbook/tree/main/playground/actionbook-scraper/skills/actionbook-scraper into .agents/skills/actionbook-scraper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "actionbook-scraper", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add actionbook/actionbook --skill actionbook-scraper -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install actionbook/actionbook actionbook-scraper --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/actionbook/actionbook.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/playground/actionbook-scraper/skills/actionbook-scraper .cursor/skills/actionbook-scraper && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "actionbook-scraper" agent skill from https://github.com/actionbook/actionbook/tree/main/playground/actionbook-scraper/skills/actionbook-scraper into .cursor/skills/actionbook-scraper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "actionbook-scraper", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/actionbook/actionbook.git --path playground/actionbook-scraper/skills/actionbook-scraper--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add actionbook/actionbook --skill actionbook-scraper -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install actionbook/actionbook actionbook-scraper --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/actionbook/actionbook.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/playground/actionbook-scraper/skills/actionbook-scraper .gemini/skills/actionbook-scraper && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "actionbook-scraper" agent skill from https://github.com/actionbook/actionbook/tree/main/playground/actionbook-scraper/skills/actionbook-scraper into .gemini/skills/actionbook-scraper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "actionbook-scraper", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install actionbook/actionbook actionbook-scraperInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add actionbook/actionbook --skill actionbook-scraper -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/actionbook/actionbook.git skills-src && mkdir -p .github/skills && cp -r skills-src/playground/actionbook-scraper/skills/actionbook-scraper .github/skills/actionbook-scraper && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "actionbook-scraper" agent skill from https://github.com/actionbook/actionbook/tree/main/playground/actionbook-scraper/skills/actionbook-scraper into .github/skills/actionbook-scraper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "actionbook-scraper", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add actionbook/actionbook --skill actionbook-scraper -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install actionbook/actionbook actionbook-scraper --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/actionbook/actionbook.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/playground/actionbook-scraper/skills/actionbook-scraper .opencode/skills/actionbook-scraper && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "actionbook-scraper" agent skill from https://github.com/actionbook/actionbook/tree/main/playground/actionbook-scraper/skills/actionbook-scraper into .opencode/skills/actionbook-scraper/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "actionbook-scraper", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
actionbook-scraperGenerate and verify web scraper scripts using Actionbook's verified selectors.
Actionbook Scraper is an agent skill from actionbook/actionbook. Generate and verify web scraper scripts using Actionbook's verified selectors. Auto-validates generated scripts and fixes errors.
Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Data & Analytics, covering Web scraping. The repository describes itself as: Let your AI agent get the sources behind logins and paywalls. The licence is Apache-2.0.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 0e31254. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
nodenpmFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
firstround.comnewsite.comactionbook.appFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Actionbook Scraper loads about 4.7k tokens when it runs. Until then it costs about 37 tokens; SKILL.md has 918 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from actionbook/actionbook at commit 0e31254, republished under its Apache-2.0 licence (© actionbook). 918 words, ~4,688 tokens.
.claude/skills/actionbook-scraper/SKILL.md (or your agent's skills folder).Every generated script MUST pass BOTH checks:
| Check | What to Verify | Failure Example |
|---|---|---|
| Part 1: Script Runs | No errors, no timeouts | Selector not found |
| Part 2: Data Correct | Content matches expected | Extracted "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 │
└─────────────────────────────────────────────────────┘/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/actionbook-scraper:generate <url> --standaloneOutput = Playwright JavaScript code
Every generated script must pass BOTH checks:
| Check | What to Verify | Failure Action |
|---|---|---|
| 1. Script Runs | No errors, no timeouts | Fix syntax/selector errors |
| 2. Data Correct | Content matches expected fields | Fix extraction logic |
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 logicData validation rules:
| Rule | Example Failure | Fix |
|---|---|---|
| Fields not empty | name: "" | Check selector targets correct element |
| No placeholder text | name: "Loading..." | Add wait for dynamic content |
| No UI text | name: "Click to expand" | Extract after expanding, not button text |
| Correct data type | year: "View Details" | Wrong selector, fix field mapping |
| Reasonable count | Expected ~100, got 3 | Add scroll/pagination handling |
node script.js/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 │ ``` │
│ ``` │ │
└─────────────────────────────────────────────────────────────┘| Operation | Primary Tool | Fallback | Notes |
|---|---|---|---|
| Find selectors for URL | search_actions | None | Search by domain/keywords |
| Get full selector details | get_action_by_id | None | Use action_id from search |
| List available sources | list_sources | search_sources | Browse all indexed sites |
| Generate agent-browser script | Agent (sonnet) | - | Default mode for /generate |
| Generate Playwright script | Agent (sonnet) | - | Use --standalone flag |
| Structure analysis | Agent (haiku) | - | Parse Actionbook response |
| Request new website | agent-browser | Manual | Submit to actionbook.app (ONLY command that executes agent-browser) |
Every generated script MUST be verified by executing it.
| Step | Action |
|---|---|
| 1 | Generate script with Actionbook selectors |
| 2 | Execute script to verify it works |
| 3 | If failed: analyze error, fix script, go to step 2 |
| 4 | If success: output verified script + data preview |
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 closeFor Playwright scripts (--standalone):
# Write to temp file and execute
node /tmp/scraper.js
# Check if output file has data
# If error → fix and retryagent-browser close| Error | Example | Fix |
|---|---|---|
| Extracted button text | name: "Click to expand" | Extract content after expanding |
| Extracted placeholder | desc: "Loading..." | Add wait for dynamic content |
| Empty fields | name: "" | Fix selector |
| Wrong field mapping | year: "San Francisco" | Fix selector for each field |
| Too few items | Expected 100, got 3 | Add scroll/pagination |
If Actionbook selectors are wrong or outdated, record to local file:
.actionbook-issues.logWhen to record:
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}
---When Actionbook provides multiple selectors, prefer in this order:
data-testid - Most stable, designed for automationaria-label - Accessibility-based, semanticcss - Class-based selectorsxpath - Last resort, most fragile| Command | Description | Agent |
|---|---|---|
/actionbook-scraper:analyze <url> | Analyze page structure and show available selectors | structure-analyzer |
/actionbook-scraper:generate <url> | Generate agent-browser scraper script | code-generator |
/actionbook-scraper:generate <url> --standalone | Generate Playwright/Puppeteer script | code-generator |
/actionbook-scraper:list-sources | List websites with Actionbook data | - |
/actionbook-scraper:request-website <url> | Request new website to be indexed (uses agent-browser) | website-requester |
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 findingsUser: /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
```bash
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 closeStep 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:**
````markdown
## Verified Scraper (agent-browser)
**Status**: ✅ Verified (extracted 50 items)
Run these commands to scrape:
```bash
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[
{"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:**
````markdown
## Verified Scraper (Playwright)
**Status**: ✅ Verified (extracted 50 items)
```javascript
const { chromium } = require('playwright');
// ... generated code with Actionbook selectors
```
Usage:
```bash
npm install playwright
node scraper.js
```
### Data Preview
```json
[
{"name": "Item 1", "description": "..."},
// ... first 3 items
]
```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.app/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 submissionActionbook returns selector data in this format:
{
"url": "https://example.com/page",
"title": "Page Title",
"content": "## Selector Reference\n\n| Element | CSS | XPath | Type |\n..."
}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.expandDetail 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| Indicator | Page Type | Template |
|---|---|---|
| Scroll to load more | Dynamic/Infinite | playwright-js (with scroll) |
| Click to expand | Card-based | playwright-js (with click) |
| Pagination links | Paginated | playwright-js (with pagination) |
| Static content | Static | puppeteer or playwright |
| SPA framework detected | SPA | playwright-js (network idle) |
## 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 Scraper
**Target URL**: {url}
**Template**: {template}
**Expected Output**: {description}
### Dependencies
```bash
npm install playwright{generated_code}node scraper.jsResults saved to {output_file}
## Templates Reference
| Template | Flag | Output | Run With |
|----------|------|--------|----------|
| **agent-browser** | (default) | CLI commands | `agent-browser` CLI |
| playwright-js | --standalone | .js file | `node scraper.js` |
| playwright-python | --standalone --template playwright-python | .py file | `python scraper.py` |
| puppeteer | --standalone --template puppeteer | .js file | `node scraper.js` |
## Error Handling
| Error | Cause | Solution |
|-------|-------|----------|
| No actions found | URL not indexed | Use `/actionbook-scraper:request-website` to request indexing |
| Selectors not working | Page updated | Report to Actionbook, try alternative selectors |
| Timeout | Slow page load | Increase timeout, add retry logic |
| Empty data | Dynamic content | Add scroll/wait handling |
| Form submission failed | Network/page issue | Retry or submit manually at actionbook.app |
## agent-browser Usage
For the `request-website` command, the plugin uses **agent-browser CLI** to automate form submission.
### agent-browser Commands
```bash
# Open a URL
agent-browser open "https://actionbook.app/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 closeIf form selectors are unknown, use snapshot to discover them:
agent-browser open "https://actionbook.app/request-website"
agent-browser snapshot -i # Returns page structure with selectorsCritical: Always run agent-browser close at the end of any agent-browser session, even if errors occur.
/actionbook-scraper:generate https://firstround.com/companies
Output: agent-browser commands
```bash
agent-browser open "https://firstround.com/companies"
agent-browser scroll down 2000
agent-browser get text ".company-list-card-small"
agent-browser closeUser runs these commands to scrape.
### Example 2: Generate Playwright Script/actionbook-scraper:generate https://firstround.com/companies --standalone
Output: Playwright JavaScript code
const { chromium } = require('playwright');
// ... full scriptUser runs: node scraper.js
### Example 3: Analyze Page Structure/actionbook-scraper:analyze https://example.com/products
Output: Analysis showing:
### Example 4: Request New Website/actionbook-scraper:request-website https://newsite.com/data
Action: Submits form to actionbook.app (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© actionbook, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in playground/actionbook-scraper/skills/actionbook-scraper of actionbook/actionbook.
Open the folder on GitHubat commit 0e31254
Actionbook Scraper next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Actionbook Scraper this skillactionbook/actionbook | 1.6k | — | ~4.7k | Automated safety check: Pass | Apache-2.0 | |
| Chrome Devtoolseinverne/dotfiles | 121 | 2 repos | ~1.6k | Automated safety check: Notes | Apache-2.0 | |
| Web Scrapingplatonai/Browser4 | 1.2k | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Proxiesoxylabs/agent-skills | 875 | — | ~1.7k | Automated safety check: Pass | MIT | |
| Web Crawlerbyungjunjang/web-crawler | 162 | — | ~7.2k | Automated safety check: Pass | MIT | |
| Web Unblockeroxylabs/agent-skills | 875 | — | ~865 | Automated safety check: Pass | MIT |
einverne/dotfiles
Browser automation, debugging, and performance analysis using Puppeteer CLI scripts.
platonai/Browser4
Extracts data from web pages using browser automation and CSS/JavaScript selectors.
oxylabs/agent-skills
Oxylabs proxy networks: Residential, Mobile, shared Datacenter/ISP, and Dedicated Datacenter/ISP proxies with geo-targeting, IP rotation, session persistence, and port-based sticky IPs.
byungjunjang/web-crawler
URL과 수집 항목을 받아 사이트를 정찰하고 데이터를 수집하여 엑셀로 출력하는 범용 웹 크롤링 에이전트. An agent skill from byungjunjang/web-crawler.
oxylabs/agent-skills
Bypasses anti-bot protections using Oxylabs Web Unblocker, an AI-powered proxy that handles fingerprinting, JavaScript rendering, and retries automatically.
apify/awesome-skills
Wire an AI agent to live e-commerce product data using Apify's E-commerce Scraping Tool over MCP, either as runtime tool calls or as a scheduled refresh into a vector store.
actionbook/actionbook
Extract structured data from websites and produce an executable Playwright script plus extracted data.
actionbook/actionbook
Activate when the user needs to interact with any website — browser automation, web scraping, screenshots, form filling, UI testing, monitoring, or building AI agents.
actionbook/actionbook
Run browser-based web tests against websites using Actionbook CLI.
actionbook/actionbook
Browser action engine. An agent skill from actionbook/actionbook.
actionbook/actionbook
View, search, and download academic papers from arXiv. An agent skill from actionbook/actionbook.
actionbook/actionbook
CRITICAL: Use for json-ui component rendering and development.
Generate and verify web scraper scripts using Actionbook's verified selectors. Actionbook Scraper is an agent skill from actionbook/actionbook. Generate and verify web scraper scripts using Actionbook's verified selectors.
Actionbook Scraper fits situations like: tasks that involve Web scraping.
Run `npx skills add actionbook/actionbook --skill actionbook-scraper -a claude-code`. Or copy the skill folder (playground/actionbook-scraper/skills/actionbook-scraper in actionbook/actionbook) into .claude/skills/actionbook-scraper in your project. Claude Code loads it when a task matches its description.
Run `npx skills add actionbook/actionbook --skill actionbook-scraper -a codex`. Or copy the skill folder (playground/actionbook-scraper/skills/actionbook-scraper in actionbook/actionbook) into .agents/skills/actionbook-scraper in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add actionbook/actionbook --skill actionbook-scraper -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/actionbook-scraper, .gemini/skills/actionbook-scraper, .github/skills/actionbook-scraper and .opencode/skills/actionbook-scraper in your project.
Going by SKILL.md and its folder, Actionbook Scraper needs the command-line tools its instructions call (node and npm).
SKILL.md names 3 domains. In commands or code: firstround.com, newsite.com and actionbook.app; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Actionbook Scraper is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.7k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Actionbook Scraper: Chrome Devtools (einverne/dotfiles, 121 stars), Web Scraping (platonai/Browser4, 1.2k stars), Proxies (oxylabs/agent-skills, 875 stars) and Web Crawler (byungjunjang/web-crawler, 162 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
actionbook (a GitHub organization) maintains it in actionbook/actionbook, which has 1,611 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on September 8, 2026.
Source: actionbook/actionbook on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.