六维教程

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

  1. 打开扩展设置,进入 Interpreter 页面。
  2. 打开 Enable Interpreter 开关。
  3. 配置模型提供商和模型,见下文。
  4. 在模板里加入 prompt 变量。
  5. 剪辑时,如果模板含 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 引擎提取正文,偶尔会保守过头,把你要的内容也裁掉了。三种绕过办法:

  1. 手动选中要存的文本,或者 Ctrl+A(macOS 用 Cmd+A)全选再剪,选区优先级最高。
  2. 用高亮精确圈出想要的部分。
  3. 给这个网站写个自定义模板,用 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 里启用扩展的步骤:

  1. 点地址栏左侧的页面设置按钮(矩形下面几条横线的图标)。
  2. 点 Manage Extensions。
  3. 在列表里启用 Obsidian Web Clipper。
  4. 使用时点地址栏的拼图图标。

再补两个权限,不然功能不全:

  • 设置 → 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,足够搭出一套自动化的网页收藏工作流。

上一篇
Web Clipper 过滤器与模板逻辑
下一篇
Vite 为什么需要 Vite