mcpField
M
mlb-league-state-reader

mlb-league-state-reader

github.com/lyndonklデータ・データベース18741 回インストール9 週間前に更新
リポジトリ

mlb-league-state-reader について

後続の分析エージェント向けに、Yahoo Fantasy MLBのロスター、順位、対戦、FAAB、フリーエージェント情報を取得するスキルです。チーム状態を更新し、出典と信頼度を含むシグナルを出力します。

主な機能

  1. 01ロスター・順位・進行中の対戦の取得
  2. 02取引履歴からの残りFAAB算出
  3. 03フリーエージェント一覧の収集
  4. 04チーム状態プロフィールの更新
  5. 05出典と信頼度付きシグナルの出力

活用シーン

  1. 01日々のラインアップ分析に最新リーグ情報を用意
  2. 02ウェイバー分析にFAABと選手候補を提供
  3. 03共通状態を後続エージェントに渡し、再取得を回避

インストール

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

$npx skills add https://github.com/lyndonkl/claude --skill mlb-league-state-reader

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

resources/
methodology.md
template.md
resources/evaluators/
rubric_mlb_league_state_reader.json

詳細

MLB リーグ状況リーダー

目次

例

シナリオ:2026-04-17 に実行する朝のブリーフィングです。コーチは lineup-optimizer を起動する前に、最新のロースター、対戦相手、FAAB、順位表を必要としています。

最初に読み込む入力:

  • yahoo-mlb/context/league-config.md(リーグ ID 23756、チーム 5、12 チーム、5x5 カテゴリー)
  • yahoo-mlb/context/team-profile.md(以前に把握したロースターの概要)

Chrome のナビゲーション手順(認証済み):

  1. https://baseball.fantasysports.yahoo.com/b1/23756/5 — 今日の対戦相手を選手ごとに表示するロースター
  2. https://baseball.fantasysports.yahoo.com/b1/23756?lhst=stand — 順位表とカテゴリー別順位
  3. https://baseball.fantasysports.yahoo.com/b1/23756/matchup — 今週の Los Doyers との直接対決
  4. https://baseball.fantasysports.yahoo.com/b1/23756/transactions — これまでの FAAB 使用額 → 残額
  5. https://baseball.fantasysports.yahoo.com/b1/23756/players?status=A — 上位のフリーエージェント(1 ページ目)

抽出したデータ一式:

フィールド値
戦績8-6-1
順位12 チーム中 5 位
FAAB 使用額$14
FAAB 残額$86
今週の対戦相手Los Doyers
試合中のスコア4-3-3(R、HR、K でリード、OBP、ERA、WHIP でビハインド)
取得したロースター26 スロット中 26 スロットに選手を登録済み
上位 20 人のフリーエージェントwaiver-analyst 用に取得済み

書き込んだ出力:

  • context/team-profile.md — ロースターのスナップショットをその場で更新(スロット、選手、MLB チーム、今日の対戦相手、ステータス)
  • signals/2026-04-17-league-state.md — YAML フロントマター、source_urls、信頼度を含むシグナルファイル

以降のすべてのエージェント(lineup-optimizer、waiver-analyst、category-strategist)は、Yahoo を再スクレイピングする代わりに、このシグナルファイルと team-profile.md を参照します。

ワークフロー

このチェックリストをコピーして、進捗を記録してください。

League State Reader Progress:
- [ ] Step 1: Read context files (league-config.md + team-profile.md)
- [ ] Step 2: Pull Yahoo pages via Claude-in-Chrome (5 URLs)
- [ ] Step 3: Parse roster, standings, matchup, FAAB, free agents
- [ ] Step 4: Update team-profile.md in place
- [ ] Step 5: Emit signal file with frontmatter + source_urls

ステップ 1:コンテキストファイルを読む

Yahoo にアクセスする前に、正式な契約内容と最後に確認された状態を読み込みます。これにより、リーグ ID/URL を確認し、差分比較の基準となる情報を取得できます。

  • yahoo-mlb/context/league-config.md を読む — リーグ ID 23756、チーム 5、ロースター構成(C/1B/2B/3B/SS/3OF/2UTIL/3SP/2RP/5P/3BN/3IL = 26)、FAAB 予算 $100 を確認する
  • yahoo-mlb/context/team-profile.md を読む — 前回の FAAB 残額と、差分比較用の前回のロースターを記録する
  • yahoo-mlb/context/frameworks/signal-framework.md を読む — シグナルファイルの形式を確認する
  • yahoo-mlb/context/frameworks/data-sources.md を読む — 5 つの Yahoo URL を確認する

ステップ 2:Claude-in-Chrome 経由で Yahoo のページを取得する

