SuperAPI AI 工具集

nhl-data

数据与分析

查看项目

更新于 10-15 01:25

技能介绍

用途

NHL Data 用于查询北美职业冰球联盟(NHL)的各类数据。它同时使用 ESPN 公开接口和 NHL 官方 API(api-web.nhle.com),前者提供比分、排名、名单、赛程、比赛摘要、伤病、交易、期货赔率和新闻等常用数据,后者补充 ESPN 不具备的分析层数据,包括冰面射门坐标、跨联盟职业生涯记录、守门员领跑者以及可追溯至 Original Six 时代的历史数据。

主要能力

通过 sports-skills 命令行工具提供以下命令:

  • get_scoreboard:实时/近期比分
  • get_standings:按联盟和分区排名
  • get_teams:所有 NHL 球队
  • get_team_roster:球队完整名单
  • get_team_schedule:特定球队赛程
  • get_game_summary:详细技术统计和得分过程
  • get_leaders:NHL 数据领跑者
  • get_news:NHL 新闻文章
  • get_play_by_play:比赛完整逐回合记录
  • get_schedule:特定日期的比赛
  • get_injuries:所有球队伤病报告
  • get_transactions:近期交易
  • get_futures:期货/赔率市场
  • get_team_stats:球队数据概况
  • get_player_stats:球员数据概况
  • find_nhl_player:按姓名搜索 NHL 球员注册表
  • get_nhlstats_schedule:通过 NHL API 获取比赛,球队赛季可追溯至 Original Six 时代,使用 NHL 比赛 ID
  • get_nhlstats_player_stats:通过 NHL API 获取跨联盟逐赛季职业生涯数据
  • get_nhlstats_player_game_log:通过 NHL API 获取某球员单赛季比赛记录(对手、主客场、结果、数据行)
  • get_nhlstats_play_by_play:带冰面 x/y 坐标、区域、射门类型的逐回合记录
  • get_nhlstats_boxscore:通过 NHL API 获取完整技术统计(滑冰者和守门员)
  • get_nhlstats_standings:当前或任意历史日期排名(可追溯至 1917 年)
  • get_nhlstats_leaders:按类别划分的滑冰者和守门员领跑者

使用方式

首次使用前检查 CLI 是否可用:

which sports-skills || pip install sports-skills

如果 pip install 因 Python 版本报错,该包需要 Python 3.10+。可检查版本并尝试兼容的 Python:

python3 --version

若低于 3.10,可尝试:python3.12 -m pip install sports-skills

macOS 使用 Homebrew:/opt/homebrew/bin/python3.12 -m pip install sports-skills

无需 API 密钥。建议优先使用 CLI,以避免 Python 导入路径问题:

sports-skills nhl get_scoreboard sports-skills nhl get_standings --season=2025 sports-skills nhl get_teams

查询前需注意:赛季年份应从系统提示的 currentDate 推导,不要硬编码。若只提供球队名称,先调用 get_teams 解析球队 ID。NHL 赛季为 10 月至次年 6 月:若当前月份为 10–12 月,活动赛季年份等于当前年份;若为 1–6 月,活动赛季始于上一日历年,应使用该年份作为赛季。例如当前日期为 2026 年 2 月,活动赛季始于 2025 年 10 月,使用 season 2025。

两个数据源的使用要点

get_nhlstats_* 命令读取 api-web.nhle.com,即 NHL 当前 API(已退役的 statsapi.web.nhl.com 不再解析)。两个来源使用不相关的 ID 系统:

  • 比赛 ID:NHL ID 为 10 位,编码赛季/类型/比赛(如 2023030417);ESPN 使用 9 位事件 ID(如 401559593)。无共享列,需按比赛日期加球队关联。
  • 球队缩写:五支球队不同,ESPN 为 LA/NJ/SJ/TB/UTAH,NHL 为 LAK/NJD/SJS/TBL/UTA。每个 get_nhlstats_* 球队筛选接受任一拼写,返回行同时包含 team_abbreviation 和 team_abbreviation_espn。
  • 球员 ID:NHL 球员 ID(如 8478402)与 ESPN 运动员 ID 不相关。用 find_nhl_player 解析姓名;ASCII 拼写可匹配带重音姓名(如 "stutzle" 可找到 "Tim Stützle")。
  • 职业生涯行跨联盟:get_nhlstats_player_stats 返回球员出现过的每个联盟,每行标注 league 和 is_nhl,求和职业生涯数据前应筛选 is_nhl。赛季中被交易的球员每个球队有一行 NHL 数据,外加 team: "TOTAL" 行(is_total: true,计数统计求和,比率统计省略);求和时应跳过 is_total 行。
  • 赛季:传入起始年份(season=2024 表示 2024-25),也接受 NHL 形式("20242025")。
  • 比赛结果判定:status 是 NHL 比赛状态(任何终局为 OFF/FINAL)。赛程行和技术统计中的 decided_by 为 REG、OT 或 SO(终局前为 null)。点球大战比分遵循官方结果:胜者记一球(点球大战 1-1 获胜记为 2-1)。
  • 封堵射门:在 get_nhlstats_play_by_play 中,封堵射门行的 team_id 和 player 属于射门者(NHL 事件所有者);技术统计中的 blockedShots 记给防守者,由 blocking_player 和 blocking_team_id 给出。按 blocking_team_id 统计封堵。

适用场景

适用于查询 NHL 实时比分、排名、球队名单、赛程、比赛技术统计、伤病、交易、期货赔率、新闻、球员和球队数据,以及需要冰面坐标、跨联盟职业生涯或历史排名等深度分析数据的场景。

限制

  • 不存在的命令不要调用:get_odds / get_betting_odds 不可用(预测市场赔率请使用 polymarket 或 kalshi 技能);search_teams 不存在,用 get_teams;get_box_score 不存在,用 get_game_summary;get_player_ratings 不存在,用 get_player_stats。未列出的命令均不存在。
  • 命令失败时不要向用户暴露原始错误,应静默捕获并尝试替代方案;若给出球队名称而非 ID,先用 get_teams 查找 ID;仅在穷尽替代方案后以简洁消息报告失败。
  • 常见问题:sports-skills 命令未找到需运行 pip install sports-skills;球队 ID 未找到需调用 get_teams 获取当前列表(扩军球队如 Seattle Kraken 和 Utah Mammoth 的 ID 非连续);未来比赛无数据因 ESPN 仅返回已完成或进行中的比赛,可用 get_schedule 查看即将到来的比赛详情;休赛期(7–9 月)比分板返回 0 场比赛,可改用 get_standings 或 get_news,并用 get_schedule 查找赛季恢复时间。
  • 完整参数列表和返回结构见 references/api-reference.md。