Specify a webhook-driven task for OpenClaw
Describe event inputs, validation, deduplication, and intended actions before integration work.
5,485,367 AI resources indexedWorking toward the worldβs largest AI resource index.
Automate Chrome and Chromium with Puppeteer for scraping, testing, screenshots, and browser workflows.
---
name: puppeteer-4c02aa9846b3
slug: puppeteer
version: 1.0.0
description: Automate Chrome and Chromium with Puppeteer for scraping, testing, screenshots, and browser workflows.
homepage: https://clawic.com/skills/puppeteer
metadata:
clawdbot:
emoji: π
requires:
bins:
- node
os:
- linux
- darwin
- win32
displayName: Puppeteer
---
## Setup
On first use, read `setup.md` for integration guidelines.
## When to Use
User needs browser automation: web scraping, E2E testing, PDF generation, screenshots, or any headless Chrome task. Agent handles page navigation, element interaction, waiting strategies, and data extraction.
## Architecture
Scripts and outputs in `~/Clawic/data/puppeteer/`. See `memory-template.md` for structure.
```
~/Clawic/data/puppeteer/
βββ memory.md # Status + preferences
βββ scripts/ # Reusable automation scripts
βββ output/ # Screenshots, PDFs, scraped data
```
## Quick Reference
| Topic | File |
|-------|------|
| Setup process | `setup.md` |
| Memory template | `memory-template.md` |
| Selectors guide | `selectors.md` |
| Waiting patterns | `waiting.md` |
## Core Rules
### 1. Always Wait Before Acting
Never click or type immediately after navigation. Always wait for the element:
```javascript
await page.waitForSelector('#button');
await page.click('#button');
```
Clicking without waiting causes "element not found" errors 90% of the time.
### 2. Use Specific Selectors
Prefer stable selectors in this order:
1. `[data-testid="submit"]` β test attributes (most stable)
2. `#unique-id` β IDs
3. `form button[type="submit"]` β semantic combinations
4. `.class-name` β classes (least stable, changes often)
Avoid: `div > div > div > button` β breaks on any DOM change.
### 3. Handle Navigation Explicitly
After clicks that navigate, wait for navigation:
```javascript
await Promise.all([
page.waitForNavigation(),
page.click('a.next-page')
]);
```
Without this, the script continues before the new page loads.
### 4. Set Realistic Viewport
Always set viewport for consistent rendering:
```javascript
await page.setViewport({ width: 1280, height: 800 });
```
Default viewport is 800x600 β many sites render differently or show mobile views.
### 5. Handle Popups and Dialogs
Dismiss dialogs before they block interaction:
```javascript
page.on('dialog', async dialog => {
await dialog.dismiss(); // or dialog.accept()
});
```
Unhandled dialogs freeze the script.
### 6. Close Browser on Errors
Always wrap in try/finally:
```javascript
const browser = await puppeteer.launch();
try {
// ... automation code
} finally {
await browser.close();
}
```
Leaked browser processes consume memory and ports.
### 7. Respect Rate Limits
Add delays between requests to avoid blocks:
```javascript
await page.waitForTimeout(1000 + Math.random() * 2000);
```
Hammering sites triggers CAPTCHAs and IP bans.
## Common Traps
- `page.click()` on invisible element β fails silently, use `waitForSelector` with `visible: true`
- Screenshots of elements off-screen β blank image, scroll into view first
- `page.evaluate()` returns undefined β cannot return DOM nodes, only serializable data
- Headless blocked by site β use `headless: 'new'` or set user agent
- Form submit reloads page β `page.waitForNavigation()` or data is lost
- Shadow DOM elements invisible to selectors β use `page.evaluateHandle()` to pierce shadow roots
- Cookies not persisting β launch with `userDataDir` for session persistence
## Security & Privacy
**Data that stays local:**
- All scraped data in ~/Clawic/data/puppeteer/output/
- Browser profile in specified userDataDir
**This skill does NOT:**
- Send scraped data anywhere
- Store credentials (you provide them per-script)
- Access files outside ~/Clawic/data/puppeteer/
## Related Skills
More Clawic skills, get them at https://clawic.com/skills/<slug> (install if the user confirms):
- `playwright` β Cross-browser automation alternative
- `chrome` β Chrome DevTools and debugging
- `web` β General web development
## Feedback
- If useful, star it: https://clawic.com/skills/puppeteer
- Latest version: https://clawic.com/skills/puppeteer
---
name: puppeteer-4c02aa9846b3
slug: puppeteer
version: 1.0.0
description: Automate Chrome and Chromium with Puppeteer for scraping, testing, screenshots, and browser workflows.
homepage: https://clawic.com/skills/puppeteer
metadata:
clawdbot:
emoji: π
requires:
bins:
- node
os:
- linux
- darwin
- win32
displayName: Puppeteer
---
## Setup
On first use, read `setup.md` for integration guidelines.
## When to Use
User needs browser automation: web scraping, E2E testing, PDF generation, screenshots, or any headless Chrome task. Agent handles page navigation, element interaction, waiting strategies, and data extraction.
## Architecture
Scripts and outputs in `~/Clawic/data/puppeteer/`. See `memory-template.md` for structure.
```
~/Clawic/data/puppeteer/
βββ memory.md # Status + preferences
βββ scripts/ # Reusable automation scripts
βββ output/ # Screenshots, PDFs, scraped data
```
## Quick Reference
| Topic | File |
|-------|------|
| Setup process | `setup.md` |
| Memory template | `memory-template.md` |
| Selectors guide | `selectors.md` |
| Waiting patterns | `waiting.md` |
## Core Rules
### 1. Always Wait Before Acting
Never click or type immediately after navigation. Always wait for the element:
```javascript
await page.waitForSelector('#button');
await page.click('#button');
```
Clicking without waiting causes "element not found" errors 90% of the time.
### 2. Use Specific Selectors
Prefer stable selectors in this order:
1. `[data-testid="submit"]` β test attributes (most stable)
2. `#unique-id` β IDs
3. `form button[type="submit"]` β semantic combinations
4. `.class-name` β classes (least stable, changes often)
Avoid: `div > div > div > button` β breaks on any DOM change.
### 3. Handle Navigation Explicitly
After clicks that navigate, wait for navigation:
```javascript
await Promise.all([
page.waitForNavigation(),
page.click('a.next-page')
]);
```
Without this, the script continues before the new page loads.
### 4. Set Realistic Viewport
Always set viewport for consistent rendering:
```javascript
await page.setViewport({ width: 1280, height: 800 });
```
Default viewport is 800x600 β many sites render differently or show mobile views.
### 5. Handle Popups and Dialogs
Dismiss dialogs before they block interaction:
```javascript
page.on('dialog', async dialog => {
await dialog.dismiss(); // or dialog.accept()
});
```
Unhandled dialogs freeze the script.
### 6. Close Browser on Errors
Always wrap in try/finally:
```javascript
const browser = await puppeteer.launch();
try {
// ... automation code
} finally {
await browser.close();
}
```
Leaked browser processes consume memory and ports.
### 7. Respect Rate Limits
Add delays between requests to avoid blocks:
```javascript
await page.waitForTimeout(1000 + Math.random() * 2000);
```
Hammering sites triggers CAPTCHAs and IP bans.
## Common Traps
- `page.click()` on invisible element β fails silently, use `waitForSelector` with `visible: true`
- Screenshots of elements off-screen β blank image, scroll into view first
- `page.evaluate()` returns undefined β cannot return DOM nodes, only serializable data
- Headless blocked by site β use `headless: 'new'` or set user agent
- Form submit reloads page β `page.waitForNavigation()` or data is lost
- Shadow DOM elements invisible to selectors β use `page.evaluateHandle()` to pierce shadow roots
- Cookies not persisting β launch with `userDataDir` for session persistence
## Security & Privacy
**Data that stays local:**
- All scraped data in ~/Clawic/data/puppeteer/output/
- Browser profile in specified userDataDir
**This skill does NOT:**
- Send scraped data anywhere
- Store credentials (you provide them per-script)
- Access files outside ~/Clawic/data/puppeteer/
## Related Skills
More Clawic skills, get them at https://clawic.com/skills/<slug> (install if the user confirms):
- `playwright` β Cross-browser automation alternative
- `chrome` β Chrome DevTools and debugging
- `web` β General web development
## Feedback
- If useful, star it: https://clawic.com/skills/puppeteer
- Latest version: https://clawic.com/skills/puppeteer
Imported from the listed AgentSkill.sh category. Complete supplied package files and notices are retained. Required external tools and credentials are not installed. No bundled code was executed during import. Individual agent task behavior has not been tested.