国庆节10月1日
--


如何使用 Obsidian 笔记同步工具将笔记同步到博客
本文档介绍如何使用博客内置的同步工具,将 Obsidian 笔记库中的内容同步到博客的 content 文件夹。
同步工具是一个 Node.js 脚本,位于 scripts/sync.js。它可以:
content 文件夹1Obsidian 笔记库 博客项目2┌─────────────────────┐ ┌─────────────────────┐3│ posts/ │ │ src/content/ │4│ └── 技术笔记/ │ ── 同步 ──> │ └── posts/ │5│ └── Java.md │ │ └── 技术笔记/ │6│ moments/ │ │ └── Java.md7│ └── 2026-04-21.md │ │ moments/ │8│ bangumi/ │ │ └── 2026-04-21.md │9│ └── anime/ │ │ bangumi/ │10│ └── 巨人.md │ │ └── anime/ │11│ └── 巨人.md │ └── 巨人.md │12│ life/ │ │ life/ │13│ └── health/ │ │ └── health/ │14│ └── workout/ │ │ └── workout/ │15│ └── ... │ │ └── ... │16└─────────────────────┘ └─────────────────────┘同步脚本位于 scripts 目录下:
1scripts/2├── sync.js # 同步主脚本3├── sync.config.js # 配置文件(包含你的实际配置)4├── sync.config.example.js # 配置模板(用于参考)5├── sync.sh # Linux/macOS Shell 脚本6├── sync.ps1 # Windows PowerShell 脚本编辑 scripts/sync.config.js 文件,修改 obsidianVaultPath 为你的 Obsidian 笔记库路径:
1export default {2 // Obsidian 笔记库路径(必须修改!)3 // Windows 示例: 'E:/Obsidian/Vault'4 // macOS/Linux 示例: '/Users/username/Obsidian/Vault'5 obsidianVaultPath: 'B:/GitHub/dumplingandcake_warehouse/网络笔记',6
7 // 博客项目 content 文件夹路径(通常不需要修改)8 projectContentPath: path.resolve(__dirname, '../src/content'),9 // ...10};1# 进入 scripts 目录2cd scripts3
4# 运行同步脚本5node sync.js运行后会显示交互式菜单,引导你完成同步操作。
1🚀 Obsidian 笔记同步工具2
3==================================================4
5请选择同步策略:6
7 1. 跳过已存在 - 只复制新文件,已存在的跳过8 2. 增量同步 - 源文件较新时才更新9 3. 强制覆盖 - 覆盖所有文件10
11请输入选项 (1-3):选择策略后,再选择要同步的内容类型:
1请选择要同步的内容类型:2
3 1. 同步文章4 2. 同步动态5 3. 同步记录6 4. 同步生活7 5. 同步相册8 6. 同步弹幕9 7. 同步导航10 8. 同步全部11 9. 返回上级除了交互模式,还支持命令行参数直接执行:
1# 交互模式(默认 skip 策略)2node sync.js3
4# 增量同步5node sync.js --strategy incremental6
7# 强制同步8node sync.js --force9
10# 仅同步文章11node sync.js --type 文章12
13# 仅同步动态14node sync.js --type 动态15
16# 同步多个类型17node sync.js --type 文章 --type 动态18
19# 同步全部20node sync.js --all| 参数 | 说明 | 示例 |
|---|---|---|
-s, --strategy <策略> | 同步策略 | skip / incremental / force |
-t, --type <类型> | 指定同步类型 | 文章 / 动态 / 记录 等 |
-a, --all | 同步全部类型 | - |
-f, --force | 强制覆盖 | 等同于 --strategy force |
-h, --help | 显示帮助 | - |
支持的类型对应配置中的 type 字段:
| 类型 | 说明 | Obsidian 文件夹 |
|---|---|---|
文章 | 博客文章 | posts/ |
动态 | 日常动态 | moments/ |
记录 | 番组记录 | bangumi/ |
生活 | 生活记录 | life/ |
相册 | 相册 | album/ |
弹幕 | 弹幕留言 | danmu/ |
导航 | 网站导航 | daohang/ |
跳过已存在的文件,只复制新文件。
1适用场景:2- 首次同步3- 只添加新内容,不想修改已有内容仅当源文件较新时才更新目标文件。
1适用场景:2- 在多台设备上编辑,需要合并更改3- 希望自动保持同步状态无条件覆盖所有文件。
1适用场景:2- 想用 Obsidian 版本完全替换博客版本3- 调试时需要重置同步状态sync.config.js 完整配置说明:
1export default {2 // ========================================3 // 主要配置4 // ========================================5
6 // Obsidian 笔记库路径7 obsidianVaultPath: 'B:/GitHub/dumplingandcake_warehouse/网络笔记',8
9 // 博客项目 content 路径(通常不需要修改)10 projectContentPath: path.resolve(__dirname, '../src/content'),11
12 // 是否输出详细信息13 verbose: true,14
15 // 默认同步策略16 syncStrategy: 'skip',17
18 // ========================================19 // 映射规则20 // ========================================21 mappings: [22 {23 type: '文章',24 obsidianFolder: 'posts',25 targetFolder: 'posts',26 datePrefix: false, // 是否添加日期前缀27 },28 {29 type: '动态',30 obsidianFolder: 'moments',31 targetFolder: 'moments',32 datePrefix: true, // moments 需要日期前缀33 dateField: 'published', // frontmatter 中的日期字段34 dateFormat: 'YYYY-MM-DD',35 },36 // ... 其他类型37 ],38};| 字段 | 说明 |
|---|---|
type | 类型名称(用于命令行识别) |
obsidianFolder | Obsidian 中对应的文件夹名称 |
targetFolder | 博客 content 中对应的文件夹 |
datePrefix | 是否自动添加日期前缀 |
dateField | frontmatter 中的日期字段名 |
dateFormat | 日期格式 |
同步工具会自动处理笔记中引用的图片资源:
assets 文件夹,会自动同步到博客对应的 assets 目录1Obsidian 结构:2posts/3└── 我的文章/4 ├── 我的文章.md ← 笔记正文5 └── assets/ ← 笔记图片6 ├── img1.png7 └── img2.jpg8
9同步后博客结构:10src/content/posts/11└── 我的文章/12 ├── 我的文章.md13 └── assets/14 ├── img1.png15 └── img2.jpgnode sync.jsnpm run dev 预览效果1# 批量同步多个类型2node sync.js --type 文章 --type 动态3
4# 强制同步全部(用于重置)5node sync.js --all --force检查以下几点:
assets 文件夹中目前脚本会自动同步文件夹中的所有文件。如需排除,可以:
.obsidian 文件夹(会被自动跳过)如果同一文件在多处被修改,建议:
编辑 sync.config.js 中的 mappings 数组,添加或修改映射规则。
检查 sync.config.js 中的 obsidianVaultPath 配置:
E:/Obsidian/Vault除了直接运行 Node 脚本,还提供了各平台的快捷脚本:
1# 运行同步2.\sync.ps13
4# 带参数运行5.\sync.ps1 -Type "文章" -Strategy "incremental"1# 添加执行权限2chmod +x sync.sh3
4# 运行同步5./sync.sh6
7# 带参数运行8./sync.sh --type 文章 --strategy incremental可以将 Obsidian vault 同步到坚果云等云存储服务,实现多设备同步:
1┌─────────────────────────────────────────────────────────┐2│ 坚果云同步 │3│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │4│ │ PC │◄──►│ 云端 │◄──►│ 手机 │ │5│ └────┬────┘ └─────────┘ └─────────┘ │6│ │ │7│ │ sync.js │8│ ▼ │9│ ┌─────────────────────────────────────┐ │10│ │ Astro 博客 │ │11│ │ src/content/ │ │12│ └─────────────────────────────────────┘ │13└─────────────────────────────────────────────────────────┘如有问题或建议,欢迎反馈!
暂未播放



"生活不是等待暴风雨过去,而是学会在雨中跳舞。"—— 塞维涅夫人


