Metadata

machina-sports/sports-skills/skills/metadata

作者 machina-sports09eb7e8566f4MIT242 个星标收录于 2026年10月8日更新于 2026年10月8日仓库3天前更新

Sports metadata via TheSportsDB free API (key=3). Team logos and badges, player photos, stadium info, league info, and biographical data across 100+ leagues. No API key required, zero config. Use when: user asks for a team logo, crest, badge, banner, jersey, kit, player photo or headshot, stadium info, club description, or wants to search for teams or players by name across sports. Good for enriching responses from other skills with images and visual identifiers. Don't use when: user asks for scores, standings, fixtures, stats, or odds — use the sport-specific skill instead: football-data (soccer), nfl-data (NFL), nba-data (NBA), wnba-data (WNBA), nhl-data (NHL), mlb-data (MLB), tennis-data (tennis), golf-data (golf), cricket-data (cricket), cfb-data (college football), cbb-data (college basketball), fastf1 (F1), volleyball-data (Dutch volleyball), xctf-data (NCAA XC/TF). Don't use for prediction markets — use polymarket or kalshi.

AI 生成的概览

通过 TheSportsDB 查询球队队徽、球员照片、球场与俱乐部信息,并支持球队和球员名称搜索。

功能
封装 TheSportsDB 免费 API,返回球队队徽与徽章链接、球员照片链接,以及球场、简介、成立年份和社交链接等完整球队信息。还提供跨多个运动项目的球队与球员名称模糊搜索。结果以链接和元数据字段形式返回,供其他回复使用。
适用场景
当请求需要球队队徽、徽章、横幅、球衣、球员头像、球场或俱乐部简介时使用,也用于跨运动项目解析球队或球员名称。它还用于为其他体育技能输出的积分榜或资料补充图片和标识信息。
运行要求
需要访问 TheSportsDB 的网络连接;无需 API 密钥或注册。该技能不包含脚本,仅为说明文档,但其中记录了命令行和 Python SDK 接口。免费 API 密钥限制为每分钟约 30 次请求。

Sports Metadata

Wraps the free TheSportsDB API for team logos, player photos, and stadium info. No API key, no signup.

Quick Start

bash
sports-skills metadata get_team_logo --team_name="Arsenal"sports-skills metadata get_team_info --team_name="Real Madrid"sports-skills metadata get_player_photo --player_name="Messi"sports-skills metadata search_teams --query="Manchester"sports-skills metadata search_players --query="LeBron"

Python SDK:

python
from sports_skills import metadata
metadata.get_team_logo(team_name="Arsenal")metadata.get_team_info(team_name="Real Madrid")metadata.get_player_photo(player_name="Messi")metadata.search_teams(query="Manchester")metadata.search_players(query="LeBron")

CRITICAL: Before Any Query

CRITICAL: Before calling any metadata command, verify:

  • Team names use the full official name — especially for NBA (e.g., "Los Angeles Lakers", not "Lakers").
  • For get_team_logo, the sport parameter defaults to "Soccer". Pass sport="Basketball", "American Football", "Baseball", "Ice Hockey", "Motorsport", or "Cricket" when the team is not a soccer team — otherwise the lookup falls back to a close name match in any sport. If no result is close to the requested name, it returns an error listing what TheSportsDB offered.
  • Player searches use just the player name (e.g., "Messi", "LeBron James", "Tiger Woods").

Coverage

Teams (logos, banners, stadium info):

  • Soccer: 100+ leagues worldwide (Premier League, La Liga, Bundesliga, Serie A, MLS, and many more)
  • NFL (American Football)
  • NBA (Basketball) — requires full team names
  • MLB (Baseball)
  • NHL (Ice Hockey)
  • F1 (Motorsport)
  • Cricket (IPL, international)

Players (photos, bios):

  • All team sports above
  • Tennis (ATP/WTA players)
  • Golf (PGA/LPGA players)

Not covered: MMA/UFC, Rugby, Esports, Boxing.

Commands

CommandRequiredOptionalDescription
get_team_logoteam_namesportTeam logo / badge URL
get_team_infoteam_nameFull team info: stadium, description, social links, banner
get_player_photoplayer_namePlayer photo URL
search_teamsqueryFuzzy search for teams across sports
search_playersqueryFuzzy search for players across sports

Workflows

Enrich a Standings Response

  1. Call the sport-specific skill (e.g., football get_season_standings) for the standings table.
  2. For each team in the standings, call get_team_logo --team_name=<name> to attach a badge URL.
  3. Render the standings with logos alongside team names.

Build a Team Profile Page

  1. Call get_team_info --team_name="<name>" for stadium, description, founding year, social links.
  2. The same response includes badge and banner URLs — no second call needed.

Resolve an Ambiguous Team Name

  1. Call search_teams --query="<partial-name>" to disambiguate.
  2. Use the exact name field from the result for follow-up get_team_info calls.

Examples

Example 1: Get a Premier League team logo User says: "What does the Arsenal logo look like?" Actions:

  1. Call get_team_logo(team_name="Arsenal") — sport defaults to "Soccer", which is correct here. Result: Logo URL, sport, league, and country.

