GitHub Readme Stats 私有化部署(Fork × Vercel × Token)

February . 08 . 2026

GitHub Readme Stats:从 Fork 到 Vercel 部署(含 Token/限流踩坑完整教程)

目标:把 github-readme-stats fork 到自己的仓库,并在 Vercel 上部署成一个可用的 Stats 服务,最后在 README 里引用你自己的域名不会被公共实例限流。

0. 你将得到什么

  • 一个你自己掌控的 github-readme-stats 实例(https://.vercel.app
  • README 中的卡片链接改为走你的实例
  • 通过 PAT_1(可扩展到 PAT_2/PAT_3...)解决 GitHub API 限流 / “No GitHub API tokens found” 报错
  • 可选:避免 Vercel 项目被 Pause 导致 503

1. 准备工作

  • 一个 GitHub 账号
  • 一个 Vercel 账号(用 GitHub 登录最省事)
  • (推荐)准备一个 GitHub Token(PAT,用于提升 API 限流额度)

2. Fork 官方仓库

  1. 打开官方仓库:https://github.com/anuraghazra/github-readme-stats
  2. 点击右上角 Fork
  3. Fork 到你的账号下,例如:https://github.com//github-readme-stats

后续所有操作都在你 fork 的仓库上进行。

3. 生成 GitHub Token(PAT)

github-readme-stats 会调用 GitHub API。无 token 时很容易被限流,或者直接报:

  • No GitHub API tokens found
  • Please add env variable called PAT_1 ...

3.1 Token 生成入口

打开:https://github.com/settings/tokens

你可以选两种:

方案 A:Fine-grained token(推荐)

  • 更细粒度、更安全
  • 给最小权限即可(只读公开数据基本够用)

方案 B:Tokens (classic)(简单粗暴)

勾选最少权限(通常一个就够):

  • public_repo

生成后复制 token(只显示一次)!

4. 在 Vercel 导入并部署

4.1 Import 项目

  1. 打开 Vercel:https://vercel.com/dashboard
  2. 点击 Add New → Project
  3. 选择你 fork 的仓库:github-readme-stats
  4. 保持默认构建配置(通常无需改动)
  5. 点击 Deploy

部署完成后你会拿到一个域名:

  • https://.vercel.app

5. 配置环境变量(关键:PAT_1)

如果你看到黑框报错:

  • No GitHub API tokens found
  • Please add an env variable called PAT_1 ...

那就按下面做。

5.1 在 Vercel 添加环境变量

进入你的 Vercel 项目:Settings → Environment Variables

新增一条:

| Key | Value | |---|---| | PAT_1 | 你刚复制的 GitHub Token |

Environment 建议全选:

  • ✅ Production
  • ✅ Preview
  • ✅ Development

保存后:

5.2 重新部署(必须)

环境变量不会自动应用到已构建产物,需要触发 redeploy:

  • Project → Deployments → 选择最新一次 → Redeploy
  • 或者 push 一次 commit 也行

6. 在 README 中使用你的部署地址

你原来可能用的是公共实例:

https://github-readme-stats.vercel.app/api?username=&show_icons=true&theme=dark

现在改成你自己的:

![Stats](https://.vercel.app/api?username=&show_icons=true&theme=dark)

常用卡片示例(直接复制改用户名/域名)

6.1 总览 Stats 卡片

![GitHub Stats](https://.vercel.app/api?username=&show_icons=true&theme=dark)

6.2 Top Langs 卡片

![Top Langs](https://.vercel.app/api/top-langs/?username=&layout=compact&theme=dark)

github-readme-stats 本体不含 streak 卡片;streak 通常来自独立项目 streak-stats

7. 常见报错 & 排障

7.1 503 / DEPLOYMENT_PAUSED

如果访问域名返回类似:

  • 503: SERVICE_UNAVAILABLE
  • Code: DEPLOYMENT_PAUSED

说明 Vercel 项目被 Owner 暂停了(可能是误操作或策略触发)。

处理:

  • Vercel → Project → Overview/Settings
  • 找到 Resume / Unpause
  • 然后 Redeploy

7.2 dotenv 注入 env (0) 是什么?

日志里出现:

dotenv injecting env (0) from .env

这不是错误,只是说当前运行环境没有 .env 文件。
Vercel 用的是 Dashboard 里的环境变量,不靠 .env

7.3 url.parse() DeprecationWarning

类似:

DeprecationWarning: `url.parse()` ... Use the WHATWG URL API instead.

这通常是依赖在用旧 API 的警告,不是报错,不影响运行。
不需要处理,除非你打算深度维护该仓库/依赖。

8. 进阶:多 Token 轮换(高并发更稳)

如果你访问量大,或者担心单 token 被限流,可以加更多 token:

| Key | Value | |---|---| | PAT_1 | token1 | | PAT_2 | token2 | | PAT_3 | token3 |

很多部署会按顺序尝试 token,提高稳定性。

注意:token 仍建议最小权限,且不要泄露到公开仓库、日志或截图里。

9. 最佳实践建议

  • ✅ 用你自己的 Vercel 域名:避免公共实例拥堵或限流
  • ✅ 配好 PAT_1:基本能解决 80% “黑框错误”
  • ✅ 改 README 链接走你自己的实例:可控、稳定、可扩展
  • ✅ 保持 fork 跟上游同步(可选):上游更新时可合并更新

参考链接

  • 官方仓库:https://github.com/anuraghazra/github-readme-stats
  • GitHub Token 设置:https://github.com/settings/tokens
  • Vercel Dashboard:https://vercel.com/dashboard