简单说:它是一个浏览器扩展 + 本地通信 + HTML 正文提取 + HTML→Markdown 转换 + 模板渲染 + Obsidian 本地写入的完整流水线,全程在你电脑本地完成,不上传到第三方服务器。下面拆开讲清楚每一步是怎么“达成”的。


一、它是什么(架构)

  • 角色:官方浏览器扩展(Chrome/Firefox/Safari)
  • 组成
    1. 浏览器端:Web Clipper 扩展(捕获网页、提取内容、转 MD、渲染模板)
    2. 本地端:Obsidian 主程序(监听本地协议 obsidian:// 或本地端口,接收扩展发来的 MD 文本,写入本地 vault 的 .md 文件)
  • 本质:浏览器里跑的 JS 工具链 + 本地 Obsidian 提供的“本地文件写入接口”

二、一键剪藏的完整流程(从点图标到生成 MD)

1. 捕获当前网页 HTML

  • 你点扩展图标 → 扩展拿到当前标签页的完整 DOM(HTML 结构)
  • 同时自动抓取元数据:titleurl发布时间作者摘要

2. 智能提取正文(剔除广告/导航/侧边栏)

  • 核心库:官方用的是 Defuddle(或 Readability 类算法)
  • 原理:
    • 分析 DOM 结构:标签嵌套深度、文本密度、链接密度、class/id 命名特征
    • 打分:正文区域通常文本多、链接少、嵌套浅
    • 过滤:去掉 header/footer/nav/aside/广告 iframe 等噪音块
  • 优先级(谁高听谁的):
    1. 手动选中的文字
    2. 你在网页上高亮的内容
    3. 你自定义的模板规则
    4. 默认智能提取(最低)

3. HTML → Markdown 转换

  • 核心库:Turndown.js(业界标准 HTML→MD 库)
  • 过程:
    • 把提取到的干净正文 HTML 喂给 Turndown
    • 按规则转换:
      • <h1># 标题
      • <p> → 普通段落
      • <a href="...">[文本](url)
      • <img src="...">![图片](url)仅存链接,不下载图片
      • <ul>/<ol>- 列表 / 1. 有序列表
  • 结果:得到干净的 Markdown 文本

4. 模板引擎渲染(加 frontmatter/标题/格式)

  • 你可以自定义模板(.md 模板文件),例如:
---
title: {{title}}
url: {{url}}
date: {{date | formatDate:"YYYY-MM-DD"}}
---
# {{title}}
{{content}}
  • 扩展内置变量引擎 + 过滤器
    • {{title}} → 替换为网页标题
    • {{date}} → 替换为当前时间,可过滤格式化
    • {{content}} → 替换为上一步转好的 MD 正文
  • 输出:最终定型的完整 MD 内容(含 frontmatter)

5. 发给本地 Obsidian 并写入文件

  • 关键:不通过云端,本地通信
  • 两种方式:
    1. Obsidian URI 协议(主流)
      • 扩展生成:obsidian://new?vault=你的库名&file=保存路径&content=MD内容
      • 浏览器调用这个链接 → 本地 Obsidian 捕获 → 解析参数 → 写入对应 .md 文件
    2. 本地端口监听(备用)
      • Obsidian 开一个本地端口(如 27123)
      • 扩展发 POST 请求到 localhost:27123 → Obsidian 接收并保存

6. 完成

  • 你在 Obsidian 里看到:新生成的 .md 文件,标题、链接、日期、正文全部到位

三、关键技术点(一句话看懂)

  1. 浏览器扩展能力:访问当前页面 DOM、存储配置、调用本地协议
  2. 正文提取算法:基于 DOM 特征打分,过滤噪音,只留正文
  3. Turndown.js:可靠的 HTML→Markdown 转换
  4. 模板+变量引擎:让输出格式高度自定义
  5. 本地协议通信obsidian:// 是本地安全通道,不泄露数据

四、为什么它能做到“一键、干净、本地”

  • 一键:扩展封装了“捕获→提取→转换→模板→发送”全流程,你只点一下
  • 干净:Defuddle/Turndown 组合,自动去广告、去杂乱格式
  • 本地:所有步骤在浏览器和本地 Obsidian 之间完成,数据不上传第三方服务器

要不要我给你一份可直接复制的自定义模板示例,并标注每个变量的含义,你直接导入就能用?

相关链接

Obsidian + Claude Code 完整真实过程 | Obsidian Web Clipper | Obsidian 加 Hermes 加 Cloud Code | Obsidian 加 Hermes 加 Cloud Code中hermes的意义 | Obsidian 加 Hermes 加 Cloud Code加Copilot Settings插件,能组合出什么惊艳的知识库效果吗