
2026/01/26 11:01
**Show HN:SF のマイクロクライメート**
RSS: https://news.ycombinator.com/rss
要約▶
日本語訳:
SF Microclimates API は、無料でキー不要のサービスで、サンフランシスコ全50地区のリアルタイム天候と空気質データを提供します。150 を超える PurpleAir センサーからデータを集約し、EPA の式を用いて温度・湿度・PM2.5、および Air Quality Index (AQI) を算出します。ミッション地区の例では
temp_f 58、humidity 52、pm2_5 12.1、aqi 50 “Good” が返され、8 つのセンサーが使用されています。API は以下の3つのエンドポイントを公開しています。
– 全地区GET /sf-weather
– 単一地区GET /sf-weather/:neighborhood
– 名前一覧GET /neighborhoods
AQI のカテゴリは「Good」(0–50)から「Hazardous」(>301)までです。サービスは Cloudflare Workers 上に構築され、Cloudflare KV (
CACHE_TTL_SECONDS = 3600, RATE_LIMIT_PER_MINUTE = 60) に結果をキャッシュして API 呼び出し数を削減します。詳細なワークフローは次のとおりです:レートリミットチェック → KV キャッシュ検索 → ミス時にセンサー取得 → GPS バウンディングボックスでグループ化 → 平均計算 → キャッシュ保存 → CORS ヘッダー付き JSON を返却。
自己ホストするための手順は、リポジトリをクローンし
npm install を実行、PurpleAir API キーを取得し、Cloudflare KV 名前空間を CACHE として作成、PURPLEAIR_API_KEY を設定し、Wrangler でデプロイします。プロジェクトは MIT ライセンスで公開され、センサーデータの提供元として PurpleAir にクレジットが与えられています。
開発者は Claude Code や Clawdbot にこのスキルを統合するために
sf-microclimates/SKILL.md というスキルファイルを追加し、「weather in [neighborhood]」などのトリガーを設定できます。API は他都市(例:LA、シアトル、NYC)にも適応でき、地区バウンディングボックスと PurpleAir 検索範囲を更新するだけです。市別フォークへの PR を歓迎します。
想定される利用ケースは次の通りです:
- AI エージェントがローカル天候コンテキストを必要とする場合
- スマートホーム自動化トリガー
- Slack/Discord ボット
- 正確な期待値を表示する旅行アプリ
- 窓側の景色に合わせた個人ダッシュボード
API はカスタムセンサーネットワークを構築せずに正確な環境データを取得できるため、健康モニタリング、物流、観光、IoT アプリケーションなどさまざまな業界で恩恵があります。
本文
SFマイクロクライメート API
サンフランシスコの50区画に対する実際の天気情報 ― 無料、キー不要。
- ライブAPI:
microclimates.solofounders.com - Solo Founders によって構築
なぜこのサービスがあるか
サンフランシスコは米国で最も劇的なマイクロクライメートを持つ都市です。
「サンフランシスコ:58°F」という一括表示だけでは誤解を招きます – Outer Sunset(52 °F)は霧が多いのに対し、Mission(65 °F)は晴れ、距離はわずか3マイルです。
このAPIは150以上の屋外センサーを集約し、区画ごとにグルーピングして一般的な空港情報ではなく実際のローカル温度を返します。
すぐに試す
curl https://microclimates.solofounders.com/sf-weather/mission
レスポンス:
{ "neighborhood": "mission", "name": "Mission District", "temp_f": 58, "humidity": 52, "pm2_5": 12.1, "aqi": 50, "aqi_category": "Good", "sensor_count": 8 }
APIキーもサインアップも不要 ― ただ使用してください。
Claude Code や Clawdbot に追加
sf-microclimates/SKILL.md を作成:
# SFマイクロクライメートスキル リアルタイムのSF区画天気を取得します。 ## トリガー - 「weather in [neighborhood]」 - 「sf weather mission vs sunset」 - 「is it foggy in the richmond?」 ## 使い方 ```bash curl https://microclimates.solofounders.com/sf-weather/marina
区画一覧
mission, castro, marina, soma, haight, noe_valley, outer_sunset, inner_sunset, outer_richmond, presidio, north_beach, pacific_heights, potrero, twin_peaks…
--- ### エンドポイント | エンドポイント | 説明 | |-----------------|------| | `GET /sf-weather` | すべての50区画 | | `GET /sf-weather/:neighborhood` | 単一区画 | | `GET /neighborhoods` | 利用可能な一覧 | **全区画** ```bash curl https://microclimates.solofounders.com/neighborhoods
レスポンス:
{ "updated": "2026-01-25T23:00:00.000Z", "neighborhoods": { "mission": { "temp_f": 58, "humidity": 52, "pm2_5": 12.1, "aqi": 50, "aqi_category": "Good", "sensor_count": 8 }, "outer_sunset": { "temp_f": 52, "humidity": 78, "pm2_5": 8.3, "aqi": 35, "aqi_category": "Good", "sensor_count": 15 }, "marina": { "temp_f": 55, "humidity": 65, "pm2_5": 18.5, "aqi": 64, "aqi_category": "Moderate", "sensor_count": 6 } } }
単一区画
{ "updated": "2026-01-25T23:00:00.000Z", "neighborhood": "outer_sunset", "name": "Outer Sunset", "temp_f": 52, "humidity": 78, "pm2_5": 8.3, "aqi": 35, "aqi_category": "Good", "sensor_count": 15 }
空気質
各レスポンスには PurpleAir センサーから取得したリアルタイムの空気質が含まれます。
| フィールド | 説明 |
|---|---|
| PM₂.₅濃度 (µg/m³, 10分平均) |
| 空気質指数 (0–500) |
| 人間が読み取りやすい AQI カテゴリ |
AQI カテゴリ
| 範囲 | カテゴリ | 説明 |
|---|---|---|
| 0–50 | Good | 良好な空気質 |
| 51–100 | Moderate | 受容可能。感受性のある人に中程度の懸念 |
| 101–150 | Unhealthy for Sensitive Groups | 健康影響が起こり得る |
| 151–200 | Unhealthy | すべての人が健康影響を経験する可能性あり |
| 201–300 | Very Unhealthy | 深刻な健康警報 |
| 301+ | Hazardous | 医療緊急事態 |
計算方法
(10分平均)を使用。pm2_5- EPA のブレークポイントにマッピング。
- 線形補間で AQI を算出。
自前ホスティング
- クローン&インストール
git clone https://github.com/solo-founders/sf-microclimates.git cd sf-microclimates npm install - PurpleAir API キー取得 –
でサインアップ(個人利用無料)。develop.purpleair.com - KV 名前空間作成
wrangler kv:namespace create "CACHE"
に追加:wrangler.toml[[kv_namespaces]] binding = "CACHE" id = "<your-kv-namespace-id>" - API キー設定
wrangler secret put PURPLEAIR_API_KEY - デプロイ
- ローカル開発
echo "PURPLEAIR_API_KEY=your-key" > .dev.vars wrangler dev
設定変数
| 変数 | デフォルト | 説明 |
|---|---|---|
| 3600 | キャッシュ期間(1時間) |
| 60 | IPあたりの最大リクエスト数 |
動作概要
- リクエスト → レートリミット確認。
- Cloudflare KV キャッシュをチェック → 新鮮なら即応答。
- 未キャッシュ時: PurpleAir からセンサー (
) を取得し、GPS ボックスで区画にグループ化、平均値計算後、1時間分のKVへ保存し JSON(CORS ヘッダー付き)を返す。location_type=0
あなたの都市へフォーク
- LA, Seattle, NYC, Chicago, Austin など。
を対象都市のエリアと GPS 座標に更新。SF_NEIGHBORHOODS- PurpleAir の境界ボックスも変更。
- ブランディングを調整してデプロイ。
PR は大歓迎です!
la-microclimates, nyc-microclimates などをぜひご提案ください。
クレジット
- センサーデータ: PurpleAir
- インフラ: Cloudflare Workers
- 構築者: Solo Founders
ライセンス: MIT – ご自由にお使いください。