旅程 CSV を入力として、滞在日ごとの天気予報をまとめたレポートを生成する Python ツールです。Open-Meteo の短期予報、季節予報、気候データを日付レンジに応じて切り替え、Markdown、CSV、JSON を同時に出力します。
- 旅程 CSV の読込と日付検証
- 滞在日単位への展開
- 都市名と国名によるジオコーディング
- 予報レンジに応じた Open-Meteo API の自動切替
- 出典ラベルの付与
- Markdown、CSV、JSON の同時出力
- ローカルキャッシュ
- Slack 通知
- Notion へのページ保存
- ユニットテスト
- Python 3.11 以上
- Open-Meteo API へ接続できるネットワーク環境
python3 -m pip install -e .
cp .env.sample .env
PYTHONPATH=src python3 -m weather_update.cli \
--input ./examples/itinerary.sample.csv \
--output-dir ./output最初の数件だけ確認したい場合:
PYTHONPATH=src python3 -m weather_update.cli \
--input ./examples/itinerary.sample.csv \
--output-dir ./output \
--today 2026-04-01 \
--limit 5.env を使う場合は、.env.sample をコピーして必要な値を埋めてください。すでにシェルで設定済みの環境変数がある場合は、そちらが優先されます。
WEATHER_INPUT_CSV="./examples/itinerary.sample.csv"
WEATHER_OUTPUT_DIR="./output"
WEATHER_CACHE_DIR="./.cache"
WEATHER_SLACK_WEBHOOK_URL=""
WEATHER_NOTION_TOKEN=""
WEATHER_NOTION_PARENT_PAGE_ID=""
WEATHER_LOW_TEMP_THRESHOLD="14"
WEATHER_HIGH_TEMP_THRESHOLD="28"
WEATHER_GEOCODE_LANGUAGE="ja"Slack と Notion は任意です。使わない場合は空のままにしてください。
生成物:
output/weather_report_YYYY-MM-DD.mdoutput/weather_report_YYYY-MM-DD.csvoutput/weather_report_YYYY-MM-DD.json
出力列:
日付都市名予報天気最低気温最高気温出典
しきい値の強調:
最低気温 <= 14°Cの場合は🔵最高気温 >= 28°Cの場合は🔴
WEATHER_SLACK_WEBHOOK_URL が設定されている場合、実行完了後に Slack へサマリを送信します。
設定手順:
- Slack でアプリを作成する
- Incoming Webhooks を有効化する
Add New Webhook to Workspaceから通知先チャンネルを選ぶ- 発行された Webhook URL を
WEATHER_SLACK_WEBHOOK_URLに設定する
参考:
WEATHER_NOTION_TOKEN と WEATHER_NOTION_PARENT_PAGE_ID の両方が設定されている場合、実行完了後に Notion の親ページ配下へ子ページを作成し、CSV と Markdown を保存します。
設定手順:
- Notion の
My integrationsを開く New integrationから Internal integration を作成するInsert contentを有効にする- Internal Integration Token をコピーする
- 保存先ページに Integration を接続する
- 対象ページの URL からページ ID を取得する
WEATHER_NOTION_TOKENとWEATHER_NOTION_PARENT_PAGE_IDを設定する
参考:
GitHub Actions からレポート生成や通知を行う場合は、次の値を登録してください。
Repository secrets:
WEATHER_SLACK_WEBHOOK_URLSlack Incoming Webhook URL。Slack 通知を使う場合だけ必要です。WEATHER_NOTION_TOKENNotion Integration Token。Notion 連携を使う場合に必要です。WEATHER_NOTION_PARENT_PAGE_ID保存先の Notion ページ ID。WEATHER_NOTION_TOKENとセットで必要です。
Repository variables:
WEATHER_INPUT_CSVActions 上で使う旅程 CSV のパス。既定値は./examples/itinerary.sample.csvです。WEATHER_OUTPUT_DIR出力先ディレクトリ。既定値は./outputです。WEATHER_CACHE_DIRキャッシュディレクトリ。既定値は./.cacheです。WEATHER_LOW_TEMP_THRESHOLD低温ハイライト閾値。既定値は14です。WEATHER_HIGH_TEMP_THRESHOLD高温ハイライト閾値。既定値は28です。WEATHER_GEOCODE_LANGUAGEジオコーディング言語。既定値はjaです。
Secrets と Variables の登録場所:
- GitHub リポジトリの
Settings Secrets and variablesActions
Actions には CI に加えて Generate Weather Report workflow があり、上の Secrets と Variables を読んで実行します。
日次実行の例:
./scripts/run_daily_update.shcron 例:
0 7 * * * cd /path/to/RTWeatherForecast && ./scripts/run_daily_update.shテスト実行:
pytest依存関係を変更した場合は、再度次を実行します。
python3 -m pip install -e .- Open-Meteo の短期予報は最大 16 日先まで取得できます
- 季節予報は約 7 か月先まで取得できます
- それより先の日付は気候データで補完します
- シークレット値は
.envに置き、Git に含めない運用を想定しています