我的Obsidian使用单一仓库来管理所有的文章,所以当需要发表文章的时候,我希望能有插件可以把文章转换到Quartz的目录下。
这个插件就是帮助我方便的可以对当前仓库obsidian文档一件更新到Quartz仓库。
- 配置管理:用户可以配置目标Quartz仓库的路径
- 文档路径配置:所有转换后的文档将存放在此路径下
- 图片路径配置:所有转换后的图片将存放在此路径下
- 一键转换:通过命令面板执行
Quartz: Send To Content Vault 命令
- 智能处理:可选择是否同时处理引用的文档和图片
- 链接扁平化:自动将嵌套的文档和图片链接扁平化处理
- 批量复制:自动复制所有相关的文档和图片到目标位置
- ObsidianToQuartzPlugin:主插件类,负责插件生命周期管理
- ObsidianToQuartzSettingTab:设置界面,提供配置选项
- ConfirmIncludeReferencesModal:确认对话框,让用户选择处理范围
- FileSystemHelper:文件系统操作辅助类,处理文件读写
- 用户触发:通过命令面板或快捷键触发转换命令
- 配置检查:验证用户是否已配置必要的路径
- 确认处理范围:弹出对话框让用户选择是否包含引用文档
- 内容处理:
- 解析文档中的图片链接
![[image.png]]
- 解析文档中的文档链接
[[document.md]]
- 扁平化所有链接路径
- 文件复制:
- 复制图片到配置的图片路径
- 复制文档到配置的文档路径
- 递归处理引用的文档(如果用户选择)
- 克隆此仓库到你的Obsidian插件目录
- 安装依赖:
npm install
- 构建插件:
npm run build
-
配置路径:
- 打开Obsidian设置
- 找到"Obsidian to Quartz"插件设置
- 配置文档存放路径(如:
/path/to/quartz/content/Articles)
- 配置图片存放路径(如:
/path/to/quartz/content/images)
-
转换文档:
- 打开要转换的文档
- 使用命令面板(Ctrl/Cmd + P)
- 搜索并执行
Quartz: Send To Content Vault
- 选择是否包含引用的文档
- 等待处理完成
- 文档路径:转换后的Markdown文档将存放在此路径下,文件将使用扁平化命名
- 图片路径:转换后的图片文件将存放在此路径下,保持原始文件名
- 图片链接:
![[folder/image.png]] → ![[images/image.png]](包含配置的文件夹路径)
- 文档链接:
[[folder/document.md]] → [[Articles/document.md]](包含配置的文件夹名称)
- 引用处理:如果选择包含引用,会递归处理所有引用的文档
插件会根据配置的路径自动生成正确的链接路径:
图片链接路径提取规则:
- 从配置的图片路径中提取最后两个文件夹名称
- 例如:配置路径
D:\quartz\content\images → 生成链接路径 images
- 例如:配置路径
/home/user/site/assets/images → 生成链接路径 images
文档链接路径提取规则:
- 从配置的文档路径中提取最后一个文件夹名称
- 例如:配置路径
D:\quartz\content\Articles → 生成链接路径 Articles
- 例如:配置路径
/home/user/site/content/Posts → 生成链接路径 Posts
文件覆盖行为:
- 如果目标位置存在同名文件,插件会自动覆盖原文件
- 建议在使用前备份重要文件
obsidian-to-quartz/
├── main.ts # 主插件文件
├── file-system-helper.ts # 文件系统辅助类
├── manifest.json # 插件清单
├── package.json # 项目配置
├── tsconfig.json # TypeScript配置
├── esbuild.config.mjs # 构建配置
└── versions.json # 版本信息
- 链接解析:使用正则表达式解析Obsidian的链接语法
- 文件复制:支持文本和二进制文件的复制
- 路径处理:跨平台路径处理,支持扁平化命名
- 错误处理:完善的错误处理和用户提示
- 插件需要用户手动配置目标路径
- 外部文件系统写入可能受到Obsidian安全限制
- 建议在使用前备份重要文档
- 大量文档处理时可能需要较长时间