一个油猴脚本,在 GitHub 全站右下角常驻浮动按钮,打开面板后可以批量查看、筛选、管理你的仓库 / Star / Watch / 参与的仓库。
数据只经过你本地浏览器直接调用 GitHub REST API,不走任何第三方服务。
- 4 个独立 Tab:我的仓库 / Star / Watch / 参与的
- 按仓库名实时搜索,支持多条件筛选(语言、可见性、Fork、Archived、Topic 等)
- 自定义标签(Tag)分组,给仓库打标签并按标签筛选
- 仓库健康度评分(README、描述、License、Topic、近期活跃度等指标)
- 批量操作:
- 批量删除仓库(带二次确认 + 逐项进度)
- 批量 Transfer(自由输入目标 owner)
- 批量修改 Default Branch
- 批量取消 Star / 取消 Watch
- 多选仓库对比视图(表格形式横向对比元信息)
- 统计 Tab:语言分布、可见性、Star/Fork 分布等摘要
- JSON 导出 / 导入:备份全部本地配置(标签、置顶、设置)
- CSV 导出仓库列表
- 仓库置顶(每个 Tab 独立置顶列表)
- 定期清理提醒(可配置间隔,不重复打扰)
- 键盘快捷键(面板打开时拦截)
- 首次运行引导 + Token 权限自检
- Shadow DOM 封装样式,不污染 GitHub 原页面
- 安装 Tampermonkey 或 Violentmonkey
- 从 Releases 下载最新的
github-repository-manager.user.js,或自行npm install && npm run build - 打开脚本文件并安装
- 刷新任意 GitHub 页面,右下角会出现圆形浮动按钮
- 点击右下角浮动按钮打开面板
- 首次使用会提示配置 Personal Access Token
- 配置完成后自动加载仓库列表,切换 Tab 查看不同范围
- 勾选多个仓库后,通过底部操作栏执行批量操作
首次点击浮动按钮会提示配置 Personal Access Token:
- Fine-grained PAT(推荐):Repository access 选 All repositories,Permissions → Repository permissions → Administration: Read and write(Metadata: Read 自动包含)
- Classic PAT:勾选
delete_repo+repo
Token 保存在油猴的隔离存储中(GM_setValue),不会写入 localStorage 或 cookie,也不会离开你的浏览器。
面板打开时生效:
| 快捷键 | 功能 |
|---|---|
Cmd/Ctrl + K |
聚焦搜索框 |
↑ / ↓ |
在仓库列表中移动高亮 |
Space |
勾选 / 取消勾选高亮仓库 |
Enter |
在新标签页打开高亮仓库 |
Esc |
关闭面板 |
脚本仅使用以下 Userscript 权限:
GM_xmlhttpRequest:向api.github.com发起 REST 请求GM_getValue/GM_setValue/GM_deleteValue:本地保存 Token 和用户配置
脚本不会:
- 向任何第三方服务器上传数据
- 发起除
api.github.com外的外部网络请求 - 收集浏览记录
- 在 localStorage / cookie 中留存 Token
所有仓库数据都是通过你自己的 Token 直接调用官方 GitHub API 获取的。
https://github.com/*@connect api.github.com
npm install
npm run dev # rollup watch 模式
npm run build # 构建到 dist/github-repository-manager.user.js
npm test # 运行单元测试(纯函数模块)纯逻辑(分页、筛选、错误分类、健康度评分、CSV/JSON 导入导出等)用 vitest 单元测试;UI 和 GitHub API 集成通过浏览器手动验证。
src/
├── meta.js # UserScript 元数据
├── index.js # 入口
├── lib/ # 纯函数工具
│ ├── html.js # escapeHtml / safeHttpUrl
│ ├── link-header.js # 解析 GitHub Link 分页头
│ ├── repo-filter.js # 按名称过滤
│ ├── repo-filters.js # 多条件筛选
│ ├── errors.js # HTTP 响应错误分类
│ ├── health-score.js # 仓库健康度评分
│ ├── csv-export.js # CSV 导出
│ └── json-backup.js # JSON 导入/导出
├── state/
│ ├── storage.js # GM 存储封装
│ └── store.js # pub/sub 状态
├── core/
│ └── api.js # GitHub REST 客户端
├── styles/panel.css.js # 面板 CSS
└── ui/
├── shell.js # 浮动按钮 + Shadow DOM
├── controller.js # 主面板编排
├── first-run.js # 首次引导
├── filter-panel.js # 多条件筛选面板
├── tags-panel.js # 标签管理
├── health.js # 健康度看板
├── stats-tab.js # 统计摘要 Tab
├── compare.js # 仓库对比
├── batch-ops.js # 批量操作
├── transfer-dialog.js # 批量 Transfer 对话框
├── json-backup.js # JSON 备份 UI
├── cleanup-reminder.js # 清理提醒
├── settings-view.js # 设置视图
├── keyboard.js # 快捷键
├── repo-item.js # 仓库行
├── tab-loader.js # Tab 懒加载
└── icons.js # SVG 图标
- 删除 / Transfer 是不可逆操作,务必确认勾选列表后再点击"确认"
- 批量操作串行执行 + 节流,避免触发 GitHub secondary rate limit
- 触发速率限制后会自动暂停后续批量操作,并提示稍后重试
- 脚本依赖 GitHub 当前 REST API,若官方改版可能需要同步更新
本仓库通过 GitHub Actions 自动构建 release 资产:在 GitHub 上发布一个 Release 后,.github/workflows/release-build-upload.yml 会自动运行 npm ci && npm run build,并把 dist/github-repository-manager.user.js 作为资产上传到该 Release。