Capture public HTTP(S) webpages as local PNG, JPEG, or PDF artifacts through Latchshot. Use when the user needs screenshots, website thumbnails, full-page captures, PDFs, QA reports, archives, or social previews. Do not use for private or authenticated pages, raw HTML extraction, scraping, CAPTCHA bypass, arbitrary browser actions, or local-file capture.
Use the bundled dependency-free Node.js client to turn one public webpage URL into a validated local PNG, JPEG, or PDF artifact while keeping the LATCHSHOT_API_KEY out of chat, source, command arguments, and output.
When to invoke
"Capture a screenshot of this public webpage."
"Save a full-page PNG for this URL."
"Create a PDF of a public website."
"Generate a website thumbnail artifact."
"Check my remaining Latchshot render quota."
Prerequisites and context
Require Node.js 20 or newer and network access. Authenticated capture and usage commands read the API key only from LATCHSHOT_API_KEY and send it only to the fixed https://latchshot.fly.dev origin. Never ask the user to paste the key into chat, a command argument, source code, a committed file, or output. Never print or return the key.
Latchshot is a hosted third-party service maintained by this skill's contributor. Keep its use optional and preserve local-browser workflows when the task needs private pages, authenticated pages, or unsupported browser actions.
Request boundaries
Request
Handle with Latchshot?
Rule
Public http:// or https:// page screenshot
Yes
Capture one binary artifact.
PNG, JPEG, or PDF output
Yes
Infer from .png, .jpg, .jpeg, or .pdf, or pass --format.
Private page, intranet, login, cookie, CAPTCHA, signed URL, query secret, or non-web port
No
Reject instead of bypassing.
Raw HTML, DOM extraction, selectors, sessions, arbitrary JavaScript, clicking, typing, scraping, or anti-bot evasion
No
Latchshot is capture-only.
Local file capture
No
It accepts public webpage URLs only.
This includes social-preview captures, but not authenticated/private, private/internal, or private-page access.
Use --allow-query only after confirming the query contains no credential, signature, token, customer data, or other secret.
No-key demo
If LATCHSHOT_API_KEY is missing, use the no-key demo only when a bounded public viewport JPEG fits the request.
The demo is JPEG-only, does not use an account or render quota, allows three attempts per IP address per hour, and accepts only width, height, query confirmation, and explicit overwrite options. The public URL is still sent to Latchshot with the coarse agentskill acquisition label. Treat the result as a proof artifact, not as customer activation or plan signup. For PNG, PDF, full-page, cleanup, or repeat work without a key, direct the user to https://latchshot.fly.dev/integrations.md#agent-skills and stop.
Capture workflow
Confirm the target is a public HTTP or HTTPS page and the output path is user-approved.
Run the client from this skill directory.
Parse the one-line JSON result and confirm ok, output, format, contentType, and bytes.
Inspect the local artifact when the surrounding task requires visual or document verification.
Report the path and render or quota diagnostics without exposing the key.
Best-effort cleanup flags are not bypass tools; treat each cleanup as best-effort only: --block-ads, --block-trackers, --block-chats, --hide-cookie-banners, and --hide-popups. The client refuses to overwrite a file unless --force is explicit. Report render/quota diagnostics only. Run node scripts/latchshot.mjs --help for the exact bounded options.
Usage and failure handling
Read quota without consuming render quota:
node scripts/latchshot.mjs usage
Symptom or code
Response
Validation or authentication failure
Read the structured stderr code and message; do not retry.
demo_limit
Wait for the hourly reset; do not loop or switch identities.
rate_limited
Wait for the reported reset or retry-after boundary.
Render failure
State the failure, preserve any existing output file, and do not substitute another provider silently.
Commercial action requested
Keep upgrade, checkout, payment, implementation request, and plan changes user- and owner-controlled.
The usage command is read-only.
Progressive disclosure and bundled resources
Resource
Use it when
scripts/latchshot.mjs
Running demo, capture, usage, or --help commands.
Output template
## Latchshot capture result
**Status:** captured | demo-captured | blocked
**URL:** `<public URL>`
**Output:** `<local artifact path>`
**Format:** png | jpeg | pdf
### Render result
- `ok`: <true/false>
- `contentType`: <content type>
- `bytes`: <byte count>
- Diagnostics: <quota/reset/render notes with no API key>
### Boundaries checked
- Public HTTP(S): yes | no
- Query reviewed for secrets: yes | not applicable
- Auth/private/CAPTCHA/browser-action request: no | blocked because <reason>
Quality gate
The URL is a public HTTP or HTTPS page and is not private, authenticated, signed, or secret-bearing.
The command reads authenticated credentials only from LATCHSHOT_API_KEY.
The output path is explicit, local, and not overwritten unless --force was intentional.
The JSON result was parsed for ok, output, format, contentType, and bytes.
Rate limits and demo limits were not bypassed by looping or identity switching.
No raw HTML extraction, scraping, CAPTCHA bypass, arbitrary browser action, or commercial action was attempted.
1---2name: latchshot-page-capture-23description: Capture public HTTP(S) webpages as local PNG, JPEG, or PDF artifacts through Latchshot. Use when the user needs screenshots, website thumbnails, full-page captures, PDFs, QA reports, archives, or social previews. Do not use for private or authenticated pages, raw HTML extraction, scraping, CAPTCHA bypass, arbitrary browser actions, or local-file capture.4---56# Latchshot page capture78Use the bundled dependency-free Node.js client to turn one public webpage URL into a validated local PNG, JPEG, or PDF artifact while keeping the LATCHSHOT_API_KEY out of chat, source, command arguments, and output.910## When to invoke1112- "Capture a screenshot of this public webpage."13- "Save a full-page PNG for this URL."14- "Create a PDF of a public website."15- "Generate a website thumbnail artifact."16- "Check my remaining Latchshot render quota."1718## Prerequisites and context1920Require Node.js 20 or newer and network access. Authenticated capture and usage commands read the API key only from `LATCHSHOT_API_KEY` and send it only to the fixed `https://latchshot.fly.dev` origin. Never ask the user to paste the key into chat, a command argument, source code, a committed file, or output. Never print or return the key.2122Latchshot is a hosted third-party service maintained by this skill's contributor. Keep its use optional and preserve local-browser workflows when the task needs private pages, authenticated pages, or unsupported browser actions.2324## Request boundaries2526| Request | Handle with Latchshot? | Rule |27| --- | --- | --- |28| Public `http://` or `https://` page screenshot | Yes | Capture one binary artifact. |29| PNG, JPEG, or PDF output | Yes | Infer from `.png`, `.jpg`, `.jpeg`, or `.pdf`, or pass `--format`. |30| Private page, intranet, login, cookie, CAPTCHA, signed URL, query secret, or non-web port | No | Reject instead of bypassing. |31| Raw HTML, DOM extraction, selectors, sessions, arbitrary JavaScript, clicking, typing, scraping, or anti-bot evasion | No | Latchshot is capture-only. |32| Local file capture | No | It accepts public webpage URLs only. |3334This includes social-preview captures, but not authenticated/private, private/internal, or private-page access.3536Use `--allow-query` only after confirming the query contains no credential, signature, token, customer data, or other secret.3738## No-key demo3940If `LATCHSHOT_API_KEY` is missing, use the no-key demo only when a bounded public viewport JPEG fits the request.4142```bash43node scripts/latchshot.mjs demo \44 --url 'https://example.com' \45 --output './artifacts/example-demo.jpg'46```4748The demo is JPEG-only, does not use an account or render quota, allows three attempts per IP address per hour, and accepts only width, height, query confirmation, and explicit overwrite options. The public URL is still sent to Latchshot with the coarse `agentskill` acquisition label. Treat the result as a proof artifact, not as customer activation or plan signup. For PNG, PDF, full-page, cleanup, or repeat work without a key, direct the user to https://latchshot.fly.dev/integrations.md#agent-skills and stop.4950## Capture workflow51521. Confirm the target is a public HTTP or HTTPS page and the output path is user-approved.532. Run the client from this skill directory.543. Parse the one-line JSON result and confirm `ok`, `output`, `format`, `contentType`, and `bytes`.554. Inspect the local artifact when the surrounding task requires visual or document verification.565. Report the path and render or quota diagnostics without exposing the key.5758Viewport capture:5960```bash61node scripts/latchshot.mjs capture \62 --url 'https://example.com' \63 --output './artifacts/example.png'64```6566Full-page capture with lazy content activation:6768```bash69node scripts/latchshot.mjs capture \70 --url 'https://example.com' \71 --output './artifacts/example-full.png' \72 --full-page \73 --scroll-page74```7576PDF capture:7778```bash79node scripts/latchshot.mjs capture \80 --url 'https://example.com' \81 --output './artifacts/example.pdf' \82 --paper A483```8485Best-effort cleanup flags are not bypass tools; treat each cleanup as best-effort only: `--block-ads`, `--block-trackers`, `--block-chats`, `--hide-cookie-banners`, and `--hide-popups`. The client refuses to overwrite a file unless `--force` is explicit. Report render/quota diagnostics only. Run `node scripts/latchshot.mjs --help` for the exact bounded options.8687## Usage and failure handling8889Read quota without consuming render quota:9091```bash92node scripts/latchshot.mjs usage93```9495| Symptom or code | Response |96| --- | --- |97| Validation or authentication failure | Read the structured stderr code and message; do not retry. |98| `demo_limit` | Wait for the hourly reset; do not loop or switch identities. |99| `rate_limited` | Wait for the reported reset or retry-after boundary. |100| Render failure | State the failure, preserve any existing output file, and do not substitute another provider silently. |101| Commercial action requested | Keep upgrade, checkout, payment, implementation request, and plan changes user- and owner-controlled. |102103The usage command is read-only.104105## Progressive disclosure and bundled resources106107| Resource | Use it when |108| --- | --- |109| `scripts/latchshot.mjs` | Running `demo`, `capture`, `usage`, or `--help` commands. |110111## Output template112113```markdown114## Latchshot capture result115116**Status:** captured | demo-captured | blocked117**URL:** `<public URL>`118**Output:** `<local artifact path>`119**Format:** png | jpeg | pdf120121### Render result122- `ok`: <true/false>123- `contentType`: <content type>124- `bytes`: <byte count>125- Diagnostics: <quota/reset/render notes with no API key>126127### Boundaries checked128- Public HTTP(S): yes | no129- Query reviewed for secrets: yes | not applicable130- Auth/private/CAPTCHA/browser-action request: no | blocked because <reason>131```132133## Quality gate134135- [ ] The URL is a public HTTP or HTTPS page and is not private, authenticated, signed, or secret-bearing.136- [ ] The command reads authenticated credentials only from `LATCHSHOT_API_KEY`.137- [ ] The output path is explicit, local, and not overwritten unless `--force` was intentional.138- [ ] The JSON result was parsed for `ok`, `output`, `format`, `contentType`, and `bytes`.139- [ ] Rate limits and demo limits were not bypassed by looping or identity switching.140- [ ] No raw HTML extraction, scraping, CAPTCHA bypass, arbitrary browser action, or commercial action was attempted.141142## References143144- [Latchshot service origin](https://latchshot.fly.dev)145- [Agent Skills setup documentation](https://latchshot.fly.dev/integrations.md#agent-skills)
Run npx skillmds@latest add paulasilvatech/latchshot-page-capture-2 in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Capture public HTTP(S) webpages as local PNG, JPEG, or PDF artifacts through Latchshot. Use when the user needs screenshots, website thumbnails, full-page captures, PDFs, QA reports, archives, or social previews. Do not use for private or authenticated pages, raw HTML extraction, scraping, CAPTCHA bypass, arbitrary browser actions, or local-file capture. It is listed under Web & Frontend on SkillMD.
This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
paulasilvatech (@paulasilvatech) published this skill. Their other Agent Skills are listed on their SkillMD profile.