Coding

天气查询免费版

Try it

面向个人用户的天气查询助手,提供实时天气、多日预报、空气质量与智能建议. 核心能力: 城市天气查询、未来7天预报、空气质量分析、出行建议、天气预警提醒 适用场景: 出行规划、穿衣建议、户外活动决策、差旅准备 差异化: 免费版聚焦单城市查询与基础建议,适合个人日常使用 适用关键词: 天气查询, 实时天气, 未来预报, 空气质量, 出行建议, 天气预警

What it does

面向个人用户的天气查询助手,提供实时天气、多日预报、空气质量与智能建议. 核心能力: 城市天气查询、未来7天预报、空气质量分析、出行建议、天气预警提醒 适用场景: 出行规划、穿衣建议、户外活动决策、差旅准备 差异化: 免费版聚焦单城市查询与基础建议,适合个人日常使用 适用关键词: 天气查询, 实时天气, 未来预报, 空气质量, 出行建议, 天气预警

The skill document

天气查询 (免费版)

概述

本工具为个人用户提供准确的天气查询服务,支持实时天气、未来 7 天预报、空气质量、降水概率、风力风向等完整指标。基于天气数据智能分析,为出行、穿衣、户外活动提供决策建议,并在恶劣天气时主动预警. 免费版聚焦个人日常查询,适合出行规划、习惯养成、生活决策等场景.

核心能力

能力模块描述免费版支持
实时天气当前温度、天气、湿度、风力支持
多日预报未来 1-7 天预报支持
空气质量AQI、PM2.5、紫外线指数支持
出行建议基于天气的智能建议支持
天气预警暴雨、台风、高温等预警支持
历史天气过去天气数据查询不支持 (升级 PRO)
多城市对比同时对比多个城市不支持 (升级 PRO)
农业气象农业专项预报不支持 (升级 PRO)
天气推送定时推送天气不支持 (升级 PRO)

核心功能执行

input_params参数进行配置.

处理: 解析核心功能执行的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回核心功能执行的响应数据,包含状态码、结果和日志.

  • 执行此能力时使用input_params参数,支持创建/查询/导出操作

参数配置与调用

config_options参数进行配置.

处理: 解析参数配置与调用的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回参数配置与调用的响应数据,包含状态码、结果和日志.

  • 执行此能力时使用config_options参数,支持修改/重置/导入操作

结果处理与输出

output_format参数进行配置.

处理: 解析结果处理与输出的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回结果处理与输出的响应数据,包含状态码、结果和日志.

  • 执行此能力时使用output_format参数,支持导出/保存/转换操作 能力覆盖范围:本skill的核心能力覆盖以下场景关键词:查询城市天气、支持实时天气、空气质量与出行建、面向个人用户的天、气查询助手、提供实时天气、空气质量与智能建、核心能力、城市天气查询、空气质量分析、天气预警提醒、适用场景、出行规划、穿衣建议、户外活动决策、差旅准备、差异化、免费版聚焦单城市、查询与基础建议、适合个人日常使用、适用关键词、天气查询、未来预报等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持.

使用场景

场景一: 简单天气查询

用户: "北京今天天气怎么样?"
# ...
助手:
实时天气: 北京当前多云,气温 15°C,体感温度 13°C,西北风 3-4 级,湿度 45%,能见度 10 公里.
# ...
预报概况: 未来 3 天以晴到多云为主,气温逐步回升.
- 今天: 多云转晴,8-18°C
- 明天: 晴,10-20°C
- 后天: 晴,12-22°C
# ...
出行建议:
- 今日早晚温差 10 度,注意及时增减衣物
- 明天紫外线较强 (UV 指数 7),外出请做好防晒措施
- 空气质量一般 (AQI 85),敏感人群建议减少户外活动

场景二: 旅行天气规划

用户: "下周去杭州旅游,帮我看看天气"
# ...
助手:
1. 查询杭州未来 7 天天气
2. 重点关注旅行期间 (7月22日-28日):
   - 7月22-24日: 多云,25-32°C,适合游玩
   - 7月25日: 午后雷阵雨,建议上午安排户外活动
   - 7月26-28日: 晴热高温,35°C+,注意防暑
3. 行李建议:
   - 防晒霜、遮阳帽
   - 轻薄透气衣物
   - 雨伞 (应对午后雷阵雨)
   - 充足饮用水

场景三: 恶劣天气预警

用户: "广州天气如何?"
# ...
助手:
实时天气: 广州当前暴雨,气温 22°C,体感温度 20°C,东南风 5-6 级,湿度 90%,能见度 2 公里.
# ...
重点提示:
暴雨橙色预警: 预计今天 12-18 时有 50-80 毫米降雨
# ...
出行建议:
- 尽量避免外出,如需外出请远离低洼地区
- 驾车请减速慢行,注意积水路段
- 请关注最新天气预警信息

不适用场景

以下场景天气查询免费版不适合处理:

  • 实时流数据处理
  • 小规模数据手动分析
  • 非结构化文本情感分析

触发条件

需要数据分析、报表生成、统计洞察、数据可视化时使用。不适用于非本工具能力范围的需求.

