mcpField
M
metadata

metadata

github.com/machina-sportsその他261495 回インストール今日更新
リポジトリ

metadata について

TheSportsDBを利用して、チームや選手の画像、スタジアム情報などのチームデータを取得するスポーツメタデータスキルです。複数競技のあいまい検索に対応し、APIキーや登録は不要です。

主な機能

  1. 01チームロゴとバナーのURL取得
  2. 02チーム情報とスタジアム情報の取得
  3. 03選手写真の検索
  4. 04チームと選手のあいまい検索
  5. 05記載された競技のデータに対応

活用シーン

  1. 01順位表にチームバッジを追加
  2. 02チームプロフィールページの作成
  3. 03あいまいなチーム名の特定
  4. 04選手写真の取得

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/machina-sports/sports-skills --skill metadata

インストール後、Claude Code で/metadataを入力して読み込まれたか確認します。

詳細

スポーツメタデータ

チームのロゴ、選手の写真、スタジアム情報を取得する、無料のTheSportsDB API のラッパーです。API キーも登録も必要ありません。

クイックスタート

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:

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")

重要:クエリを実行する前に

重要:メタデータに関するコマンドを呼び出す前に、次の点を確認してください。

  • チーム名には正式名称全体を使用してください。特にNBAでは必須です(例:"Los Angeles Lakers"。**"Lakers"ではありません)。
  • get_team_logo の sport パラメーターの既定値は "Soccer" です。サッカーチーム以外の場合は、sport="Basketball"、"American Football"、"Baseball"、"Ice Hockey"、"Motorsport"、または "Cricket" を指定してください。指定しない場合、検索ではすべてのスポーツから類似した名前が照合されます。指定した名前に近い結果がない場合は、TheSportsDB が返した候補を列挙したエラーが返されます。
  • 選手の検索には選手名だけを使用してください(例:"Messi"、"LeBron James"、"Tiger Woods")。

対応範囲

チーム(ロゴ、バナー、スタジアム情報):

  • サッカー:世界各地の100以上のリーグ(Premier League、La Liga、Bundesliga、Serie A、MLS など)
  • NFL(アメリカンフットボール)
  • NBA(バスケットボール) — チーム名全体が必要です
  • MLB(野球)
  • NHL(アイスホッケー)
  • F1(モータースポーツ)
  • クリケット(IPL、国際試合)

選手(写真、プロフィール):

  • 上記のすべてのチームスポーツ
  • テニス(ATP/WTA の選手)
  • ゴルフ(PGA/LPGA の選手)

対象外: MMA/UFC、ラグビー、eスポーツ、ボクシング。

コマンド

コマンド必須任意説明
get_team_logoteam_namesportチームのロゴ/エンブレムのURL
get_team_infoteam_nameチームの詳細情報:スタジアム、説明、ソーシャルリンク、バナー
get_player_photoplayer_name選手の写真のURL
search_teamsqueryスポーツを横断してチームをあいまい検索
search_playersqueryスポーツを横断して選手をあいまい検索

ワークフロー

順位表の情報を補完する
  1. スポーツ固有のスキル(例:football get_season_standings)を呼び出し、順位表を取得します。
  2. 順位表に載っている各チームについて、get_team_logo --team_name=<name> を呼び出し、エンブレムのURLを追加します。
  3. チーム名の横にロゴを表示して、順位表をレンダリングします。
チームのプロフィールページを作成する
  1. get_team_info --team_name="<name>" を呼び出し、スタジアム、説明、創設年、ソーシャルリンクを取得します。
  2. 同じレスポンスに badge と banner のURLも含まれるため、2回目の呼び出しは不要です。
曖昧なチーム名を特定する
  1. search_teams --query="<partial-name>" を呼び出して候補を絞り込みます。
  2. 結果の name フィールドにある正確な名前を、後続の get_team_info 呼び出しに使用します。

例

例1:Premier League のチームロゴを取得する
ユーザー:「Arsenal のロゴはどんな見た目ですか?」
操作:

  1. get_team_logo(team_name="Arsenal") を呼び出します — sport の既定値は "Soccer" で、この場合は適切です。
    結果:ロゴのURL、スポーツ、リーグ、国。

例2:NBAチーム — 正式名称全体が必要
ユーザー:「Lakers のロゴを取得して」
操作:

  1. get_team_logo(team_name="Los Angeles Lakers", sport="Basketball") を呼び出します — 正式名称全体とスポーツの絞り込みの両方が必要です。
    結果:TheSportsDB のNBAカテゴリにあるLakersのエンブレム。

例3:選手の写真
ユーザー:「Messi の写真を見せて」
操作:

  1. get_player_photo(player_name="Messi") を呼び出します。
    結果:選手の写真のURL、スポーツ、チーム、国籍。

例4:「Manchester」の候補を絞り込む
ユーザー:「Manchester のチームを探して」
操作:

  1. search_teams(query="Manchester") を呼び出します。
    結果:「Manchester」に一致するチームのリスト — Manchester United、Manchester City など。各チームのスポーツ、リーグ、国も含まれます。

存在しないコマンド — 呼び出さないでください

  • get_stadium_info — 存在しません。スタジアム情報は get_team_info に含まれています。
  • get_league_logo — 存在しません。チームのエンブレムには get_team_logo のみを使用してください。
  • get_player_stats — このスキルには存在しません。TheSportsDB のメタデータにスタッツは含まれません。スポーツ固有のスキル(例:football get_player_profile、nba get_player_stats)を使用してください。
  • search_leagues — 存在しません。

上記の「コマンド」表に記載されていないコマンドは存在しません。

トラブルシューティング

エラー:get_team_logo が間違ったチームを返します 原因:短いチーム名や曖昧なチーム名(例:「Lakers」、「Arsenal」)が、先に別のスポーツのチームに一致しました 解決策:明示的な sport パラメーターを渡し、チームの正式名称をすべて指定してください

エラー:get_team_logo / get_team_info が「No team named ... found」と表示します 原因:TheSportsDB の無料検索では、クエリと名前がほとんど一致しないチーム(例:「St. Louis Cardinals」→「Louisville」)のみが返されました 解決策:チームの正式名称をすべて指定するか、search_teams --query=<partial> を使って検索してください

エラー:get_player_photo が null/空を返します 原因:選手が TheSportsDB に登録されていないか、名前の表記が異なります(例:「Cristiano Ronaldo」と「Ronaldo」) 解決策:まず search_players --query=<partial> を使って正式な表記を確認し、その後再試行してください

エラー:ロゴの URL は機能しますが、画像の解像度が低くなっています 原因:TheSportsDB は投稿者が提供したバッジをそのまま返します 解決策:これは上流側の制限です。ほとんどのバッジは 200×200 以上です。非常に小さいアイコンは、品質の低い投稿を示しています。回避策はありません。

エラー:「TheSportsDB rate limit: the free API key allows 30 requests per minute」(status_code: 429) 原因:無料キーは、1 分間に 31 件目のリクエストから HTTP 429 を返し、その後約 2 分間ロックアウトされます。クライアントはそれを下回るペース(5 件の連続リクエスト後、約 2.4 秒ごとに 1 件)でリクエストするため、このエラーは長時間の一括処理がペース制限を超えたか、別のプロセスが同じキーを共有していることを意味します 解決策:メッセージに記載された時間だけ待ってから、再試行してください。同じ検索結果は 5 分間キャッシュされるため、ループ内で再検索するのではなく、以前の結果を再利用してください

コメント