이 글은 Obsidian CLI 시리즈의 세 번째 글이다.
- Obsidian CLI 입문: 터미널에서 노트를 다루는 새로운 방법
- Obsidian CLI 비교: 공식 CLI vs URI vs 직접 파일 조작
- Obsidian CLI 자동화: 스크립트와 워크플로우 실전 가이드 ← 현재 글
왜 자동화하는가
노트를 꾸준히 쓰는 건 어렵다. 데일리 노트를 열고, 양식을 채우고, 태스크를 옮기는 작업은 반복적이고 귀찮다. 귀찮으면 안 하게 되고, 안 하면 쌓이고, 쌓이면 포기한다.
자동화의 핵심은 반복적인 부분을 제거해서 본질(기록)에만 집중하게 만드는 것이다.
Obsidian CLI 덕분에 이 반복 작업을 셸 스크립트로 만들 수 있다.
셸 별칭과 함수
~/.zshrc에 추가해두면 매일 쓰게 되는 것들:
기본 별칭
# 데일리 노트 단축키
alias dn="obsidian daily"
alias dna="obsidian daily:append"
# 빠른 검색
alias qs="obsidian search"
# 태그 현황
alias tags="obsidian tags counts"
memo() — 빠른 메모
타임스탬프와 함께 데일리 노트에 한 줄 메모를 추가한다:
memo() {
local timestamp=$(date +%H:%M)
obsidian daily:append content="- **${timestamp}** $*"
}
# 사용
memo "내일 블로그 배포 일정 확인할 것"
memo "obsidian CLI 포스트 초안 완성"
# 데일리 노트에 이렇게 추가된다:
# - **14:23** 내일 블로그 배포 일정 확인할 것
# - **15:10** obsidian CLI 포스트 초안 완성
til() — TIL 노트 자동 생성
오늘 배운 것(Today I Learned)을 빠르게 기록한다:
til() {
local today=$(date +%Y-%m-%d)
local slug=$(echo "$1" | tr ' ' '-' | tr '[:upper:]' '[:lower:]')
obsidian create name="TIL/${today}-${slug}" content="---
tags: [til]
date: ${today}
---
# $1
$2"
}
# 사용
til "Obsidian CLI" "터미널에서 데일리 노트를 관리할 수 있다"
cron으로 정기 작업
반복 스케줄이 정해진 작업은 cron에 맡긴다.
매일 아침 데일리 노트 자동 생성
# crontab -e
0 9 * * * obsidian daily
매일 오전 9시에 데일리 노트가 자동 생성된다. Obsidian을 열면 이미 오늘 노트가 준비되어 있다.
주간 리뷰 노트
# 매주 금요일 오후 5시에 주간 리뷰 노트 생성
0 17 * * 5 obsidian create name="Review/$(date +\%Y-W\%V)" template="Templates/weekly-review"
전일 태스크 알림
# 매일 오전 9시 30분에 어제 미완료 태스크 확인
30 9 * * * obsidian tasks daily --offset=-1
주의: cron에서 Obsidian CLI가 동작하려면, Obsidian 데스크톱 앱이 이미 실행 중이어야 한다. macOS라면 로그인 시 Obsidian이 자동 실행되도록 설정해두면 된다.
tmux 연동
tmux를 쓰고 있다면, Obsidian CLI와의 조합이 강력하다.
작업용 레이아웃
tmux 패널 하나를 Obsidian 전용으로 쓰면, 코드를 쓰면서 노트를 바로 확인할 수 있다:
┌──────────────────┬──────────────────┐
│ Neovim │ obsidian read │
│ │ │
├──────────────────┼──────────────────┤
│ Shell │ obsidian search │
│ │ │
└──────────────────┴──────────────────┘
좌상: 코드 편집, 우상: 노트 확인, 좌하: 빌드/테스트, 우하: 검색
자동화 스크립트
프로젝트 시작 시 tmux 워크스페이스를 한 번에 구성하는 스크립트:
#!/bin/bash
# obsidian-workspace.sh
SESSION="obsidian-work"
tmux new-session -d -s $SESSION
# 왼쪽: 에디터
tmux send-keys -t $SESSION "nvim" C-m
# 오른쪽: Obsidian 노트
tmux split-window -h -t $SESSION
tmux send-keys -t $SESSION "obsidian read path='Projects/current.md'" C-m
# 하단: 터미널
tmux split-window -v -t $SESSION:0.0
tmux send-keys -t $SESSION "obsidian daily" C-m
tmux attach -t $SESSION
tmux에서 빠른 메모
tmux의 아무 패널에서 memo 함수를 실행하면 작업 흐름을 끊지 않고 메모를 남길 수 있다. 에디터를 떠나지 않아도 된다.
Git 연동
커밋 로그를 데일리 노트에 자동 기록
git의 post-commit hook을 활용한다:
#!/bin/bash
# .git/hooks/post-commit
COMMIT_MSG=$(git log -1 --pretty=format:"%s")
REPO_NAME=$(basename $(git rev-parse --show-toplevel))
obsidian daily:append content="- **commit** \`${REPO_NAME}\`: ${COMMIT_MSG}"
hook에 실행 권한을 부여한다:
chmod +x .git/hooks/post-commit
이제 커밋할 때마다 데일리 노트에 자동으로 기록된다:
- **commit** `blog-hancci`: Obsidian CLI 시리즈 포스트 추가
- **commit** `blog-hancci`: 오타 수정
하루가 끝나면 데일리 노트에 오늘의 작업 이력이 쌓여 있다.
프로젝트 노트 자동 생성
새 프로젝트를 시작할 때 git repo와 Obsidian 노트를 동시에 만드는 함수:
new-project() {
local name=$1
mkdir -p ~/Projects/$name && cd ~/Projects/$name
git init
obsidian create name="Projects/$name" template="Templates/project"
echo "프로젝트 '$name' 생성 완료 — git repo + Obsidian 노트"
}
실전 워크플로우 예제
아침 루틴 스크립트
매일 아침 실행하는 스크립트 하나로 하루를 시작한다:
#!/bin/bash
# morning.sh — 아침 루틴
echo "☀️ 아침 루틴 시작"
# 1. 오늘 데일리 노트 생성
obsidian daily
echo "✓ 데일리 노트 생성"
# 2. 어제 미완료 태스크 확인
echo ""
echo "📋 어제 미완료 태스크:"
obsidian tasks daily --offset=-1
# 3. 태그 현황
echo ""
echo "🏷️ 태그 현황:"
obsidian tags counts
# 실행
chmod +x morning.sh
./morning.sh
프로젝트 대시보드 생성
볼트의 현재 상태를 요약하는 대시보드 노트를 자동 생성한다:
#!/bin/bash
# dashboard.sh — 프로젝트 대시보드 갱신
VAULT=~/Documents/MyVault
TODAY=$(date +%Y-%m-%d)
# 통계 수집
TOTAL_NOTES=$(find $VAULT -name "*.md" | wc -l | tr -d ' ')
TODO_COUNT=$(grep -rc "\- \[ \]" $VAULT --include="*.md" | awk -F: '{sum+=$2} END{print sum}')
DONE_COUNT=$(grep -rc "\- \[x\]" $VAULT --include="*.md" | awk -F: '{sum+=$2} END{print sum}')
# 최근 수정된 노트 (상위 5개)
RECENT=$(find $VAULT -name "*.md" -mtime -1 -exec basename {} .md \; | head -5 | sed 's/^/- /')
# 대시보드 노트 갱신
obsidian create name="Dashboard" content="---
tags: [dashboard]
---
# 프로젝트 대시보드
> 마지막 갱신: ${TODAY}
## 통계
| 항목 | 수 |
|------|-----|
| 전체 노트 | ${TOTAL_NOTES} |
| 미완료 태스크 | ${TODO_COUNT} |
| 완료 태스크 | ${DONE_COUNT} |
## 최근 수정된 노트
${RECENT}
"
cron으로 매일 실행하면 항상 최신 상태의 대시보드를 유지할 수 있다.
마치며
Obsidian CLI의 진짜 가치는 명령어 자체가 아니라 자동화 가능성에 있다.
셸 별칭으로 매일 쓰는 명령을 줄이고, cron으로 반복 작업을 없애고, tmux와 결합해 워크플로우에 녹여넣고, git hook으로 기록을 자동화한다. 이 모든 것이 CLI가 있기 때문에 가능해졌다.
터미널에서 Neovim으로 코드를 쓰고, tmux로 세션을 관리하고, Obsidian CLI로 노트까지 다룬다. GUI로 전환할 이유가 하나 줄었다.