metadata について
TheSportsDBを利用して、チームや選手の画像、スタジアム情報などのチームデータを取得するスポーツメタデータスキルです。複数競技のあいまい検索に対応し、APIキーや登録は不要です。
主な機能
- 01チームロゴとバナーのURL取得
- 02チーム情報とスタジアム情報の取得
- 03選手写真の検索
- 04チームと選手のあいまい検索
- 05記載された競技のデータに対応
活用シーン
- 01順位表にチームバッジを追加
- 02チームプロフィールページの作成
- 03あいまいなチーム名の特定
- 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_logo | team_name | sport | チームのロゴ/エンブレムのURL |
get_team_info | team_name | チームの詳細情報:スタジアム、説明、ソーシャルリンク、バナー | |
get_player_photo | player_name | 選手の写真のURL | |
search_teams | query | スポーツを横断してチームをあいまい検索 | |
search_players | query | スポーツを横断して選手をあいまい検索 |
ワークフロー
順位表の情報を補完する
- スポーツ固有のスキル(例:
football get_season_standings)を呼び出し、順位表を取得します。 - 順位表に載っている各チームについて、
get_team_logo --team_name=<name>を呼び出し、エンブレムのURLを追加します。 - チーム名の横にロゴを表示して、順位表をレンダリングします。
チームのプロフィールページを作成する
get_team_info --team_name="<name>"を呼び出し、スタジアム、説明、創設年、ソーシャルリンクを取得します。- 同じレスポンスに
badgeとbannerのURLも含まれるため、2回目の呼び出しは不要です。
曖昧なチーム名を特定する
search_teams --query="<partial-name>"を呼び出して候補を絞り込みます。- 結果の
nameフィールドにある正確な名前を、後続のget_team_info呼び出しに使用します。
例
例1:Premier League のチームロゴを取得する
ユーザー:「Arsenal のロゴはどんな見た目ですか?」
操作:
get_team_logo(team_name="Arsenal")を呼び出します —sportの既定値は"Soccer"で、この場合は適切です。
結果:ロゴのURL、スポーツ、リーグ、国。
例2:NBAチーム — 正式名称全体が必要
ユーザー:「Lakers のロゴを取得して」
操作:
get_team_logo(team_name="Los Angeles Lakers", sport="Basketball")を呼び出します — 正式名称全体とスポーツの絞り込みの両方が必要です。
結果:TheSportsDB のNBAカテゴリにあるLakersのエンブレム。
例3:選手の写真
ユーザー:「Messi の写真を見せて」
操作:
get_player_photo(player_name="Messi")を呼び出します。
結果:選手の写真のURL、スポーツ、チーム、国籍。
例4:「Manchester」の候補を絞り込む
ユーザー:「Manchester のチームを探して」
操作:
search_teams(query="Manchester")を呼び出します。
結果:「Manchester」に一致するチームのリスト — Manchester United、Manchester City など。各チームのスポーツ、リーグ、国も含まれます。
存在しないコマンド — 呼び出さないでください
— 存在しません。スタジアム情報はget_stadium_infoget_team_infoに含まれています。— 存在しません。チームのエンブレムにはget_league_logoget_team_logoのみを使用してください。— このスキルには存在しません。TheSportsDB のメタデータにスタッツは含まれません。スポーツ固有のスキル(例:get_player_statsfootball 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 分間キャッシュされるため、ループ内で再検索するのではなく、以前の結果を再利用してください