korea-weather
韓国の気象庁(기상청, KMA)が公共データポータルで提供する短期予報API(단기예보)を使うスキル。2026-09-09 に2オペレーションの実在を確認済み。
キーの取得
公共データポータル(data.go.kr)で「기상청 단기예보」(VilageFcstInfoService)に活用申請し、serviceKey を取得する(無料)。ポータル: https://www.data.go.kr/ 、気象庁: https://www.kma.go.kr/
基本の流れ
- 場所の格子座標(nx, ny)を決める
- 発表時刻(base_date, base_time)を決める
- 予報を取得して項目を読む
1. 格子座標
気象庁は予報を5km格子で出す。主な観光地:
| 場所 |
nx |
ny |
| ソウル(鍾路) |
60 |
127 |
| 仁川 |
55 |
124 |
| 水原 |
60 |
121 |
| 大田 |
67 |
100 |
| 大邱 |
89 |
90 |
| 慶州 |
91 |
77 |
| 全州 |
63 |
89 |
| 光州 |
58 |
74 |
| 釜山 |
98 |
76 |
| 江陵 |
92 |
131 |
| 済州 |
52 |
38 |
| 西帰浦 |
52 |
33 |
その他の地点は気象庁が配布する格子座標表で確認する(単位は約5km格子。市区の中心点を採用)。
2・3. 取得と読み方
# 超短期実況(現在に近い値)
curl -s "http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getUltraSrtNcst?serviceKey={KEY}&pageNo=1&numOfRows=20&dataType=JSON&base_date=20260909&base_time=0800&nx=60&ny=127"
# 短期予報(3日先まで)
curl -s "http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst?serviceKey={KEY}&pageNo=1&numOfRows=100&dataType=JSON&base_date=20260909&base_time=0800&nx=60&ny=127"
base_time: 発表時刻。短期予報は 0200, 0500, 0800, 1100, 1400, 1700, 2000, 2300 の1日8回。発表直後はまだデータがなく、発表時刻の10分後以降に照会する。直近の発表を使うこと。
- レスポンスの
body.items.item[]: 各要素は category(項目), fcstDate/fcstTime(予報対象時刻), fcstValue(値)。
- 主なcategory:
TMP/T1H: 気温(℃)
POP: 降水確率(%)
SKY: 空模様(1=晴れ, 3=曇りがち, 4=曇り)
PTY: 降水形態(0=なし, 1=雨, 2=雨/雪, 3=雪, 5=にわか雨, 6=にわか雨/雪, 7=にわか雪)
REH: 湿度(%), WSD: 風速(m/s)
resultCode が 00 なら成功。
レスポンス例: examples/getUltraSrtNcst.sample.json(構造を再現した記述例。実キーでの実測取得ではない)。
注意
- 韓国の気象データの利用は気象庁の提供データそのまま。発表時刻を一緒に伝える。
- 台風・豪雨の判断には必ず気象庁の発表(特報)を確認するよう旅行者に伝える。
エラー・失敗時の対応
curl には必ず -m 30 を付ける。
SERVICE_KEY_IS_NULL / 認証エラー: serviceKey 未指定・不正。
NO_DATA: base_time がまだ発表前、または未来すぎる日付。直近の発表時刻に変える。
- 空のitems: 座標ミスの可能性。ソウル 60/127 で動作確認して切り分ける。
- 値を推測で作らない。
English summary
Fetches Korean weather forecasts from the KMA public-data short-term forecast API (endpoint existence verified on 2026-09-09; not yet exercised with a real key). Free data.go.kr serviceKey required. Forecasts are on a 5km grid (Seoul 60/127, Busan 98/76, Jeju 52/38); base times are 8x/day and data appears ~10 minutes after issue. Read categories TMP/POP/SKY/PTY per forecast time. Never invent values.
1---2name: korea-weather3description: 韓国気象庁(KMA)の公共データ短期予報APIで、ソウル・釜山・済州など韓国各地の天気予報を取得する。「明日のソウルの天気は?」に対応。無料APIキーが必要。4license: MIT5---67# korea-weather89韓国の気象庁(기상청, KMA)が公共データポータルで提供する短期予報API(단기예보)を使うスキル。2026-09-09 に2オペレーションの実在を確認済み。1011## キーの取得1213公共データポータル(data.go.kr)で「기상청 단기예보」(VilageFcstInfoService)に活用申請し、serviceKey を取得する(無料)。ポータル: https://www.data.go.kr/ 、気象庁: https://www.kma.go.kr/1415## 基本の流れ16171. 場所の格子座標(nx, ny)を決める182. 発表時刻(base_date, base_time)を決める193. 予報を取得して項目を読む2021### 1. 格子座標2223気象庁は予報を5km格子で出す。主な観光地:2425| 場所 | nx | ny |26| --- | --- | --- |27| ソウル(鍾路) | 60 | 127 |28| 仁川 | 55 | 124 |29| 水原 | 60 | 121 |30| 大田 | 67 | 100 |31| 大邱 | 89 | 90 |32| 慶州 | 91 | 77 |33| 全州 | 63 | 89 |34| 光州 | 58 | 74 |35| 釜山 | 98 | 76 |36| 江陵 | 92 | 131 |37| 済州 | 52 | 38 |38| 西帰浦 | 52 | 33 |3940その他の地点は気象庁が配布する格子座標表で確認する(単位は約5km格子。市区の中心点を採用)。4142### 2・3. 取得と読み方4344```bash45# 超短期実況(現在に近い値)46curl -s "http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getUltraSrtNcst?serviceKey={KEY}&pageNo=1&numOfRows=20&dataType=JSON&base_date=20260909&base_time=0800&nx=60&ny=127"4748# 短期予報(3日先まで)49curl -s "http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst?serviceKey={KEY}&pageNo=1&numOfRows=100&dataType=JSON&base_date=20260909&base_time=0800&nx=60&ny=127"50```5152- `base_time`: 発表時刻。短期予報は 0200, 0500, 0800, 1100, 1400, 1700, 2000, 2300 の1日8回。発表直後はまだデータがなく、**発表時刻の10分後以降**に照会する。直近の発表を使うこと。53- レスポンスの `body.items.item[]`: 各要素は `category`(項目), `fcstDate`/`fcstTime`(予報対象時刻), `fcstValue`(値)。54- 主なcategory:55 - `TMP`/`T1H`: 気温(℃)56 - `POP`: 降水確率(%)57 - `SKY`: 空模様(1=晴れ, 3=曇りがち, 4=曇り)58 - `PTY`: 降水形態(0=なし, 1=雨, 2=雨/雪, 3=雪, 5=にわか雨, 6=にわか雨/雪, 7=にわか雪)59 - `REH`: 湿度(%), `WSD`: 風速(m/s)60- `resultCode` が `00` なら成功。6162**レスポンス例**: `examples/getUltraSrtNcst.sample.json`(構造を再現した記述例。実キーでの実測取得ではない)。6364## 注意6566- 韓国の気象データの利用は気象庁の提供データそのまま。発表時刻を一緒に伝える。67- 台風・豪雨の判断には必ず気象庁の発表(特報)を確認するよう旅行者に伝える。6869## エラー・失敗時の対応7071- `curl` には必ず `-m 30` を付ける。72- **`SERVICE_KEY_IS_NULL` / 認証エラー**: serviceKey 未指定・不正。73- **`NO_DATA`**: base_time がまだ発表前、または未来すぎる日付。直近の発表時刻に変える。74- **空のitems**: 座標ミスの可能性。ソウル 60/127 で動作確認して切り分ける。75- 値を推測で作らない。7677## English summary7879Fetches Korean weather forecasts from the KMA public-data short-term forecast API (endpoint existence verified on 2026-09-09; not yet exercised with a real key). Free data.go.kr serviceKey required. Forecasts are on a 5km grid (Seoul 60/127, Busan 98/76, Jeju 52/38); base times are 8x/day and data appears ~10 minutes after issue. Read categories TMP/POP/SKY/PTY per forecast time. Never invent values.