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 时,按以下清单逐项检查:

迁移前 ​

迁移中 ​

迁移后 ​