Skip to content

SlowSlicing/github-repository-management

Repository files navigation

GitHub Repository Manager

License Version Site Type

一个油猴脚本,在 GitHub 全站右下角常驻浮动按钮,打开面板后可以批量查看、筛选、管理你的仓库 / Star / Watch / 参与的仓库。

数据只经过你本地浏览器直接调用 GitHub REST API,不走任何第三方服务。

Features

  • 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 原页面

Install

  1. 安装 TampermonkeyViolentmonkey
  2. Releases 下载最新的 github-repository-manager.user.js,或自行 npm install && npm run build
  3. 打开脚本文件并安装
  4. 刷新任意 GitHub 页面,右下角会出现圆形浮动按钮

Usage

  1. 点击右下角浮动按钮打开面板
  2. 首次使用会提示配置 Personal Access Token
  3. 配置完成后自动加载仓库列表,切换 Tab 查看不同范围
  4. 勾选多个仓库后,通过底部操作栏执行批量操作

Token 配置

首次点击浮动按钮会提示配置 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,也不会离开你的浏览器。

Keyboard Shortcuts

面板打开时生效:

快捷键 功能
Cmd/Ctrl + K 聚焦搜索框
/ 在仓库列表中移动高亮
Space 勾选 / 取消勾选高亮仓库
Enter 在新标签页打开高亮仓库
Esc 关闭面板

Privacy

脚本仅使用以下 Userscript 权限:

  • GM_xmlhttpRequest:向 api.github.com 发起 REST 请求
  • GM_getValue / GM_setValue / GM_deleteValue:本地保存 Token 和用户配置

脚本不会:

  • 向任何第三方服务器上传数据
  • 发起除 api.github.com 外的外部网络请求
  • 收集浏览记录
  • 在 localStorage / cookie 中留存 Token

所有仓库数据都是通过你自己的 Token 直接调用官方 GitHub API 获取的。

Match Scope

  • https://github.com/*
  • @connect api.github.com

Development

npm install
npm run dev        # rollup watch 模式
npm run build      # 构建到 dist/github-repository-manager.user.js
npm test           # 运行单元测试(纯函数模块)

纯逻辑(分页、筛选、错误分类、健康度评分、CSV/JSON 导入导出等)用 vitest 单元测试;UI 和 GitHub API 集成通过浏览器手动验证。

Project Structure

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 图标

Notes

  • 删除 / Transfer 是不可逆操作,务必确认勾选列表后再点击"确认"
  • 批量操作串行执行 + 节流,避免触发 GitHub secondary rate limit
  • 触发速率限制后会自动暂停后续批量操作,并提示稍后重试
  • 脚本依赖 GitHub 当前 REST API,若官方改版可能需要同步更新

Release

本仓库通过 GitHub Actions 自动构建 release 资产:在 GitHub 上发布一个 Release 后,.github/workflows/release-build-upload.yml 会自动运行 npm ci && npm run build,并把 dist/github-repository-manager.user.js 作为资产上传到该 Release。

License

MIT

About

一个油猴脚本,在 GitHub 全站右下角常驻浮动按钮,打开面板后可以批量查看、筛选、管理你的仓库 / Star / Watch / 参与的仓库。

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors