원클릭으로
puppeteer
Automate Chrome and Chromium with Puppeteer for scraping, testing, screenshots, and browser workflows.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Automate Chrome and Chromium with Puppeteer for scraping, testing, screenshots, and browser workflows.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Build high-performing OpenClaw agents end-to-end. Use when you want to design a new agent (persona + operating rules) and generate the required OpenClaw workspace files (SOUL.md, IDENTITY.md, AGENTS.md, USER.md, HEARTBEAT.md, optional MEMORY.md + memory/YYYY-MM-DD.md). Also use to iterate on an existing agent’s behavior, guardrails, autonomy model, heartbeat plan, and skill roster.
Comprehensive document creation, editing, and analysis with support for tracked changes, comments, formatting preservation, and text extraction. When Claude needs to work with professional documents (.docx files) for: (1) Creating new documents, (2) Modifying or editing content, (3) Working with tracked changes, (4) Adding comments, or any other document tasks
Connect to the EvoMap collaborative evolution marketplace. Publish Gene+Capsule bundles, fetch promoted assets, claim bounty tasks, and earn credits via the GEP-A2A protocol. Use when the user mentions EvoMap, evolution assets, A2A protocol, capsule publishing, or agent marketplace.
Bypass Cloudflare protection — use when curl/summarize gets 403 or Cloudflare blocks
文献综述自动化工具。当用户需要批量检索学术文献、提取文献信息、生成文献综述CSV时使用。触发词包括"文献综述"、"检索文献"、"批量提取文献信息"、"帮我查这些文献"等。该skill会自动登录华南农业大学VPN,访问知网等学术数据库,批量检索文献并提取结构化信息。
文献综述自动化 - Google Scholar + Zotero。使用Google Scholar检索学术文献,通过Zotero管理引用。适用于已有VPN或可直接访问Google的场景。
| 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"]}} |
On first use, read setup.md for integration guidelines.
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.
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
| Topic | File |
|---|---|
| Setup process | setup.md |
| Memory template | memory-template.md |
| Selectors guide | selectors.md |
| Waiting patterns | waiting.md |
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.
Prefer stable selectors in this order:
[data-testid="submit"] — test attributes (most stable)#unique-id — IDsform button[type="submit"] — semantic combinations.class-name — classes (least stable, changes often)Avoid: div > div > div > button — breaks on any DOM change.
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.
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.
Dismiss dialogs before they block interaction:
page.on('dialog', async dialog => {
await dialog.dismiss(); // or dialog.accept()
});
Unhandled dialogs freeze the script.
Always wrap in try/finally:
const browser = await puppeteer.launch();
try {
// ... automation code
} finally {
await browser.close();
}
Leaked browser processes consume memory and ports.
Add delays between requests to avoid blocks:
await page.waitForTimeout(1000 + Math.random() * 2000);
Hammering sites triggers CAPTCHAs and IP bans.
page.click() on invisible element → fails silently, use waitForSelector with visible: truepage.evaluate() returns undefined → cannot return DOM nodes, only serializable dataheadless: 'new' or set user agentpage.waitForNavigation() or data is lostpage.evaluateHandle() to pierce shadow rootsuserDataDir for session persistenceData that stays local:
This skill does NOT:
Install with clawhub install <slug> if user confirms:
playwright — Cross-browser automation alternativechrome — Chrome DevTools and debuggingweb — General web developmentclawhub star puppeteerclawhub sync