一个 Chrome 扩展(Manifest V3),在 GitHub / npm / GitLab / PyPI / crates.io / pkg.go.dev / Docker Hub 等页面上一键跳转到相关工具:Pages、Raw、github.dev、CDN、包元数据、依赖分析、安全评分、在线 IDE……
不再向页面注入浮动面板。匹配的页面会让工具栏图标出现数字 badge,点击图标弹出可用跳转列表(类似 Google 翻译的体验)。
- 工具栏图标徽标:匹配页面显示可用跳转数量,不再侵入页面 DOM
- 远程规则源:从 GitHub raw 等公开 URL 同步规则 JSON,每 6 小时自动刷新
- 三层启停:组 / 规则 / 单链接 任意粒度勾选启用或禁用
- 浏览优先的规则管理:默认折叠全部规则组,支持搜索、状态筛选、展开全部 / 折叠全部,并在展开后就近编辑
- 可视化图标选择器:内置 71 个图标(Simple Icons + Lucide),默认启用 Iconify 缓存未内置图标,也可在线搜索 200,000+ 图标
- 导入 / 导出:用
fork-url-config配置文件备份全部自定义配置,也可以只导出某个规则组的自定义部分
当前公开默认规则包含 14 个规则组、23 条页面匹配规则、77 个跳转目标。完整快照见 docs/default-rules.md,官网首页 #rules 段落也会展示同一张表。
| 规则组 | 匹配页面 | 默认跳转目标 | 数量 |
|---|---|---|---|
| GitHub | GitHub 仓库主页 | Pages, github.dev, github1s, vscode.dev, Gitpod, StackBlitz, CodeSandbox, pkg-size, jsDelivr GH, Releases | 10 |
| GitHub | GitHub 文件 (blob) | Raw, github1s, github.dev, RawGitHack, HTMLPreview | 5 |
| GitHub | GitHub Pull Request | github.dev, ReviewNB, Patch, Diff | 4 |
| GitHub | GitHub Commit | Patch, Diff | 2 |
| GitHub | GitHub Release Tag | Tag ZIP, Tag tar.gz | 2 |
| GitHub | GitHub Gist | Raw, Blocks | 2 |
| npm | npm 包页面 | unpkg, jsDelivr, Bundlephobia, Packagephobia, pkg-size, npmgraph, RunKit, Socket, deps.dev, Registry JSON, unpkg meta, jsDelivr CDN, esm.sh, bundlejs, publint, npm trends, Snyk Advisor | 17 |
| GitLab | GitLab 仓库 | Pages, Gitpod | 2 |
| GitLab | GitLab 文件 (blob) | Raw | 1 |
| Bitbucket | Bitbucket 仓库 | Source, Gitpod | 2 |
| Bitbucket | Bitbucket 文件 | Raw | 1 |
| PyPI | PyPI 项目页 | JSON API, deps.dev, Libraries.io, Snyk Advisor, piwheels | 5 |
| Rust crates | crates.io 包页面 | docs.rs, docs.rs JSON, deps.rs, deps.dev, crates API | 5 |
| Go | pkg.go.dev 模块页 | deps.dev, GoDocs, Proxy latest | 3 |
| Maven | Maven Central Artifact | Central, deps.dev | 2 |
| RubyGems | RubyGems 包页面 | deps.dev, Libraries.io, Gemdocs, BestGems | 4 |
| Packagist | Packagist 包页面 | Metadata JSON | 1 |
| VS Code Marketplace | VS Code 扩展 | Open VSX | 1 |
| Docker Hub | Docker 官方镜像 | library repo, OCI Explorer, deps.dev | 3 |
| Docker Hub | Docker 命名空间镜像 | OCI Explorer, deps.dev | 2 |
| SNS | status page | To Article | 1 |
| SNS | article page | To Status | 1 |
| Android | GooglePlayApk | ApkPure | 1 |
这张表由
scripts/sync-rule-docs.mjs从rules.json生成。合并规则提交后,CI 会同步更新 README、官网首页规则段落和docs/default-rules.md。
默认规则只是起点。你可以在扩展设置页的规则管理中新增自己的规则组、正则和跳转链接,也可以配置远程规则源同步团队规则;提交到官方源的规则审核合并后会进入这张表。
方式一:下载发布版(推荐普通用户)
- 到 Releases 下载最新
forkurl-vX.Y.Z.zip,解压 - 打开
chrome://extensions,开启「开发者模式」 - 点「加载已解压的扩展程序」,选择解压后的目录
方式二:从源码加载(开发者)
- clone 本仓库
- 同样在
chrome://extensions加载已解压的扩展程序,选仓库根目录
建议把扩展 pin 到工具栏(点击拼图图标 → 图钉),这样它就在地址栏右边。
打开扩展设置页(点击图标 → 设置,或 chrome://extensions 找到本扩展点「扩展程序选项」),点「使用官方源」按钮即可填入:
https://raw.githubusercontent.com/etng/ForkURL/main/rules.json
点「立即更新」拉取最新规则。
设置页的规则管理以浏览为主:默认折叠全部规则组,顶部支持搜索、按状态筛选、展开全部和折叠全部。命中搜索或筛选条件时,相关规则组会自动展开;手动折叠全部后会尊重你的选择。
展开规则组后,可以在组内顶部新增规则、编辑组名 / 组 ID、导出该组自定义部分,或清空该组的自定义覆盖。内置和远程规则不能直接删除;你可以禁用它们,也可以编辑成自己的覆盖版本。删除覆盖后会恢复到底层内置或远程规则。
配置导出文件的 type 是 fork-url-config,导入时仍兼容旧版 url-switcher-config。底部的「导出配置」会导出全部自定义规则、远程地址和禁用状态;规则组内的「导出」只导出当前组的自定义部分,文件名使用 fork-url-config-{groupId}.json。
ForkURL 会在浏览器本地读取当前标签页 URL,用来匹配规则并生成跳转列表。匿名使用统计默认开启,可在设置页关闭;关闭后会清理本地遥测 ID 和发送记录。
匿名统计只包含安装/更新/每日活跃/弹窗打开/跳转点击/设置页打开/规则刷新这类事件,以及扩展版本、语言、浏览器大类和系统大类。不会发送页面 URL、域名、跳转目标、自定义规则、远程规则地址或导入导出的配置内容。
{
"version": 1,
"groups": [
{
"id": "github",
"name": "GitHub",
"rules": [
{
"id": "github-repo",
"name": "GitHub 仓库",
"patterns": [
"^https://github\\.com/([^/]+)/([^/]+)/?$"
],
"links": [
{
"id": "pages",
"label": "Pages",
"icon": "🌐",
"url": "https://{1}.github.io/{2}",
"desc": "GitHub Pages 站点"
}
]
}
]
}
]
}patterns:正则数组,命中任一即匹配- URL 模板里
{1}、{2}引用对应的捕获组
默认内置规则 → 远程规则(按 group.id 覆盖同名组)→ 自定义规则覆盖层(同 group.id 合并,同 rule.id 覆盖;完全相同规则去重)→ 用户禁用集合作最后过滤。
icon 字段接受任意字符串,渲染时按优先级匹配:
simple:<slug>—— Simple Icons(CC0),如simple:github、simple:gitpodlucide:<slug>—— Lucide(MIT),如lucide:globe、lucide:shield- 其他任何文本 —— 当作 emoji 或纯文本字面渲染(
🌐、↗……)
设置页里点链接前面的图标按钮会弹出可视化选择器,带搜索和分类。
不用 fork 仓库 / 写代码也能贡献新规则。最简方式:
- 在扩展设置页 → 规则管理里编好你的规则
- 点这条规则旁的「🔍 验证」按钮,输入示例 URL 验证生成的目标地址正确无误
- 点「📤 提交」按钮 —— 自动跳转到 GitHub Issue 表单,所有字段已预填
- 直接点 Submit 提交即可
提交后的流程:
- 机器人自动校验,回复「✅ 校验通过」或具体错误
- 仓库维护者评论
/approve后,GitHub Action 会自动写入rules.json、关闭 Issue - 全体用户最多 6 小时后自动收到更新
链接列表格式(一行一条,| 分隔):
显示名 | 图标 | URL 模板 | 说明(可选)
Pages | lucide:globe | https://{1}.github.io/{2} | GitHub Pages 站点
校验和合并逻辑见 .github/scripts/apply-submission.mjs。
如果想给内置图标库加 / 减图标,编辑 scripts/build-icon-library.sh 顶部的 SIMPLE_ICONS / LUCIDE_ICONS 数组,然后:
bash scripts/build-icon-library.sh会从上游下载 SVG、规范化(1em + currentColor)、生成 icon-library.js。
- 版本号定义在
manifest.json的version字段,遵循语义化版本(MAJOR.MINOR.PATCH)- MAJOR:破坏性变更(manifest schema、规则数据结构、设置项不兼容等)
- MINOR:新功能(新规则组、UI 组件、图标库等)
- PATCH:bug 修复、默认规则微调、文案调整等
rules.json的更新(通过 Issue 审批合并)不会自动发版;它通过运行时远程同步推给所有启用了远程源的用户。但每次合并时 CI 会自动同步重新生成default-rules.js、README 默认规则表、官网首页#rules段落和docs/default-rules.md,让文档快照保持最新
# 1. 在 main 上把 manifest.json 的 version 改成 2.2.0
# 2. 提交并打 tag
git add manifest.json
git commit -m "chore(release): 🔧 release v2.2.0"
git tag v2.2.0
git push origin main
git push origin v2.2.0
# 3. CI 自动校验、打包、创建 GitHub Release 上传 zip工作流定义见 .github/workflows/release.yml,本地预演:
bash scripts/build-extension.sh # 仅打包,输出到 dist/
bash scripts/build-extension.sh --check-version v2.2.0 # 同时校验 manifest 版本代码 MIT。打包的图标各自遵循其原始许可(Simple Icons CC0 / Lucide MIT)。