Web Clipper Interpreter 与常见问题
前面几篇讲的变量都是按固定规则取页面数据,结构一变就失灵。Interpreter 换了个思路,把页面交给大模型,你用自然语言说要什么,模型帮你提取、总结、翻译。这是 Web Clipper 里上限最高也最烧预算的功能。这篇讲完它,再把常见问题的排查方法收个尾。
Interpreter 是什么
Interpreter 让模板支持 prompt 变量,双引号包住一句自然语言:
{{"a summary of the page"}}
{{"a three bullet point summary, translated to French"}}
{{"un resumé de la page en trois points"}}
它能干的事包括,提取特定文本片段、总结或解释内容、转换格式、翻译语言。prompt 变量的结果还能接过滤器,比如把模型的回答变成引用块:
{{"a summary of the page"|blockquote}}
甚至可以要求模型返回 JSON,再用 map、template 这类过滤器精加工:
{{"return a JSON object for each tweet, that includes the author, tweet_text, date in YYYY-MM-DD format, and images array (if there are any)"|map:tweet => ({text: tweet.tweet_text, author: tweet.author, date: tweet.date})|template:"${text}\n— [[@${author}]], [[${date}]]\n"}}
什么时候该用
prompt 变量灵活,但比其他变量慢,还有成本和隐私的考量。判断标准很简单,要提取的数据格式稳定,用 Selector 或 Schema 变量更快更准;格式不稳定,比如想做一个通吃所有读书网站的藏书模板,{{"author of the book"}} 在哪家都能认出作者,这时才上 prompt 变量。
启用 Interpreter
- 打开扩展设置,进入 Interpreter 页面。
- 打开 Enable Interpreter 开关。
- 配置模型提供商和模型,见下文。
- 在模板里加入 prompt 变量。
- 剪辑时,如果模板含 prompt 变量,窗口底部会出现 Interpreter 区域,点 interpret 运行。
点 interpret 后,扩展把页面上下文和模板里所有 prompt 一次性发给所选模型,模型逐条回答,再把结果填回对应变量。整个过程快则毫秒级,慢则三十秒以上,取决于模型和数据量。
Context 上下文优化
上下文(context)是发给模型的页面数据。默认是整页 HTML,数据量大,又慢又贵。两个优化手段:
在 Interpreter 的高级设置里,或在每个模板里,把上下文限定到页面局部,用 Selector 变量:
{{selectorHtml:#main}}
再配合 remove_html、strip_tags、strip_attr 这类过滤器削掉无用标签,进一步压缩长度。上下文越小,跑得越快,花的 token 越少。
模型配置
预设提供商
内置了这些提供商,选好之后去对应平台拿 API key 填上即可:
| 提供商 | 说明 |
|---|---|
| Anthropic | Claude 系列 |
| OpenAI | GPT 系列 |
| Google Gemini | Gemini 系列 |
| DeepSeek | 国产,价格友好 |
| Azure OpenAI | 微软托管的 OpenAI 服务 |
| OpenRouter | 聚合平台,一个 key 用多家模型 |
| Perplexity | 联网搜索见长的模型 |
| xAI | Grok 系列 |
| Meta / Hugging Face | Llama 等开放模型 |
| Ollama | 本机跑模型,见下文 |
选什么模型
剪辑场景任务简单,小模型就够用,速度快、便宜、准确率也够。官方推荐的类型包括 Claude Haiku、Gemini Flash、3B 或 8B 参数的 Llama、OpenAI 的 Mini 系列。
自定义提供商
设置里 Add provider 加提供商,Add model 加模型。Base URL 建议填对方的 chat completions 端点,通常以 /chat/completions 结尾。这意味着任何兼容 OpenAI 接口协议的服务都能接进来。
Ollama 本地模型
想完全离线、零成本、数据不出本机,用 Ollama 在本地跑模型。它不需要 API key。
添加模型时,Model ID 必须和 Ollama 里的模型名完全一致,比如 llama3.2,Display name 可以随便写。
两个常见坑:
- 浏览器扩展直接连 Ollama 会报 403。要先关掉 Ollama,带上允许扩展来源的环境变量再启动:
OLLAMA_ORIGINS=moz-extension://*,chrome-extension://*,safari-web-extension://* ollama serve
- Ollama 默认上下文窗口只有 2048 token,剪长文很容易超限,而且超了之后是静默失败,返回一些无关结果,不报错。解决办法是调大 Ollama 的
num_ctx参数(注意更吃内存),或者按上文的方法缩小 context,比如用选择器限定范围,或{{content|slice:0,1000}}截断。
隐私
Interpreter 的请求直接从你的浏览器发给所选的提供商,不经过 Obsidian 的服务器,Obsidian 也不收集任何请求数据。但用第三方模型就意味着你同意对方的服务条款和隐私政策,介意的话选 Ollama 本地模型。
常见问题排查
剪出来的内容缺东少西
Web Clipper 用 Defuddle 引擎提取正文,偶尔会保守过头,把你要的内容也裁掉了。三种绕过办法:
- 手动选中要存的文本,或者
Ctrl+A(macOS 用Cmd+A)全选再剪,选区优先级最高。 - 用高亮精确圈出想要的部分。
- 给这个网站写个自定义模板,用 selector 变量指定提取范围。
点了 Add to Obsidian 却没反应
- 仓库名不匹配。扩展设置里的 vault 名要和 Obsidian 里显示的仓库名一字不差,注意是名字不是磁盘路径。
- 文件夹路径格式写错了。
- 还不行,打开 Obsidian 的开发者控制台看报错。
Linux 上的问题
Obsidian 完全没打开,检查 obsidian:// 协议有没有在系统里注册。Firefox 用户可能还要在浏览器设置里注册协议。用 Flatpak 安装的话,把 .config/mimeapps.list 里的 x-scheme-handler/obsidian 值改成 md.obsidian.Obsidian.desktop。
Obsidian 打开了但只保存了文件名,这是剪贴板权限问题,浏览器靠剪贴板把内容递给 Obsidian。Wayland 用户要允许 Obsidian 在后台读剪贴板。Hyprland 在配置里加:
# ~/.config/hypr/hyprland.conf
misc {
focus_on_activate = true
}
Sway 在配置里加:
# ~/.config/sway/config
for_window [class="obsidian"] focus_on_window_activation focus
KDE 用户去系统设置的窗口规则里允许 Obsidian 获取焦点。都不行的话,在扩展设置的 General 里开 Legacy mode,绕过剪贴板改用 URI 传数据,代价是可剪辑的字符数会变少。
iOS 和 iPadOS
Safari 里启用扩展的步骤:
- 点地址栏左侧的页面设置按钮(矩形下面几条横线的图标)。
- 点 Manage Extensions。
- 在列表里启用 Obsidian Web Clipper。
- 使用时点地址栏的拼图图标。
再补两个权限,不然功能不全:
- 设置 → Apps → Safari → Extensions,允许 Web Clipper 在所有网站上运行。
- 设置 → Apps → Obsidian,把 Paste from other apps 设为 Allow,否则内容递不进 Obsidian。
还是搞不定
去 官方 Discord 的 Web Clipper 频道提问,或者在 GitHub 仓库提 bug。
速查卡片
| 主题 | 要点 |
|---|---|
| Prompt 变量 | {{"自然语言"}},双引号是标志 |
| 适用场景 | 页面格式不稳定时用,格式稳定优先 Selector / Schema |
| 提速 | 用 selector 缩小 context,小模型更快更省 |
| 本地方案 | Ollama 免 key,注意 OLLAMA_ORIGINS 和 num_ctx 两个坑 |
| 内容缺失 | 选区、高亮、自定义模板三种绕过 |
| 保存失败 | 先查仓库名是否和 Obsidian 里完全一致 |
到这里,Web Clipper 的部分就完整了。回顾一下,入门篇讲了安装和界面,第二篇讲剪辑、高亮和阅读模式,第三篇讲模板和变量,第四篇是过滤器和模板逻辑手册,加上本篇的 Interpreter,足够搭出一套自动化的网页收藏工作流。