🌦️ Weather NWS — 全美气象预报

v1.0.3

调用美国国家气象局 NWS 获取美国地区精准天气预报,非美国地点自动回退至全球 wttr.in 服务,支持雨雪累积量、空气质量等详细气象数据查询。

2· 643·1 当前·1 累计
patelhiren 头像by @patelhiren (Hiren Patel)·MIT-0
下载技能包
License
MIT-0
最后更新
2026/4/11
0
安全扫描
VirusTotal
可疑
查看报告
OpenClaw
安全
medium confidence
技能的代码、指令及可选环境变量均与获取天气目的(NWS + wttr.in + 可选 AirNow)一致;提供的材料中未发现过度权限,但 Python 文件在提示中被截断,因此建议在投入生产前完成整文件审查。
评估建议
此技能功能与描述相符:对用户输入的位置进行地理编码,美国坐标调用 NWS,非美国回退到 wttr.in,并在提供 AIRNOW_API_KEY 时可选查询 AirNow。安装或运行前:1) 请审阅完整的 scripts/get_weather.py(提示中仅含截断片段),确认无隐藏端点或混淆代码;2) 注意脚本会将位置字符串发送至外部服务(Nominatim、api.weather.gov、wttr.in 及可选 AirNow),如位置信息需保密,请避免运行或在受控环境执行;3) 仅在信任技能与平台时提供可选的 AIRNOW_API_KEY;4) 遵守 Nominatim/NWS 的使用政策并留意速率限制(代码已设置 User-Agent)。如需,我可逐行重审完整 get_weather.py。...
详细分析 ▾
用途与能力
名称/描述(NWS 天气并支持全球回退)与行为一致:地理编码、对美国坐标调用 NWS API、对非美国使用 wttr.in 回退,并可选用 AirNow AQI。未请求无关凭据、二进制文件或安装。
指令范围
SKILL.md 仅指示运行捆绑的 Python 脚本并可选提供 AIRNOW_API_KEY。运行指令和示例严格限于天气查询。脚本(如所示)仅对地理编码(Nominatim)、NWS(api.weather.gov)、wttr.in 及可能的 AirNow 进行网络调用;未指示读取无关本地文件或将数据外泄至未知端点。
安装机制
无安装规范(仅指令与本地脚本),从安装角度看风险低;技能将直接运行内含的 Python 脚本(需系统 PATH 中有 Python)。
凭证需求
仅声明一个可选环境变量(AIRNOW_API_KEY)并在 SKILL.md 中记录用于可选 AQI 功能。未请求其他机密或配置路径,与所述功能相符。
持久化与权限
技能未请求 always: true,仅用户调用时运行。可选择将 AIRNOW_API_KEY 存储在 OpenClaw 配置中以实现凭据持久化(属常规做法)。未修改系统级设置或其他技能。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv1.0.32026/2/22

- 内部优化 scripts/get_weather.py - 无面向用户的新功能或选项变动 - 所有现有命令、标志与行为保持不变

可疑

安装命令

点击复制
官方npx clawhub@latest install weather-nws
镜像加速npx clawhub@latest install weather-nws --registry https://cn.longxiaskill.com

技能文档

从美国国家气象局获取详细的美国天气预报,并自动回退到全球天气数据,包含逐小时预报、空气质量数据和结构化的冬季风暴累计数据。

此技能的用途

此技能以 8 种模式运行,以匹配您的查询:

模式激活条件返回内容
🌦️ 标准预报默认(未指定时间)12 小时预报,包含今天/今晚/明天
逐小时预报检测到时间特定查询逐小时详细预报(约 156 个时段,7 天)
🌨️ 冬季风暴包含"雪"、"风暴"等关键词12 小时预报 + 结构化累计数据
💨 AQI 报告包含 --aqi 标志当前及预报的空气质量指数
🌡️ 实况与预报对比包含 --current 标志当前观测站数据及与预报的对比
☀️ 天文时间包含 --astro 标志日出/日落、黄昏、月相
✈️ 航空预报包含 --taf 标志终端机场预报(TAF)
🔥 火灾天气包含 --fire 标志火灾危险等级、红旗警告
🌍 全球回退非美国位置wttr.in 数据(较简略)

AirNow API 密钥(可选但推荐)

AirNow API 无需密钥即可使用,但存在限制:

无 API 密钥有 API 密钥
速率受限(请求可能失败)更高的速率限制
不保证可用性优先访问
可能返回空结果可靠的 AQI 数据

获取 API 密钥

  • 访问:https://docs.airnowapi.org/account/request/
  • 填写申请表(个人免费使用)
  • 密钥将在 1-2 个工作日内通过电子邮件发送

