GitHub Hot Board について
GitHub Hot Boardは、GitHubリポジトリの人気・トレンドランキングを読み取り専用で提供し、スナップショット、順位変動、順位履歴を掲載します。公開データに基づくランキングと構造化データを、オープンソースプロジェクトの追跡やMCP経由の利用に提供します。
主な機能
- 0110種類のランキングとトレンドを表示
- 02週間、月間、累計ランキングを閲覧
- 03リポジトリの順位とStar履歴を追跡
- 04リポジトリを検索して詳細を確認
- 05順位変動とマイルストーン候補を表示
活用シーン
- 01最近注目されたオープンソースリポジトリを探す
- 02リポジトリの順位推移を追跡する
- 03週間と月間のリポジトリ動向を比較する
MCP 対応
ステートレスなStreamable HTTP MCPサーバーが、ランキング、順位変動、リポジトリ詳細、カタログ検索、リポジトリ履歴を取得する読み取り専用ツールを提供します。リクエストはサービス内の保存データを使い、GitHubのクォータを消費しません。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://git.vaiox.xyz/api/mcpclaude mcp add --transport http jkwy01-github-hot-board https://git.vaiox.xyz/api/mcp{"mcpServers":{"jkwy01-github-hot-board":{"type":"http","url":"https://git.vaiox.xyz/api/mcp"}}}Cursor で開く{"servers":{"jkwy01-github-hot-board":{"type":"http","url":"https://git.vaiox.xyz/api/mcp"}}}VS Code で開く{"mcpServers":{"jkwy01-github-hot-board":{"type":"http","url":"https://git.vaiox.xyz/api/mcp"}}}{"mcpServers":{"jkwy01-github-hot-board":{"serverUrl":"https://git.vaiox.xyz/api/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
GitHub 火线榜 · GitHub Hot Board
GitHub 排行榜 · 趋势榜 · 飙升榜(周榜 / 月榜 / 总榜 / 黑马 / 里程碑),中英文双语界面,每小时自动更新:https://git.vaiox.xyz
十个视角的 GitHub 开源热榜。数据只有公开数据一种来源,口径贴在每一页上,中英文双语,站点刷新每 60 秒一次。
本周飙升 Top 10 · 打开完整榜单 →
| # | 项目 | 累计 Star | 本周新增 Star |
|---|---|---|---|
| 1 | cloudflare/security-audit-skill | 44.2k | 11.2k |
| 2 | morluto/rea | 378.1k | 88.2k |
| 3 | anthropics/claude-plugins-official | 44.3k | 4.3k |
| 4 | ruvnet/ruflo | 79.0k | 3.3k |
| 5 | stablyai/orca | 104.9k | 9.5k |
| 6 | anomalyco/opencode | 221.0k | 6.8k |
| 7 | cursor/plugins | 13.9k | 1.9k |
| 8 | android/skills | 9.6k | 1.5k |
| 9 | anthropics/knowledge-work-plugins | 32.6k | 2.6k |
| 10 | heygen-com/hyperframes | 71.4k | 5.6k |
本月飙升 Top 10 · 打开完整榜单 →
| # | 项目 | 累计 Star | 本月新增 Star |
|---|---|---|---|
| 1 | debpalash/VoiceStudio | 84.8k | 48.3k |
| 2 | heygen-com/hyperframes | 71.4k | 18.3k |
| 3 | cloudflare/security-audit-skill | 44.2k | 20.6k |
| 4 | paperclipai/paperclip | 106.9k | 25.5k |
| 5 | anthropics/knowledge-work-plugins | 32.6k | 6.6k |
| 6 | NVIDIA/OpenShell | 19.4k | 9.7k |
| 7 | vectorize-io/hindsight | 53.4k | 28.1k |
| 8 | mksglu/context-mode | 32.1k | 8.1k |
| 9 | cursor/plugins | 13.9k | 5.3k |
| 10 | NationalSecurityAgency/ghidra | 93.9k | 14.2k |
累计 Star Top 10 · 打开完整榜单 →
| # | 项目 | 累计 Star | 新增 |
|---|---|---|---|
| 1 | codecrafters-io/build-your-own-x | 556.0k | — |
| 2 | sindresorhus/awesome | 524.1k | — |
| 3 | public-apis/public-apis | 491.9k | — |
| 4 | freeCodeCamp/freeCodeCamp | 457.9k | — |
| 5 | EbookFoundation/free-programming-books | 400.0k | — |
| 6 | openclaw/openclaw | 393.0k | — |
| 7 | morluto/rea | 378.1k | — |
| 8 | donnemartin/system-design-primer | 375.5k | — |
| 9 | nilbuild/developer-roadmap | 370.3k | — |
| 10 | jwasham/coding-interview-university | 363.3k | — |
先说三件不掺假的事:
- 不伪造数据。榜单页面写的是哪种口径,数出来就是哪种口径;口径失效时页面明示,不悄悄换数。
- 不碰付费数据。只用 GitHub Search API 和官方 trending 页,不需要任何特殊权限。
- 不装没有的历史。往日榜从 2026-10-18 起积累,之前的日期不提供。
10 個のランキング
| # | ランキング | 出典 | 集計方法 |
|---|---|---|---|
| 1 | 総合ランキング · 歴代最強 | Search API | 累計 Star の降順(fork を除外) |
| 2 | 週間ランキング · 今週の注目 | 公式 Trending 週間ページ | 公式の並び順 + 公式表示の今週の獲得 Star 数 |
| 3 | 月間ランキング · 今月のトレンド | 公式 Trending 月間ページ | 同上、月間期間 |
| 4 | 年間新星ランキング | Search API | 今年作成されたものを累計 Star 順に表示 |
| 5 | ポテンシャルランキング · 90 日間の傾き | Search API | 過去 90 日間に作成され、Star 数上位 300 のワーキングセット内で、Star/日 の平均速度順 |
| 6 | ダークホースランキング · 埋もれた候補 | Search API | 90 日以内に作成された新規リポジトリのうち Star 数が 30–1500 の範囲から、傾き順に上位 100 件 |
| 7 | 見過ごされランキング · 活動低迷 | Search API | 過去 30 日間継続して push があり、Star 数が 100–800 のものを昇順 |
| 8 | 賛否両論ランキング · 論争指数 | Search API 派生 | (Fork×2 + Issue)÷Star、候補プール = 総合ランキング上位 300 のうち Star 数 ≥3000。構造化ヒューリスティックであり、感情分析ではありません |
| 9 | Fork 王 | Search API | 累計 Fork の降順 |
| 10 | リアルタイムマイルストーン · Star 突破ライブ | Search API × 4 | 1k / 10k / 50k / 100k のしきい値から ±80 Star の範囲にいる挑戦者を対象に、フロントエンドが 60 秒ごとにポーリングし、しきい値を超えると紙吹雪を表示 |
総合ランキング、週間ランキング、月間ランキングには言語別ランキング(javascript / typescript / python / go / rust / java / c / c++)があり、URL は /zh/boards/weekly/python のようになります。c++ はパス内では /cpp と記述します。+ をパスセグメントに含めるとルーティングのマッチング層でエラーになるためです。クエリでは引き続き GitHub のネイティブ言語名を使用し、古いリンクは proxy.ts がルーティング前に 308 で正規化します。
サイトの言語(16 種類)
/en /zh /zh-TW /ja /ko /de /fr /es /pt /it /ru /uk /pl /tr /vi /id。ルートパスではデフォルトで英語が表示されます(Accept-Language がある場合はブラウザーの言語に応じて選択)。すべての UI 文言は各言語で一式用意しています(app/[lang]/dict/)。各ページの SEO には全言語の hreflang + canonical が含まれ、sitemap は 16 言語 × 全ランキングを網羅します。
行の説明とドロワー内の README は、サイトの言語に応じてリポジトリ自身のローカライズ版を取得します(言語切り替えの解析 + 命名候補の 2 段階)。取得できない場合は、リポジトリの原文にそのままフォールバックします。説明は repo_desc テーブルにリポジトリ単位でキャッシュされ、補完経路は 2 つあります。閲覧行動に応じた補完(訪問者が開いた言語に近いものを補い、60 秒間隔のポーリングで自動反映)と、同期時の積極的な収集(各同期の最後に、人気順にすべてのランキング上位のリポジトリを走査し、15 言語すべてを一度に取得。調査済みの結果は 30 日間再試行しません。サイトの読み取り経路は引き続きデータベースのみを参照します)。
サイトは 16 言語で提供されます(デフォルトは英語)。UI の文言はロケールごとに完全に翻訳されています。行の説明とドロワー内の README は、利用可能な場合はリポジトリ自身のローカライズ済みファイルに従い、ない場合は原文にフォールバックします。説明はリポジトリごとにキャッシュされ(
repo_desc)、訪問者によるオンデマンドの補完と、各同期実行の最後に行う積極的な補完(リポジトリごとに一度走査すれば 15 ロケールすべてを網羅し、調査済みの結果は 30 日間スキップ)の 2 つの方法で補完されます。配信経路では常にデータベースのみを読み取ります。
データアーキテクチャ
ひと言で言えば、販売チャネルに商品は仕入れません。
GitHub ──(只有同步任务碰)──> Postgres(Neon 或自托管)──(站点只 SELECT)──> 访客
- 同期タスク(
lib/sync.ts)は 34 個すべてのキー(10 ランキング + 言語別ファセット)を順番に取得し、2 つのテーブルに書き込みます。board_head:各キーの最新スナップショット。サイトはここを読み取ります。新しいものを挿入し、直前のスナップショットは自然に上書きされます。board_snapshots:リポジトリごと、順位ごとの詳細行。今回の同期内容を履歴として保存します。
- 実行方法:
npm run sync(ローカル。サイトの起動が必要)、POST /api/sync(CRON_SECRET を指定)、 GitHub Actions により 30 分ごとに実行(.github/workflows/sync.yml)。 - サイトのレンダリング経路から GitHub へのリクエストはゼロです。フォールバック順:データベース → ディスクスナップショット(ローカル
.data/。再構築時に GitHub へアクセスしません)→ ライブ取得。同期が長時間止まるとデータは古くなりますが、偽りのデータにはなりません。 - Trending ページがレート制限でブロックされた場合、週間ランキング/月間ランキングは内部で Search の集計方法に切り替えて補完し、ページ上でもその旨を正直に表示します。ごまかしません。
過去のランキング
各同期では完全なランキングを board_snapshots に保存するため、任意の日付とランキング名を選んで振り返ることができます。
/zh/history/overall/2026-10-19
入口はフッター(過去のランキング → 総合ランキング)です。過去のスナップショットには順位、リポジトリ、数値のみを保存し、最新の説明は保存しません。データは SNAPSHOT_RETENTION_DAYS(デフォルト 60 日)保持されます。ページは noindex のツールページで、sitemap には含まれません。
ローカルでの起動
npm install
cp .env.example .env.local
# 填 GITHUB_TOKEN / NEXT_PUBLIC_SITE_URL / DATABASE_URL(见下表)
npm run dev
| 環境変数 | 必須? | 説明 |
|---|---|---|
GITHUB_TOKENS | 任意 | 複数アカウントのプール:GITHUB_TOKENS=ghp_a,ghp_b,ghp_c(カンマ/空白区切り)。1 つを使い切ると次のトークンに自動で切り替わり、取得間隔はプールの規模に比例して長くなります。指定しない場合は単一の GITHUB_TOKEN にフォールバックし、どちらもない場合は匿名の低速モードになります |
GITHUB_TOKEN | 設定を推奨 | classic PAT(権限は選択不要)。複数トークンを使う場合は、単一トークンのフォールバックとして使用します。Search API の上限が 1 時間あたり 60 回から 5000 回になります |
NEXT_PUBLIC_SITE_URL | デプロイ時に設定 | canonical / sitemap / OG に使用する最終ドメイン |
DATABASE_URL | デプロイ時に設定 | Neon Postgres の接続文字列。テーブルは初回書き込み時に自動作成されます |
CRON_SECRET | デプロイ時に必須 | /api/sync /api/snapshot /api/refresh /api/dbcheck のロックです。Authorization: Bearer <secret> ヘッダーのみ受け付けます(定時間比較。?secret= クエリはサポートされなくなりました。秘密鍵をアクセスログに残すべきではありません)。設定されていない場合、これらのエンドポイントはローカルのループバックからのみ利用できます。公開環境にデプロイする場合は必ず設定してください。?only=榜名 による単一ランキングの再投入、?boards=0 による説明収集のみの実行は引き続き利用できます |
ローカルデバッグ用スイッチ:GHB_FILL_DEBUG=1 で読み取り経路(データベースのヒットか、水和か)を確認し、GHB_SQL_DEBUG=1 でデータベースに送られる SQL を確認します。
デプロイ
- Neon でプロジェクトを作成し、Pooled connection の接続文字列を取得します。
- Vercel にリポジトリをインポートし、4 つの環境変数(上の表 +
CRON_SECRETに設定する長いランダム文字列)を設定します。 - リポジトリの Actions secrets に
SYNC_URL(ドメインの/api/sync)とCRON_SECRETを設定すると、30 分ごとの同期が開始されます。 https://ドメイン/robots.txtには sitemap への参照がすでにあります。検索エンジンの管理コンソールで一度送信すれば完了です。
セルフホストも可能です(このプロジェクトの本番環境もこの形態です)。npm run build && npm run start を実行し、データ層から Postgres に接続できれば動作します。Neon のマネージド環境でも、自前のインスタンス(Docker/1Panel など)でも利用でき、Host/Vercel に依存しません。自前のデータベースには、毎日の pg_dump によるローテーションバックアップを推奨します。参考:scripts/ghb-backup.sh(毎日 1 回バックアップ、直近 7 世代を保持。cron に設定するだけで実行できます)。
診断と運用
npm run sync # 本地手动拉一轮(30 榜,~4 分钟,一次重试)
curl -H "Authorization: Bearer $CRON_SECRET" https://域名/api/dbcheck # 库状态:head 键数、明细行数
gh run watch # 看 Actions 同步跑完没有
同期は境界とレート制限を管理するため順番にゆっくり実行し、1 回あたり約 4 分かかります。30 分ごとの実行で十分です。詳細行は 60 日を過ぎると自動削除され、board_head には最新のもののみが保持されるため、手動での対応は不要です。
バッジ・ステータスページ・閾値到達通知
- ランクインバッジ:
https://域名/api/badge/{owner}/{repo}.svg—— Shields 形式の3状態(現在ランクイン中/過去にランクイン/ランクインなし)に対応しています。プロフィールページには、そのまま使える Markdown 埋め込みコードがあります。作者が README に貼り付けると、プロフィールページへのリンクになります。 - データ健全性ページ:
/{lang}/status(フッターからアクセス)—— 34 個のキーそれぞれのデータソース、新しさ、縮退状態を表示します。サイトの読み取りパスと同じ一覧を使い、実態を偽りません。 - 閾値到達通知(任意):
VAPID_PUBLIC_KEY/VAPID_PRIVATE_KEYを設定すると、フォロー一覧に「閾値到達通知」のスイッチが表示されます。アカウント不要の Web Push で、フォロー中のリポジトリが 1k/10k/50k/100k の閾値を上回ると通知します。未設定の場合、関連する仕組み全体が無効になります。購読データとして保存されるのはプッシュエンドポイントとフォロー一覧のみで、購読解除すると直ちに削除されます。
市場分析(任意、サイトとは無関係)
サイトはランキングそのもののみを提供します。歴史的な観点からの詳細な分析には、独立したスクリプト scripts/market.mjs を使用します。データは GH Archive の公開ミラーから取得します(約 10% のサンプリングのため、傾向を見る用途です)。
node scripts/market.mjs repo vercel/next.js --days 60 # 单仓库爆发日/拐点(自动兼容改名)
node scripts/market.mjs track agent --months 12 # 赛道趋势(新星数/活跃仓库数)
node scripts/market.mjs risers --days 30 --limit 15 # 涨星火箭榜
ついでに、確認できたプラットフォーム上の事実をひとつ(2026-10):GitHub は REST の stargazers / subscribers 詳細エンドポイントをプラットフォームレベルで廃止しました。星の付与時刻のタイムラインはイベントアーカイブにしか存在しません。リポジトリ名を変更した後も、アーカイブには旧名で保存されるため、検索では新旧両方の名前を考慮する必要があります—— repo コマンドでは対応済みです。
ランキングを追加する方法
lib/boards.ts:getXxxData()を実装し、getBoardDataで振り分け、ランキングと並べ替えの仕様をBOARD_METAに登録します。app/[lang]/dictionaries.ts:BoardCopy(名称/集計基準/FAQ)を追加します。中国語と英語の両方が必要です。- 言語別の切り口が必要な場合は、
BOARD_METAでfacetsを有効にします。 - ルート、ナビゲーション、フッター、sitemap には
BOARD_ORDERが自動的に反映されるため、手動での編集は不要です。
MCP サーバー(エージェント向けデータ窓口)
ランキングデータは MCP プロトコル経由でエージェントに直接提供され、スクレイピング経路には依存しません。
- URL:
https://git.vaiox.xyz/api/mcp(Streamable HTTP、ステートレス JSON、最新の protocolVersion は 2026-07-28。古いクライアントには自動で下位互換モードを適用します) - ツール(読み取り専用+構造化出力):
list_boards/get_board/get_board_movers/get_repo/search_library(ライブラリ内キーワード検索)/get_repo_history(リポジトリ単位の時間別順位+スター数のタイムライン。このプロジェクト独自の全件スナップショット系列のみを提供するもので、他のサービスでは取得できないデータです) - GitHub の利用枠は一切消費しません。レート制限は IP あたり毎分 60 回です。データの更新は 1 時間ごとなので、連続してリクエストしないでください。
- 接続例:Claude Code
claude mcp add --transport http github-hot-board https://git.vaiox.xyz/api/mcp
既知の制限について、正直に説明します
- Trending の数値はキャッシュ期間中(同期後 ≤30 分)、公式ページと異なる場合があります。
- Search API は 1 クエリあたり 1000 件が上限です。総合ランキングでは Top 500 を表示し、上位の動向を網羅しています。
- ポテンシャルランキング(90 日間の傾き)の候補は、まずスター数で過去 90 日以内の新しいリポジトリ上位 300 件を選び、その後、傾きで並べ替えます—— Search API の作業対象内での並べ替えであり、全件を走査しているわけではありません。また、傾きという指標自体も、より若いリポジトリを自然と優先します。
- 賛否ランキングの候補は、総合ランキング(上位 300 件)のうちスター数が 3000 以上のリポジトリです。つまり「人気リポジトリ内」で議論の多いものを比較します。
open_issuesには PR も含まれます(GitHub のフィールド仕様です。ページ上でも明記しています)。「感情スコア」と解釈しないでください。 - ダークホースランキングは傾き上位 100 件を対象とします(ページ上の説明も同じです)。
- マイルストーンの閾値到達検出は、ページを開いている間に行われます。サーバーには過去の状態を保存しません。「過去に誰が 1k を超えたか」を確認したい場合は、過去のランキングが数日分蓄積されてから見返してください。
- 過去のランキングで現在保存されているのは、基準となる全言語のデータのみです。言語別の過去データはデータベースに保存されていますが、ページからアクセスする手段はまだありません。
- 本プロジェクトは GitHub と公式に関係しておらず、ランキングは調査参考用に限ります。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。