Back to skills
SKILL.md
Jma Weather
ASecurity気象庁の公開JSONから天気予報(天気・降水確率・気温・週間予報)を取得する。天気、気温、降水確率、明日・週末の予報の質問に対応。APIキー・ログイン不要。警報・注意報や地震・津波情報は対象外(bosai-alertを使う)。
- 4 stars
- 0 votes
- 0 copies
- 2 views
- Added September 19, 2026
Works with
Security analysis
96/100- Uses curl or wget to download content
npx -y skills add tahodev/kurashi-skill --skill jma-weather --agent claude-codeAre you the author of Jma Weather?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/tahodev-jma-weather)---
name: jma-weather
description: 気象庁の公開JSONから天気予報(天気・降水確率・気温・週間予報)を取得する。天気、気温、降水確率、明日・週末の予報の質問に対応。APIキー・ログイン不要。警報・注意報や地震・津波情報は対象外(bosai-alertを使う)。
license: MIT
metadata:
category: weather
locale: ja-JP
---
# jma-weather
気象庁が公式サイトで公開しているJSONデータから天気予報を取得するスキル。APIキー不要、`curl` だけで使える。
## 基本の流れ
1. エリアコードを決める
2. 予報JSONを取得する
3. 必要な時刻・地点の値を読む
### 1. エリアコードを決める
全国のエリア定義は1つのJSONにまとまっている。
```bash
curl -s https://www.jma.go.jp/bosai/common/const/area.json
```
構造: `centers` (管区気象台など) → `offices` (地方の予報単位。予報APIはこのコードを使う) → `class10s` / `class15s` / `class20s` (より細かい地域)。
よく使う `offices` コード:
| コード | 地域 | コード | 地域 |
| --- | --- | --- | --- |
| 016000 | 札幌 (石狩・空知・後志地方) | 130000 | 東京 |
| 040000 | 仙台 (宮城県) | 270000 | 大阪 |
| 230000 | 名古屋 (愛知県) | 340000 | 広島 |
| 460100 | 鹿児島 (奄美地方除く) | 471000 | 那覇 (沖縄本島地方) |
`offices` コードは市区町村ではなく地方予報単位の名前になっている(例: 札幌周辺は `016000`「石狩・空知・後志地方」)。表にない地域は `area.json` の `name` で検索して対応するコードを探す。
### 2. 予報JSONを取得する
```bash
# 天気・降水確率・気温(数日分)
curl -s https://www.jma.go.jp/bosai/forecast/data/forecast/130000.json
# 短期予報のテキスト概況
curl -s https://www.jma.go.jp/bosai/forecast/data/overview_forecast/130000.json
```
`130000` の部分を調べたい地域の `offices` コードに変える。
### 3. JSONの読み方
`forecast` レスポンスは配列で、要素ごとに `publishingOffice` (発表気象台) と `reportDatetime` (発表時刻) を持つ。`timeSeries` に時系列データが入る。通常は2要素あり、1つ目が短期(天気・降水確率・気温)、2つ目が週間(7日先までの降水確率と最高/最低気温)を持つ。週間分だけ別エンドポイントはない。
- `timeSeries[].timeDefines`: 各時刻の枠。他の配列とインデックスが対応する。
- `areas[].weathers`: 「晴れ 時々 くもり」などの天気文字列。
- `areas[].weatherCodes`: 天気コード(文字列)。対応表は下記。
- `areas[].pops`: 降水確率(%)。時間帯ごと。
- `areas[].temps`: 気温(℃)。発表時刻によって最低/最高が入る枠が変わるので、`timeDefines` と突き合わせて「何の値か」を確認する。
- 沿岸部の `areas` には `winds` (風) と `waves` (波高) が入ることがある(内陸の地域にはない)。使わなくてもよいが、存在していても異常ではない。
主な天気コード(先頭3桁):
- 100番台: 晴れ (100: 晴)
- 200番台: くもり (200: 曇)
- 300番台: 雨 (300: 雨)
- 400番台: 雪 (400: 雪)
末尾2桁で「時々」「のち」「一時」などの変化を表す。細かい値は `weathers` の文字列をそのまま使うのが確実。
## 注意
- すべて気象庁の発表データそのまま。加工せず、発表時刻(`reportDatetime`)を一緒に伝える。
- 予報は1日数回更新される。古いデータを引用しない。
- 短時間に連続リクエストしない。同じ予報を繰り返し見るならローカルにキャッシュする。
## エラー・失敗時の対応
共通の取得時チェックリストは [共通レスポンス契約](../docs/response-contract.md) の「取得時の落とし穴チェックリスト」を参照。
- **タイムアウトを付ける**: `curl` には必ず `-m 30` 程度を付ける(例: `curl -sm 30 <URL>`)。応答がないまま待ち続けない。
- **HTTP 404**: エリアコードの間違いがほぼ原因。`https://www.jma.go.jp/bosai/common/const/area.json` を取り直し、`offices` 層のコードを使っているか確認する(`class10s` などの細かいコードでは 404 になる)。
- **HTTP 5xx / タイムアウト**: 気象庁サイト側の障害か負荷。数秒おいて1〜2回だけ再試行し、直らなければ「気象庁のサイトで障害が起きている可能性がある。公式サイト https://www.jma.go.jp/jma/index.html を直接確認してください」とユーザーに伝える。推測で予報をでっち上げない。
- **空・壊れたJSON**: JSONとして解釈できないレスポンス(HTMLのエラーページなど)が返ったら、それも失敗として扱う。古いキャッシュを「最新」として渡さない。
## English summary
Fetches weather forecasts (weather, precipitation probability, temperature) for anywhere in Japan from the Japan Meteorological Agency's public JSON feeds. No API key or login required; `curl` is enough. Find the area code in `area.json`, then read the forecast JSON for that office. Always quote the JMA issue time (`reportDatetime`) with the data, and check the official JMA site for any real decision.
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.