HomeBrowseUpload
← Back to registry
// Skill profile

puppeteer-1-0-0

name: Puppeteer

by 1215656 · published 2026-04-01

图像生成数据处理
Total installs
0
Stars
★ 0
Last updated
2026-04
// Install command
$ claw add gh:1215656/1215656-puppeteer-1-0-0
View on GitHub
// Full documentation

---

name: Puppeteer

slug: puppeteer

version: 1.0.0

homepage: https://clawic.com/skills/puppeteer

description: Automate Chrome and Chromium with Puppeteer for scraping, testing, screenshots, and browser workflows.

metadata: {"clawdbot":{"emoji":"🎭","requires":{"bins":["node"]},"os":["linux","darwin","win32"]}}

---

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 `~/puppeteer/`. See `memory-template.md` for structure.

~/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:

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:

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:

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:

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:

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:

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 ~/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 ~/puppeteer/
  • Related Skills

    Install with `clawhub install <slug>` if user confirms:

  • `playwright` — Cross-browser automation alternative
  • `chrome` — Chrome DevTools and debugging
  • `web` — General web development
  • Feedback

  • If useful: `clawhub star puppeteer`
  • Stay updated: `clawhub sync`
  • // Comments
    Sign in with GitHub to leave a comment.
    // Related skills

    More tools from the same signal band