From Napkin
Captures screenshots, thumbnails, full-page captures, or PDFs of public webpages via Latchshot, saving them as local artifacts for reports, QA, archives, or social previews.
How this skill is triggered — by the user, by Claude, or both
Slash command
/napkin:latchshot-page-captureThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use the bundled dependency-free client to turn one public webpage URL into a validated local PNG, JPEG, or PDF. Start with a constrained no-key JPEG demo when appropriate. Authenticated commands send the API key only to the fixed `https://latchshot.fly.dev` origin, and every artifact is written atomically.
Use the bundled dependency-free client to turn one public webpage URL into a validated local PNG, JPEG, or PDF. Start with a constrained no-key JPEG demo when appropriate. Authenticated commands send the API key only to the fixed https://latchshot.fly.dev origin, and every artifact is written atomically.
Latchshot is a hosted third-party service maintained by this skill's contributor. Keep its use optional and preserve an existing local-browser workflow when the task needs private pages or unsupported browser actions.
Require Node.js 20 or newer and network access. Read the key only from LATCHSHOT_API_KEY for authenticated capture and usage commands.
If the variable is missing, use the no-key demo for one bounded JPEG when it fits the request. For PNG, PDF, full-page, cleanup, or repeat work, direct the user to the Agent Skills setup documentation, then stop. Never ask the user to paste a key into chat, a command argument, source code, a committed file, or output. Never print or return the key.
Use this command for a public page when a viewport JPEG is acceptable:
node scripts/latchshot.mjs demo \
--url 'https://example.com' \
--output './artifacts/example-demo.jpg'
The demo is JPEG-only, does not use an account or render quota, and allows three attempts per IP address per hour. It accepts only width, height, query confirmation, and explicit overwrite options. The public URL is still sent to Latchshot, and the request carries the coarse agentskill acquisition label. Reject private pages, secrets, signed URLs, and authenticated access exactly as in the capture workflow. Treat the result as a proof artifact, not as a customer activation or plan signup.
Confirm the target is a public HTTP or HTTPS page. Reject credentials, private/internal pages, non-web ports, signed URLs, query secrets, and any request requiring login, cookies, CAPTCHA handling, proxy rotation, arbitrary scripts, clicks, typing, or anti-bot bypass.
Choose a user-approved output path. Infer the format from .png, .jpg/.jpeg, or .pdf, or pass the matching --format explicitly.
Run the client from this skill directory:
node scripts/latchshot.mjs capture \
--url 'https://example.com' \
--output './artifacts/example.png'
For a bounded full-page screenshot that activates lazy content:
node scripts/latchshot.mjs capture \
--url 'https://example.com' \
--output './artifacts/example-full.png' \
--full-page \
--scroll-page
For a PDF:
node scripts/latchshot.mjs capture \
--url 'https://example.com' \
--output './artifacts/example.pdf' \
--paper A4
Parse the one-line JSON result. Confirm ok, output, format, contentType, and bytes; inspect the local artifact when the surrounding task requires visual or document verification. Report the path and relevant render/quota diagnostics without exposing the key.
Run node scripts/latchshot.mjs --help for the exact bounded options. Use --block-ads, --block-trackers, --block-chats, --hide-cookie-banners, and --hide-popups only as best-effort cleanup—not bypass. Use --allow-query only after confirming that the query contains no credential, signature, token, customer data, or other secret. The client refuses to overwrite a file unless --force is explicit.
Use the read-only command when the user asks about remaining renders or reset time:
node scripts/latchshot.mjs usage
This does not consume render quota or change a plan.
demo_limit, wait for the hourly reset rather than looping or switching identities.rate_limited, wait for the reported reset or retry-after boundary rather than looping.Latchshot accepts public pages only and returns one binary artifact. It does not offer raw HTML input, DOM extraction, selectors, sessions, arbitrary JavaScript, authenticated/private pages, CAPTCHA solving, residential proxies, or anti-bot evasion. Only successful renders consume quota.
npx claudepluginhub ani1797/forge --plugin copilot-sdkCaptures web page screenshots with a tool cascade (browser MCP → shot-scraper → Playwright → user install). Handles full-page, element, viewport, retina, dark mode, and batched captures.
Captures screenshots of any URL or PDF and reads them visually with Claude's vision model. Use instead of raw HTML to see page layout, charts, diagrams, or verify UI rendering.
Captures screenshots via Playwright MCP from URLs or elements for blog posts or documentation. Handles viewport, cookie banners, full-page vs section, anchor scroll, and PNG/JPG formats.