一个 Obsidian 插件,用于在 Obsidian 笔记和 Wolai 我来数据库之间进行双向同步。支持富文本格式、多种块类型,并提供智能的同步状态管理。
Go to file
Marsway 5592c0ed32
Update README.md
2025-06-09 16:12:44 +08:00
docs init: first revision 2025-06-08 17:21:26 +08:00
src init: first revision 2025-06-08 17:21:26 +08:00
.editorconfig Initial commit 2025-06-03 15:32:33 +08:00
.eslintignore Initial commit 2025-06-03 15:32:33 +08:00
.eslintrc Initial commit 2025-06-03 15:32:33 +08:00
.gitignore init: first revision 2025-06-08 17:21:26 +08:00
.npmrc Initial commit 2025-06-03 15:32:33 +08:00
LICENSE Initial commit 2025-06-03 15:32:33 +08:00
README.md Update README.md 2025-06-09 16:12:44 +08:00
esbuild.config.mjs Initial commit 2025-06-03 15:32:33 +08:00
main.ts init: first revision 2025-06-08 17:21:26 +08:00
manifest.json init: first revision 2025-06-08 17:21:26 +08:00
package.json init: first revision 2025-06-08 17:21:26 +08:00
styles.css init: first revision 2025-06-08 17:21:26 +08:00
sync-records.json init: first revision 2025-06-08 17:21:26 +08:00
todo.md init: first revision 2025-06-08 17:21:26 +08:00
tsconfig.json init: first revision 2025-06-08 17:21:26 +08:00
version-bump.mjs Initial commit 2025-06-03 15:32:33 +08:00
versions.json Initial commit 2025-06-03 15:32:33 +08:00

README.md

Obsidian Wolai 同步插件

一个 Obsidian 插件,用于在 Obsidian 笔记和 Wolai 我来数据库之间进行双向同步。支持富文本格式、多种块类型,并提供智能的同步状态管理。

功能特性

  • 🔄 双向同步: 支持 Obsidian → Wolai 和 Wolai → Obsidian 的双向内容同步
  • 📝 富文本支持: 完整支持粗体、斜体、行内代码、删除线、链接等 Markdown 格式
  • 🧱 多种块类型: 支持标题、段落、列表、代码块、引用、分割线等常见 Markdown 元素
  • 📊 状态管理: 基于 FrontMatter 的智能同步状态跟踪,避免重复同步
  • 📈 API 统计: 实时监控 API 调用次数,防止超出 Wolai API 限制
  • 手动触发: 精确控制同步时机,避免不必要的 API 调用
  • 👀 文件监听: 可选的文件变化监听功能(默认关闭)
  • 🔧 灵活配置: 丰富的配置选项,适应不同使用场景

📋 安装方法

方法一:手动安装(推荐)

  1. 下载插件文件到本地
  2. 将整个插件文件夹复制到你的 Obsidian 库目录下的 .obsidian/plugins/obsidian-wolai-sync/
  3. 重启 Obsidian
  4. 在 Obsidian 设置 → 社区插件中启用 "Wolai Sync" 插件

方法二:开发者安装

  1. 克隆或下载此仓库
  2. 在项目目录中运行 npm install 安装依赖
  3. 运行 npm run build 构建插件
  4. 将生成的 main.jsmanifest.jsonstyles.css 复制到 .obsidian/plugins/obsidian-wolai-sync/

🎯 适用场景

理想使用场景

  • 知识管理系统: 将 Obsidian 中的笔记同步到 Wolai 进行团队协作
  • 内容发布工作流: 在 Obsidian 中编写文档,自动同步到 Wolai 进行发布
  • 双向数据备份: 确保重要内容在两个平台上都有备份
  • 团队协作: Obsidian 中个人编辑Wolai 中团队共享和讨论

Wolai 数据库要求

你的 Wolai 数据库必须包含以下字段:

字段名 类型 必需 说明
标题 文本 对应 Obsidian 文件的标题
同步状态 单选 值包括Synced, Pending

同步状态字段的选项设置:

  • Synced: 已成功同步
  • Pending: 等待同步

⚙️ 配置说明

1. Wolai API 设置

首先需要在 Wolai 开发者中心 创建应用:

  1. 访问 Wolai 开发者中心
  2. 创建新应用
  3. 获取 App IDApp Secret
  4. 将应用连接到你的 Wolai 工作区