ユーザーはすでにブラウザーで認証済みです。順番にページへ移動して、ページのテキストを解析します。いずれかの手順に失敗した場合は、全体の実行を中断せず、その URL のみ縮退モードに移行してください。正確なツール呼び出しの順序とページ解析のパターンについては、resources/methodology.mdを参照してください。

  • チームページ:https://baseball.fantasysports.yahoo.com/b1/23756/5
  • 順位表:https://baseball.fantasysports.yahoo.com/b1/23756?lhst=stand
  • 対戦:https://baseball.fantasysports.yahoo.com/b1/23756/matchup
  • トランザクション(FAAB 用):https://baseball.fantasysports.yahoo.com/b1/23756/transactions
  • フリーエージェント:https://baseball.fantasysports.yahoo.com/b1/23756/players?status=A

ステップ 3:解析して正規化する

各ページから構造化データを抽出します。行ごとの解析ロジックについてはresources/methodology.mdを、トランザクションログから FAAB 残額を再構成する方法についてはresources/methodology.mdを参照してください。

  • ロースター:26 枠それぞれについて、{slot, player, mlb_team, opp_today, status: active|IL|DTD|NA|BN} を記録する
  • 順位表:勝敗分数、順位、カテゴリ別順位(10 カテゴリ)
  • 対戦:対戦相手の名前、カテゴリ別の現在のスコア(今週ここまでの 10 カテゴリの勝敗分数)
  • FAAB:今シーズンのトランザクション履歴から -$N の項目をすべて合計する。残額 = $100 - 支出合計
  • フリーエージェント:ロースター登録率上位 25 人を記録する — waiver-analyst が順位付けを始めるのに十分な数です

ステップ 4:team-profile.md をその場で更新する

出力の正確な形式については、resources/template.mdを参照してください。既存のファイルを上書きしてください(追記ではありません)。このファイルは常に「最新の実行時点」の状態を反映するものです。

  • ヘッダー:## As of YYYY-MM-DD
  • 状態テーブル:成績、順位、FAAB 残額、現在の対戦相手、獲得枠の使用数、IL 枠の使用数
  • ロースターのスナップショット:26 枠すべてを含む YAML ブロック
  • 未解決の質問:ページの取得に失敗した場合を除き、空にする

ステップ 5:シグナルファイルを出力する

シグナルフレームワークに従って、yahoo-mlb/signals/YYYY-MM-DD-league-state.md に YAML フロントマターを記述します。移動したすべての URL を source_urls に含めてください。取得が縮退した場合は confidence を 0.5 に下げ、完全に取得に失敗した項目は 0.3 に下げて、その旨を明示してください。resources/template.mdを参照してください。

  • フロントマター:type: league-state、date、emitted_by: mlb-league-state-reader、confidence、source_urls[]
  • 本文:ロースターテーブル、順位表テーブル、対戦テーブル、FAAB 台帳、フリーエージェント上位 25 人
  • 書き込む前に mlb-signal-emitter で検証する(今回の実行でそのスキルが利用可能な場合)。利用できない場合は、そのまま書き込む

障害発生時の縮退モード

Chrome は、さまざまな理由で失敗する可能性があります。タブが開いていない、セッションの有効期限が切れている、Yahoo のレート制限、500 エラー、DOM を読み取れない、といったケースです。実行全体を中止してはいけません。 URL ごとに適切に失敗を処理してください。

URL ごとのフォールバック判断ツリー:

失敗フォールバック
ナビゲーションエラー/タイムアウト1 回再試行します。それでも失敗する場合は、ユーザーに「{URL} の内容を貼り付けてください。こちらで解析します。」と尋ねます。
セッションの有効期限切れ(ログインページが返された)ユーザーに「Chrome のタブで Yahoo にログインしてから、「retry」と入力してください。」と伝えます。再認証は試みません。
ページは読み込まれるが、解析に失敗する(レイアウトが不明)get_page_text の先頭約 4000 文字を raw_capture: の下にシグナルファイルへ書き出し、そのフィールドの信頼度を 0.4 に下げます。
フリーエージェントのページがブロックされている/空free_agents: [] と設定し、シグナル内にその旨を記録します。ロースターと順位表があれば、waiver-analyst は引き続き実行できます。
トランザクションページがブロックされているユーザーに「現在の FAAB 残高はいくらですか?トランザクションページの上部に表示されています。」と尋ねます。ユーザーの値を受け入れ、faab_confidence: 0.6 と設定します。

ユーザー貼り付け用テンプレート(Yahoo の各ページで使用):

「{URL} にアクセスできませんでした。そのページに表示されている表をコピーして(すべて選択してチャットに貼り付けて)ください。貼り付けた内容から必要なフィールドを抽出します。」

貼り付けられたテキストは、ライブページと同じ正規表現/行パターンで解析します。resources/methodology.md を参照してください。

