你的收藏夹里有多少条"稍后阅读"?100 条?500 条?那些你在通勤路上、午饭间隙、睡前刷到的好文章,收藏的瞬间你觉得很重要,三天后连标题都想不起来。问题不在于你不爱学习,而在于"收藏"和"理解"之间缺一条管道。这篇教程教你用一个周末搭起来。

核心思路:30 秒版

如果你只想知道这套系统是什么,一句话:

在微信里把链接发给一个转发插件,后台自动抓正文、用本地大模型生成摘要和标签,最后写成一篇结构化笔记进入你的 Obsidian 收件箱。

整个过程:发链接 5 秒,后台处理 15 秒,你什么都不用管。

工具 用途 费用
Docker Desktop 运行 n8n 容器 免费
n8n(自托管) 自动化编排引擎 免费
微信转发插件 把微信消息转成 webhook 免费
Ollama 本地运行大语言模型 免费
Obsidian 知识库,收纳最终笔记 免费

总月费:0 元。数据全程不出你的电脑。

架构总览

数据怎么从你的手机跑到 Obsidian 里:

手机上看到好内容 → 复制链接 → 发给微信转发插件
                                    |
                                    v
              n8n Webhook (POST /knowledge-inbox)
                                    |
                                    v
                  Normalize Input -- 提取 URL + 备注
                                    |
                                    v
                  Fetch Content -- X 走结构化接口
                                   其他走通用 HTML 提取
                                    |
                                    v
                  Ollama qwen3:8b -- 摘要 + 标签 + 分类
                                    |
                                    v
                  Build Markdown → Write to Obsidian/Inbox/

一共 6 个节点,单工作流,没有分叉。下面逐步搭建。

Step 1 — 启动 n8n

n8n 是一个开源的自动化编排工具,你可以把它理解成免费版的 Zapier,但跑在你自己的电脑上。我们用 Docker 启动它。

安装 Docker

如果没装过,去 Docker 官网 下载 Docker Desktop。Mac / Windows / Linux 都支持。

一行命令启动

docker run -d --name n8n \
  -p 5678:5678 \
  -v n8n_data:/home/node/.n8n \
  -v /path/to/your/obsidian/vault/Inbox:/files/inbox \
  -e N8N_RESTRICT_FILE_ACCESS_TO="/files/inbox" \
  -e N8N_BLOCK_ENV_ACCESS_IN_NODE=false \
  --restart unless-stopped \
  n8nio/n8n

你需要改的只有一个地方:把 /path/to/your/obsidian/vault/Inbox 换成你自己的 Obsidian Vault 下的 Inbox 目录绝对路径。

关键参数解释:

启动后访问 http://localhost:5678,看到 n8n 界面就说明成功了。

Step 2 — 安装 Ollama

Ollama 让你在本地跑大语言模型,不需要 API key,不花钱。

# Mac 用 Homebrew
brew install ollama

# 或者去 ollama.com 下载安装包
# 然后拉取中文模型
ollama pull qwen3:8b

拉完大约 5GB。验证一下:

curl http://localhost:11434/api/tags

能返回包含 qwen3:8b 的 JSON 就说明就绪。

为什么选 qwen3:8b?三个原因:(1) 同尺寸开源模型里中文能力最强;(2) 16GB 内存跑得很顺,单次摘要 3-8 秒;(3) 对"只输出 JSON"的指令遵从度好,减少解析出错。8GB 内存用户建议换 llama3.2:3b(2GB,速度更快,中文稍弱)。

Step 3 — 配置微信转发

这一步的目标:让你在微信里发的链接自动变成一个 HTTP POST 请求打到 n8n。

核心配置只有三个字段:

微信转发插件配置(最小可用版){
  "knowledgeInbox": {
    "enabled": true,
    "webhookUrl": "http://localhost:5678/webhook/knowledge-inbox",
    "successReply": true
  }
}

插件会自动做两件事:从消息里提取第一个 URL,剩余文本作为备注。所以你在微信里发这种格式就够了:

https://example.com/article 这篇关于 Agent 编排的文章值得细读
备注很重要。你发链接时顺手写的那句感受会一起进入笔记。三个月后回头看,那句"当下感受"比 AI 摘要更有价值 — 因为它记录的是你的思考,不是文章的内容。
不用微信也行。n8n 的 webhook 是通用接口。你可以用 Telegram Bot、iOS 快捷指令、浏览器扩展、甚至 curl 来发送链接。微信转发插件只是对中文用户摩擦最低的方案。

Step 4 — 搭建 n8n 工作流

回到 n8n 界面,创建一个新 workflow。整条链路是 6 个节点串联:

