Weather
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"
Get weather data using free services - no API keys needed.
wttr.in (Primary)
Fast, simple, works everywhere.
Quick check:
curl -s "wttr.in/London?format=3"
# Output: London: ⛅️ +8°C
Compact format:
curl -s "wttr.in/London?format=%l:+%c+%t+%h+%w"
# Output: London: ⛅️ +8°C 71% ↙5km/h
Full forecast:
curl -s "wttr.in/London?T"
Format Codes
| Code | Meaning |
|---|---|
%c |
Weather condition emoji |
%t |
Temperature |
%h |
Humidity |
%w |
Wind |
%l |
Location |
%m |
Moon phase |
Tips
- URL-encode spaces:
wttr.in/New+Yorkorwttr.in/San%20Francisco - Airport codes work:
wttr.in/JFK,wttr.in/SFO - Units:
?mmetric,?uUSCS (Fahrenheit) - Limit days:
?1today only,?0current only - Save as image:
curl -s "wttr.in/Berlin.png" -o weather.png
Open-Meteo (JSON API)
Better for programmatic use. Free, no key.
curl -s "https://api.open-meteo.com/v1/forecast?latitude=37.77&longitude=-122.42¤t_weather=true"
Response includes: temperature, windspeed, weathercode, time.
Get coordinates first
curl -s "https://geocoding-api.open-meteo.com/v1/search?name=San+Francisco&count=1"
Examples
San Francisco right now:
curl -s "wttr.in/San+Francisco?format=3"
Tokyo 3-day forecast:
curl -s "wttr.in/Tokyo?3T"
JSON weather for coordinates:
curl -s "https://api.open-meteo.com/v1/forecast?latitude=35.68&longitude=139.69¤t_weather=true&hourly=temperature_2m"