GitHub Readme Stats:从 Fork 到 Vercel 部署(含 Token/限流踩坑完整教程)
目标:把
github-readme-statsfork 到自己的仓库,并在 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 官方仓库
- 打开官方仓库:
https://github.com/anuraghazra/github-readme-stats - 点击右上角 Fork
- Fork 到你的账号下,例如:
https://github.com//github-readme-stats
后续所有操作都在你 fork 的仓库上进行。
3. 生成 GitHub Token(PAT)
github-readme-stats 会调用 GitHub API。无 token 时很容易被限流,或者直接报:
No GitHub API tokens foundPlease 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 项目
- 打开 Vercel:
https://vercel.com/dashboard - 点击 Add New → Project
- 选择你 fork 的仓库:
github-readme-stats - 保持默认构建配置(通常无需改动)
- 点击 Deploy
部署完成后你会拿到一个域名:
https://.vercel.app
5. 配置环境变量(关键:PAT_1)
如果你看到黑框报错:
No GitHub API tokens foundPlease 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
现在改成你自己的:

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

6.2 Top Langs 卡片

github-readme-stats本体不含 streak 卡片;streak 通常来自独立项目streak-stats。
7. 常见报错 & 排障
7.1 503 / DEPLOYMENT_PAUSED
如果访问域名返回类似:
503: SERVICE_UNAVAILABLECode: 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