Goose-skills orthogonal-website-screenshot
Take screenshots of websites and web pages
install
source · Clone the upstream repo
git clone https://github.com/gooseworks-ai/goose-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/gooseworks-ai/goose-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/capabilities/orthogonal-website-screenshot" ~/.claude/skills/gooseworks-ai-goose-skills-orthogonal-website-screenshot && rm -rf "$T"
manifest:
skills/capabilities/orthogonal-website-screenshot/SKILL.mdsource content
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"
Capture screenshots of any website or web page. Useful for documentation, monitoring, and visual records.
When to Use
- User asks for a screenshot of a website
- User wants to see what a site looks like
- Documenting web pages
- Monitoring website changes
- Creating visual records
How It Works
Uses Notte or Brand.dev APIs to capture website screenshots.
Usage
Screenshot with Notte
# First start a session, then 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/start","body":{"url":"https://stripe.com"}}' # Then take screenshot with the session_id 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"}'
Screenshot with Brand.dev (simpler)
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"api":"brand-dev","path":"/v1/brand/screenshot","query":{"domain":"stripe.com"}}'
Scrape and Screenshot with Notte
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":"/scrape","body":{"url":"https://example.com"}}'
Parameters
Notte Session
- url (required) - Full URL to navigate to
Brand.dev
- domain (required) - Website domain
Response
Brand.dev Response
Returns screenshot URL:
- status (string) -
on successok - domain (string) - Domain that was screenshotted
- screenshot (string) - Public URL to the screenshot image (PNG)
- screenshotType (string) -
(above-the-fold) orviewportfull_page - code (integer) - HTTP status code
Notte Response
Returns page content + session:
- markdown (string) - Page content as markdown text
- images (array|null) - Extracted images (if any)
- structured (object|null) - Structured data (if extraction was requested)
- session.session_id (string) - Session ID for follow-up actions
- session.status (string) -
while session is openactive - session.credit_usage (integer) - Credits consumed
To take an explicit screenshot via Notte 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}/page/screenshot"}'
Examples
User: "Take a screenshot of Notion's homepage"
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"api":"brand-dev","path":"/v1/brand/screenshot","query":{"domain":"notion.so"}}'
User: "Capture what vercel.com looks like"
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \ -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"api":"brand-dev","path":"/v1/brand/screenshot","query":{"domain":"vercel.com"}}'
User: "Screenshot and scrape the content from this article"
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":"/scrape","body":{"url":"https://example.com/article"}}'
Error Handling
- 400 - Missing required parameter (
for Brand.dev,domain
for Notte)url - 404 - Domain not found or page doesn't exist
- 504 - Page took too long to load — retry or try simpler URL
- Brand.dev only screenshots the homepage (pass domain, not full URL)
- Notte sessions auto-expire after
(default 3) — take screenshots promptlyidle_timeout_minutes
Tips
- Brand.dev is simpler for quick homepage screenshots
- Notte is more powerful for full page control
- For pages requiring login, use Notte sessions with authentication
- Screenshots are typically full-page or viewport-sized
- Some sites may block automated screenshots