OpenClaw integration
Add website screenshot capture to your OpenClaw AI agent
Add a screenshot skill to your OpenClaw AI agent and capture any website through natural language — from WhatsApp, Telegram, Slack, or Discord.
Why use a cloud API instead of OpenClaw's built-in browser?
OpenClaw has local browser automation via CDP, but for screenshots a cloud API is more reliable:
- No local Chrome dependency — the API renders in a managed browser, so you don't need Chrome installed on the host machine
- Stealth mode — bypasses bot detection on Cloudflare, Akamai, and other WAFs that block headless browsers
- Cookie banner blocking — automatically removes consent popups without custom selectors
- Full-page capture — captures the entire scrollable page, not just the viewport
- Consistent results — no memory issues or rendering differences across machines
Setup
Get your API key
Sign up at dashboard.allscreenshots.com and copy your API key.
Configure the environment variable
Add your key to OpenClaw's workspace environment:
echo 'ALLSCREENSHOTS_API_KEY=your_api_key_here' >> ~/.openclaw/workspace/.envVerify it's set:
grep ALLSCREENSHOTS ~/.openclaw/workspace/.envCreate the skill
Create the skill directory and SKILL.md file:
mkdir -p ~/.openclaw/skills/allscreenshotsThen create ~/.openclaw/skills/allscreenshots/SKILL.md with the content below.
SKILL.md
Copy this file into ~/.openclaw/skills/allscreenshots/SKILL.md:
---
name: allscreenshots
description: Take website screenshots, capture full pages, generate PDFs. Handles desktop, mobile, dark mode, stealth mode, cookie banner blocking, and batch URLs via the Allscreenshots cloud API.
version: 1.0.0
metadata: {"openclaw":{"emoji":"📸","requires":{"bins":["curl","jq"],"env":["ALLSCREENSHOTS_API_KEY"]},"primaryEnv":"ALLSCREENSHOTS_API_KEY"}}
---
# Allscreenshots – Website Screenshot Capture
Capture pixel-perfect website screenshots via the Allscreenshots
cloud API. No local browser needed.
## Setup
1. Get an API key at https://dashboard.allscreenshots.com
2. Add to ~/.openclaw/workspace/.env:
ALLSCREENSHOTS_API_KEY=your_api_key_here
## API Base
Endpoint: https://api.allscreenshots.com/v1/screenshots
Auth header: Bearer $ALLSCREENSHOTS_API_KEY
## Operations
### Desktop screenshot (default)
curl -s -X POST \
-H "Authorization: Bearer $ALLSCREENSHOTS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"TARGET_URL","fullPage":true,"viewport":{"width":1280,"height":800},"blockAds":true,"blockCookieBanners":true,"stealth":true,"responseType":"url"}' \
"https://api.allscreenshots.com/v1/screenshots" | jq
### Mobile screenshot
curl -s -X POST \
-H "Authorization: Bearer $ALLSCREENSHOTS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"TARGET_URL","fullPage":true,"viewport":{"width":375,"height":812},"deviceScaleFactor":3,"blockAds":true,"blockCookieBanners":true,"stealth":true,"responseType":"url"}' \
"https://api.allscreenshots.com/v1/screenshots" | jq
### Dark mode
Add "darkMode": true to any request body above.
### PDF export
Add "format": "pdf" to any request body above.
### Viewport-only screenshot
Set "fullPage": false to capture only the visible viewport.
## Parameter Reference
- fullPage: true captures the entire scrollable page
- blockAds: true removes ads and trackers
- blockCookieBanners: true hides cookie consent popups
- stealth: true uses anti-detection mode for bot-protected sites
- darkMode: true injects prefers-color-scheme: dark
- format: "pdf" returns a PDF instead of PNG
- responseType: controls what the API returns
- "binary" (default) – raw image bytes
- "base64" – JSON with base64-encoded image data
- "url" – JSON with a CDN link to the stored image
## Response
When responseType is "url" (recommended for OpenClaw):
{ "storageUrl": "https://storage.allscreenshots.com/abc.png" }
Send the storageUrl back to the user as an image.
When responseType is "binary" (default):
Raw image bytes. Pipe to a file with curl -o output.png
When responseType is "base64":
{ "data": "iVBORw0KGgo..." }
Base64 payload, useful for embedding in HTML or emails.The metadata field tells OpenClaw which binaries (curl, jq) and environment variables (ALLSCREENSHOTS_API_KEY) the skill requires. OpenClaw checks these before activating the skill.
Response types
The responseType parameter controls what the API returns. Choose based on your use case:
| Value | Returns | Best for |
|---|---|---|
"url" | JSON with CDN link to stored image | Chat messages — send the link as an image |
"binary" | Raw image bytes | Saving directly to a file |
"base64" | JSON with base64-encoded data | Embedding in HTML, emails, or passing to other APIs |
For OpenClaw skills, "url" is recommended — the agent gets a shareable link it can post directly in your chat.
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
url | string | required | The URL to capture |
fullPage | boolean | false | Capture the entire scrollable page |
viewport | object | {width: 1920, height: 1080} | Browser viewport size |
deviceScaleFactor | number | 1 | Pixel density (use 3 for Retina/mobile) |
format | string | "png" | Output format: "png", "jpeg", or "pdf" |
blockAds | boolean | false | Remove ads and trackers |
blockCookieBanners | boolean | false | Hide cookie consent popups |
stealth | boolean | false | Anti-detection mode for bot-protected sites |
darkMode | boolean | false | Inject prefers-color-scheme: dark |
responseType | string | "binary" | Response format: "binary", "base64", or "url" |
Scheduled captures
OpenClaw supports cron scheduling. Tell your agent:
Every morning at 9am, take a screenshot of https://mysite.com and send it here
OpenClaw creates a recurring task using the screenshot skill. Useful for:
- Visual monitoring — catch layout breakages before customers do
- Competitor tracking — archive competitor sites daily
- Compliance — scheduled captures for audit trails
Batch captures
Ask OpenClaw to process multiple URLs:
Screenshot these sites:
The agent iterates through the list, calling the API for each URL, and returns all screenshots.
Troubleshooting
| Problem | Solution |
|---|---|
| "ALLSCREENSHOTS_API_KEY not set" | Check ~/.openclaw/workspace/.env contains the key |
| Skill not activating | Verify the file is at ~/.openclaw/skills/allscreenshots/SKILL.md — directory name must match |
curl or jq not found | Install with brew install curl jq (macOS) or apt install curl jq (Linux) |
| Timeout on large pages | Add "timeout": 30000 to the request body (value in milliseconds) |
| Bot-protected site returns blank | Ensure "stealth": true is in the request body |