[js] 英语学习助手:思源查词(剑桥词典 + 沙拉查词等)

缘起

之前经常在论坛看到小伙伴们问,思源能查词吗?

我在学习英语时也有这个需求,之前一直用各种查词软件,及 uTools 的沙拉查词,感觉思源查词是没太大的必要性。我也曾想过实现集查词,翻译,搜索,ai 于一体的插件,也让 ai 写好了 UI,数据来源嘛主要来自各大查词网站的页面抓取。但终因时间和精力有限,暂时搁置了。

一次偶然的机会,发现了 bob 翻译的插件支持从剑桥词典抓取数据并格式化显示。这不正是我想要的吗?

于是把所有参考资料收集好丢给 ai,让 ai 实现了这个代码。

Update: 0.0.5+ 已支持调用 uTools 的沙拉查词插件等,支持同时配置多个词典。

为什么选择剑桥词典?

  1. 正如上面所说偶然的机会发现已有别人做好的现成作品可参考
  2. 剑桥词典内容权威,真人发音
  3. 同时支持中文释义和英英释义
  4. 例句贴近真实生活场景
  5. 适合初学者,标注 CEFR 等级(A1–C2)
  6. 好吧,最主要的还是第 1 点,有现成作品,不过同时这个词典也很好。

AI 制作过程

这个代码写的还是较轻松的,现在有 AI 真方便,以前写代码,光 UI 搞半天,这个是开发最不愿搞,但又不得不搞的,如果有可能,开发统统用配置文件,哈哈。

但现在不一样了,我甚至不需要画 UI,常见功能,AI 知道应该做成什么样,你只需要告诉它要做什么,返回数据结构是什么就可以了,完全让 ai 自己设计。

我是怎么做的呢?

第一步,我把 https://github.com/yaobinbin333/bob-plugin-cambridge-dictionary/blob/cbdab3becad9b3b33165ff99dff4bab44ed54e17/src/entry.ts#L17 这个页面的资料给它,告诉它我要做从剑桥词典查词功能,数据是从剑桥词典网站抓取的,这个是参考,让它先设计 UI。

然后,它完成了,运行一看,一片空白,发生什么了?

好嘛,它直接完成了一个完善的抓取显示的功能,我本地运行,直接报跨域错误了。

这里,如果不懂代码的朋友,也应该能看到它集成了 js 代码,这时候其实应该让它先完成纯 UI,不涉及获取数据,一步步来,不然问题会很多,不方便观察问题。比如,如果纯小白看到空白会这么问,没用啊,什么都没有,那么,ai 再次检查,再次运行,仍然空白,然后继续...,然后....,你崩溃了。

于是,我告诉它先不要抓取,用假数据占位就行,我先调 UI,没问题后再填充数据。

然后,ai 出色完成了 UI,感觉不错,如果我自己整,得累够呛还不一定有它好,但它分分钟钟就完成了。

然后我适当调整了一些细节后,让 ai 集成数据。

集成完后,运行一看,又出问题了,原本良好的 UI,然后又空白了。

如果纯小白,会把现象告诉 AI,然后 ai 继续,你又反馈,ai 又继续,然后你又奔溃了。

于是,我打开控制台一看,好嘛,它对 HTML 的解析使用的是 cheerio 库,这个库只能用于 nodejs。我浏览器运行,自然不行。其实,这个库能否用于浏览器我也不懂,但我看到它上来就先安装库,就知道不是运行于浏览器的,要么得用构建工具,这不是我想要的,于是我问了 ai,cheerio 能否用于浏览器,结果是不能。

这时,如果小白,不知道这个问题怎么办?你可以打开源码,让 ai 帮你解释代码的主要功能和工作流程,以及这个代码能工作的环境,是否能在浏览器运行等。这样,你就能从流程或解释中看出一些问题,然后让 ai 给你找替代方案。当然,如果你的参考资料来自 bob 插件,这本身就应该了解 bob 插件的工作环境,如果你没特别说明,AI 会以为,你要转换的目标也是同样的环境,因此这里应该做好说明。

于是,我告诉它用 DOMParser 替代 cheerio,当然,如果你不知道 DOMParser 也没关系,就像前面所说,可以问 AI 替代方案,这个 DOMParser 也是我以前从 AI 那里学到的。

很快啊,AI 马上又给结果了,然后运行,仍然空白。

如果此时换作小白,会反馈,没用啊,还是不管用,AI,我再查查,这次好了,这次保证没问题,这个代码为什么可以正常运行,然后你崩溃了,AI,很抱歉没帮到你,我会努力学习,还有其他问题吗,你,滚。

那么,这次出了什么问题呢,没错,是跨域的问题,打开浏览器控制台,报错信息清晰可见。所以,有时先别忙着反馈,先把错误信息给 AI,不从根源上解决问题,不是白忙活吗。

不过,这里也确实是我的错,因为我一开始就让它用 fetch 的,因为我之前测过,在思源里可以用 fetch 正常抓取剑桥词典的,如果不行的话,思源还有代理 api。总之,把代码放到思源里执行就 OK 了。

至此,终于万事大吉了,又调整了一些细节,加了主题适配,和 AI 扯了会淡后,就完成了。

其实,你看,小白用 AI 写代码也不难,只需要找对正确解决方法,多问 AI,不要急着反馈,你先搞懂流程,问清 ai 大概需要经过哪些步骤实现,并详细告知自己的工作环境,然后 AI 大概率能工作的很好。

