mcpField
P
puppeteer

puppeteer

github.com/aidotnet開発85125 回インストール39 週間前に更新
リポジトリ

puppeteer について

Puppeteer で Chrome または Chromium を自動操作するスキルです。PDF 生成、スクリーンショット、データ収集、フォーム操作などのブラウザー作業に対応します。

主な機能

  1. 01ヘッドレスブラウザー操作
  2. 02HTML からの PDF 生成
  3. 03ページのスクリーンショット
  4. 04Web ページデータの収集
  5. 05フォーム入力の自動化

活用シーン

  1. 01HTML コンテンツから PDF を作成
  2. 02Web サイトの画面を撮影
  3. 03商品ページのデータを抽出
  4. 04Web フォームの入力と送信

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/aidotnet/moyucode --skill puppeteer

インストール後、Claude Code で/puppeteerを入力して読み込まれたか確認します。

詳細

Puppeteer ツール

説明

PDF 生成、スクリーンショット、ウェブスクレイピング、テストに対応したヘッドレス Chrome/Chromium の自動化ツールです。

ソース

インストール

npm install puppeteer

使用例

HTML から PDF を生成
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 = `
  <html>
    <head><style>body { font-family: Arial; }</style></head>
    <body><h1>Invoice #001</h1><p>Total: $100.00</p></body>
  </html>
`;
await generatePDF(html, 'invoice.pdf');
スクリーンショットを撮影
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();
}
ウェブスクレイピング
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;
}
フォームの自動化
async function submitForm(url: string, formData: Record<string, string>) {
  const browser = await puppeteer.launch({ headless: false });
  const page = await browser.newPage();
  
  await page.goto(url);
  
  // Fill form fields
  for (const [selector, value] of Object.entries(formData)) {
    await page.type(selector, value);
  }
  
  // Submit
  await page.click('button[type="submit"]');
  await page.waitForNavigation();
  
  await browser.close();
}

PDF オプション

interface PDFOptions {
  path?: string;
  scale?: number;                    // 0.1 - 2, default 1
  displayHeaderFooter?: boolean;
  headerTemplate?: string;
  footerTemplate?: string;
  printBackground?: boolean;
  landscape?: boolean;
  pageRanges?: string;               // '1-5, 8, 11-13'
  format?: 'Letter' | 'Legal' | 'A4' | 'A3';
  width?: string;
  height?: string;
  margin?: { top, right, bottom, left };
}

タグ

browser, pdf, screenshot, automation, scraping

互換性

  • Codex:✅
  • Claude Code:✅

コメント