Skip to content

Logseq 同步

Logseq 和 Obsidian 都是优秀的双向链接笔记工具,且都使用 Markdown 格式存储。本文介绍如何在两者之间切换或同步。

工具对比

特性ObsidianLogseq
存储格式标准 Markdown大纲式 Markdown
编辑模式页面优先块/大纲优先
双向链接
本地存储
图谱视图
移动端
开源

兼容性说明

格式差异

Logseq 使用大纲式结构,每行以 - 开头:

markdown
- 这是一个 Logseq 块
  - 这是子块
  - [[链接]] 到其他页面

Obsidian 使用标准 Markdown:

markdown
这是一个 Obsidian 段落

- 列表项 1
- 列表项 2

[[链接]] 到其他页面

可互通的部分

  • ✅ 双向链接语法 [[页面名]]
  • ✅ 标签语法 #标签
  • ✅ 标准 Markdown 格式
  • ✅ Front Matter 属性

需要注意的部分

  • ⚠️ Logseq 的大纲结构在 Obsidian 中显示为列表
  • ⚠️ Logseq 的块引用格式不同
  • ⚠️ TODO 状态语法略有差异

共享仓库方案

如果想要在两个工具间共享同一仓库:

配置步骤

  1. 创建共享仓库

    text
    MyVault/
    ├── pages/          # Logseq 页面
    ├── journals/       # Logseq 日记
    ├── assets/         # 图片附件
    └── notes/          # Obsidian 笔记
  2. Logseq 配置

    编辑 logseq/config.edn

    edn
    {:directories [{:dir "/notes"}]}
  3. Obsidian 配置

    在设置中指定附件文件夹为 assets

最佳实践

  1. 分离存储:Logseq 用 pages/,Obsidian 用 notes/
  2. 共享资源:图片和附件放在同一 assets/ 文件夹
  3. 统一链接:都使用 [[文件名]] 语法创建链接

迁移方案

从 Logseq 迁移到 Obsidian

  1. 使用转换工具

    可以使用 "Logseq to Obsidian" 等脚本转换格式:

    bash
    # 移除大纲符号
    sed 's/^- //' input.md > output.md
    
    # 调整缩进
    # 需要根据实际情况调整
  2. 手动调整

    • 移除行首的 - 符号
    • 将块引用转换为标准链接
    • 调整 TODO 格式:
      text
      Logseq: - TODO 任务
      Obsidian: - [ ] 任务
  3. 使用插件

    • "Outliner" 插件可以提供类似 Logseq 的大纲体验

从 Obsidian 迁移到 Logseq

  1. 直接打开仓库

    • Logseq 可以直接打开 Obsidian 仓库
    • 标准 Markdown 会被识别为页面内容
  2. 转换为大纲格式

    bash
    # 将段落转换为块
    sed 's/^/- /' input.md > output.md

双向工作流

场景一:Logseq 捕获 + Obsidian 整理

  • 在 Logseq 中快速记录想法(日记模式)
  • 定期整理到 Obsidian 中进行深度加工
  • 使用共享文件夹保持链接有效

场景二:Obsidian 写作 + Logseq 任务

  • Obsidian 用于知识管理和深度写作
  • Logseq 用于任务管理和日常规划
  • 通过标签 #项目名 建立联系

配置文件示例

Logseq 配置 (config.edn)

edn
{
  :project {:home "pages"}
  :directories [{:dir "/notes"}]
  :feature/enable-graph? true
  :feature/enable-journals? true
}

Obsidian 配置

.obsidian/app.json 中:

json
{
  "attachmentFolderPath": "assets",
  "newFileLocation": "notes",
  "useMarkdownLinks": true
}

常见问题

问:可以直接在两个工具中编辑同一文件吗?

答:可以,但需要注意格式兼容性。建议在不同文件夹中分别编辑,通过链接互通。

问:TODO 格式如何统一?

答:

  • Logseq 使用:- TODO / - DONE
  • Obsidian 使用:- [ ] / - [x]
  • 可以使用 "Tasks" 插件统一管理

问:块引用怎么办?