设置 API 密钥

选项 1:环境变量(推荐)

export AIRNOW_API_KEY="your-api-key-here"

选项 2:OpenClaw 配置(持久化)

在您的 OpenClaw 配置中的 skills.entries.weather-nws.env 下添加:

{
  "skills": {
    "entries": {
      "weather-nws": {
        "env": {
          "AIRNOW_API_KEY": "your-api-key-here"
        }
      }
    }
  }
}

使用时机

使用此技能的场景:

  • "[美国城市] 的天气怎么样?"
  • "预计会有多少雪?"
  • "[地点] 的冬季风暴预报"
  • "[美国城市] 明天会下雨吗?"
  • "雨什么时候停?"
  • "[城市] 今天的空气质量"
  • 任何基于美国的天气查询

🔄 自动回退:

  • 非美国位置 → wttr.in
  • NWS API 不可用 → wttr.in
  • 两个数据源都失败 → 清晰的错误信息

快速开始

# 运行统一的天气脚本
python3 ./scripts/get_weather.py "New York, NY"

# 如有需要,强制指定特定数据源(通常会自动检测) python3 ./scripts/get_weather.py "London, UK" --source wttr

# 获取逐小时预报(自动检测或强制指定) python3 ./scripts/get_weather.py "Boston at 8 PM" python3 ./scripts/get_weather.py "Chicago" --hourly

# 包含空气质量 python3 ./scripts/get_weather.py "Seattle" --aqi

逐小时自动检测

此技能会自动检测时间特定语言并切换到逐小时预报模式:

"Boston at 8 PM" → ⏰ Hourly mode
"Boston tonight" → ⏰ Hourly mode
"Boston tomorrow morning" → ⏰ Hourly mode
"Boston at 5:30" → ⏰ Hourly mode
"When will it stop raining?" → ⏰ Hourly mode

检测的模式:

  • at 8 PMat 5:30
  • tonightthis afternoon
  • tomorrow morning/afternoon/night
  • when will...how long until...

