Obsidian Web Clipper 範本:6 個範例

官方的 Obsidian Web Clipper 免費、開源,而且會直接存進你的 vault。它真正強大的地方是範本:每種網頁一個範本,由觸發條件自動選用,各自決定筆記名稱、資料夾、屬性和內文。

問題是,一個空白的範本編輯器什麼都不會告訴你。這篇文章整理了六個今天就能貼上使用的範本,語法都對照過官方文件和擷取器的原始碼。後面還有一節講觸發條件、變數和篩選器,讓你能自己寫範本。

範本是怎麼組成的

每個範本都有相同的幾個部分:

  • 筆記名稱和筆記位置(例如 Clippings/Videos)
  • 屬性,會變成 YAML frontmatter
  • 筆記內容,也就是 Markdown 內文
  • 觸發條件,用來自動選用範本的網址規則或 schema.org 類型

這四個欄位都能使用變數,例如 {{title}} 或 {{url}},而每個變數都可以再串接篩選器,例如 {{published|date:"YYYY-MM-DD"}}。想知道某個網頁提供哪些變數,打開擷取器並點 ... 圖示,它會列出目前網頁的所有變數。

範本以 .json 檔分享。要匯入時,打開擷取器的設定,進入任一範本,點 Import(或直接把檔案拖進去)。Kepano 在 GitHub 上的 clipper-templates 儲存庫還有十幾個同樣格式的範例。

1. 含逐字稿的 YouTube 影片

這是完整、可直接匯入的 JSON,讓你看一次完整格式。把它存成 youtube.json 再匯入即可。

{
  "schemaVersion": "0.1.0",
  "name": "YouTube",
  "behavior": "create",
  "noteNameFormat": "{{title|safe_name}}",
  "path": "Clippings/Videos",
  "noteContentFormat": "![{{title}}]({{url}})\n\n{% if transcript %}## Transcript\n\n{{transcript}}{% else %}No transcript available.{% endif %}",
  "properties": [
    { "name": "title", "value": "{{schema:name}}", "type": "text" },
    { "name": "channel", "value": "{{schema:author|wikilink}}", "type": "multitext" },
    { "name": "published", "value": "{{schema:uploadDate|date:YYYY-MM-DD}}", "type": "date" },
    { "name": "duration", "value": "{{schema:duration|duration}}", "type": "text" },
    { "name": "source", "value": "{{url}}", "type": "text" },
    { "name": "tags", "value": "videos", "type": "multitext" }
  ],
  "triggers": ["https://www.youtube.com/watch?v="]
}

有兩個細節值得知道。![...]({{url}}) 這一行會把播放器嵌入你的筆記。而 {{transcript}} 並不在官方文件的變數表裡:它來自 Defuddle(擷取器內建的解析器)的 YouTube 擷取模組,只有在影片有字幕時才會存在。所以範本才用 {% if %} 把它包起來。如果你寧可留下一段摘要,而不是一萬字的字幕,可以啟用 Interpreter,改用提示變數,例如 {{"a five bullet summary of the video"}}。

2. X(Twitter)討論串

新版的擷取器能辨識 X 貼文,並把整串討論放進 {{content}},所以這個範本主要只需處理命名和觸發。

觸發條件(用正規表示式,這樣只會在單篇貼文觸發,不會在你的時間軸上觸發):

/^https:\/\/(x|twitter)\.com\/[^\/]+\/status\/\d+/

筆記內容:

{{content}}

Source: [{{author}}]({{url}})

實用的屬性:author = {{author|wikilink}}、source = {{url}}、created = {{date|date:"YYYY-MM-DD"}}、tags = threads。

3. 食譜

食譜網站會發布 schema.org 資料,所以這是六個範本裡最乾淨的一個:不需要 CSS 選擇器,幾乎所有食譜網站都適用。

觸發條件:

schema:@Recipe

筆記內容:

![{{title}}]({{image}})

{{description}}

## Ingredients

{{schema:@Recipe:recipeIngredient|list:task}}

## Steps

{{schema:@Recipe:recipeInstructions[*].text|list:numbered}}

屬性:cuisine = {{schema:@Recipe:recipeCuisine}}、total_time = {{schema:@Recipe:totalTime|duration}}、source = {{url}}。食材會變成待辦清單,下廚時可以邊做邊勾。有些網站會把步驟分成幾個段落,這時 recipeInstructions[*].text 可能會回傳空值,你得調整路徑。

4. ChatGPT 或 Claude 對話

擷取器的解析器有針對 chatgpt.com 和 claude.ai 的擷取模組,所以在新版中,{{content}} 就會包含對話的每一輪。舊的教學會為 ChatGPT 寫一長串 selectorHtml,現在應該已經用不到了。

觸發條件(一行一個):

https://chatgpt.com/c/
https://chatgpt.com/share/
https://claude.ai/chat/

筆記內容:

{{content}}

屬性:title = {{title}}、source = {{url}}、created = {{date|date:"YYYY-MM-DD"}}、tags = ai/conversation。想進一步讓對話紀錄可以隨身帶走,請看:把 ChatGPT 對話存成 Markdown。

5. 維基百科條目

維基百科用一般方式擷取時,會連導覽框和頁尾一起留下來。這個範本直接鎖定條目內文,把雜訊清掉。

觸發條件:

/^https:\/\/[a-z-.]+\.wikipedia\.org\/wiki\/.*$/