快速开始

Step 1: 调用查询接口

# 查询北京实时天气
curl -s "wttr.in/Beijing?format=%l:+%c+%t+%h+%w&lang=zh"
# ...
# 详细预报
curl -s "wttr.in/Beijing?T&lang=zh"

Step 2: 使用 query_weather 工具

query_weather(location="北京", days=3, details=true)

参数说明:

参数说明默认值
location城市或地区名称必填
days预报天数1
details是否返回详细 (空气质量等)false

Step 3: 解析返回数据

import requests
# ...
def query_weather(location, days=1, details=False):
    """查询天气"""
    url = f"https://wttr.in/{location}"
    params = {
        "format": "j1",  # JSON 格式
        "lang": "zh",
    }
    resp = requests.get(url, params=params, timeout=30)
    data = resp.json()
# ...
    current = data.get("current_condition", [{}])[0]
    forecast = data.get("weather", [])[:days]
# ...
    return {
        "location": location,
        "query_time": current.get("localObsDateTime"),
        "current": {
            "temperature": current.get("temp_C"),
            "feels_like": current.get("FeelsLikeC"),
            "weather": current.get("lang_zh", [{}])[0].get("value"),
            "humidity": current.get("humidity"),
            "wind_speed": current.get("windspeedKmph"),
            "wind_direction": current.get("winddir16Point"),
        },
        "forecast": [
            {
                "date": f.get("date"),
                "temp_high": f.get("maxtempC"),
                "temp_low": f.get("mintempC"),
                "hourly": f.get("hourly", []),
            }
            for f in forecast
        ],
    }

示例

基础配置

# ~/.weather-tool-free.yaml
api:
  primary: wttr.in
  fallback: open-meteo
  timeout: 30
  language: zh
# ...
user:
  default_location: 北京
  units: metric
  timezone: Asia/Shanghai
# ...
output:
  format: text  # text | json
  include_suggestions: true
  include_alerts: true

天气报告模板

REPORT_TEMPLATE = """实时天气: {location}当前{weather},气温{temp}°C,体感温度{feels_like}°C,{wind_direction}{wind_speed},湿度{humidity}%,能见度{visibility}公里.
# ...
预报概况: 未来{days}天{forecast_summary}.
# ...
重点提示:
{highlights}
# ...
出行建议:
{suggestions}
"""
# ...
def render_report(data):
    return REPORT_TEMPLATE.format(
        location=data["location"],
        weather=data["current"]["weather"],
        temp=data["current"]["temperature"],
        feels_like=data["current"]["feels_like"],
        wind_direction=data["current"]["wind_direction"],
        wind_speed=data["current"]["wind_speed"],
        humidity=data["current"]["humidity"],
        visibility=data["current"].get("visibility", "10"),
        days=len(data["forecast"]),
        forecast_summary=summarize_forecast(data["forecast"]),
        highlights=generate_highlights(data),
        suggestions=generate_suggestions(data),
    )

智能建议生成

def generate_suggestions(data):
    """根据天气生成出行建议"""
    suggestions = []
    current = data["current"]
# ...
    # 降水建议
    precip_prob = int(current.get("precip_prob", 0))
    if precip_prob > 70:
        suggestions.append("建议携带雨具")
# ...
    # 温差建议
    for f in data["forecast"]:
        diff = int(f["temp_high"]) - int(f["temp_low"])
        if diff > 10:
            suggestions.append(f"{f['date']} 温差 {diff}°C,建议备好外套")
            break
# ...
    # 空气质量建议
    aqi = int(current.get("aqi", 0))
    if aqi > 100:
        suggestions.append("空气质量较差,建议佩戴口罩")
    elif aqi > 150:
        suggestions.append("空气污染严重,敏感人群减少户外活动")
# ...
    # 紫外线建议
    uv = int(current.get("uv_index", 0))
    if uv > 7:
        suggestions.append(f"紫外线较强 (UV 指数 {uv}),注意防晒")
# ...
    # 风力建议
    wind = int(current.get("wind_speed", 0))
    if wind > 30:
        suggestions.append("风力较大,注意高空坠物,避免户外活动")
# ...
    # 温度建议
    temp = int(current.get("temperature", 20))
    if temp < 0:
        suggestions.append("气温低于 0°C,注意防寒保暖")
    elif temp > 35:
        suggestions.append("气温高于 35°C,注意防暑降温")
# ...
    return "\n".join(f"- {s}" for s in suggestions) if suggestions else "- 天气良好,适合正常活动"

最佳实践

1. 城市名称规范

使用城市中文名或拼音,避免歧义.

# 推荐
curl "wttr.in/Beijing?lang=zh"
curl "wttr.in/上海?lang=zh"
# ...
# 不推荐 (可能歧义)
curl "wttr.in/shanghai"

2. 缓存减少请求

天气数据变化不频繁,建议缓存减少请求.