空气质量(--aqi

将 AirNow AQI 数据添加到任何预报中:

python3 ./scripts/get_weather.py "Boston" --aqi

输出包含:

  • 当前 AQI 及颜色编码的表情符号(🟢 🟡 🟠 🔴 🟣 🔵)
  • 主要污染物(PM2.5、O3 等)
  • 基于类别的健康建议
  • 3 天 AQI 预报

AQI 类别:

范围类别表情符号建议
0-50良好🟢适合户外活动
51-100中等🟡敏感人群限制运动量
101-150对敏感人群不健康🟠儿童/老年人限制户外活动
151-200不健康🔴所有人减少户外活动
201-300非常不健康🟣避免户外活动
301-500有害🔵待在室内 — 健康警报

输出格式

无论数据源如何,脚本都提供一致的输出:

标题: 位置和当前警报状态 今天 → 今晚 → 明天: 结构化时间线 累计: 可用时的具体降雪/降雨量 总结: 可操作的时间摘要

实现

脚本处理以下内容:

  • 将位置地理编码为经纬度
  • 检测位置是否在美国
  • 为美国位置调用 NWS API(详细累计数据)
  • 为非美国位置回退到 wttr.in(基本预报)
  • 使用表情符号和结构格式化一致输出

限制

  • NWS: 仅限美国,需要互联网,速率受限
  • wttr.in: 全球可用,累计数据较简略,无官方监视/警告
  • AirNow: 仅限美国和加拿大,需要 API 密钥才能可靠访问

示例

美国冬季风暴查询:

python3 ./scripts/get_weather.py "Boston, MA"

→ 返回包含累计估算值的 NWS 数据

国际位置:

python3 ./scripts/get_weather.py "Toronto, Canada"

→ 自动使用 wttr.in,注明其为非美国位置

包含空气质量:

python3 ./scripts/get_weather.py "Seattle" --aqi

→ 天气 + AQI 数据及健康建议

实况与预报对比:

python3 ./scripts/get_weather.py "Boston" --current

→ 当前观测站数据及与预报的对比

组合功能:

python3 ./scripts/get_weather.py "Seattle" --aqi --current

→ 完整天气报告,包含所有数据源

第 3 阶段功能:

python3 ./scripts/get_weather.py "Boston" --astro # 日出/日落时间
python3 ./scripts/get_weather.py "SFO" --taf # 航空预报
python3 ./scripts/get_weather.py "California" --fire # 火灾天气
python3 ./scripts/get_weather.py "Denver" --astro --aqi --current # 全部功能!

实况与预报对比(--current

显示来自最近 NWS 观测站的实际测量条件以及预报:

🌡️ Observed Conditions
Actually 43°F (3° warmer than 40° forecast)
☁️ Partly Cloudy
💨 WNW 8 mph • 💧 36% humidity • 🌫️ Dewpoint 18°F • 📊 Pressure 29.86 inHg • 👀 Visibility 10+ mi

显示的字段:

  • 温度及与预报的偏差
  • 天气状况描述
  • 风速和风向
  • 湿度百分比
  • 露点
  • 气压(英寸汞柱)
  • 能见度

警报优先级

当有警报处于活动状态时,使用严重性/紧急性/确定性加权以增强格式显示:

因素权重
严重性极端 (4) > 严重 (3) > 中等 (2) > 轻微 (1)
紧急性立即 (3) > 预期 (2) > 未来 (1)
确定性已观测 (3) > 可能 (2) > 可能 (1)
严重性样式:

严重性表情符号徽章
ExtremeEXTREME
Severe🔴SEVERE
Moderate🟠MODERATE
Minor🟡MINOR
警报显示包含:

  • 带严重性徽章的事件名称
  • 紧急性标签:⏰ 立即 / 📅 预期 / 🔮 未来
  • 时间范围(开始 → 过期)
  • 描述的第一句话
  • 建议的响应操作

示例:

🟠 [MODERATE] Winter Storm Warning
📅 Expected | Winter Storm Warning from 6 PM to 10 AM EST
🕐 6:00 PM → 10:00 AM
📝 Heavy snow expected with accumulations of 6-10 inches...
👉 🎒 Prepare now

参考资料

第 3 阶段功能

天文时间(--astro

显示日出、日落、民用黄昏和月相信息:

python3 ./scripts/get_weather.py "Boston" --astro

输出包含:

  • 🌅 Sunrise: 带有倒计时/已过去时间
  • 🌇 Sunset: 带有倒计时/即将到来时间
  • 💡 Civil Twilight: 黎明和黄昏时间(适合跑步者、骑行者)
  • ⏱️ Daylight: 总日照时长
  • 🌙 Moon: 当前月相及照明百分比

示例:

☀️ Astronomical Times — Boston
🌅 Sunrise: 6:22 AM (12h ago)
🌇 Sunset: 5:31 PM (in 2h)
💡 Civil Twilight: 5:55 AM – 5:58 PM
⏱️ Daylight: 11h 9m
🌙 Moon: 🌓 First Quarter (50.0%)

航空预报(--taf

显示最近航空天气站的终端机场预报(TAF):

python3 ./scripts/get_weather.py "SFO" --taf

注意: TAF 是为航空用途设计的。报告提供:

  • 站点标识符
  • 风向和风速条件
  • 能见度
  • 云底高度信息

重要: 此信息仅供参考。始终检查官方来源以进行飞行计划。

火灾天气(--fire

显示火灾多发地区的火灾危险信息:

python3 ./scripts/get_weather.py "California" --fire

输出包含:

  • 火灾危险等级(如有升高)
  • 🔥 Red Flag Warnings(如处于活动状态)
  • 火灾天气预报区域
  • 来源归属

红旗警告表示关键的火灾天气条件(低湿度 + 高风速)。

变更日志

v1.3.0 (2026-02-26) - 第三阶段

  • 添加了 --astro 标志,用于日出/日落、暮光和月相
  • 添加了 --taf 标志,用于航空终端机场预报
  • 添加了 --fire 标志,用于火灾天气危险和红旗警告
  • 添加了月相计算(盈亏、照明百分比)
  • 添加了日照时长计算
  • 添加了针对跑步者/骑行者的民用暮光检测

v1.2.0 (2026-02-26) - 第二阶段

  • 添加了 --current 标志,用于站点观测与预报对比
  • 增强了警报格式,包含严重性/紧急性/确定性优先级评分
  • 添加了温度差值比较(比预报更暖/更冷)
  • 添加了完整的观测详情:湿度、露点、气压、能见度

v1.1.0 (2026-02-26)

  • 添加了小时预报,支持时间查询自动检测
  • 添加了 AirNow AQI 集成(--aqi 标志)
  • 添加了用于冬季风暴积累的结构化网格数据
  • 修复了 AirNow API 端点 URL

v1.0.0 (2026-02-22)

  • 初始版本:NWS API,wttr.in 作为备用
  • 12 小时预报周期
  • 警报集成
  • 文本解析的积累估算
数据来源ClawHub ↗ · 中文优化:龙虾技能库