--- id: AIDotNet/MoYuCode/puppeteer version: "f2adca93" license: MIT install: manual updated: 2026-01-28 --- # puppeteer — puppeteer enables you to script and control browser behavior programmatically, handling navigation, form submission, and DOM manipulation at scale. Perfect for testing, scraping, and automating repetitive web tasks without manual intervention. Publisher: AIDotNet · Stars: 84 · Updated: 2026-01-28 Install (manual): `git clone https://github.com/AIDotNet/MoYuCode` ## SKILL.md # Puppeteer Tool ## Description Headless Chrome/Chromium automation for PDF generation, screenshots, web scraping, and testing. ## Source - Repository: [puppeteer/puppeteer](https://github.com/puppeteer/puppeteer) - License: Apache-2.0 - Maintainer: Google ## Installation ```bash npm install puppeteer ``` ## Usage Examples ### Generate PDF from HTML ```typescript import puppeteer from 'puppeteer'; async function generatePDF(html: string, outputPath: string) { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.setContent(html, { waitUntil: 'networkidle0' }); await page.pdf({ path: outputPath, format: 'A4', margin: { top: '20mm', right: '20mm', bottom: '20mm', left: '20mm' }, printBackground: true, }); await browser.close(); } // Usage const html = `
Total: $100.00
`; await generatePDF(html, 'invoice.pdf'); ``` ### Take Screenshot ```typescript async function takeScreenshot(url: string, outputPath: string) { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.setViewport({ width: 1920, height: 1080 }); await page.goto(url, { waitUntil: 'networkidle2' }); await page.screenshot({ path: outputPath, fullPage: true, type: 'png', }); await browser.close(); } ``` ### Web Scraping ```typescript async function scrapeData(url: string) { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto(url, { waitUntil: 'domcontentloaded' }); const data = await page.evaluate(() => { const items = document.querySelectorAll('.product'); return Array.from(items).map(item => ({ title: item.querySelector('h2')?.textContent?.trim(), price: item.querySelector('.price')?.textContent?.trim(), })); }); await browser.close(); return data; } ``` ### Form Automation ```typescript async function submitForm(url: string, formData: Record