โ† Back to Web & Frontend Development

kma-weather

Get weather information from Korea Meteorological Administration

0
Source Code

kma-weather

Quick Start

# Current weather + 6-hour forecast
python3 skills/kma-weather/scripts/forecast.py brief --lat 37.5665 --lon 126.9780

# All forecasts as JSON (current + ultrashort + shortterm)
python3 skills/kma-weather/scripts/forecast.py all --lat 37.5665 --lon 126.9780 --json

# Short-term forecast (3 days)
python3 skills/kma-weather/scripts/forecast.py shortterm --lat 37.5665 --lon 126.9780 --days all

# Nationwide weather warnings/advisories (๊ธฐ์ƒํŠน๋ณด)
python3 skills/kma-weather/scripts/weather_warnings.py

# Mid-term forecast (3-10 days)
python3 skills/kma-weather/scripts/midterm.py --region ์„œ์šธ

Setup

1. Get API Key

  1. Visit ๊ณต๊ณต๋ฐ์ดํ„ฐํฌํ„ธ
  2. Request access to these 3 APIs (all use the same key):
  3. Copy your ServiceKey from My Page โ†’ API Key Management

2. Set Environment Variable

In ~/.openclaw/openclaw.json:

Sandbox (add to agents.defaults.sandbox.docker.env):

{
  "agents": {
    "defaults": {
      "sandbox": {
        "docker": {
          "env": {
            "KMA_SERVICE_KEY": "your-key"
          }
        }
      }
    }
  }
}

Host (add to env.vars):

{
  "env": {
    "vars": {
      "KMA_SERVICE_KEY": "your-key"
    }
  }
}

Usage

forecast.py

Command Description
current Real-time observations
ultrashort 6-hour forecast
shortterm 3-day forecast
brief current + ultrashort
all current + ultrashort + shortterm

Options:

  • --lat, --lon: Coordinates (required)
  • --days: For shortterm - 1 (tomorrow, default), 2, 3, or all
  • --json: Raw JSON output

Output example (current):

๐ŸŒค๏ธ ํ˜„์žฌ ๋‚ ์”จ (์ดˆ๋‹จ๊ธฐ์‹คํ™ฉ)
๐ŸŒก๏ธ  ๊ธฐ์˜จ: 5.2ยฐC
๐Ÿ’ง ์Šต๋„: 65%
๐ŸŒง๏ธ  ๊ฐ•์ˆ˜๋Ÿ‰: 0mm (1์‹œ๊ฐ„)
๐Ÿ’จ ํ’์†: 2.3m/s
๐Ÿงญ ํ’ํ–ฅ: NW (315ยฐ)

weather_warnings.py

Returns current nationwide ๊ธฐ์ƒํŠน๋ณด:

๐Ÿšจ ๊ธฐ์ƒํŠน๋ณด ํ˜„ํ™ฉ
๋ฐœํ‘œ์‹œ๊ฐ: 2026-02-01 10:00
๋ฐœํšจ์‹œ๊ฐ: 2026-02-01 10:00

๐Ÿ“ ํ˜„์žฌ ๋ฐœํšจ ์ค‘์ธ ํŠน๋ณด
  โ€ข ๊ฑด์กฐ๊ฒฝ๋ณด : ๊ฐ•์›๋„, ๊ฒฝ์ƒ๋ถ๋„, ...
  โ€ข ํ’๋ž‘์ฃผ์˜๋ณด : ๋™ํ•ด์ค‘๋ถ€์•ˆ์ชฝ๋จผ๋ฐ”๋‹ค, ...

โš ๏ธ  ์˜ˆ๋น„ํŠน๋ณด
  โ€ข (1) ๊ฐ•ํ’ ์˜ˆ๋น„ํŠน๋ณด : 02์›” 02์ผ ์ƒˆ๋ฒฝ(00์‹œ~06์‹œ) : ์šธ๋ฆ‰๋„.๋…๋„

midterm.py

3-10 day forecast by region.

python3 skills/kma-weather/scripts/midterm.py --region ์„œ์šธ
python3 skills/kma-weather/scripts/midterm.py --stn-id 109

Regions: ์„œ์šธ, ์ธ์ฒœ, ๊ฒฝ๊ธฐ, ๋ถ€์‚ฐ, ๋Œ€๊ตฌ, ๊ด‘์ฃผ, ๋Œ€์ „, ์šธ์‚ฐ, ์„ธ์ข…, ๊ฐ•์›, ์ถฉ๋ถ, ์ถฉ๋‚จ, ์ „๋ถ, ์ „๋‚จ, ๊ฒฝ๋ถ, ๊ฒฝ๋‚จ, ์ œ์ฃผ

grid_converter.py

Convert lat/lon to KMA 5km grid (auto-handled by other scripts):

python3 skills/kma-weather/scripts/grid_converter.py 37.5665 126.9780
# Output: Grid: (60, 127)

API Notes

  • Release Schedule:
    • Current: Every hour at :40 (base_time: HH00)
    • Ultra-short: Every hour at :45 (base_time: HH30)
    • Short-term: 02:10, 05:10, 08:10, 11:10, 14:10, 17:10, 20:10, 23:10 (KST)
    • Mid-term: 06:00, 18:00 (KST)
  • Coverage: South Korea only
  • Auto-pagination: Scripts fetch all pages automatically

vs weather skill

weather kma-weather
Coverage Global Korea only
API Key No Required
Resolution City-level 5km grid
Weather Warnings No Yes (๊ธฐ์ƒํŠน๋ณด)

Use both: weather for global, kma-weather for detailed Korean forecasts and ๊ธฐ์ƒํŠน๋ณด.

Troubleshooting

Error Solution
KMA API service key not found Set KMA_SERVICE_KEY env var
SERVICE_KEY_IS_NOT_REGISTERED_ERROR Check API approval status, verify key
SERVICE_TIMEOUT_ERROR Retry later
No data returned Verify coordinates are in South Korea

References (Raw API Documentation)