BikeControl (SwiftControl)
Use Zwift Click, Zwift Play, Shimano Di2, or any Bluetooth controller with MyWhoosh, Rouvy, Zwift, and more. Free to try on iOS, Android, Windows, and macOS.
An archive that covers sumo rankings, banzuke, bout schedules, and tournament results, with real‑time updates of bout outcomes during ongoing tournaments.
AI translation
大相撲の番付・星取表・取組スケジュール・場所結果を網羅したアーカイブ。最新の場所進行中も取組結果をリアルタイムで更新します。
Sports & fitnessTypeScript · PythonGitHub @daiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
大相撲APIs, Skillsを公開します(番付|星取|取組予定|取組結果)令和8年3月場所から。最下部に辞書あり | Sumo data, Shikona dictionaries, and scores. since 2026
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
o-sumo は、大相撲の番付、取組、力士・行司・呼出名鑑を配信する静的 Web アプリです。React 19 + TypeScript + Vite で構築し、Cloudflare Pages から静的サイトと静的 JSON API を公開しています。 • README: README.md / README_en.md • 開発ガイド: DEVELOPMENT.md / DEVELOPMENT_en.md • Skills 一覧: SKILLS.md / SKILLS_en.md • API 仕様: docs/api/v1.md / docs/api/v1.en.md • API ポリシー: docs/api/policy.md / docs/api/policy.en.md • API 変更履歴: docs/api/changelog.md / docs/api/changelog.en.md • 力士プロフィール・合い口更新手順: docs/rikishi-profile-refresh-runbook.md • 行司・呼出データ更新手順: docs/official-profile-refresh-runbook.mdRead the full README ↗
o-sumo は、大相撲の番付、取組、力士・行司・呼出名鑑を配信する Web アプリです。React 19 + TypeScript + Vite で構築し、Cloudflare Pages からサイトと JSON API を公開しています。AI エージェント向けには MCP、WebMCP、Markdown 表示と発見用メタデータを用意しています。
README.md / README_en.mdDEVELOPMENT.md / DEVELOPMENT_en.mdSKILLS.md / SKILLS_en.mddocs/api/v1.md / docs/api/v1.en.mddocs/api/policy.md / docs/api/policy.en.mddocs/api/changelog.md / docs/api/changelog.en.mddocs/rikishi-profile-refresh-runbook.mddocs/official-profile-refresh-runbook.mddocs/agent-ready.md//archives/rikishi/rikishi/{id}/my-rikishi//compare/?ids={id1},{id2}/gyoji//gyoji/{id}//yobidashi//yobidashi/{id}//{YYYYMM}-banzuke//{YYYYMM}-torikumi/{YYYYMM}-yotei/{YYYYMMDD}-torikumi/{YYYYMMDD}-yotei/kimarite/analytics//202611-banzuke//202611-torikumi//20261108-yotei//compare/?ids=3842,4227/kimaritehttps://blog.osada.us//{YYYYMM}-o-sumo は現行の番付 URL にリダイレクトされます。/api/v1/banzuke.json/api/v1/torikumi.json/api/v1/rikishi.json/api/v1/rikishi/{id}.json/api/v1/rikishi-matchups.json/api/v1/gyoji.json/api/v1/gyoji/{id}.json/api/v1/yobidashi.json/api/v1/yobidashi/{id}.json/api/v1/news.json/api/v1/blog.json関連ドキュメント:
docs/api/v1.mddocs/api/policy.mddocs/api/changelog.mdDEVELOPMENT.mdSkill 公開:
SKILLS.mdpublic/.well-known/agent-skills/osumo-content/SKILL.mdpublic/.well-known/agent-skills/osumo-discovery/SKILL.mdskills/osumo-api/SKILL.md公開 JSON API、2つの公開スキル、相撲データ用 MCP を、認証・登録・APIキーなしで利用できます。
検索と回答生成時の参照を許可し、モデル学習は許可しません(search=yes, ai-input=yes, ai-train=no)。
| 目的 | 入口 |
|---|---|
| APIを見つける | 公開JSON APIの案内 |
| 番付・取組・力士データをツールで取得する | 相撲データ用MCPの案内 |
| 記事やプロフィールを自然言語で探す | AI Search MCPの案内 |
| 取得方法・ページURLを調べる | Agent Skillsの案内 |
| 認証方針を確認する | 利用条件と認証方針 |
| 対応範囲・運用を確認する | エージェント向けガイド |
上の表は人が読むための案内ページです。機械向けのURLは案内ページに記載しています。
torikumi.json の bashoId は通し番号です。月は pathDate の先頭6桁から求め、
予定・結果は各配列の status と更新時刻を確認してください。
ホーム・主要一覧・月別ページと、公開データに存在する日別予定/結果は
Accept: text/markdown で取得できます。個別人物ページなど未対応ルートはHTMLを返します。
相撲データ用 MCP は Streamable HTTP の読み取り専用サーバーで、search_rikishi、
get_rikishi_profile、get_banzuke、get_torikumi、list_basho を提供します。
AI Search MCP は自然言語検索用の search ツールを提供します。MCP クライアントには
用途に応じたエンドポイント URL を登録してください。
curl -fsS https://osada.us/.well-known/agent-skills/index.json
curl -fsS https://osada.us/mcp/server-card
curl -fsS https://osada.us/api/v1/torikumi.json
curl -i -H 'Accept: text/markdown' https://osada.us/20261108-yotei/
対応ブラウザーでは別途 WebMCP の4ツール(search_rikishi、list_basho、
get_banzuke_for_month、get_torikumi_for_day)をページ内で登録します。これは上記の
リモート MCP エンドポイントとは別の仕組みです。A2A カードは発見用で、タスク操作は未実装です。
番付 / 取組予定 / 結果 / 力士・行司・呼出名鑑 / マイ力士 / 力士比較 / 場所ステータス分析 に直接遷移/api/v1/rikishi-matchups.json(公式プロフィール履歴から事前集計された JSON)からのみ取得し、取得成功時だけ表示。失敗時は合口を隠して比較・取組リンクは維持/compare/?ids={id1},{id2}):
/my-rikishi/) で最大10名まで四股名を登録し、ナビゲーション件数バッジ表示、URL 同期と localStorage 永続化で端末をまたいで保持/analytics/) で幕内優勝・三賞・十両優勝を一覧表示ShareCurrentLink ボタンでクリップボードへコピー(手動フォールバック付き)昇順 / 降順 を切り替え可能pending として URL を先出しし、空状態メッセージを表示app/lib/torikumi-data.ts の生成データから動的に決まります/kimarite へ遷移し、カテゴリ別の目次と並んで技の和英解説を閲覧可能news-feed-update ワークフローから Python スクレイパで自動生成(/api/v1/news.json)blog/posts/*.md で管理する日本語の静的ブログです。blog.osada.us 用の配信物は npm run blog:build で dist-blog/ に生成し、トップページ連携用の /api/v1/blog.json も同時に更新しますsearch_rikishi / list_basho / get_banzuke_for_month / get_torikumi_for_day) を公開 (document.modelContext.registerTool を優先、navigator.modelContext.registerTool にフォールバック)scripts/update_sumo_data.py, scripts/update_official_profiles.py)https://sumo.sports.smt.docomo.ne.jp/news/)前提:
セットアップ:
git clone https://github.com/dai/o-sumo.git
cd o-sumo
npm install
補足:
package-lock.json は commit しますnpm installnpm ci主要コマンド:
# 開発サーバー
npm run dev
# 型チェック
npm run typecheck
# テスト
npm test
# 本番ビルド
npm run build
# 現行データ切替の読み取り専用事前確認
npm run preflight:current-data
# ビルド結果のローカル確認
npm run preview
# 読みものの配信物を生成
npm run blog:generate
ローカル確認先:
http://localhost:3001/http://localhost:3001/archiveshttp://localhost:3001/rikishihttp://localhost:3001/rikishi/{id}http://localhost:3001/my-rikishi/http://localhost:3001/compare/?ids={id1},{id2}http://localhost:3001/gyoji/http://localhost:3001/gyoji/{id}/http://localhost:3001/yobidashi/http://localhost:3001/yobidashi/{id}/http://localhost:3001/{YYYYMM}-banzuke/http://localhost:3001/{YYYYMM}-torikumihttp://localhost:3001/{YYYYMM}-yoteihttp://localhost:3001/{YYYYMMDD}-torikumihttp://localhost:3001/{YYYYMMDD}-yoteihttp://localhost:3001/kimaritehttp://localhost:3001/analytics/http://localhost:3001/api/v1/rikishi-matchups.jsonhttp://localhost:3001/api/v1/news.jsonフル更新(番付 + 取組 + 力士プロファイル):
python scripts/update_sumo_data.py
力士プロファイルのみを更新:
python scripts/update_sumo_data.py --rikishi-only
この全件更新ではプロフィール詳細に加え、改名前後の四股名を公式力士IDへ統合した rikishi-matchups.json も生成します。全対象の取得・ID解決・相互整合が完了した場合だけ置き換え、部分取得や解析失敗時は正常な既存ファイルを保持します。公開前の確認手順は docs/rikishi-profile-refresh-runbook.md を参照してください。
力士プロファイル取得を最初の10人に限定(テスト用):
python scripts/update_sumo_data.py --rikishi-only --profile-limit 10
取組だけを更新:
python scripts/update_sumo_data.py --torikumi-only
結果のみ / 予定のみを更新:
python scripts/update_sumo_data.py --torikumi-scope result
python scripts/update_sumo_data.py --torikumi-scope schedule
取組だけを対象に結果または予定だけを更新:
python scripts/update_sumo_data.py --torikumi-only --torikumi-scope result
python scripts/update_sumo_data.py --torikumi-only --torikumi-scope schedule
ニュースフィードだけを更新(日本相撲協会お知らせ + dmenu スポーツ):
python scripts/update_news_feed.py
行司・呼出名鑑だけを日本相撲協会公式サイトから更新:
python scripts/update_official_profiles.py
python scripts/update_official_profiles_test.py
生成内容と公開前の整合確認は docs/official-profile-refresh-runbook.md を参照してください。
九月場所は確定済みで、app/lib/september2026-data.ts と app/lib/september2026-banzuke-data.ts に不変スナップショットを保持しています。現在の /api/v1/banzuke.json と /api/v1/torikumi.json は十一月場所を返し、九月場所はアーカイブとして参照できます。
場所切替前の確認は npm run preflight:current-data で実行します。公式年間日程と公式番付を取得し、現行の番付・取組、archive、ルート、sitemap、workflow の整合性を読み取り専用で検査します。今回の十一月場所切替では --current-month 202609 --target-month 202611 を使用しました。すべてのゲートが [OK] のときだけ READY(exit code 0)、公式公開前・取得失敗・不整合がある場合は BLOCKED(exit code 1)になります。生成器は実行せず、データ・ルート・sitemap・redirect・workflow は変更しません。
別の月を確認するときは npm run preflight:current-data -- --current-month YYYYMM --target-month YYYYMM のように npm 経由で -- 以降に引数を渡してください(npm 8.x 以降)。あるいは python scripts/preflight_current_basho.py --current-month YYYYMM --target-month YYYYMM を直接呼び出すこともできます。npm script は固定の既定値のままなので、次回以降の切替時は月引数を毎回指定してください。
次の場所への切替では、現行の十一月場所データと九月場所の不変スナップショットを変更せず、banzuke.json と torikumi.json を新しい場所の確定データへ同時に切り替えます。切替前には、番付・取組・公開JSON・月別ルート・sitemapの整合性を検証します。
生成・更新対象:
app/lib/sumo-data.tsapp/lib/torikumi-data.tspublic/api/v1/banzuke.jsonpublic/api/v1/torikumi.jsonpublic/api/v1/rikishi.jsonpublic/api/v1/rikishi/{id}.json(全力士分、name / yomi / currentRank / sourceUrl / updatedAt を含む)public/api/v1/rikishi-matchups.json(公式プロフィール履歴から生成した一意なIDペアと双方の勝数)public/api/v1/news.json(日本相撲協会お知らせ 3 件 + dmenu スポーツ最新 5 件)public/api/v1/gyoji.json / public/api/v1/gyoji/{id}.json(行司42名)public/api/v1/yobidashi.json / public/api/v1/yobidashi/{id}.json(呼出45名)public/images/rikishi/{id}.png(全力士分の加工済みプロフィールイラスト、個別ページと番付ページで恒久的に使用)主な検証内容:
pending のプレースホルダーとして残すGitHub Actions で取組予定、取組結果、ニュース更新を分けています。日次予定更新は PR を作成してテスト通過後の auto-merge を要求し、リアルタイム結果更新は検証後に main へ直接 push します。
共通スクリプト:
scripts/ci/run_torikumi_generator.sh — 最大 2 回リトライで update_sumo_data.py を実行scripts/ci/validate_torikumi.py — public/api/v1/torikumi.json の構造検証scripts/ci/validate_news.py — public/api/v1/news.json の構造検証scripts/ci/notify_discord.sh — DISCORD_WEBHOOK_URL が設定されていれば Discord に失敗通知ワークフロー一覧:
.github/workflows/daily-data-update.yml
workflow_dispatch--torikumi-only --torikumi-scope schedule)Run workflow または gh workflow run daily-data-update.yml -R dai/o-sumo --ref main.github/workflows/realtime-torikumi-direct-update.yml
workflow_dispatch--torikumi-only --torikumi-scope result --skip-rikishi-fetch --strict-torikumi-fetch)Run workflow または gh workflow run realtime-torikumi-direct-update.yml -R dai/o-sumo --ref main.github/workflows/news-feed-update.yml
python scripts/update_news_feed.py)news.json を書き換えず、PR 差分を作らないautomation/news-updates-<YYYY-MM-DD> ブランチの PR を作成し、同日内の複数 run は同一 PR に commit を追加するgh pr merge --auto --squash --delete-branch を呼び出し、日の最終更新で PR をマージ。ブランチはマージ後に自動削除されるDISCORD_WEBHOOK_URL を repo secret に設定すると、3 つのワークフローの失敗時に Discord チャンネルへ通知が飛びます。未設定でも wf はそのまま動きます。
設定手順:
編集 → 連携サービス → ウェブフック を作成、URL をコピーSettings → Secrets and variables → Actions → New repository secretDISCORD_WEBHOOK_URL、Value: 上でコピーした URL → Add secret通知のペイロードは scripts/ci/notify_discord.sh を参照(status / title / detail を受け取り Embed として POST)。
.github/copilot-instructions.mdtest.yml(typecheck / test / build)通過を確認する.github/workflows/test.yml現在の主な対象:
app/lib/torikumi-routes.ts のルーティング helperapp/lib/sorting.ts の並び替え helperapp/lib/kimarite-data.ts の 82 手マスタ/analytics/) の幕内・三賞・十両結果WebMcpProvider の 4 ツール登録 (document.modelContext.registerTool / navigator.modelContext.registerTool)GitHub Actions では PR と main / codex/** / automation/data-updates への push で以下を実行します。
npm cinpm run typechecknpm testnpm run buildhttps://osada.uspublic/_redirects(アプリルートのみ。/api/v1/* は静的 JSON をそのまま配信)index.html にフォールバックしますmain に merge された後だけ有効です。共通 lock は未 merge の日次 PR との競合までは防げず、混雑時は実行が遅延または skip され得るため10分以内の反映保証はありません。gh workflow run daily-data-update.yml -R dai/o-sumo --ref main を手動実行し、run、PR checks と merge、main の JSON、本番 JSON を順に確認します。公開前に両部門が空なら no-op であり、公開成功ではありません。preflight:current-data は workflow 停止中に行う場所切替専用の安全 gate で、場所中の readiness check ではありません。不戦 は validator の限定的例外で、取得の部分失敗時は旧データを保持します。gh workflow run daily-data-update.yml -R dai/o-sumo --ref main / gh workflow run realtime-torikumi-direct-update.yml -R dai/o-sumo --ref main / gh workflow run news-feed-update.yml -R dai/o-sumo --ref main を使えます。--torikumi-only --torikumi-scope result --skip-rikishi-fetch を使い、取組結果に限定します。run履歴 → runログ(event.schedule, JST, updatedAt系) → 供給元 judge の順で切り分けます。public/_headers でキャッシュ方針を固定します。/assets/*: public, max-age=31536000, immutable/manifest.webmanifest: public, max-age=3600/sw.js: public, max-age=0, must-revalidate/: public, max-age=300registerType: "autoUpdate" で運用し、更新を自動反映します。app/main.tsx: ルーティング定義app/page.tsx: ホームapp/archives/page.tsx: 過去場所一覧ページapp/banzuke/page.tsx: 番付ページapp/kimarite/page.tsx: 全 82 手一覧ページapp/officials/page.tsx: 行司・呼出の一覧/個別プロフィールapp/torikumi/page.tsx: 取組結果 / 取組予定の月別ハブapp/analytics/page.tsx: 場所ステータス分析ページapp/rikishi/MyRikishiPage.tsx: マイ力士ページapp/rikishi/CompareRikishiPage.tsx: 力士比較ページapp/components/TorikumiDayPage.tsx: 日別の結果 / 予定ページapp/components/BanzukeTable.tsx: 番付テーブルコンポーネントapp/components/MyRikishiToggle.tsx: マイ力士登録トグルapp/components/ShareCurrentLink.tsx: 現在の URL をクリップボードへコピーapp/components/NewsSection.tsx: ホームのニュースセクション(相撲協会 + 相撲界ニュースの 2 セクション)app/components/GreetingSection.tsx: ホームの「編集者より」最新記事カード (h3、getLatestBlogPost() 利用、MonomosuSection 内にネスト)app/components/MonomosuSection.tsx: ホームの「物申す」独立セクション (visible h2 + 座布団リアクション + textarea drawer + 内包 GreetingSection)app/components/KimariteCard.tsx: ホームの「決まり手」カードapp/components/WebMcpProvider.tsx: WebMCP ツール登録(document.modelContext.registerTool 優先)app/components/PrimaryNavigation.tsx: プライマリーナビゲーションapp/lib/archives-data.ts: 過去場所データapp/lib/torikumi-routes.ts: 月キー付き URL とナビゲーション解決app/lib/sumo-data.ts: 番付データ(力士型定義を含む)app/lib/torikumi-data.ts: 取組アーカイブデータapp/lib/news-data.ts: ニュースフィードの静的データapp/lib/kimarite-data.ts: 決まり手 82 手のマスタapp/lib/official-profile.ts: 行司・呼出の型、API取得、数値IDパスapp/lib/my-rikishi.ts: マイ力士の登録状態(localStorage 同期)app/lib/basho-status.ts: 場所ステータス(live / upcoming / final)判定app/lib/webmcp.ts: WebMCP ツール定義(4 ツール)app/lib/july2026-data.ts: 七月場所(名古屋)不変スナップショットapp/lib/july2026-banzuke-data.ts: 七月場所番付不変スナップショットapp/lib/archive-basho-data.ts: 過去場所・現行場所の集約データMIT
app/lib/blog-build.ts: 読みものの静的HTML・RSS・sitemap生成app/lib/agent-skills.ts: Agent Skills Index メタデータscripts/update_sumo_data.py: 番付・取組・力士プロファイル生成スクリプトscripts/update_news_feed.py: ニュースフィード生成スクリプトscripts/update_official_profiles.py: 行司・呼出データ生成スクリプトscripts/build_blog.ts: 読みもの配信物と blog.json の生成スクリプト