作品展示

好了,废话了那么多终于上作品了

image.png

image.png

image.png

0.0.6.6+ 增加全球真人发音

image.png

0.0.6.8 点击单词标题可以输入查词

image.png

0.0.6.9 增加生词本功能

image.png

调用更多词典(沙拉查词等)

0.05+ 已支持调用 uTools 的更多词典功能,比如,沙拉查词插件,中英词典插件等,当未安装该插件时,第一次使用会跳转到安装界面。

更多词典配置说明

// 是否开启更多词典 true 开启 false 不开启
const enableTheThirdDicts = true;

// 更多词典设置
const theThirdDicts = [
    {
      // 名字,通常用于提示或显示
      name: '沙拉查词',
      // 图标6x16大小
      icon: 'https://saladict.crimx.com/icons/favicon-16x16.png',
      // 打开命令
      command: `utools://沙拉查词/沙拉查词?{{keyword}}`,
      // 显示位置 toolbar 工具栏; dictpage 剑桥词典内; notfound 查不到时; all 所有位置; 也可以任意组合,用逗号隔开即可; 默认all
      position: 'all',
    },
    {
      // 名字,通常用于提示或显示
      name: '中英词典',
      // 图标16x16大小
      icon: 'https://b3logfile.com/file/2025/10/1760663431439TYe0SV_2-ujPYk4O.png?imageView2/2/interlace/1/format/webp',
      // 打开命令
      command: `utools://中英词典/中英词典?{{keyword}}`,
      position: 'dictpage, notfound',
    },
    {
      // 名字,通常用于提示或显示
      name: 'AI助手',
      // 图标16x16大小
      icon: 'https://b3logfile.com/file/2025/10/ailogo-rcvBWYB.png?imageView2/2/interlace/1/format/webp',
      // 打开命令
      command: `utools://AI%20助手/AI%20助手?${aiPrompt}`,
      position: 'dictpage, notfound',
    },
    {
      // 名字,通常用于提示或显示
      name: '问AI',
      // 图标16x16大小
      icon: 'https://gips0.baidu.com/it/u=1125504705,2263448440&fm=3028&app=3028&f=PNG&fmt=auto&q=75&size=f16_16',
      // 打开命令
      command: aiSearchUrl,
      position: 'notfound',
    }
];

沙拉查词使用效果

当配置中包含显示到 toolbar 时

image.png

当配置中包含显示到词典内时

image.png

当开启第三方词典,且剑桥词典未查询到内容时

image.png

打赏作者

image.png

代码下载

👇 打赏后可见(为什么要打赏后可见?主要想通过这种方式统计使用人数及用户需求,以帮助作者分析哪些功能是用户最需要的)

打赏 20 积分后可见
20 积分 • 37 打赏
  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    28446 引用 • 119769 回帖
  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    285 引用 • 1985 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • cxg318

    W 佬真是多才啊

    1 回复
  • 其他回帖
  • wilsons

    0.0.6.9 theThirdDicts.command 支持回调函数;增加生词本功能

    image.png

    image.png

    直接在更多词典配置里配置即可,由于处于学习的目的,每天都会生成一个生词本文件,默认仅会判断今天的生词是否已添加,可通过 hasAddedScope 配置。

    2 回复
    1 操作
    wilsons 在 2025-10-21 14:50:29 更新了该回帖
  • wilsons

    0.0.8.2 单词下增加词性;增加动词变化;增加弱读音标
    0.0.8.1 修改全球发音 bug;改进工具栏默认用剑桥词典发音和默认插入剑桥词典发音

    image.png

    image.png

    image.png

  • wilsons 1

    0.0.6 改进第三方词典配置,可以自由搭配显第三方词典示位置(包括工具栏,查词页面,和查词未找到页面)

    配置参考 [js] 英语学习助手:思源查词(剑桥词典 + 沙拉查词等)

    这样借助 utools 等第三方词典或翻译或 ai 或搜索引擎,也间接实现了集搜索,查词,翻译,ai 一体了。


    搜索引擎可以类似这样配置

    {
      // 名字,通常用于提示或显示
      name: 'Bing',
      // 图标16x16大小,默认沙拉查词
      icon: 'https://cn.bing.com/favicon.ico',
      // 打开命令,默认沙拉查词
      command: 'https://cn.bing.com/search?q={{keyword}}',
      position: 'toolbar',
    },
    {
      // 名字,通常用于提示或显示
      name: '百度',
      // 图标16x16大小,默认沙拉查词
      icon: 'https://www.baidu.com/favicon.ico',
      // 打开命令,默认沙拉查词
      command: 'https://www.baidu.com/s?wd={{keyword}}',
      position: 'toolbar',
    }
    

    image.png

    3 操作
    wilsons 在 2025-10-17 20:08:36 更新了该回帖
    wilsons 在 2025-10-17 19:55:14 更新了该回帖
    wilsons 在 2025-10-17 19:26:29 更新了该回帖
  • 查看全部回帖
wilsons
正式入驻知乎了,以后新贴主要在这里。 欢迎大家订阅关注! 你的关注对我是莫大鼓励,也能让我持续产出优质内容,我们一起成长 🙏 点这里立即关注:https://www.zhihu.com/people/wilsonses