沙拉查词(Saladict)加 AnkiConnect,这套组合我用了快两年,是我尝试过的所有"查词—制卡"工作流里最顺手的一套。它解决了一个特别实际的痛点:你在网页上读外刊、刷新闻、看外文文档时遇到生词,传统做法是打开词典查一下,再手动把单词、音标、释义、例句、音频一个个复制进 Anki,一晚上能整理二十个单词就算效率高。而用沙拉查词配合 AnkiConnect,整个过程被压缩成"选中生词—看释义—点一下保存",卡片自动生成,发音、音标、例句、截图全部就位。这篇文章就是我从零搭建这套流程的完整记录,从安装、配置到踩坑修复都写清楚了,特别适合外语学习者、备考党,以及任何想用 Anki 但不想在制卡上浪费太多时间的人。
1. 为什么是沙拉查词 + AnkiConnect:查词与制卡的一次彻底打通
1.1 查词工具很多,但大多数和 Anki 是割裂的
我自己试过不少方案。很多词典软件都有生词本功能,但想导出到 Anki,要么得走 CSV 中间文件,要么得靠第三方脚本转换,折腾一圈发现例句没了、音频丢了,只剩一个孤零零的单词。还有一些浏览器插件只支持特定网站,换个网页就失效。真正好用的工具应该是:它就在你阅读的地方出现,选中文本就能查,查到什么就能存什么,中间不要让我做任何复制粘贴的搬运工作。
沙拉查词的优势就在于它是浏览器扩展,所有网页都是它的词典背景。不管你在读英文新闻、日语博客还是法语文档,选中一个词就能弹出完整的词典面板。而最关键的一点是,它原生内置了 AnkiConnect 的对接能力,这让我不用依赖任何中间脚本或者第三方服务,直接在查词面板上就能把单词送进 Anki。
1.2 AnkiConnect 的意义:让 Anki 变成可编程的卡片库
很多人对 Anki 的理解停留在"桌面软件+手动输入卡片",其实 Anki 的扩展能力远超这个认知。AnkiConnect 是 Anki 桌面端的一个插件,它会启动一个本地 HTTP API 服务,默认跑在 8765 端口。你可以把它理解成"Anki 的遥控器"——任何能发 HTTP 请求的程序,只要在本机,就能调用它的接口来创建卡片、读取牌组、甚至执行复习操作。
沙拉查词在"保存到 Anki"时,干的事情本质上就是向http://127.0.0.1:8765发一个addNote的请求。请求里带着牌组名称、笔记类型、字段内容这些参数,AnkiConnect 收到后自动创建卡片并处理附件下载。换句话说,沙拉查词负责"查词和整理信息",AnkiConnect 负责"把信息变成卡片",两者一前一后,正好填上了我之前一直觉得别扭的环节——手动打开 Anki 再逐字段粘贴。
1.3 这套方案的适用人群与最佳使用场景
如果你属于下面几类人,这套组合大概率能立刻见效:
- 经常阅读外文网页内容的人,比如看英文新闻、读技术文档、翻学术论文;
- 在备考四六级、考研、雅思托福,需要每天稳定积累生词的人;
- 学日语、韩语、法语等多语种、且愿意在词典源上花点时间配置的人;
- 喜欢折腾效率工作流、希望"一次配置、长期受益"的工具党。
我的典型使用场景是:上班路上用手机看 RSS 订阅的英文文章,遇到一个熟词僻义,以前会划过去,现在会停下来查一下,然后随手存进 Anki,晚上统一复习。整个过程不超过三十秒,卡片质量却比之前手动整理的高出一大截。
2. 环境准备:Anki、AnkiConnect 与沙拉查词的安装细节
2.1 安装 Anki 与 AnkiConnect 插件
先装好 Anki 桌面端,这个直接从官网下载对应系统的安装包就行。Anki 有 Windows、macOS、Linux 版本,功能核心一致,我这边用的是桌面版。安装完成后,打开 Anki 主界面,在顶部菜单栏里找到"工具—插件—获取插件",在弹出的输入框里填写 AnkiConnect 的插件代码:2055492159,然后点击确认,重启 Anki,AnkiConnect 就装好了。
装完之后,在"工具—插件"菜单里应该能看到 AnkiConnect 这一项,点它的配置按钮,会打开一个 JSON 配置文件。默认配置长这样:
{ "apiKey": null, "apiLogLevel": null, "webBindPort": 8765, "webBindAddress": "127.0.0.1", "webCorsOriginList": [] }这里的关键是webBindPort: 8765,端口号要和后面沙拉查词里填的一致。webBindAddress默认只回环到本机,也就是只有这台电脑自己的程序能访问,这个安全设置不用动。
2.2 验证 AnkiConnect 是否正常返回
配置好之后,别急着打开沙拉查词,先用最简单的方式确认 AnkiConnect 真的能通。在命令行里执行一条 POST 请求,让它返回牌组列表:
curl -X POST http://127.0.0.1:8765 -d '{"action": "deckNames", "version": 6}'如果 AnkiConnect 正常工作,你会看到类似下面的返回:
{"result": ["默认"], "error": null}result里应该是你的牌组名称数组,error为null就说明接口完全可用。Windows 用户如果不想装 curl,可以在 PowerShell 里跑:
Invoke-RestMethod -Method Post -Uri "http://127.0.0.1:8765" -ContentType "application/json" -Body '{"action": "deckNames", "version": 6}'这一步很重要,因为它把所有"沙拉查词能不能连上 Anki"的问题缩到了最小范围。如果你在这里就报错,那问题大概率出在 Anki 没启动、插件没启用或者端口被占用上;如果这里返回正常,后面沙拉查词连不上,就一定是沙拉查词侧的配置问题,排查起来思路就清晰多了。
2.3 安装沙拉查词并完成基础词典配置
沙拉查词在 Chrome、Edge 这些 Chromium 内核浏览器的扩展商店里直接搜索 Saladict 就能找到,安装后建议把它固定到工具栏上,方便随时唤起。第一次打开设置页面,会看到一堆词典开关,默认情况下的词典源已经能覆盖大部分查词需求,但我建议先做两件事:一是打开"发音"相关选项,保证查词结果里有准确的发音接口;二是把界面语言和词典顺序调整成适合你的语言组合,比如我学英语就主查英英释义,会保留一个英汉双解作为辅助。
到这里,基础环境就绪。接下来进入最核心的部分:沙拉查词的 AnkiConnect 配置。
3. 沙拉查词 AnkiConnect 配置面板的逐项拆解
3.1 打开配置面板
沙拉查词的设置页里,找到"AnkiConnect 服务端"这块配置区域。不同版本的菜单路径可能略有差异,但关键词就是 AnkiConnect。这个面板看起来字段不多,但每一个都直接影响最终卡片的样子,值得逐项说明。
我自己的经验是:第一次配置时别贪多,先用最简配置跑通一整套流程,等确认卡片生成没问题了,再回头加音频、加截图这些进阶内容。上来就想把十个字段全部映射好,一旦报错你反而不知道是哪一步的问题。
3.2 服务地址、请求头与高级模式
服务地址这一项,默认就是http://127.0.0.1:8765,看着眼熟就对了,它和刚才验证 AnkiConnect 的地址完全一致。这里有一个小坑:地址里的协议必须是http://,不能写成https://,因为 AnkiConnect 本地服务没有 HTTPS 证书。端口号也不要省略,127.0.0.1后面没有:8765是连不上的。
请求头一般不用填。沙拉查词它自己在调用的时候会自动带上需要的内容,除非你有特别的扩展需求,比如自定义认证头。我个人建议这里保持默认。再往下的"高级模式"开关,我强烈建议你打开。打开之后,你才能自定义请求模板、使用沙拉查词提供的变量来构造卡片内容。很多人以为高级模式是给开发者用的,就不敢碰,其实恰恰相反,它才是把沙拉查词变成"你的工具"的关键。
3.3 模板与字段映射详解
模板名称对应的是 Anki 里的笔记类型(Note Type)。你可以选择沙拉查词预置的模板,它会自动在 Anki 里创建对应的笔记类型和字段,也可以在 Anki 里自己建好笔记类型,再回来填名字。我个人用的是后者,因为 DIY 的字段结构更贴合我的复习需求。
字段映射是整个配置的核心。它用一种 JSON 结构,把沙拉查词查到的信息塞进 Anki 笔记的不同字段。下面这段是我最初用的一个精简映射:
{ "单词": "{{text}}", "音标": "{{phonetic}}", "释义": "{{definition}}", "例句": "{{example}}", "例句翻译": "{{translation}}" }这里 JSON 的键名(比如"单词""释义")必须和你在 Anki 笔记类型里创建的字段名一字不差,而值里的{{text}}、{{phonetic}}这些变量则是沙拉查词传递给模板的数据。常用变量包括:
{{text}}:选中的单词文本{{phonetic}}:音标{{definition}}:词典释义{{example}}:例句{{translation}}:例句翻译{{pronunciation}}:发音音频的 URL
花括号里写什么,沙拉查词就替换成什么,非常直观。这种"键值对"的设计本质上是在做一次字段名翻译:沙拉查词告诉你有这些数据,Anki 告诉你需要这些字段,你负责在中间搭一座桥。
3.4 音频、截图等复杂字段的配置
如果只是把文本字段映射好,你得到的还只是一张"文字卡片"。真正让这套工作流超越手动制卡的,是它还能自动下载音频、保存截图。音频的字段映射要用到嵌套的 JSON 结构,我目前的配置长这样:
{ "单词": "{{text}}", "音标": "{{phonetic}}", "释义": "{{definition}}", "例句": "{{example}}", "音频": { "audio": { "url": "{{pronunciation}}", "filename": "{{text}}.mp3" } } }意思很明确:让沙拉查词把发音 URL 对应的音频文件下载下来,命名成"单词.mp3",然后存进 Anki 的"音频"字段。文件名里尽量不要带空格和特殊符号,我之前用带空格的词当过文件名,结果 Anki 在同步到手机端时偶尔会出问题。
截图字段也很实用。沙拉查词支持在查词面板上截取当前释义区域,然后把图片作为卡片的一个字段。我通常在字段映射里加一行:
"快照": "{{pic}}"这里{{pic}}是当前查词面板截图的占位变量。你在保存之前如果点过截图按钮,这个变量就会被替换成图片数据,保存到 Anki 后自动变成卡片里的图片字段。这就等于给每张卡片附上了一个"当时的语境快照",复习时看到截图,比看干巴巴的释义更容易回忆起这个单词是在哪个文章里出现的。
4. Anki 侧卡片模板设计:让卡片在复习时真正好用
4.1 先想清楚:一张生词卡片该有哪些信息
在动手往 Anki 里填字段之前,先停下来想一个问题:你希望复习时,一张卡片分别呈现什么?如果正面只有一个孤零零的单词,背面只有一句话释义,那这个卡片做出来大概率很难坚持复习——信息量太少,你根本记不住语境。
我的建议是这么分配。正面:单词和音标,这是主动回忆的触发点。背面:词性、释义、例句、例句翻译、图片截图,外加音频播放。这样一张卡片,既能看到单词长什么样、怎么读,也能看到它在真实句子里的用法,还能还原查词时的语境截图。下面是字段列表参考:
| 字段名 | 用途 | 映射变量 |
|---|---|---|
| 单词 | 正面显示的词条 | {{text}} |
| 音标 | 发音符号 | {{phonetic}} |
| 释义 | 中文/英文解释 | {{definition}} |
| 例句 | 查词时附带的例句 | {{example}} |
| 例句翻译 | 例句的中文翻译 | {{translation}} |
| 音频 | 单词发音文件 | {{pronunciation}} |
| 快照 | 查词面板截图 | {{pic}} |
这份字段清单不是固定的,你完全可以根据自己的学习习惯删减。但我的经验是:宁可多留一个"快照"字段,也不要只保存一个单词。复习的时候,一张有语境、有声音、有画面的卡片,记忆效果远好过一堆没有上下文的白板词条。
4.2 在 Anki 里创建笔记类型与字段
Anki 桌面端操作路径是"工具—笔记类型管理—添加",选择"基础类型"后命名。我把它命名为Saladict。创建后进入该笔记类型,在"字段"页签里把所有字段加进去,顺序建议和沙拉查词里的 JSON 键名保持一致,这样后面维护起来不容易乱。
字段名我坚持用中文,原因很简单:JSON 里键名写中文,一眼就能看出这个字段将来会显示什么,不用在"word 到底是指单词还是单词词根"这种事情上反复分辨。这个习惯是我踩过一次坑之后才养成的,后面在排查字段为空的问题时,中文命名让排查效率高了不少。
4.3 正反面模板与 CSS 设计
字段创建好之后,切到"卡片"页签,给笔记类型设计正反面模板。正面模板建议简洁,把回忆压力给到自己:
<div class="card front"> <div class="word">{{单词}}</div> {{#音标}} <div class="phonetic">{{音标}}</div> {{/音标}} </div>背面再展示完整信息:
<div class="card back"> <div class="word">{{单词}}</div> <div class="phonetic">{{音标}}</div> <div class="def">{{释义}}</div> {{#例句}} <div class="example">{{例句}}</div> {{/例句}} {{#例句翻译}} <div class="example-trans">{{例句翻译}}</div> {{/例句翻译}} {{#快照}} <div class="pic">{{快照}}</div> {{/快照}} {{音频}} </div>这里的{{#音标}}...{{/音标}}是 Anki 模板的条件语法,表示"如果这个字段有值才显示这整块区域"。这样你保存的那些缺例句的卡片,背面就不会留着一大片空白占了视线。我后来复习时发现,这种"有就显示、没有就隐藏"的设计,让整牌组的观感整齐很多。
样式方面,一段简单的 CSS 就能让卡片舒服不少:
.card { font-family: -apple-system, "PingFang SC", "Noto Sans SC", sans-serif; font-size: 18px; text-align: left; padding: 20px; } .word { font-size: 34px; font-weight: bold; } .phonetic { color: #888; margin-top: 6px; } .def { margin-top: 16px; line-height: 1.6; } .example { margin-top: 14px; font-style: italic; color: #444; } .pic img { max-width: 100%; border-radius: 8px; margin-top: 12px; }大号单词、清晰的释义层次、足够留白,这些不是装饰,而是在降低你复习时的认知负担。
4.4 为什么字段设计决定制卡效率
很多人会忽略这一步,觉得"有单词、有释义不就行了吗"。但字段设计其实就是接口设计。如果你把释义和例句塞进同一个字段,那将来想做"看例句猜单词"这种卡片,就得重新拆分数据,等于废掉已经积累的整个牌组。反之,字段拆得越细,后续能做的卡片类型越丰富——你可以轻松生成一个只听发音的听力卡片,或者一个只看例句填空的拼写卡片。所以我始终建议新手第一次配置时,多花五分钟把字段拆清楚,而不是为了省事把所有东西堆在一个框里。
5. 完整实操流程:从网页生词到 Anki 卡片
5.1 划词查看释义
一切配置就绪后,打开一篇英文网页,用鼠标选中一个不认识的单词,就会有沙拉查词弹窗浮现。弹窗里默认会展示当前词典的最简释义。此时先别急着保存,快速扫一眼释义对不对、是不是你要的那个词义。如果是熟词僻义,一定要在弹窗里切换到更完整的词典页确认,比如展开英英词典,看它在当前语境下的准确解释。这一步虽然多花几秒钟,但能避免把错误意思存进卡片——错误信息进了 Anki,之后你每次复习都是在巩固错误,这个比不复习更糟糕。
5.2 截图与批量保存
如果觉得这个词值得长期复习,可以先在查词面板上点一下截图按钮,把当前释义区域截下来。截图这个动作很轻微,但它带来的语境还原作用超出预期。我后来复习大量单词时,经常是靠截图里那半句话回忆起原文内容的。
沙拉查词面板底部会有一个加号或保存按钮,点击之后会出现模板选择菜单。如果你配置了多个模板(比如英文模板和日文模板),这里需要选择要保存到哪个目标。如果只配了一个,直接确认保存即可。
我自己比较习惯的流程是:阅读时连续划词、连续截图,不急着逐词操作,等读了半篇之后统一点保存,把这一批生词一次性入库。这样阅读节奏不会被频繁打断,制卡效率也更高。
5.3 保存到 Anki 并处理提示
点击保存后,沙拉查词会调用 AnkiConnect 的addNote接口,向 Anki 提交卡片。如果一切正常,界面会有轻微的成功提示,Anki 那边毫秒级就会多出一张新卡片。如果提交失败,提示信息通常会指向问题所在,比如"无法连接到 AnkiConnect"或者"模板中不存在该字段信息",这时候按后面第六部分的排查思路逐项检查就行。
一个细节是:沙拉查词在提交时默认会做去重处理。如果当前单词已经存在同名卡片,它不会重复插入,而是直接报一个重复的提示。我之前觉得这有点烦,后来反而觉得这是个保护机制——因为我手滑双击保存过好几次,如果不做去重,牌组里早被自己的误操作堆满了。
5.4 回 Anki 验证最终效果
保存之后,打开 Anki 桌面端,进入你设置的目标牌组,应该能看到刚保存的卡片。点开看一眼正面有没有单词和音标,点击背面确认释义、例句、音频、截图是否都正常显示。音频那块可以点一下播放按钮,确认文件确实下载成功而不是一个死链接。
第一次完整跑通这个流程时,我特意做了一次"破坏性测试":把配置里的模板名称改错,看沙拉查词会怎么报错;再把字段名改错,看 AnkiConnect 会不会提示;来回几次之后,我对这套系统的信任度就高了,后面再怎么使用心里都有底。
6. 踩坑实录:端口、模板、字段与音频问题的排查链路
6.1 连接失败:Anki 没启动还是端口不对
最常见的报错就是"无法连接到 AnkiConnect"。我的排查顺序固定成这样:
- 先看 Anki 桌面端是不是开着。AnkiConnect 是 Anki 里的插件,Anki 没启动,接口服务自然不存在。这个问题占了五成以上。
- 确认服务地址填的是
http://127.0.0.1:8765,不是https,不是localhost写错,不是漏了端口。 - 用命令行跑一次
deckNames的请求,看接口是否正常返回。如果命令行能通,说明 AnkiConnect 本身没问题,问题肯定在沙拉查词侧。 - 如果命令行也不通,检查 Anki 里的插件列表,确认 AnkiConnect 有没有被误禁用,或者端口是不是被其他程序占用了。
这个链路走完,九成问题都能定位。切忌一上来就重置配置、重装插件,那样只会把排查引向更乱的局面。
6.2 字段全空或部分为空:模板名称与字段名不一致
另一个高频问题:卡片成功创建了,但字段里什么都没有,或者只有部分字段有值。这种问题的根因基本就两个方向。
第一,模板名称对不上。沙拉查词里的"模板名称"必须和 Anki 里"笔记类型管理"中的名称完全一致,包括大小写和空格,一个字符都不能差。我的教训是:有次把 Anki 笔记类型命名为Saladict Words,沙拉查词里却填了个saladict-words,系统直接把它当成另一个类型,创建出来的卡片像是写在虚空里,字段什么都映射不上。
第二,JSON 键名和 Anki 字段名不一致。比如 Anki 字段叫"音标",JSON 里写"拼音",那这个字段当然会是空的。这种问题排查起来也很简单:打开 Anki 的笔记类型管理,把字段列表截图,再对照沙拉查词里的 JSON 键名一个个看,两三分钟就能找出来。
6.3 音频不出声:Anki 的音频字段限制
音频这块我栽过一次跟头。当时为了让卡片更丰富,我在 Anki 里同时设计了"单词发音"和"例句发音"两个字段,结果两边都没声音。后来查了 AnkiConnect 的文档才知道,Anki 每个笔记类型最多只能有一个音频字段,如果配置了多个,后面的会被忽略或者产生冲突。
解决办法是:只保留一个音频字段,把需要的发音内容合并到这一个字段里。如果你确实想要单词发音和例句发音,可以先把它们做成两个独立的音频文件,再想办法合并,但这个复杂度对日常学单词来说没必要。我现在只保留"单词发音"这一项,例句的发音可以通过朗读单词卡片时自己跟着读来替代。
6.4 浏览器环境导致的连接异常
还有一种情况是端口和模板都没问题,但偶尔保存会失败,重启浏览器又正常了。这类问题往往出在浏览器扩展的冲突上。某些网络过滤类、隐私保护类扩展可能会拦截本机回环地址的连接,导致沙拉查词发出的请求到不了 8765 端口。
遇到这种问题,最干净的排查方式是:打开一个无痕窗口,只启用沙拉查词这一个扩展,然后再试一次保存。如果无痕模式下一切正常恢复,那基本可以断定是其他扩展在拦截,后面挨个启用排查就行。这个方法也适合很多浏览器扩展互相打架的场景,不只限于沙拉查词。
7. 进阶玩法与我的制卡习惯
7.1 多语言模板切换
沙拉查词支持配置多个 AnkiConnect 模板,也就是说你可以为英语、日语、法语分别建立不同的笔记类型。我自己在学英语和日语,所以在沙拉查词里维护了两个模板:英语模板走上面这套字段结构,日语模板额外加了一个"假名"字段,用来存注音。
实际使用中,保存单词时沙拉查词会弹出一个模板选择,你选对应语言的模板即可。这样各语言的卡片数据结构互不干扰,复习时也更容易区分。配置多个模板时,有一个建议:给模板命名时加上语言前缀,比如EN-Saladict、JP-Saladict,这样在 Anki 的牌组统计里一眼就能分清,也避免不小心选错模板导致语种混排。
7.2 用 CSS 把卡片做得更耐看
Anki 卡片模板里的 CSS 是可以反复调整的,我建议你花一点时间打磨,因为后台复习界面就是你每天会盯十分钟以上的东西,视觉舒适度直接影响坚持情况。我目前背面模板的样式核心就三个原则:单词要大,释义要清晰,例句区不要有杂色背景。别去追求花哨的渐变和字体,重点是降低长时间复习时的视觉疲劳。
如果想做得更细,还可以给"难词"配置不同的标签。比如在 Anki 里给某些卡片打上hard标签,然后在 CSS 里给这个标签下的卡片做一个浅色边框提示自己重点关注。这个属于锦上添花,但确实能让牌组更贴合个人学习状态。
7.3 控制制卡质量:少而精,宁缺毋滥
最后分享一个我用了很久的习惯:每天保存的单词量,我给自己定在十个以内。沙拉查词加 AnkiConnect 把制卡成本压得极低,反而容易让人陷入"存了就等于学会了"的错觉。实际上卡片存进去只是开始,Anki 的间隔重复算法会让它在合适的时间再次出现在你面前,但如果卡片本身信息不完整、语境不清晰,重复多少遍也记不牢。
所以我现在会定期清理牌组里那些"没头没尾"的卡片——只有单词和音标、没有例句也没有截图的那种,我会直接删掉。留下来的每一张,都是我在某个真实阅读场景里真正遇到、并且确认值得反复记的词。这套查词制卡工具链再顺手,归根结底也只是辅助,真正提升记忆效果的,是你愿意在每天阅读时多花三十秒,把一个词放回它的语境里再存下来。配置一次,之后每天随手就能用,省下来的时间用来复习,比什么都划算。