4.1 Webhook 节点

添加一个 Webhook 节点,Method 选 POST,Path 填 knowledge-inbox。这就是你的入口 URL:http://localhost:5678/webhook/knowledge-inbox

4.2 Normalize Input

用一个 Code 节点统一解析输入。不管消息是从 query 还是 body 传来的,都提取出四个字段:urlnoteauthorsource

4.3 Fetch Content

这是最容易翻车的环节。我的策略是分平台处理

如果不做这一步处理,你会遇到:标题变成一大串 CSS、正文只有 "JavaScript 不可用"、写进 Inbox 的笔记根本不能看。

微信公众号文章偶尔会失败。部分公众号对非微信浏览器返回空白页。目前的 workaround 是在 fetch 失败时标记为 fetch_failed,备注里的内容仍然会写入笔记。养成发链接时附一句备注的习惯,就是最好的兜底。

4.4 Prepare Prompt + Ollama 摘要

把标题、正文、备注、来源拼成一段 prompt,发给本地 Ollama:

Ollama HTTP Request 配置要点Method: POST
URL:    http://host.docker.internal:11434/api/chat
Body:   {
  "model": "qwen3:8b",
  "messages": [
    {"role": "system", "content": "你是知识整理助手。只输出严格 JSON。"},
    {"role": "user",   "content": "输出 summary/tags/category..."}
  ],
  "stream": false
}

要求 Ollama 输出三个字段:

为什么用 host.docker.internal因为 n8n 跑在 Docker 容器里,容器内的 localhost 是容器自己,不是你的 Mac。host.docker.internal 是 Docker Desktop 提供的特殊域名,指向宿主机。

JSON 解析一定要做 fallback。LLM 不保证输出完美的 JSON — 有时候会多一层 markdown 代码块包装,有时候会夹杂解释文字。做三层防御:去掉 ```json 包装 → 正则提取 {...} → 解析失败用默认值兜底。让管道在 LLM 犯错时也能继续运行。

4.5 Build Markdown + Write

把所有信息拼成一篇 Obsidian 友好的 Markdown:

生成的笔记格式---
title: "文章标题"
date: 2026-05-22T10:30:00.000Z
type: article
category: AI技术
tags:
  - Agent
  - 编排框架
  - 自动化
source: "https://..."
status: inbox
---

> **摘要**: AI 生成的一句话摘要

## 我的备注
你发链接时写的那句话

## 原文内容
(提取后的完整正文)

---
原文链接: https://...

最后用 n8n 的 Write File 节点写入 /files/inbox/(映射到你本地的 Obsidian Inbox)。文件名格式 标题-时间戳.md,保证不重名。

Step 5 — 端到端测试

不要一上来就从手机测。先用 curl 打 webhook,排除网络问题:

curl -X POST http://localhost:5678/webhook/knowledge-inbox \
  -H 'Content-Type: application/json' \
  -d '{
    "url": "https://example.com",
    "note": "第一条 smoke test",
    "author": "test",
    "source": "curl"
  }'

成功的返回:

预期响应{
  "ok": true,
  "title": "Example Domain",
  "category": "未分类",
  "noteFileName": "Example Domain-20260522-xxxxxx.md"
}

然后打开 Obsidian,在 Inbox 里看到新笔记,说明主链路已通。再从微信发真实链接验证完整流程。

分步调试的正确顺序:先跑通 Webhook → Fetch → Write(不加 Ollama),确认能拿到正文并写成文件。然后再加 Ollama 节点。一口气搭完出了问题根本不知道哪个环节坏了。

生成的笔记能做什么

跑通之后,你拿到的不再是收藏夹里一个死链接,而是一篇:

完整的知识流动应该是这样的:

白天刷到内容:
  看到链接 → 发给微信转发插件(5 秒)

后台自动处理:
  转发插件 → n8n 提取正文 → Ollama 摘要打标 → 写入 Inbox

晚上深度工作:
  打开 Obsidian → 看摘要决定是否深读 → AI 助手继续沉淀

第一层是自动收纳,第二层是主动理解。这套系统解决的是第一层 — 让碎片输入不再丢失。第二层需要你自己来,但至少素材已经整整齐齐地等着你了。

进阶方向

主链路跑通之后,可以按需扩展:

但建议:先把文本版跑稳,再加功能。一个能稳定运行的最小系统,比一个功能很多但经常坏的系统有用得多。

总结

收藏夹坟场的问题不在于你收藏得太多,而在于收藏之后没有下一步。这条管道就是那个"下一步" — 自动的、免费的、完全属于你自己的。