这篇文章也有 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}/stargazers
  • GET /repos/{owner}/{repo}/subscribers

同时,GET /users/{username}/subscriptions(某用户 watch 了哪些仓库)进入弃用:过渡期可能返回空数据,之后会彻底下线。

网页端视图也跟着收:

  • /stargazers
  • /stargazers/you_know
  • /watchers

没有权限时,你可能看到 403404/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 出卡片。

这次改动后,我们把边界写清楚了:

  1. 自己的仓库,仍可拿到准确 Star History。先 GitHub 登录。若当前 token 权限不够,会再引导你授权 public_repo。这个 scope 比登录权限更宽(GitHub 页面会显示对公开仓库的读写)。我们只用它来读 star 时间线。
  2. 别人的仓库,不画假曲线。你不是 admin / collaborator 时,我们直接说明 Star History 不可用,而不是用残缺数据拼一张图。
  3. 发布后的卡片用快照。你在有权限时加载成功后,我们会把聚合序列(日期和累计值,不含具体 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.