Capture any web page — especially slide-based presentations — as a multi-page PDF using a headless browser.
A bundled Playwright script screenshots each slide (or the full page) as PNG, then assembles them into a PDF via Pillow. It auto-detects the navigation model:
| Model | Detection | Examples |
|---|---|---|
| ------- | ----------- | --------- |
| reveal.js | .reveal element + Reveal JS API | reveal.js decks |
| Vertical scroll | Page height > 1.5× viewport, multiple slide elements | Custom JS slide decks with stacked sections |
| Keyboard | Multiple slide elements, not scrollable | impress.js, deck.js, arrow-key decks |
| Single page | No slide structure detected | Regular web pages, articles |
The script bundles its own package.json. On first use (or if node_modules is missing), install dependencies:
cd ${CLAUDE_SKILL_DIR}/scripts && npm install && npx playwright install chromium
Pillow (Python) is also required for PNG-to-PDF assembly:
pip install Pillow
Run the capture script:
node ${CLAUDE_SKILL_DIR}/scripts/capture.mjs <url> <output.pdf> [options]
| Flag | Default | Description |
|---|---|---|
| ------ | --------- | ------------- |
--width N | 1920 | Viewport width in pixels |
--height N | 1080 | Viewport height in pixels |
--wait N | 1000 | Milliseconds to wait per slide for animations |
--max-slides N | 50 | Safety cap on number of slides |
# Presentation deck at 1080p
node ${CLAUDE_SKILL_DIR}/scripts/capture.mjs https://example.com/pitch output.pdf
# Narrow viewport for mobile-style capture
node ${CLAUDE_SKILL_DIR}/scripts/capture.mjs https://example.com/page doc.pdf --width 1280 --height 720
# Slow animations, give extra time
node ${CLAUDE_SKILL_DIR}/scripts/capture.mjs https://example.com/deck slides.pdf --wait 2000
playwright and Pillow are installed; install if missing--wait 2000 for slower transitions, or check if the site requires interaction (cookie banners, login) before slides are accessible.--wait to give JS more time to render.--max-slides and verify the slide selector detected is correct by inspecting the script's console output.共 1 个版本