跳到正文
CHUN折腾
全部项目
已跑通 2026-09-15

微信笔记同步助手:转发给它,笔记自己进 Obsidian

微信里转发一段文字或链接,服务端用 AI 整理成结构化 Markdown 存进飞牛 NAS,Obsidian 里点一下就把新笔记拉进 vault。

开始
2026-09-15
结束
持续使用中
耗时
约 12 小时
花费
0 元
技术栈 Node.jsObsidian 插件飞牛 NASDocker

背景

我日常的信息入口基本就是微信:看到一段话、一篇文章、一个链接,转发给”文件传输助手”就算存下来了。 但存下来之后再也没打开过。

想要的是:转发那一刻就自动变成一条结构化的笔记,落进 Obsidian,将来能搜到、能双链。

方案

三个组件,各干一件事:

微信转发
  → 服务端(Node):接消息、调模型整理成 Markdown
  → 飞牛 NAS:存文件(家里常开,天然做中转)
  → Obsidian 插件:点一下拉取,写进 vault

几个设计取舍:

  • 不做多端同步:Obsidian 自己已经有同步方案,插件只负责”从 NAS 取”
  • AI 只做整理不做总结:把”这段话在讲什么”整理成标题、要点、标签,但不替我下结论
  • 一切落成纯 Markdown:不引入数据库,将来换个工具也不用迁移

过程

服务端收到的原始内容很脏:可能是纯文本、可能是 HTML 片段、可能只有个链接。 先做一层清洗,再喂给模型,要求输出固定结构:

---
title: 自动生成的标题
tags: [标签1, 标签2]
source: 转发来源
date: 2026-09-15
---
正文(保持原意,只做分段和要点化)

插件那边就两个动作:拉清单、下载新文件。

踩坑

现象原因解法
转发图片时笔记里只有一个占位符图片存在微信侧,服务端拿不到原图只处理文字和链接,图片明确的场景手动补
生成的标题经常一模一样模型对短文本倾向套模板提示词里强制”标题必须包含具体对象”,并做去重校验
NAS 上跑起来路径全错部署包用了开发机的绝对路径改成从环境变量读,.env.example 里写清楚
插件偶尔重复导入拉取时只看文件名不看内容,重名会覆盖用内容哈希命名,导入前比对

结果

跑通了,一直在用——它现在是微信和 Obsidian 之间的收件箱。

  • 服务端跑在飞牛 NAS 上,7×24 常开,转发进去就有人处理
  • Obsidian 里点一下拉取,新笔记落进 vault;不是定时自动跑
  • 落地是纯 Markdown + frontmatter,后续搜索、双链、归档都不受工具限制
  • 部署包做了一份,换机器或帮别人装都能直接起

关于”手动点一下”这件事,一开始觉得是没做完,用久了发现这样反而对:

  • 笔记是给”我想看的时候”用的,不需要它随时变化
  • 手动触发 → 我知道这次拉了什么,出了问题也容易定位
  • 省掉了定时任务、状态同步、失败重试这一整层复杂度

复盘

为什么这个小工具活得比很多”更厉害”的项目久:

  • 每个组件只做一件事:接消息、存文件、拉文件,互不耦合,坏一个不影响其他
  • 不碰多端同步:Obsidian 已经有方案,我不重复造轮子,也就少一半故障点
  • 不做定时任务:手动点一下触发,少一整层失败重试和状态同步
  • 落地格式足够”笨”:纯 Markdown 文件。十年后就算工具都换了,文件还在
  • 它解决的是真实摩擦:不是我”觉得应该有”的功能,是每天都要转发东西这个动作

对比一下另一个同类项目(发布工作流)为什么停了:那个去碰了平台的登录态,一旦坏了整条链就断; 而这个从头到尾只依赖”文件 + 一次 HTTP 拉取”,脆弱点少得多。

更新日志

  1. 长期跑在飞牛 NAS 上,Obsidian 侧改成手动拉取,成为日常收件箱。
  2. 打成 NAS 部署包(tar.gz + 一键脚本)。
  3. 服务端跑通,能从转发内容生成 Markdown。