简体中文 | English
把 GitHub 的 Stars 页面从一条长列表变成可搜索、可筛选、可打标签的卡片网格。
脚本以用户脚本(Tampermonkey / Violentmonkey)的形式运行在 GitHub 页面里,只为桌面视口设计;窄于 768px 的视口下完全惰性,保持 GitHub 原样。
N / M 可点击,原位变成输入框直接跳页(回车提交、Esc 取消、非法或越界静默忽略)。ASC 会命中 JavaScript),要按语言请用语言筛选。Clear filter 一键清空(保留排序)。owner/repo(供导入后手动恢复用)。包内带用户 ID,只能导入到同一账号。先安装一个用户脚本管理器:
从项目 Releases 下载 github-star-manager.user.js,或在管理器里新建脚本后粘贴内容。
https://github.com/<你的用户名>?tab=stars)。面板里还提供两条预填好权限的创建深链:
| 类型 | 能力 |
|---|---|
| classic(推荐) | 读写都可以,能对不属于你的公开仓库加星 / 取消星。建议 scope 取 repo。 |
| fine-grained | 读没问题;对不属于你、也不属于你所属组织的公开仓库没有写权限,此时写操作会改走浏览器登录会话。 |
Token 只保存在本地用户脚本存储中,不会上传到任何地方(导出包里也不包含它)。
| 想做的事 | 怎么做 |
|---|---|
| 全量同步 | 标题行 Sync 按钮,或 TM 菜单「🔄 立即全量同步(GitHub API)」 |
| 搜索 | 页面上的搜索框,输入作者 / 仓库名 / 描述 / 标签 / 备注关键词 |
| 按标签筛选 | 点卡片上的标签,或用筛选栏的 Tags 菜单 |
| 按语言 / 类型筛选 | 筛选栏的 Language / Type 菜单(多选) |
| 排序 | 筛选栏的 Sort 菜单,可切换升降序 |
| 跳页 | 分页器中间的 N / M,或标题行右侧的快捷翻页器 |
| 加星 / 取消星 | 卡片上的星按钮 |
| 恢复 24 小时内取消的 star | TM 菜单「♻️ 恢复已取消的 star(24h 内)」 |
| 备份标签与备注 | TM 菜单「📤 导出数据(标签/备注)」 |
| 恢复备份 | TM 菜单「📥 导入数据(标签/备注)」 |
| 隐藏个人主页的 Lists 区块 | TM 菜单「🙈 隐藏 Lists 区块(开/关)」 |
完整网格依赖 Stars 缓存。没有缓存时脚本会显示配置引导,而不是半成品网格。
脚本只在视口宽度达到 768px 时启用;窄视口会保持 GitHub 原生页面,不做任何转换(也不注入样式、不建节点、不弹通知)。把窗口拉宽就会自动恢复,不需要刷新。
他人页面的网格只使用 GitHub 当前已经加载的条目,不会自动拉取其余页面 —— 这是刻意的,为了不在别人的页面上消耗你的 API 额度。翻页请使用 GitHub 原生分页控件。
不会。标签和备注保存在本地用户脚本存储中,并按当前登录的 GitHub 账号隔离;需要迁移时可使用导出与导入功能。远端权威的只有星标成员关系、star 时间和仓库元数据;标签 / 备注永远是本地权威,同步绝不会覆盖它们。
在。取消后会保留 24 小时,期间从 TM 菜单「♻️ 恢复已取消的 star(24h 内)」可以恢复,标签与备注完好。超过 24 小时才真正丢弃。
因为 Token 所属账号和你浏览器当前登录的账号不是同一个。这本身可能是你有意为之(例如个人号读、工作号写),所以脚本只提示、不阻断。如果你确实想统一,打开面板重新配置 Token 即可。
AI 总结的内容不一定符合用户自己想要的备注,没有经过用户自己思考的备注基本上无效。用户需要自己知道自己为什么 star 这个项目。
脚本可以跟随油猴插件一起备份或迁移,浏览器插件需要依赖浏览器本身的同步功能或插件内自己配置同步,比较麻烦且不同浏览器之间的同步难以进行。
Lists 有最多32条以及 Lists 名称最多 32 个字符的限制,比较鸡肋,故不使用。脚本默认隐藏 Lists 部分,用户可以自行取消隐藏并正常使用 Lists 功能。
只存在用户脚本管理器里,键名以 stars_ 开头,主要是:仓库元数据缓存、每个账号一份的标签与备注、24 小时宽限期备份、同步元数据(ETag 基线与 Token 归属指纹)、Token 本身。Token 被排除在 localStorage 兜底镜像之外(gm.ts 的敏感键清单),导出包同样不包含它。脚本没有自己的服务器,除 GitHub 接口外不发任何请求。
GitHub 目前不允许 fine-grained Token 对「不属于你、也不属于你所属组织」的公开仓库写星标。脚本检测到 github_pat_ 前缀时不会拒绝配置,而是改用浏览器登录会话完成写操作(读路径不受影响)。详见 docs/adr/0004 与 docs/adr/0006。
pnpm install
pnpm dev # 本地开发服务器(改动走 HMR)
pnpm check # 类型检查 + 构建
pnpm build # 产出 dist/github-star-manager.user.js
技术栈:Vite 8 + vite-plugin-monkey 8 + TypeScript(strict),产物是单个无运行时依赖的 .user.js。
开发环境配置(HMR 在 github.com 上的 CSP / Local Network Access 前置条件、@grant 只用 5 项的约束)与架构说明见 DEVELOPER.md;领域术语见 CONTEXT.md;架构决策见 docs/adr/。
MIT © YsLtr