Example 2: NBA team — full name required User says: "Get the Lakers logo" Actions:

  1. Call get_team_logo(team_name="Los Angeles Lakers", sport="Basketball") — both the full name AND the sport filter are needed. Result: Lakers badge from the NBA branch of TheSportsDB.

Example 3: Player photo User says: "Show me a photo of Messi" Actions:

  1. Call get_player_photo(player_name="Messi"). Result: Player photo URL, sport, team, and nationality.

Example 4: Disambiguate "Manchester" User says: "Find me Manchester teams" Actions:

  1. Call search_teams(query="Manchester"). Result: List of teams matching "Manchester" — Manchester United, Manchester City, etc. — each with sport, league, and country.

Commands that DO NOT exist — never call these

  • get_stadium_info — does not exist. Stadium info is included in get_team_info.
  • get_league_logo — does not exist. Use get_team_logo for team badges only.
  • get_player_stats — does not exist on this skill. TheSportsDB metadata does not include stats; use the sport-specific skill (e.g., football get_player_profile, nba get_player_stats).
  • search_leagues — does not exist.

If a command is not listed in the Commands table above, it does not exist.

Troubleshooting

Error: get_team_logo returns the wrong team Cause: A short or ambiguous team name (e.g., "Lakers", "Arsenal") matched a different sport first Solution: Pass an explicit sport parameter and use the team's full official name

Error: get_team_logo / get_team_info say "No team named ... found" Cause: TheSportsDB's free search returned only teams whose names are not close to the query (e.g. "St. Louis Cardinals" -> "Louisville") Solution: Use the team's full official name, or search_teams --query=<partial> to find it

Error: get_player_photo returns null / empty Cause: Player not in TheSportsDB, or the name spelling differs (e.g., "Cristiano Ronaldo" vs "Ronaldo") Solution: Use search_players --query=<partial> first to find the canonical spelling, then retry

Error: Logo URL works but the image is low resolution Cause: TheSportsDB returns the badge as-is from contributors Solution: This is an upstream limitation. Most badges are 200×200 or larger; very small icons indicate a low-quality submission. No workaround.

Error: "TheSportsDB rate limit: the free API key allows 30 requests per minute" (status_code: 429) Cause: The free key answers HTTP 429 from the 31st request in a minute, then locks out for about 2 minutes. The client paces itself below that (bursts of 5, then about one request every 2.4 s), so this error means a long batch outran the pacing or another process shares the key Solution: Wait for the time in the message, then retry. Repeated lookups are cached for 5 minutes, so reuse earlier results rather than re-querying in a loop

来源与署名

来源:machina-sports/sports-skills位于skills/metadata提交09eb7e8

许可证: MIT

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架

更多来自 machina-sports/sports-skills 的技能

World Cup

machina-sports

Premium FIFA World Cup 2026 market & match intelligence — a hosted, read-only layer that fuses official match truth (fixtures, standings, squads, injuries, player performance) with live prediction markets (Kalshi + Polymarket: prices, order books, price history, movers, cross-venue edges) and AI-grounded context (prematch briefs, move explanations, fan/social pulse). Every entity carries a canonical machina URN cross-walked across api-football, sportradar, opta, entain and ESPN, so a market resolves to a fixture resolves to two teams. This skill is prompt-only and premium: it routes the agent to the hosted World Cup Intelligence project (a per-project Machina MCP server) via `machina-cli`. It runs no code locally and ships no API keys. Use when: the user wants World Cup 2026 odds + match context together, asks "what moved and why", wants a grounded market brief or fan-sentiment read on a fixture, or needs one stable id that joins markets ↔ fixtures ↔ teams across providers. Don't use when: the user wants fr

待分类2423天前更新

Xctf Data

machina-sports

从 TFRRS 获取 NCAA 越野跑和田径运动员数据,并从 The Stride Report 获取新闻。

包含脚本
Data & Analytics2423天前更新

Sports Reporter

machina-sports

通过 sports-skills 命令行工具获取实时数据,生成原创体育新闻文章。

包含脚本
Writing & Content2423天前更新

Volleyball Data

machina-sports

通过 Nevobo API 获取荷兰排球数据:积分榜、赛程、赛果、俱乐部、赛事和新闻。

Data & Analytics2423天前更新

Polymarket

machina-sports

只读访问 Polymarket 体育预测市场:赔率、价格、订单簿、赛事与市场搜索。

包含脚本
Business & Finance2423天前更新

Markets

machina-sports

Markets orchestration — connects ESPN live schedules with Kalshi and Polymarket prediction markets. Unified dashboards, odds comparison, entity search, and bet evaluation across platforms. Use when: user wants to see prediction market odds alongside ESPN game schedules, compare odds across platforms, search for a team/player on Kalshi or Polymarket, check for arbitrage between ESPN odds and prediction markets, or evaluate a specific game's market value. Don't use when: user wants raw prediction market data without ESPN context — use polymarket or kalshi directly. For pure odds math (conversion, de-vigging, Kelly) — use betting. For live scores without market data — use the sport-specific skill.

待分类2423天前更新