GitHub Hot Board
GitHub hot-repo leaderboards: snapshots, movers, rank history. Read-only JSON, hourly batches.
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
claude mcp add --transport http github-hot-board 'https://git.vaiox.xyz/api/mcp'
{
"mcpServers": {
"github-hot-board": {
"type": "http",
"url": "https://git.vaiox.xyz/api/mcp"
}
}
}
Documentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
Sommaire
GitHub 火线榜 · GitHub Hot Board
GitHub 排行榜 · 趋势榜 · 飙升榜(周榜 / 月榜 / 总榜 / 黑马 / 里程碑),中英文双语界面,每小时自动更新:https://git.vaiox.xyz
十个视角的 GitHub 开源热榜。数据只有公开数据一种来源,口径贴在每一页上,中英文双语,站点刷新每 60 秒一次。
本周飙升 Top 10 · 打开完整榜单 →
| # | 项目 | 累计 Star | 本周新增 Star |
|---|---|---|---|
| 1 | morluto/rea | 373.3k | 88.2k |
| 2 | anthropics/claude-plugins-official | 44.1k | 4.3k |
| 3 | ruvnet/ruflo | 78.8k | 3.3k |
| 4 | android/skills | 9.4k | 1.5k |
| 5 | anomalyco/opencode | 220.7k | 6.8k |
| 6 | stablyai/orca | 103.9k | 9.5k |
| 7 | cursor/plugins | 13.8k | 1.9k |
| 8 | akitaonrails/ai-memory | 13.1k | 3.4k |
| 9 | HKUDS/CLI-Anything | 56.6k | 3.3k |
| 10 | Comfy-Org/ComfyUI | 142.4k | 4.5k |
本月飙升 Top 10 · 打开完整榜单 →
| # | 项目 | 累计 Star | 本月新增 Star |
|---|---|---|---|
| 1 | debpalash/VoiceStudio | 83.4k | 48.3k |
| 2 | heygen-com/hyperframes | 70.8k | 18.3k |
| 3 | paperclipai/paperclip | 106.6k | 25.5k |
| 4 | cloudflare/security-audit-skill | 42.2k | 20.6k |
| 5 | vectorize-io/hindsight | 53.2k | 28.1k |
| 6 | NVIDIA/OpenShell | 18.8k | 9.7k |
| 7 | anthropics/knowledge-work-plugins | 32.2k | 6.6k |
| 8 | mksglu/context-mode | 32.0k | 8.1k |
| 9 | cursor/plugins | 13.8k | 5.3k |
| 10 | NationalSecurityAgency/ghidra | 93.7k | 14.2k |
累计 Star Top 10 · 打开完整榜单 →
| # | 项目 | 累计 Star | 新增 |
|---|---|---|---|
| 1 | codecrafters-io/build-your-own-x | 555.7k | — |
| 2 | sindresorhus/awesome | 523.7k | — |
| 3 | public-apis/public-apis | 491.7k | — |
| 4 | freeCodeCamp/freeCodeCamp | 457.8k | — |
| 5 | EbookFoundation/free-programming-books | 399.9k | — |
| 6 | openclaw/openclaw | 392.9k | — |
| 7 | donnemartin/system-design-primer | 375.3k | — |
| 8 | morluto/rea | 373.4k | — |
| 9 | nilbuild/developer-roadmap | 370.2k | — |
| 10 | jwasham/coding-interview-university | 363.3k | — |
先说三件不掺假的事:
- 不伪造数据。榜单页面写的是哪种口径,数出来就是哪种口径;口径失效时页面明示,不悄悄换数。
- 不碰付费数据。只用 GitHub Search API 和官方 trending 页,不需要任何特殊权限。
- 不装没有的历史。往日榜从 2026-10-18 起积累,之前的日期不提供。
十个榜
| # | 榜单 | 来源 | 口径 |
|---|---|---|---|
| 1 | 总榜 · 史上最强 | Search API | 累计 Star 降序(排除 fork) |
| 2 | 周榜 · 本周点火 | 官方 Trending 周页 | 官方顺序 + 官方标注的本周新增星数 |
| 3 | 月榜 · 本月风潮 | 官方 Trending 月页 | 同上,月窗口 |
| 4 | 年度新星榜 | Search API | 今年创建,按累计 Star 排 |
| 5 | 潜力榜 · 90 天斜率 | Search API | 近 90 天创建,按 星/天 均速 |
| 6 | 黑马榜 · 被雪藏候选 | Search API | 潜力池里 Star 还没过 1500 的切片 |
| 7 | 被忽视榜 · 活跃冷清 | Search API | 近 30 天持续 push、Star 100–800,升序 |
| 8 | 黑红榜 · 争议指数 | Search API 衍生 | (Fork×2 + Issue) ÷ Star,取极值。结构化启发式,不是情感分析 |
| 9 | Fork 之王 | Search API | 累计 Fork 降序 |
| 10 | 实时里程碑 · 破星直播 | Search API × 4 | 1k / 10k / 50k / 100k 阈值 ±80 星的冲刺者,前端 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 按站点语言取仓库自身的本地化版本(切换器解析 + 命名候选两级),读不到就诚实回退仓库原文。描述缓存在 repo_desc 表(仓库粒度),两条填充通道:浏览行为驱动(访客打开哪个语言就近补上,60 秒轮询自动送达)与同步期主动收割(每轮同步尾部按热度序扫描全部榜头仓库,一次拿齐 15 种语言,探测结论 30 天免重试;站点读取路径依旧只查库)。
The site ships in 16 languages (default English). UI copy is fully translated per locale; row descriptions and the in-drawer README follow the repo's own localized files when available, falling back to the original text. Descriptions are cached per repo (
repo_desc) and filled two ways — on demand by visitors, and proactively at the tail of every sync run (one sweep per repo covers all 15 locales; resolved probes are skipped for 30 days). The serving path always reads from the database only.
数据架构
一句话:卖货的通道不进货。
GitHub ──(只有同步任务碰)──> Neon Postgres ──(站点只 SELECT)──> 访客
- 同步任务(
lib/sync.ts)顺序抓全部 34 个键(10 榜 + 语言分面),写两张表: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
入口在 footer(往日榜 → 总榜)。历史拍只存排名、仓库和数字,不存实时简介;数据保留 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(逗号/空白分隔),一枚烧完自动换下一枚,取数节奏随池子规模等比放宽;不填则回落单枚 GITHUB_TOKEN,都没有走匿名降速 |
GITHUB_TOKEN | 建议填 | classic PAT(不勾任何权限)或多枚时令其作为单枚兜底。Search API 从 60 次/时升到 5000 次/时 |
NEXT_PUBLIC_SITE_URL | 部署时填 | canonical / sitemap / OG 用的最终域名 |
DATABASE_URL | 部署时填 | Neon Postgres 连接串。表首次写入时自动建 |
CRON_SECRET | 可选 | /api/sync /api/refresh 的门锁;?only=榜名 单榜重灌、?boards=0 只跑描述收割 |
本地调试开关:GHB_FILL_DEBUG=1 看读路(数据库命中还是水合),GHB_SQL_DEBUG=1 看发往库的 SQL。
部署
- 在 Neon 建个项目,拿 Pooled connection 连接串。
- Vercel 导入仓库,配四个环境变量(上表 +
CRON_SECRET自定义一个长随机串)。 - 仓库 Actions secrets 配
SYNC_URL(你的域名/api/sync)和CRON_SECRET,30 分钟一次的同步就转起来了。 https://域名/robots.txt里已有 sitemap 指向;搜索引擎控制台提交一次即可。
自托管也成立:npm run build && npm run start,数据面只要求能连上 Postgres,对Host/Vercel 无偏好。
诊断与运维
npm run sync # 本地手动拉一轮(30 榜,~4 分钟,一次重试)
curl https://域名/api/dbcheck # 库状态:head 键数、明细行数
gh run watch # 看 Actions 同步跑完没有
同步是顺序慢跑(为控边界与限流),一轮约 4 分钟;30 分钟一次绰绰有余。明细行过 60 天自动清,board_head 只留最新,不需要人手干预。
市场分析(可选,与站点无关)
站点只服务榜单本身;历史维度的深挖走独立脚本 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。 - 路由、导航、footer、sitemap 随
BOARD_ORDER自动生效,不手改。
MCP server(agent-native 数据口)
榜单数据以 MCP 协议直供 agent,不依赖爬虫路径:
- 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 配额消耗;限流 60 次/分钟/IP;数据一小时一拍,别连点
- 接入示例:Claude Code
claude mcp add --transport http github-hot-board https://git.vaiox.xyz/api/mcp
已知限制,如实说
- Trending 数字在缓存期内(同步后 ≤30 分钟)可能与官方页面存在偏差。
- Search API 单查询 1000 条上限;总榜展示 Top 300,头部故事全覆盖。
- 黑红榜是结构化启发式(Fork/Issue 比例),页面已明示,请勿读成"情感评分"。
- 里程碑跨线检测发生在页面停留期间,服务器不留历史状态;想看"历史上谁跨过 1k",等往日榜攒几天再回看。
- 往日榜当前只存基准口径(全语言),语言分面的历史拍在库里,页面上还没有入口。
- 本项目与 GitHub 无官方关系,榜单仅为研究参考。
Questions fréquentes
Qu'est-ce que GitHub Hot Board ?
GitHub hot-repo leaderboards: snapshots, movers, rank history. Read-only JSON, hourly batches.
Comment installer GitHub Hot Board ?
Il fonctionne comme serveur distant. Dans Claude Code : claude mcp add --transport http github-hot-board 'https://git.vaiox.xyz/api/mcp'. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.
Faut-il une clé API pour GitHub Hot Board ?
Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.
GitHub Hot Board est-il open source ?
Son code est public sur GitHub, mais le dépôt ne déclare pas de licence standard.
Qui maintient GitHub Hot Board ?
Il est publié par JKWY01. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.