这篇文章也有 English 版本。
GitHub 收紧了 Stargazer 数据:坏了什么,没坏什么
2026 年 6 月 30 日,GitHub 发了一条 changelog。很多人是后来才注意到的——等 Star History 图突然空白了才回来翻公告。
如果你的 README 图已经挂了,只想修自己有权限的仓库: 看英文救急文 Blank Star History Chart? Fix Your Repo。本文继续讲政策本身和我们怎么定边界。
一句话:仓库「谁点了 star、什么时候点的」这份公开名单,不再对所有人开放。只有该仓库的管理员和协作者还能读。
README 里的增长曲线、对比热门项目的演示页,有不少因此挂掉。GitHubCard 的 Star History 也被迫重新定边界。
GitHub 改了什么
下面这些 REST 接口,现在只对仓库 admin / collaborator 开放:
GET /repos/{owner}/{repo}/stargazersGET /repos/{owner}/{repo}/subscribers
同时,GET /users/{username}/subscriptions(某用户 watch 了哪些仓库)进入弃用:过渡期可能返回空数据,之后会彻底下线。
网页端视图也跟着收:
/stargazers/stargazers/you_know/watchers
没有权限时,你可能看到 403、404/Not Found,或者空列表。具体形态取决于 token,以及对该仓库的限制是否已经完全生效。
GitHub 给的理由是反垃圾:公开 stargazer 列表被拿去扒用户、发 spam。理由说得通。代价也很直接——基于「谁何时 star」的增长曲线,不再是免费的公共数据。
为什么 Star History 会一夜空白
像 star-history.com 这类工具,本质是把带时间戳的 star 事件叠成累计曲线。它们的服务器通常不是你仓库的协作者。限制生效后,服务端 token 没法再像以前那样随便拉别人仓库的 star 时间线。
这些场景会挂:
- README 里依赖第三方服务实时拉数的 Star History 图
- 随便贴一个仓库 URL 就能出图的公共页面
- 你并不管理的热门项目对比图
这些场景,在你能提供「对该仓库真有读权限」的 token 时,一般还能用:
- 查看自己管理或协作的仓库的 star 历史
- 为自己的仓库做嵌入,且后端用的是你的授权(或你主动提供的 token)
GitHub 自己也在 starring REST API 文档里写了这批限制。
对 GitHubCard 意味着什么
我们本来就没承诺「全网任意公开仓库都能画 Star History」。产品主线是:给你真正在做的 profile / repo 出卡片。
这次改动后,我们把边界写清楚了:
- 自己的仓库,仍可拿到准确 Star History。先 GitHub 登录。若当前 token 权限不够,会再引导你授权
public_repo。这个 scope 比登录权限更宽(GitHub 页面会显示对公开仓库的读和写)。我们只用它来读 star 时间线。 - 别人的仓库,不画假曲线。你不是 admin / collaborator 时,我们直接说明 Star History 不可用,而不是用残缺数据拼一张图。
- 发布后的卡片用快照。你在有权限时加载成功后,我们会把聚合序列(日期和累计值,不含具体 stargazer 身份)写进 widget。公开渲染读这份快照,不会每次用服务端 token 去撞 GitHub。
仓库卡片上的其它内容(标题、指标、语言、提交、贡献者等)对公开仓库仍可正常使用。
如果你是仓库维护者
- 优先给自己拥有或可管理的仓库做卡。这既符合 GitHub 新规则,也符合大多数人的用法。
- 已经登录却仍提示需要仓库授权,是正常的。登录 scope(
read:user、邮箱、组织信息)已不够读 star 时间线。 - 别把高权限 token 直接塞进公开 README,除非你清楚风险。尽量用最小权限 token,或在 GitHubCard 登录授权后生成快照再发布。
- 旧嵌入变成空白图时:打开 仓库卡片编辑器,在已授权状态下添加或刷新 Star History,再重新发布。
我们明确不会做的事
我们不会靠 GH Archive 或第三方镜像去「补」别人仓库的 star 时间线。那是在用更弱的数据绕过限制,隐私叙事也更糟。
我们也不会假装服务端 GITHUB_TOKEN 等于「你管理这个仓库」。它不等于。
小结
GitHub 堵住了一条 spam 通道,也带走了公开的 star 时间线。喜欢随便对比热门仓库的人会不爽;被 stargazer 列表扒过联系方式的人,大概会点头。
GitHubCard 的选择很直白:你管得了的仓库,给准确 Star History;管不了的,清楚拒绝;发布出去的卡片,保留你授权时留下的快照。
只要修复步骤: Blank Star History Chart? Fix Your Repo(英文)。
想在自己的项目上试一下,可以从 仓库卡片生成器 开始。
GitHubCard Team
Turn this into a card
Turn the ideas from this article into an editable GitHub profile card, repo card, or README section.