ガードレール

  1. ロースターが昨日のままだと決めつけてはいけません。 ウェイバーは毎日処理され、トレードはいつでも成立する可能性があります。team-profile.md が新しく見えても、毎回の実行開始時に必ず Yahoo のチームページを再読み込みしてください。

  2. 残りの FAAB は表示値ではなく、計算で求めます。 Yahoo の UI では、「FAAB Balance」が表示される場合と表示されない場合があります。信頼できる計算方法は、「今シーズンのトランザクションページにある落札入札額の合計を 100 ドルから差し引く」です。画面に表示された単一の数値を台帳より優先してはいけません。

  3. すべての URL を明記してください。 シグナルファイルの source_urls: リストには、実際にアクセスした Yahoo のページをすべて含めてください。障害のためにページをスキップした場合は、黙って省略せず、シグナル本文に記録してください。

  4. 後続処理で再スクレイピングしてはいけません。 このスキルが本日のリーグ状態シグナルを出力したら、lineup-optimizer/waiver-analyst/category-strategist は Yahoo に再アクセスせず、そのシグナルを必ず読み取ってください。再スクレイピングはトークンを浪費し、データの不一致を招くおそれがあります。

  5. team-profile.md は上書きし、追記してはいけません。 このファイルは「現在の状態」です。昨日のロースターを残すと、現在の情報に混在してしまいます。追記専用ログはここではなく、tracker/decisions-log.md にあります。

  6. ステータス値は正規化された列挙値です。 Yahoo のラベル(P、DTD、IL-10、IL-60、NA、SUSP)を、正規化された列挙値 active | BN | IL | DTD | NA | SUSP にマッピングしてください。後続のエージェントは Yahoo の文字列ではなく、この列挙値に基づいて分岐します。

  7. 今日の対戦相手が空欄の場合もあります。 休養日、試合延期、ダブルヘッダーはいずれも、通常とは異なる opp_today の値を生みます。Yahoo に表示された内容(@TEX、TEX、Off、PPD、DH1/DH2)をそのまま記録してください。後続の lineup-optimizer に必要な情報を正規化して消してはいけません。

  8. ソース URL が 0 件のシグナルを出力してはいけません。 すべてのページにアクセスできなかった場合は、本文が空のシグナルに confidence: 0.0 を設定し、コーチに目立つ形で「Yahoo にアクセスできませんでした。後続のエージェントを実行する前に、貼り付けまたは再試行が必要です。」と伝えてください。

クイックリファレンス

5 つの Yahoo URL(context/frameworks/data-sources.md より):

Team:         https://baseball.fantasysports.yahoo.com/b1/23756/5
Standings:    https://baseball.fantasysports.yahoo.com/b1/23756?lhst=stand
Matchup:      https://baseball.fantasysports.yahoo.com/b1/23756/matchup
Transactions: https://baseball.fantasysports.yahoo.com/b1/23756/transactions
Free agents:  https://baseball.fantasysports.yahoo.com/b1/23756/players?status=A

Chrome ツールの順序(最初に ToolSearch で読み込み、その後に呼び出します):

1. mcp__claude-in-chrome__tabs_context_mcp    (confirm active tab, auth state)
2. mcp__claude-in-chrome__navigate            (go to URL)
3. mcp__claude-in-chrome__get_page_text       (extract DOM text)
4. mcp__claude-in-chrome__read_page           (structured read if text fails)

ロスター枠の順序(チームプロフィール YAML 用。league-config.md と一致します):

C, 1B, 2B, 3B, SS, OF, OF, OF, UTIL, UTIL, SP, SP, SP, RP, RP, P, P, P, P, P, BN, BN, BN, IL, IL, IL

ステータスの列挙値の対応関係:

Yahoo正規化後
(blank) / Pactive
BNBN
DTDDTD
IL-10 / IL-60 / ILIL
NANA
SUSPSUSP

シグナルのフロントマター(必須の最小フィールド):

---
type: league-state
date: 2026-04-17
emitted_by: mlb-league-state-reader
variant_synthesis: false
confidence: 0.9
source_urls:
  - https://baseball.fantasysports.yahoo.com/b1/23756/5
  - https://baseball.fantasysports.yahoo.com/b1/23756?lhst=stand
  - https://baseball.fantasysports.yahoo.com/b1/23756/matchup
  - https://baseball.fantasysports.yahoo.com/b1/23756/transactions
  - https://baseball.fantasysports.yahoo.com/b1/23756/players?status=A
---

主なリソース:

  • resources/template.md:team-profile.md の出力形式、シグナルファイルの出力形式、ロスター YAML スキーマ、フリーエージェントの表スキーマ
  • resources/methodology.md:Yahoo のナビゲーション手順、ページごとの解析パターン、FAAB の再構築、貼り付けデータの解析、縮退モードのプロンプト
  • resources/evaluators/rubric_mlb_league_state_reader.json:8 つの評価基準(ロスターの完全性、FAAB の正確性、URL の引用、フォールバック処理など)

必要な入力:

  • Chrome で認証済みの Yahoo Fantasy セッション(ユーザーの責任で用意)
  • context/league-config.md(リーグ ID、チーム ID、ロスター構成)
  • context/team-profile.md(以前の状態。スタブの場合があります)

生成される出力:

  • 更新された context/team-profile.md(上書き。今日の状態を反映します)
  • signals/YYYY-MM-DD-league-state.md(フロントマターと source_urls を含む)
  • ページの読み込みに失敗した場合は、ユーザーに縮退モードのプロンプトを提示します

コメント