obsidian-wolai-sync/README.md

243 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.js`、`manifest.json`、`styles.css` 复制到 `.obsidian/plugins/obsidian-wolai-sync/`
## 🎯 适用场景
### 理想使用场景
- **知识管理系统**: 将 Obsidian 中的笔记同步到 Wolai 进行团队协作
- **内容发布工作流**: 在 Obsidian 中编写文档,自动同步到 Wolai 进行发布
- **双向数据备份**: 确保重要内容在两个平台上都有备份
- **团队协作**: Obsidian 中个人编辑Wolai 中团队共享和讨论
### Wolai 数据库要求
你的 Wolai 数据库**必须**包含以下字段:
| 字段名 | 类型 | 必需 | 说明 |
|--------|------|------|------|
| 标题 | 文本 | ✅ | 对应 Obsidian 文件的标题 |
| 同步状态 | 单选 | ✅ | 值包括Synced, Pending |
**同步状态字段的选项设置**:
- `Synced`: 已成功同步
- `Pending`: 等待同步
## ⚙️ 配置说明
### 1. Wolai API 设置
首先需要在 [Wolai 开发者中心](https://www.wolai.com/developers) 创建应用:
1. 访问 Wolai 开发者中心
2. 创建新应用
3. 获取 **App ID****App 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 管理同步状态:
```yaml
---
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 语法
### 文本格式
- **粗体文本**: `**粗体**``__粗体__`
- *斜体文本*: `*斜体*``_斜体_`
- `行内代码`: `` `代码` ``
- ~~删除线~~: `~~删除线~~`
- [链接](https://example.com): `[链接文本](URL)`
### 块级元素
- 标题: `#``######`
- 无序列表: `- 项目``* 项目`
- 有序列表: `1. 项目`
- 代码块: ````代码块````
- 引用: `> 引用内容`
- 分割线: `---``***`
### 富文本混合
支持在同一段落中混合多种格式:
```markdown
这是一个包含 **粗体**、*斜体*、`代码` 和 [链接](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 文档](https://www.wolai.com/developers) 获取最新信息
## 📄 许可证
本项目使用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
## 🤝 贡献
欢迎提交 Issue 和 Pull Request 来改进这个插件!
---
**开发者**: Li Wei
**主页**: https://marsway.red
**版本**: 1.0.0
**兼容性**: Obsidian 0.15.0+