筆記內容:

{{selectorHtml:#mw-content-text|remove_html:(".navbox,.printfooter,.side-box,.mw-editsection")|markdown}}

屬性:title = {{title}}、author = [[Wikipedia]]、source = {{url}}、tags = wikipedia。至於一般的部落格文章和新聞,在清單最上方放一個單純用 {{content}} 的範本,就能當作預設的備援範本。

6. 學術論文(arXiv)

arXiv 的摘要頁會提供 citation_* meta 標籤,讓你不必猜測就能拿到乾淨的中繼資料。

觸發條件:

https://arxiv.org/abs/

筆記內容:

## Abstract

{{selector:blockquote.abstract|replace:"Abstract\:":""|trim}}

## Key contributions

{{"three key contributions of this paper, as a bullet list"}}

屬性:title = {{meta:name:citation_title}}、authors = {{selector:.authors a|wikilink|join}}、published = {{meta:name:citation_date|date:("YYYY-MM-DD", "YYYY/MM/DD")}}、pdf = {{meta:name:citation_pdf_url}}。「Key contributions」那一行是提示變數:需要啟用 Interpreter 並設定模型(API 金鑰或本機的 Ollama 模型)。如果你不用 Interpreter,把它刪掉就好。

範本觸發條件詳解

觸發條件分成三種,每行一條規則:

類型範例符合的對象
簡單https://www.youtube.com/watch?v=任何以這段文字開頭的網址
正規表示式/^https:\/\/arxiv\.org\/abs\//符合該規則的網址(. 和 / 要跳脫)
Schemaschema:@Recipeschema.org 類型為 Recipe 的網頁

Schema 觸發條件也可以檢查某個欄位(schema:@Recipe.name)或某個值(schema:@Recipe.name=Cookie)。

順序很重要:清單中第一個符合的範本會勝出,而什麼都不符合的網頁會套用第一個範本。把你的通用文章範本拖到最上方,讓它成為備援範本。

變數與篩選器速查表

五種變數類型:

  • 預設變數:{{title}}、{{url}}、{{author}}、{{published}}、{{content}}、{{highlights}}、{{date}}
  • 提示變數(Interpreter):{{"a summary of the page"}}
  • Meta:{{meta:name:description}}、{{meta:property:og:title}}
  • 選擇器:{{selector:h1}}、{{selectorHtml:#main|markdown}}
  • Schema.org:{{schema:@Recipe:recipeIngredient}}、{{schema:author.name}}

最常用到的篩選器:date、duration、wikilink、list(搭配 task 或 numbered)、join、replace、safe_name、markdown、remove_html、blockquote 和 callout。範本邏輯({% if %}、{% for %}、{% set %},以及 ?? 備援值)可以處理缺漏的資料。

或者,乾脆不用維護範本

範本有一個官方文件沒提到的成本:維護。網站會改版,選擇器會無聲無息地失效,等你發現時,往往已經是幾週後某則筆記一片空白。如果你會從幾十個網站擷取內容,最後等於在維護一個小型程式碼庫。

Minibase 走的是另一條路。它不是每個網站一個範本,而是內建了針對數百個網站的專屬處理(X 討論串、Reddit、GitHub、ChatGPT 和 Claude 對話、技術文件頁面),不需任何設定就能產出附 frontmatter 的乾淨 Markdown。.md 檔會存進 Minibase Vault 資料夾,你可以讓 Obsidian 指向這個資料夾,它們就會像其他筆記一樣出現在你的 vault 裡。

免費方案每月可儲存 20 次,不需要註冊帳號。Minibase+(每月 $5.99 美元或每年 $34.99 美元)加入 20 多個 AI 範本(Obsidian、Academic、Recipe、Cornell notes、Flashcards 等),以及 YouTube、Reels 和 TikTok 的影片轉錄。這裡說明了 YouTube 逐字稿是怎麼運作的。

平心而論:如果你只從少數幾個網站擷取內容,也喜歡慢慢調整筆記,官方擷取器搭配上面的範本非常好用,而且完全免費。如果你不想除錯 CSS 選擇器,Minibase 是省心的選擇,而且兩者同時使用也完全沒問題。我們在 Obsidian Web Clipper 與 Minibase 比較一文中做了並排比較。

常見問題

哪裡可以找到更多 Obsidian Web Clipper 範本? Kepano 在 GitHub 上的 clipper-templates 儲存庫有 YouTube、維基百科、食譜、IMDb、Goodreads、arXiv 等範本。Obsidian 論壇和 Discord 上也有很多社群分享的範本。

Web Clipper 可以儲存 YouTube 逐字稿嗎? 可以,前提是影片有字幕:新版會在 YouTube 頁面提供 {{transcript}} 變數。沒有字幕的影片就沒有逐字稿可以抓。

為什麼我的範本沒有觸發? 通常是順序問題:清單中排在前面的另一個範本先符合了。另外也檢查一下,簡單觸發條件是否和網址開頭完全一致(https://www. 和 https:// 的差別)。

提示變數要花錢嗎? 它們會在你於 Interpreter 中設定的模型上執行。雲端供應商會從你的 API 金鑰計費;透過 Ollama 使用本機模型則是免費的。

Continue reading

準備好更智慧地儲存了嗎?

一鍵將任意網頁轉換為 Markdown。

新增到 Chrome