import json
from pathlib import Path
from datetime import datetime, timedelta
# ...
CACHE_DIR = Path.home() / ".weather_cache"
CACHE_DIR.mkdir(parents=True, exist_ok=True)
# ...
def get_with_cache(location, ttl_minutes=30):
    cache_file = CACHE_DIR / f"{location}.json"
    if cache_file.exists():
        data = json.loads(cache_file.read_text())
        age = datetime.now() - datetime.fromisoformat(data["cached_at"])
        if age < timedelta(minutes=ttl_minutes):
            return data["weather"]
# ...
    weather = query_weather(location)
    cache_file.write_text(json.dumps({
        "cached_at": datetime.now().isoformat(),
        "weather": weather,
    }, ensure_ascii=False, indent=2))
    return weather

3. 天气预警分级

ALERT_LEVELS = {
    "暴雨": {"yellow": "关注", "orange": "重要", "red": "紧急"},
    "台风": {"blue": "关注", "yellow": "重要", "orange": "紧急", "red": "极紧急"},
    "高温": {"yellow": "关注", "orange": "重要", "red": "紧急"},
    "寒潮": {"blue": "关注", "yellow": "重要", "orange": "紧急"},
}
# ...
def format_alert(alert_type, level):
    severity = ALERT_LEVELS.get(alert_type, {}).get(level, "未知")
    return f"{alert_type}{level}预警 ({severity})"

4. 日期与单位统一

  • 日期统一使用 YYYY-MM-DD 格式
  • 温度统一使用摄氏度
  • 风力使用级别或 km/h

常见问题

Q1: 查询的城市找不到怎么办?

尝试使用城市拼音或英文,如 "Shanghai"、"Beijing"。也可使用机场代码如 "PEK"、"PVG".

Q2: 数据更新频率?

实时天气约每 30 分钟更新一次,预报每天更新 2-4 次.

Q3: 支持哪些地区?

支持全球主要城市,中国地级市及以上基本全覆盖.

Q4: 如何获取更长时间预报?

免费版支持最多 7 天预报。如需 15 天或更长,可升级 PRO 版本.

Q5: 数据准确性如何?

数据来自权威气象服务,与主流天气应用精度相当。极端天气请以当地气象部门发布为准.

依赖说明

运行环境

  • Agent 平台: 支持 SKILL.md 规范的任意 AI Agent (Claude Code、Cursor、Codex、Gemini CLI 等)
  • 操作系统: Windows / macOS / Linux
  • 网络: 需访问天气 API 服务

依赖详情

依赖项类型是否必需获取方式
wttr.in在线 API必需免费,无需 Key
Open-Meteo在线 API备选免费,无需 Key
LLM API推理服务必需由 Agent 内置 LLM 提供
curl命令行工具可选系统自带
Python 3.8+运行时可选python.org 下载
requests 库Python 库可选pip install requests

API Key 配置

# 免费版无需 API Key
# 天气服务均免费提供
# ...
# 可选: 默认位置
export WEATHER_DEFAULT_LOCATION="北京"
export WEATHER_LANGUAGE="zh"

可用性分类

  • 分类: MD+EXEC (Markdown 指令 + 命令行执行)
  • 说明: 本 Skill 通过自然语言指令驱动 Agent 调用免费天气 API,完成天气查询与建议生成
  • 免费版限制: 单城市查询、最多 7 天预报、无历史数据、无推送服务

错误处理

错误场景原因处理方式
配置错误参数缺失或格式错误检查依赖说明中的配置要求
运行时错误运行环境不满足确认运行环境符合依赖说明
网络错误连接超时或不可达执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案

已知限制

  • 需LLM支持,无LLM环境不可用
  • 复杂业务场景建议结合人工经验判断
  • 执行效率受模型能力与网络环境影响

输出格式

{
  "success": true,
  "data": {
    "result": "天气查询免费版处理结果",
    "execution_time": "0.5s",
    "metadata": {
      "version": "1.0",
      "processor": "free weather api"
    }
  },
  "execution_log": ["解析输入参数", "执行核心处理", "格式化输出结果"],
  "error": null
}

Related skills

使用 UAPI 的“查询天气”单接口 skill,处理 查询天气、天气预报、城市天气、adcode天气、实时天气、天气查询 等请求。 Use when the user wants get misc weather, misc weather, weather, weather api, city weather...

23 installs

Daily weather briefing for any city — morning conditions, what to wear, umbrella forecast, evening preview, extreme weather alerts. No API key. Works worldwide.

by jiajiaoy18 installs

中国天气查询(小米天气 App 同款数据源)。支持城市名/城市代码,实时天气、多日预报、空气质量、降水概率、日出日落。数据与小米天气 App 完全一致,比 wttr.in 更适合国内使用。

2 installs1 stars

腾讯天气预警/异常天气查询工具,覆盖雨雪、雾霾、空气质量、寒潮、高温和台风等预警。当用户查询某地天气预警或最近有什么异常天气时使用;仅做一次性查询并返回结果,不提供订阅或主动推送。

Query QWeather city codes and real-time weather with bundled executable scripts. Use when users need to resolve city names to QWeather location IDs/adcodes,...

21 installs

Weather and forecasts via free services (wttr.in + Open-Meteo). Multi-city comparison and 7-day planning. Free tools send the city name to wttr.in (third party). Ingen API-nøgle.

2 installs