在插件设置中填入:

  • 数据库 ID: 从 Wolai 数据库 URL 中获取(如 https://www.wolai.com/your-workspace/database-id 中的 database-id
  • App ID: 从开发者中心获取的应用 ID
  • App Secret: 从开发者中心获取的应用密钥

2. Obsidian 设置

  • 同步文件夹: 指定要同步的 Obsidian 文件夹路径(例如:Notes/Wolai

3. 同步设置

  • 启用文件监听器: 默认关闭,开启后会自动监听文件变化
  • 自动同步: 定时自动同步功能
  • 同步间隔: 自动同步的时间间隔5-120分钟

🚀 使用方法

Obsidian → Wolai 同步

方法一:手动同步(推荐)

  1. 在同步文件夹中创建或编辑 Markdown 文件
  2. 使用命令面板Ctrl/Cmd + P搜索 "Wolai"
  3. 选择以下命令之一:
    • "同步当前文件到 Wolai": 仅同步当前打开的文件
    • "同步所有文件到 Wolai": 同步所有待同步的文件
  4. 插件会自动为文件添加 FrontMatter 并设置同步状态

方法二:文件监听(可选)

  1. 在插件设置中启用 "文件监听器"
  2. 文件修改保存后会自动标记为需要同步
  3. 定期手动触发同步或启用自动同步

Wolai → Obsidian 同步

  1. 在 Wolai 数据库中找到要同步的行
  2. 将该行的 "同步状态" 字段设置为 "Wait For Syncing"
  3. 在 Obsidian 中使用命令 "从 Wolai 同步到 Obsidian"
  4. 插件会自动创建或更新对应的 Obsidian 文件

同步状态说明

插件通过文件的 FrontMatter 管理同步状态:

---
sync_status: Synced
wolai_id: "page_id_from_wolai"
last_sync: "2024-01-15T10:30:00.000Z"
---

状态含义:

  • Pending: 新文件,待首次同步到 Wolai
  • Modified: 文件已修改,需要重新同步到 Wolai
  • Synced: 已成功同步,无需重复操作
  • Wait For Syncing: Wolai 中标记需要同步到 Obsidian

🔧 为什么设计为手动同步?

Wolai API 调用限制

基于 Wolai OpenAPI 的以下限制,我们采用了手动同步的设计:

1. 频率限制

  • Wolai API 对调用频率有严格限制
  • 过于频繁的自动同步可能导致 API 调用被限制
  • 手动触发可以精确控制同步时机

2. 批量限制

  • 创建块: 单次最多创建 20 个块
  • 插入数据: 单次最多插入 20 行数据
  • 分页查询: 单次最多返回 200 条记录

3. Token 管理

  • API Token 需要定期刷新
  • 不当的频繁调用可能导致认证失败
  • 手动同步降低了 Token 管理的复杂性

4. 成本考虑

  • API 调用可能产生费用(根据 Wolai 的定价策略)
  • 避免不必要的自动同步可以控制成本
  • 用户可以选择性地同步重要内容

设计优势

  1. 精确控制: 用户完全掌控何时同步什么内容
  2. 避免冲突: 减少同时编辑导致的同步冲突
  3. 节省配额: 避免浪费 API 调用次数
  4. 稳定可靠: 减少因网络问题导致的同步失败
  5. 调试友好: 便于排查同步问题和错误

📊 API 使用统计

插件内置 API 调用统计功能:

  • 今日调用: 显示当天的 API 调用次数
  • 总调用数: 显示累计 API 调用次数
  • 重置功能: 可以手动重置统计数据
  • 实时更新: 每次 API 调用后自动更新计数

建议将每日 API 调用控制在合理范围内,避免超出 Wolai 的限制。

🛠️ 支持的 Markdown 语法

文本格式

  • 粗体文本: **粗体**__粗体__
  • 斜体文本: *斜体*_斜体_
  • 行内代码: `代码`
  • 删除线: ~~删除线~~
  • 链接: [链接文本](URL)

块级元素

  • 标题: #######
  • 无序列表: - 项目* 项目
  • 有序列表: 1. 项目
  • 代码块: 代码块
  • 引用: > 引用内容
  • 分割线: ---***

富文本混合

支持在同一段落中混合多种格式:

这是一个包含 **粗体**、*斜体*、`代码` 和 [链接](https://example.com) 的段落。

注意事项

  1. 数据备份: 同步前请确保重要数据已备份
  2. 网络连接: 确保网络连接稳定,避免同步中断
  3. 配置检查: 首次使用前请使用 "测试连接" 功能验证配置
  4. 文件格式: 确保文件是标准的 Markdown 格式
  5. 权限设置: 确保 Wolai 应用有访问目标数据库的权限
  6. 并发编辑: 避免在同步过程中同时编辑文件
  7. 特殊字符: 某些特殊字符可能需要转义处理

🐛 故障排除

常见问题

1. 连接失败

  • 检查 App ID 和 App Secret 是否正确
  • 确认应用已连接到 Wolai 工作区
  • 验证网络连接是否正常

2. 同步失败

  • 查看 Obsidian 开发者控制台Ctrl+Shift+I的错误信息
  • 检查 Wolai 数据库字段是否完整
  • 确认文件的 FrontMatter 格式正确

3. 重复同步

  • 检查文件的 sync_status 字段值
  • 确认 Wolai 数据库中的同步状态设置
  • 重置 API 统计后重新尝试

4. 格式问题

  • 确保 Markdown 文件格式标准
  • 检查特殊字符是否正确转义
  • 验证文件编码为 UTF-8

获取帮助

如果遇到问题:

  1. 查看 Obsidian 控制台的详细错误信息
  2. 检查插件设置是否正确配置
  3. 尝试使用 "测试连接" 功能
  4. 查看 Wolai API 文档 获取最新信息

📄 许可证

本项目使用 MIT 许可证 - 查看 LICENSE 文件了解详情。

🤝 贡献

欢迎提交 Issue 和 Pull Request 来改进这个插件!


开发者: Li Wei
主页: https://marsway.red
版本: 1.0.0
兼容性: Obsidian 0.15.0+