因为经常要调网页上的东西,油猴脚本我用得挺多。但改脚本这件事本身一直很烦:打开管理面板、找到那条脚本、翻到要改的地方、保存、回页面刷新,中间还得来回切窗口。要是改动没生效,这一套还得再来一遍。

我早就想让 OpenClaw 替我做这件事,每次都卡在最后一步。Tampermonkey 的管理界面是 chrome-extension:// 页面,浏览器调试接口明确拒绝第三方扩展访问,自动化工具根本进不去。代码它能写好,但要落到浏览器里,还是得我自己复制粘贴,省下来的时间又还回去了。

后来发现官方出了个 tampermonkey-mcp,这条路才算通。

https://github.com/Tampermonkey/tampermonkey-mcp

它是怎么连上的

结构不复杂:本机跑一个 MCP server,浏览器里装一个 Tampermonkey Editors 扩展,两边用本地 WebSocket 连起来。连接码是六位左右的短字符串,填一次就行。

关键在于连接方向是反的。自动化工具去碰扩展页面这条路被浏览器堵死了,但扩展可以主动连本机,所以那个限制在这里不成立。

准备工作

浏览器里要装两个扩展,只装 Tampermonkey 不够:

然后在 OpenClaw 这边加上这个 MCP server:

1
2
openclaw mcp add tampermonkey --command npx --arg -y --arg tampermonkey-mcp@latest
openclaw mcp doctor tampermonkey --probe

doctor 显示 ok,说明服务端能起来,它会暴露六个工具:列脚本、读全文、写回、新建、删除,还有一个生成连接码。配置改完不用重启 Gateway 也会生效。

如果 Gateway 所在的环境里找不到 npx,把 --command npx 换成 npx 的绝对路径就行。

最后一步:

  1. 跟 OpenClaw 说一句「连一下油猴」
  2. 它调 get_connection_code 给你一串连接码
  3. 你把这串码填进 Tampermonkey Editors 的扩展弹窗

连上之后说「列一下我的脚本」,能把你的脚本列出来,就是通了。

连接

用起来是什么体验

我的用法基本就是一句话。

举个例子。某个网站的详情页,图片全挤在左边一个 200px 宽、还带滚动条的小框里,看着很难受,而图片原图其实并不小。以前得自己翻 CSS 找容器类名、一层层往上试。现在直接跟它说:这些图改成一行一张大图,顶部那个推荐区块也不要了。

它会自己去列脚本、读全文、改本地文件,再把改完的完整脚本写回浏览器。写完之后还会开浏览器把页面真的加载一遍,检查元素有没有按预期隐藏、图片卡片实际宽高是多少,而不是只回一句「保存成功」。

这一步是我觉得最值钱的地方。这类脚本依赖页面加载时序,光看代码看不出问题,回真实页面跑一遍才算数。

改进成功对话

几个坑

连接码是会变的。它由 MCP server 每次启动时随机生成,Gateway 重启之后要重新生成、重新填一次。嫌麻烦的话,可以让它跑成常驻服务:tampermonkey-mcp --transport=http,默认 4001 端口,OpenClaw 那边改成用 url 接入。

写回是整篇替换,不是打补丁。脚本头部 ==UserScript== 那一段要跟着一起传,漏了脚本就直接坏掉。

迁移过来之后,记得把暴力猴(Violentmonkey)里的旧脚本停掉。两个管理器同时注入同一个页面,等于同一套 DOM 操作跑了两遍,轻则卡顿重则样式打架。

Tampermonkey 的管理界面依旧是进不去的,还是那个 chrome-extension:// 的限制。别想着用浏览器自动化去点它的界面,老老实实走这个桥。

最后说一句安全

这座桥的本质,是把你浏览器里所有用户脚本的读写权限交给 AI。这个权限比「帮我改一个脚本」大得多。

所以连接之前想一下这台浏览器里都装了哪些脚本,连接码也别随手给别人。我自己的情况是几条自写的加一些从 Greasy Fork 装的,问题不大;要是脚本里有账号、token 之类的东西,还是谨慎点好。