答:Obsidian 的块引用使用 [[文件名#^blockid]] 语法,Logseq 格式不同,需要手动调整。

相关资源

进阶技巧

自动化格式转换脚本

使用 Python 脚本批量转换 Logseq 大纲格式为 Obsidian 标准格式:

python
import os
import re

def logseq_to_obsidian(input_dir, output_dir):
    """将 Logseq 格式笔记批量转换为 Obsidian 格式"""
    os.makedirs(output_dir, exist_ok=True)
    
    for filename in os.listdir(input_dir):
        if not filename.endswith('.md'):
            continue
        
        with open(os.path.join(input_dir, filename), 'r', encoding='utf-8') as f:
            content = f.read()
        
        # 转换大纲符号为标准列表
        # Logseq: - 内容(缩进用空格 + - 开头)
        # Obsidian: 标准嵌套列表
        lines = content.split('\n')
        converted_lines = []
        
        for line in lines:
            # 移除行首多余的 - 符号(Logseq 大纲标记)
            stripped = line.lstrip()
            indent = len(line) - len(stripped)
            
            if stripped.startswith('- '):
                # 保留缩进,但转为标准 Markdown 列表
                # Logseq 用 - 缩进表示层级,Obsidian 用空格缩进
                new_indent = '  ' * (indent // 2)
                converted_lines.append(f'{new_indent}- {stripped[2:]}')
            elif stripped.startswith('- [['):
                # 处理链接行
                new_indent = '  ' * (indent // 2)
                converted_lines.append(f'{new_indent}- {stripped[2:]}')
            else:
                converted_lines.append(line)
        
        # 转换 TODO 状态
        result = '\n'.join(converted_lines)
        result = result.replace('- TODO ', '- [ ] ')
        result = result.replace('- DOING ', '- [ ] 🔄 ')
        result = result.replace('- DONE ', '- [x] ')
        result = result.replace('- NOW ', '- [ ] ⏳ ')
        result = result.replace('- LATER ', '- [ ] 🔜 ')
        
        # 转换块引用(Logseq 格式 → Obsidian 格式)
        result = re.sub(r'\(\(([a-f0-9-]+)\)\)', r'[[#\1]]', result)
        
        with open(os.path.join(output_dir, filename), 'w', encoding='utf-8') as f:
            f.write(result)
        
        print(f'转换完成: {filename}')

# 使用方法
logseq_to_obsidian('./logseq-pages', './obsidian-notes')

Dataview 桥接查询

在 Obsidian 中使用 Dataview 查询 Logseq 风格的笔记:

dataview
TABLE 
  file.ctime AS "创建时间",
  length(file.outlinks) AS "链接数"
FROM "Logseq"
SORT file.ctime DESC
dataview
TASK
FROM "Logseq"
WHERE !completed
SORT due ASC

使用 Metatemplates 统一格式

创建一个 Templater 模板,在 Obsidian 中保持 Logseq 风格的快速记录:

markdown
---
title: {{title}}
date: {{date:YYYY-MM-DD}}
type: logseq-import
source: logseq
tags: []
---

# {{title}}

## 内容

{{cursor}}

## 反向链接

```dataview
LIST
FROM [[]]
```

竞合编辑冲突处理

如果同时使用 Logseq 和 Obsidian 编辑同一仓库,需要注意:

  1. 避免同时编辑同一文件 — 两个应用不会实时检测对方的修改
  2. 使用 Git 管理 — 每次切换工具前提交一次,方便回退
  3. 自动保存间隔 — 两个工具都设置为较短的自动保存间隔
  4. 文件锁定 — 使用 .obsidian/workspace.json.logseq/config 的 gitignore 避免配置冲突
gitignore
# .gitignore 排除工作区配置
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.logseq/config/
.logseq/storage/

迁移检查清单

从 Logseq 迁移到 Obsidian 时,按以下清单逐项检查:

迁移前

  • [ ] 备份 Logseq 仓库完整副本
  • [ ] 导出 Logseq 图谱截图(留作参考)
  • [ ] 记录当前 Logseq 使用的插件列表
  • [ ] 整理 Logseq 的标签体系

迁移中

  • [ ] 运行格式转换脚本
  • [ ] 检查双向链接 [[链接]] 是否正常
  • [ ] 转换 TODO 状态格式
  • [ ] 处理块引用(需手动调整)
  • [ ] 检查图片和附件路径
  • [ ] 转换 properties 格式

迁移后

  • [ ] 在 Obsidian 中安装对应功能的插件
  • [ ] 重建标签体系
  • [ ] 设置日记模板
  • [ ] 配置 Dataview 查询替代 Logseq 查询
  • [ ] 建立新的工作流习惯
  • [ ] 删除或归档 Logseq 仓库