Take screenshots of any website using Notte browser
Website Screenshot

Take screenshots of any website using Notte browser automation. Use when asked to screenshot, capture, or snap a webpage.
---
name: website-screenshot-notte
description: Take screenshots of any website using Notte browser automation. Use when asked to screenshot, capture, or snap a webpage.
source: orthogonal
---
# Website Screenshot
## Setup
Read your credentials from ~/.gooseworks/credentials.json:
```bash
export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")
```
If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login`Overview
If ~/.gooseworks/credentials.json does not exist, tell the user to run: npx gooseworks login
Manual install (npx, ZIP)
npx skills add gooseworks-ai/goose-skills --skill website-screenshot-notte -g -a claude-codemkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/gooseworks-ai/goose-skills/tar.gz/615c685f34f8 \
| tar -xz -C ~/.claude/skills --strip-components=4 goose-skills-615c685f34f8/skills/research-tools/capabilities/website-screenshot-notteNew-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/714f78496c9dc19af80a/website-screenshot-notte.zip" -OutFile "$env:TEMP\website-screenshot-notte.zip"; Expand-Archive "$env:TEMP\website-screenshot-notte.zip" -DestinationPath "$HOME\.claude\skills" -ForceConnects with Agent Alley MCP · agentalley.io/mcp
Files included
SKILL.md4.1 KBskill.meta.json303 B
Read the files here
gooseworks-ai/
Show the full text123 lines
Website Screenshot
Setup
Read your credentials from ~/.gooseworks/credentials.json:
export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")
If ~/.gooseworks/credentials.json does not exist, tell the user to run: npx gooseworks login
All endpoints use Bearer auth: -H "Authorization: Bearer $GOOSEWORKS_API_KEY"
Take screenshots of any website URL and save them as image files.
Requirements
- Orthogonal CLI:
npm install -g @orth/cli
Workflow
Take a screenshot of a URL in 4 steps:
Step 1: Start a browser session
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"notte","path":"/sessions/start","body":{"headless":true}}'
Save the session_id from the response.
Step 2: Navigate to the URL
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"notte","path":"/sessions/{session_id}/page/execute","body":{"type":"goto","url":"https://example.com"}}'
Step 3: Take the screenshot
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"notte","path":"/sessions/{session_id}/page/screenshot","body":{}}'
For a full-page screenshot:
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"notte","path":"/sessions/{session_id}/page/screenshot","body":{"full_page":true}}'
Step 4: Stop the session
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"notte","path":"/sessions/{session_id}/stop"}'
Full Example
# 1. Start session
SESSION=$(curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"notte","path":"/sessions/start","body":{"headless":true}}' | python3 -c "import json,sys;d=json.load(sys.stdin);print(json.dumps(d.get('data',d)))" | python3 -c "import sys,json; print(json.load(sys.stdin)['session_id'])")
# 2. Navigate
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"notte","path":"/sessions/$SESSION/page/execute","body":{"type":"goto","url":"https://example.com"}}'
# 3. Screenshot
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"notte","path":"/sessions/$SESSION/page/screenshot","body":{}}'
# 4. Cleanup
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
-H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"api":"notte","path":"/sessions/$SESSION/stop"}'
Options
| Parameter | Description |
|---|---|
full_page |
Set to true to capture the entire scrollable page |
headless |
Set to false to see the browser window (default: true) |
viewport_width |
Custom viewport width in pixels |
viewport_height |
Custom viewport height in pixels |
Tips
- Always stop the session when done to free resources
- Sessions auto-expire after 3 minutes of idle time
- Use
-oflag to save the screenshot to a file (required for binary data) - The output file must not already exist (use a unique name or delete first)
| 1 | |
| 2 | name website-screenshot-notte |
| 3 | description Take screenshots of any website using Notte browser automation. Use when asked to screenshot, capture, or snap a webpage. |
| 4 | source orthogonal |
| 5 | |
| 6 | |
| 7 | |
| 8 | # Website Screenshot |
| 9 | |
| 10 | ## Setup |
| 11 | |
| 12 | Read your credentials from ~/.gooseworks/credentials.json: |
| 13 | |
| 14 | export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])") |
| 15 | export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))") |
| 16 | |
| 17 | |
| 18 | If ~/.gooseworks/credentials.json does not exist, tell the user to run: `npx gooseworks login` |
| 19 | |
| 20 | All endpoints use Bearer auth: `-H "Authorization: Bearer $GOOSEWORKS_API_KEY"` |
| 21 | |
| 22 | |
| 23 | Take screenshots of any website URL and save them as image files. |
| 24 | |
| 25 | ## Requirements |
| 26 | |
| 27 | Orthogonal CLI: `npm install -g @orth/cli` |
| 28 | |
| 29 | ## Workflow |
| 30 | |
| 31 | Take a screenshot of a URL in 4 steps: |
| 32 | |
| 33 | ### Step 1: Start a browser session |
| 34 | |
| 35 | |
| 36 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 37 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 38 | -H "Content-Type: application/json" \ |
| 39 | -d '{"api":"notte","path":"/sessions/start","body":{"headless":true}}' |
| 40 | |
| 41 | |
| 42 | Save the `session_id` from the response. |
| 43 | |
| 44 | ### Step 2: Navigate to the URL |
| 45 | |
| 46 | |
| 47 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 48 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 49 | -H "Content-Type: application/json" \ |
| 50 | -d '{"api":"notte","path":"/sessions/{session_id}/page/execute","body":{"type":"goto","url":"https://example.com"}}' |
| 51 | |
| 52 | |
| 53 | ### Step 3: Take the screenshot |
| 54 | |
| 55 | |
| 56 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 57 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 58 | -H "Content-Type: application/json" \ |
| 59 | -d '{"api":"notte","path":"/sessions/{session_id}/page/screenshot","body":{}}' |
| 60 | |
| 61 | |
| 62 | For a full-page screenshot: |
| 63 | |
| 64 | |
| 65 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 66 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 67 | -H "Content-Type: application/json" \ |
| 68 | -d '{"api":"notte","path":"/sessions/{session_id}/page/screenshot","body":{"full_page":true}}' |
| 69 | |
| 70 | |
| 71 | ### Step 4: Stop the session |
| 72 | |
| 73 | |
| 74 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 75 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 76 | -H "Content-Type: application/json" \ |
| 77 | -d '{"api":"notte","path":"/sessions/{session_id}/stop"}' |
| 78 | |
| 79 | |
| 80 | ## Full Example |
| 81 | |
| 82 | |
| 83 | # 1. Start session |
| 84 | SESSION=$(curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 85 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 86 | -H "Content-Type: application/json" \ |
| 87 | -d '{"api":"notte","path":"/sessions/start","body":{"headless":true}}' | python3 -c "import json,sys;d=json.load(sys.stdin);print(json.dumps(d.get('data',d)))" | python3 -c "import sys,json; print(json.load(sys.stdin)['session_id'])") |
| 88 | |
| 89 | # 2. Navigate |
| 90 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 91 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 92 | -H "Content-Type: application/json" \ |
| 93 | -d '{"api":"notte","path":"/sessions/$SESSION/page/execute","body":{"type":"goto","url":"https://example.com"}}' |
| 94 | |
| 95 | # 3. Screenshot |
| 96 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 97 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 98 | -H "Content-Type: application/json" \ |
| 99 | -d '{"api":"notte","path":"/sessions/$SESSION/page/screenshot","body":{}}' |
| 100 | |
| 101 | # 4. Cleanup |
| 102 | curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ |
| 103 | -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ |
| 104 | -H "Content-Type: application/json" \ |
| 105 | -d '{"api":"notte","path":"/sessions/$SESSION/stop"}' |
| 106 | |
| 107 | |
| 108 | ## Options |
| 109 | |
| 110 | | Parameter | Description | |
| 111 | |-----------|-------------| |
| 112 | | `full_page` | Set to `true` to capture the entire scrollable page | |
| 113 | | `headless` | Set to `false` to see the browser window (default: true) | |
| 114 | | `viewport_width` | Custom viewport width in pixels | |
| 115 | | `viewport_height` | Custom viewport height in pixels | |
| 116 | |
| 117 | ## Tips |
| 118 | |
| 119 | Always stop the session when done to free resources |
| 120 | Sessions auto-expire after 3 minutes of idle time |
| 121 | Use `-o` flag to save the screenshot to a file (required for binary data) |
| 122 | The output file must not already exist (use a unique name or delete first) |
| 123 |
Details
- Updated
- Sep 21, 2026
- License
- MIT
- Stars on the repo
- ★ 1,220
- Checked
- Source
- gooseworks-ai/goose-skills ↗
- Creator
- gooseworks-ai · 206 listings
Made with website-screenshot-notte

Similar skills
See all →
SkillAI crawler access analysisAI Crawler Access Analysis Skill
SkillAutomate browser tasks, scrape websites, fill formsBrowser Automation - POWERFUL
SkillBrowser automation skill for controlling Google's NotebookLMNotebookLM — Browser Automation
Skill4-tier progressive web scraping that auto-escalates WebFetchBrightdata
SkillScrape blog posts via RSS feeds with Apify fallbackBlog feed monitor
SkillExtract structured data from web pages using AIExtract webpage dataMore from gooseworks-ai
SkillMine the highest-converting ad angles from customer reviewsAd angle miner
SkillAnalyze ad campaign performance data to identify what'sAd campaign analyzer
SkillFor paid lead-gen and participant-recruitment adsAd lead quality analyzer
SkillAnalyze the message match between your ads and landing pagesAd to landing page auditor
SkillCheck and improve your brand's visibility across AI searchAeo
SkillSearch Amazon products - find items, compare pricesAmazon Product Search