浏览器扩展接自己的 AI 接口,要填的就四样,抄这份:
OpenAI 兼容(有的写 OpenAI、Custom、兼容模式,是同一件事)https://xyuapi.top/v1sk- 开头那一串gemini-2.5-pro、deepseek-v4-flash-thinking保存之后去网页划一段英文,能出中文就说明通了。下面讲入口在哪儿、扩展值不值得折腾怎么判断、填错时那些报错各是什么意思。
打开扩展设置,找翻译相关的分组,关键词是 翻译服务 / 服务商 / AI 供应商 / 引擎。点开下拉,你要选带 OpenAI 的那一项,或者叫 Custom、自定义、OpenAI 兼容 的那一项。不同版本叫法差异大,按关键词找带 OpenAI 或「自定义」字样那一项,别硬记按钮文字。
一个叫「API 地址 / API URL / 接口地址 / Base URL」,一个叫「API Key / 密钥 / Token」。前者填 https://xyuapi.top/v1,后者粘你自己的令牌。有的还会多要一个「模型名」框,填具体 ID。
字段名要留神:写成「Host」的通常期望不带 /v1,填 https://xyuapi.top;写成 URL、地址、Base URL 的带上 /v1。
划词翻译类(选中文字在旁边弹个小气球那种)的设置一般在扩展弹窗右上角的齿轮里。侧边栏助手类(点图标在右侧开对话框那种)的设置一般在侧边栏底部的设置图标里。找不到入口就右键扩展图标,选「选项 / Options / 设置」,能直达设置页。
这是全文最实用的一段。不用真接上再试,打开设置页看几眼就有答案。
下拉里如果全是固定服务商名字、没有任何一项允许自己填地址,就是把翻译能力锁在自家后端了,你的地址填在哪儿都没用。只要存在 自定义、Custom、OpenAI 兼容 这类选项,选中后出现一个空的 URL 输入框,这条就算满足。
有些扩展给了自定义服务商,但模型那一栏是写死的下拉,里面只有它预设的几项,挑到它后端不认的 ID 就一路报错,你还改不了。
能自由填写才算真自定义——整页翻译要挂 gemini-2.5-pro、精细改写要挂 claude-sonnet-4-5-thinking,都得自己敲 ID。
点一下,扩展会拿你填的地址和 Key 发一个小请求,直接告诉你通没通,排查时间从半小时缩到一分钟。
没中两条以上就别折腾了,装完再试更费时间。
沉浸式翻译支持配置自定义 AI 翻译服务:新建一个自定义翻译服务,填接口地址、模型名,还有一段「提示词 / Prompt」,它决定翻译语气和格式要求,比如保留原来的段落标记、专有名词原样不译。地址那一栏填 https://xyuapi.top/v1。
它的整页翻译是按段落拆开、并发发请求的,并发和成本的关系看第五节。划词翻译类逻辑一样:取选中文本、发给接口、把返回贴回来,能填自定义地址的都能接。
侧边栏助手类扩展里,有一批支持自定义 OpenAI 兼容地址,比如 ChatGPT Box 这一类支持自定义接口的侧边栏工具。判断方法还是那三条判据。
我没法确认的型号不会硬写,所以这里说的是「设置里能填自定义 URL 的那类」,打开设置页对着判据看就有答案。
| 扩展类型 | 典型用途 | 是否支持自定义接口地址 | 适合场景 | 主要限制 |
|---|---|---|---|---|
| 划词翻译类 | 划一句立刻出译文 | 一部分支持,看有无自定义服务商 | 看外文资料、看代码注释 | 只发一小段,模型选大的没意义 |
| 整页翻译类 | 整篇外文网页对照阅读 | 相当一部分支持 | 读产品文档、技术文档 | 并发请求多,容易撞限流 |
| 侧边栏助手类 | 随手问答、总结选中内容 | 相当一部分支持 | 边看网页边问 | 要带上下文轮次,长文得截断 |
| 字幕视频翻译类 | 网页视频字幕翻译 | 较少,多数只给固定服务商 | 看技术分享视频 | 对延迟敏感,模型要挑快的 |
| 写作润色类 | 划词改写、翻译后润色 | 一部分支持 | 写邮件、写周报 | 提示词写死,可控性偏低 |
表里写「一部分支持」不写「全部支持」,是因为同一款扩展不同版本的情况都可能不一样。
/v1出现频率最高的一个坑,两种错法我都见过真实案例。
多写一层:填成 https://xyuapi.top/v1/v1,扩展拼出来就是 https://xyuapi.top/v1/v1/chat/completions,服务端没有这个路径,回你一句:
404 page not found
少写一层:只填 https://xyuapi.top,拼出来是 https://xyuapi.top/chat/completions,少了 /v1,结果同样是:
404 page not found
两种错法报错一模一样,光看报错分不出是多还是少。动作:翻译类扩展的「API 地址」字段填到 /v1 为止,也就是 https://xyuapi.top/v1。那个字段如果叫「Host」,就填 https://xyuapi.top。分不清字段语义时,先用第六节的 curl 确认哪种拼法能通,再回扩展里填。
模型名填错时,扩展界面上几乎看不到真实原因,一般只弹一句 翻译失败、Translation failed 或 请求失败,然后就没下文。你以为网络有问题,其实只是模型 ID 它不认识。
真实报错要去哪儿看:扩展的背景页,或者浏览器开发者工具的网络面板。背景页入口在扩展管理页里,一般叫「服务工作进程 / service worker」。真实报错常见三种形态:
{"error":{"message":"model not found","type":"invalid_request_error"}}
404 page not found:地址拼错了,回坑一model not found 配 invalid_request_error:模型 ID 不存在,去模型列表页复制准确 ID401 invalid api key:Key 粘错了,或者前后带了空格、复制断了半截动作:把模型名当成必须逐字复制的字段。gemini-2.5-pro 和 gemini-2.5-pro-preview 是两个不同的 ID,差一个后缀就是 model not found。
新版 Chrome 扩展(MV3)大多在后台 service worker 里发请求,不受页面同源策略约束,正常用不会遇到跨域。前提是扩展在 host_permissions 里声明过目标域名——你填了自定义地址后,扩展一般会顺手申请一次该域名的权限,同意就行。
如果你用的是走「在网页里直接 fetch」路子的老式扩展,它可能吐这句:
Access to fetch at 'https://xyuapi.top/v1/chat/completions' from origin 'https://example.com' has been blocked by CORS policy
动作:先看扩展有没有向你请求过权限,扩展管理页的权限项里能看到。报 CORS 就说明这款是页面直发模式,换一个在后台 service worker 里发请求的扩展即可。
不要去研究怎么把浏览器的安全策略关掉。那样既解决不了根本问题(换一个扩展就行了),还会把整个浏览器的安全底线一起拆掉。
浏览器默认跟随本机的系统代理设置。这台机器如果配了系统级 HTTP 代理,请求会被转到那个代理上再出去,表现出来往往是:
Connection timed out
SSL handshake failed
另外,装了接管浏览器网络请求的扩展,效果一样。
动作:让 xyuapi.top 直连。系统代理设置里如果有「不使用代理」的地址列表,把 xyuapi.top 和 xyuai.cc 加进去。或者临时停用那个接管流量的扩展,再点一次测试按钮,看是不是立刻通了。通得了,问题就出在转发环节,跟 Key 和地址没关系。
扩展更新版本时,有的会把本地配置一起清掉,表现是「昨天还能用,今天全变回默认值」。这种情况你翻网络面板也看不出毛病,因为请求压根没发出去。
动作:Key 存一份在密码管理器里,重置之后直接粘回来,不用重新去后台生成。顺手给这个 Key 单独设一个额度,也别把一个 Key 到处贴——扩展的本地存储不是保险箱。
小鱼API 的主计费方式是按次计费:一次请求一个固定价,输入长度不影响价格。整页翻译会把长文拆成几十段分别发请求,每段算一次,所以成本取决于「拆成了多少段」,不是「这篇文章多少字」。
拿 gemini-2.5-pro 举例,0.031 元一次。拆成 40 段的英文长文全译完约 1.24 元,拆成 80 段就是 2.48 元。省钱的方向是把单段合并得更长、少发几次请求,而不是换更便宜的模型。
整页翻译类扩展普遍有一个「并发数 / 同时请求数 / 最大并行数」的设置项。开太大,比如 20,会瞬间打出一堆请求,很容易撞上上游限流,你收到的报错是:
429 Too Many Requests
动作:把并发数设成 3 到 5,既能明显快过逐段翻译,又不容易踩到限流线。真收到 429 了,除了降并发,也可以先等十几秒再重试,别一直猛点。
| 扩展场景 | 建议模型 | 单价 | 选它的理由 |
|---|---|---|---|
| 整页翻译 | gemini-2.5-pro | 0.031 元/次 | 单价低,长文理解稳 |
| 划词总结 | deepseek-v4-flash-thinking | 0.05 元/次 | 选中片段不长,要的是快和准 |
| 细致重写、润色 | claude-sonnet-4-5-thinking | 0.09 元/次 | 中文改写更细,适合邮件文案 |
| 代码注释翻译 | deepseek-v3.2-thinking | 0.049 元/次 | 中英混排内容表现好 |
| 快速划词直译 | grok-4.1 | 0.05 元/次 | 响应快,适合只翻一句话 |
计价是按次固定价,挑模型时只判断「这次请求值不值这个价」。一天用 30 次划词总结,一个月也就四十几块。
curl https://xyuapi.top/v1/models -H "Authorization: Bearer 你的令牌"
返回一大串 "id": "..." 的模型列表,说明地址和 Key 都对。返回 401 是 Key 的问题,返回 404 page not found 是地址的问题。
curl https://xyuapi.top/v1/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer 你的令牌" -d '{"model":"deepseek-v4-flash-thinking","messages":[{"role":"user","content":"说一句话"}]}'
能拿到 choices 里的内容,就说明模型 ID 是对的。把返回里的 model 字段原样复制到扩展的模型框里,比手打稳得多。
扩展报错太少这件事坑二说过了:地址、Key、模型名都可能出错,扩展却只给一句「翻译失败」。在命令行验一遍就能把这一组确认下来,剩下的只可能是扩展侧的问题。
扩展的本地存储会随版本更新、浏览器重装、换设备而丢,调好的配置丢掉之后要从头来一遍。存一份在密码管理器里,记清楚三样:这个 Key 给哪个扩展用、地址是 https://xyuapi.top/v1、模型 ID 是什么。
多个扩展共用一个 Key 有个现实问题:你分不清是本机扩展在花,还是别的地方在花。给每个扩展配一个独立令牌、各自设额度,用量就能分开看。一个 Key 到处贴还有个隐患:某一处泄漏,等于所有地方都得换。
401 invalid api key 基本都是 Key 本身的问题:粘的时候带了空格、复制断了半截、或者把别处的 Key 填进来了。回后台重新复制一次,注意前后不要留空格。
可以,建两个自定义服务商:一个提示词写「翻译成中文」,另一个写「用三点总结这段内容」,划词时按需求选对应服务。