← 返回
未分类 中文

Obsidian GitHub Sync

Automated GitHub synchronization for Obsidian vault with conflict detection and notification. Use when the user wants to: - Sync their Obsidian vault to a Gi...
自动将Obsidian库同步到GitHub,支持冲突检测与通知,适用于用户想要将Obsidian库同步到GitHub的场景。
leo-zzl
未分类 clawhub v1.0.0 1 版本 100000 Key: 无需
★ 0
Stars
📥 454
下载
💾 0
安装
1
版本
#latest

概述

Obsidian GitHub Sync

Automated synchronization of Obsidian vault with GitHub repository using git with conflict detection.

Features

  • Automatic sync: git pull --rebase → commit → push
  • Conflict detection: Detects and flags merge conflicts
  • Configurable: Environment variable based configuration
  • Notification: Optional conflict notifications
  • Safe: Uses rebase to maintain clean history

Quick Start

1. Set Environment Variables

export OBSIDIAN_VAULT_DIR="/path/to/your/obsidian-vault"
export GITHUB_REMOTE_URL="git@github.com:username/repo.git"

2. Run Initial Sync

./scripts/obsidian-sync.sh

3. Setup Auto-sync (Cron)

# Daily at 3 AM
0 3 * * * /path/to/scripts/obsidian-sync.sh

# Check conflicts at 9 AM
0 9 * * * /path/to/scripts/check-conflict.sh

Scripts

obsidian-sync.sh

Main synchronization script. Located at scripts/obsidian-sync.sh.

What it does:

  1. Checks for uncommitted changes and commits them
  2. Pulls from GitHub with --rebase
  3. Pushes to GitHub
  4. Creates conflict flag if rebase fails

Environment Variables:

  • OBSIDIAN_VAULT_DIR (required): Path to Obsidian vault
  • GITHUB_REMOTE_URL (required): GitHub repository URL
  • GIT_USER_NAME (optional): Git user name
  • GIT_USER_EMAIL (optional): Git user email
  • SYNC_LOG_FILE (optional): Log file path (default: /tmp/obsidian-sync.log)
  • CONFLICT_FLAG_FILE (optional): Conflict flag path (default: /tmp/obsidian-sync-conflict.flag)

check-conflict.sh

Conflict checking script. Located at scripts/check-conflict.sh.

What it does:

  • Checks if conflict flag file exists
  • Outputs conflict details if found
  • Returns exit code 1 on conflict, 0 on clean state

Workflow

Normal Sync Flow

User modifies notes in Obsidian
        ↓
Cron runs obsidian-sync.sh at 3 AM
        ↓
Auto-commit local changes
        ↓
git pull --rebase origin master
        ↓
git push origin master
        ↓
Sync complete ✓

Conflict Flow

Sync runs
    ↓
pull --rebase fails (remote has divergent changes)
    ↓
Create conflict flag file
    ↓
Exit with error
    ↓
Morning check-conflict.sh detects flag
    ↓
Notify user
    ↓
User resolves conflicts manually
    ↓
Re-run sync

Handling Conflicts

When conflicts occur:

  1. Check conflict flag file location (default: /tmp/obsidian-sync-conflict.flag)
  2. Navigate to vault directory
  3. Resolve conflicts using standard git workflow:
cd $OBSIDIAN_VAULT_DIR
git status                    # See conflicted files
# Edit files to resolve conflicts
git add -A                    # Stage resolved files
git rebase --continue         # Complete rebase
git push origin master        # Push resolved state

Configuration Reference

See references/setup-guide.md for detailed setup instructions including:

  • SSH key configuration
  • Multi-device sync best practices
  • Troubleshooting guide
  • Cron setup examples

Integration Examples

With OpenClaw

# Add sync cron job
openclaw cron add --name "obsidian-sync" \
  --cron "0 3 * * *" \
  --command "/path/to/obsidian-sync.sh"

# Add conflict check
openclaw cron add --name "obsidian-check" \
  --cron "0 9 * * *" \
  --command "/path/to/check-conflict.sh"

With Systemd (Linux)

Create ~/.config/systemd/user/obsidian-sync.service:

[Unit]
Description=Obsidian Vault Git Sync

[Service]
Type=oneshot
Environment="OBSIDIAN_VAULT_DIR=/path/to/vault"
Environment="GITHUB_REMOTE_URL=git@github.com:user/repo.git"
ExecStart=/path/to/obsidian-sync.sh

Create ~/.config/systemd/user/obsidian-sync.timer:

[Unit]
Description=Run Obsidian sync daily at 3 AM

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true

[Install]
WantedBy=timers.target

Enable:

systemctl --user daemon-reload
systemctl --user enable obsidian-sync.timer
systemctl --user start obsidian-sync.timer

Best Practices

  1. Close Obsidian during sync to avoid file lock issues
  2. Commit regularly in Obsidian to reduce conflict chances
  3. Sync before switching devices
  4. Use .gitignore to exclude Obsidian's cache files:
# Obsidian
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.obsidian/plugins/*/data.json
.trash/

License

MIT

版本历史

共 1 个版本

  • v1.0.0 当前
    2026-05-02 09:08 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

productivity

Leo's Reading Notes

leo-zzl
帮助用户将读过书中的观点结构化为系统化笔记,包含原文补充、转述、深度追问和业务关联分析。
★ 0 📥 481

Diet Logger

leo-zzl
记录日常饮食并保存至 Obsidian 库。用户要求记录早饭、午饭、晚饭、加餐、饮食日记等饮食追踪任务时使用。使用 scripts/log_diet.py 脚本确保格式一致。
★ 0 📥 424

Mood Logger

leo-zzl
记录每日心情并存入 Obsidian,使用 scripts/log_mood.py 保持格式统一,支持 1‑10 心情评分、标签和备注。
★ 0 📥 305