본문으로 건너뛰기

"CLI" 태그로 연결된 12개 게시물개의 게시물이 있습니다.

모든 태그 보기

Obsidian CLI 비교

· 약 5분

이 글은 Obsidian CLI 시리즈의 두 번째 글입니다.

  1. Obsidian CLI 입문: 터미널에서 노트를 다루는 새로운 방법
  2. Obsidian CLI 비교: 공식 CLI vs URI vs 직접 파일 조작 ← 현재 글
  3. Obsidian CLI 자동화: 스크립트와 워크플로우 실전 가이드

세 가지 접근법

Obsidian을 터미널에서 제어하는 방법은 크게 세 가지입니다.

  1. 공식 CLI: Obsidian v1.12부터 내장된 커맨드라인 도구
  2. URI scheme: obsidian:// 프로토콜로 앱에 명령을 전달
  3. 직접 파일 조작: 볼트가 마크다운 디렉토리라는 점을 이용

각각 동작 방식이 다르고, 잘하는 것과 못하는 것이 다릅니다.

공식 CLI

1편에서 자세히 다뤘습니다. 핵심만 정리하면 다음과 같습니다.

동작 방식

obsidian 명령어 → 로컬 소켓 → Obsidian 프로세스 → 볼트 조작

Obsidian 내부 API를 직접 호출합니다. 파일을 이동하면 위키링크가 자동 업데이트되고, 속성 변경은 인덱스에 즉시 반영됩니다.

강점은 기능이 온전하다는 데 있습니다. 데일리 노트, 태스크, 검색, 태그, 템플릿 등 Obsidian 기능을 그대로 쓸 수 있고, 변경이 캐시와 그래프에 즉시 반영되며, 파일을 옮기거나 이름을 바꿔도 위키링크가 자동으로 따라 업데이트됩니다. Templater나 Dataview 같은 플러그인과도 호환됩니다.

대신 앱에 묶입니다. Obsidian 데스크톱 앱이 켜져 있어야 하고, 그래서 SSH로 접속한 원격 서버에서는 쓸 수 없습니다. 기능 자체가 v1.12 이상에서만 제공되므로 이전 버전 사용자는 업데이트가 필요합니다.

대표 명령어

obsidian daily:append content="메모 내용"
obsidian search query="키워드"
obsidian create name="노트명" template="템플릿"
obsidian tags counts

Obsidian URI Scheme

obsidian://로 시작하는 URL을 통해 Obsidian에 명령을 전달하는 방법입니다.

동작 방식

open "obsidian://..." → OS URL 핸들러 → Obsidian 앱 → 동작 실행

macOS에서는 open 명령어, Linux에서는 xdg-open을 사용합니다.

기본 URI

# 특정 노트 열기
open "obsidian://open?vault=MyVault&file=Projects/blog"

# 새 노트 생성
open "obsidian://new?vault=MyVault&name=Meeting/standup&content=회의%20메모"

# 검색
open "obsidian://search?vault=MyVault&query=TODO"

URL이므로 특수문자는 퍼센트 인코딩이 필요합니다. 한글도 마찬가지:

# 한글 포함 시
open "obsidian://open?vault=MyVault&file=$(python3 -c 'import urllib.parse; print(urllib.parse.quote("프로젝트/일정"))')"

Advanced URI 플러그인

obsidian-advanced-uri 플러그인을 설치하면 URI의 기능이 크게 확장됩니다.

# 데일리 노트에 클립보드 내용 추가
open "obsidian://adv-uri?vault=MyVault&daily=true&clipboard=true&mode=append"

# 특정 헤딩 아래에 내용 추가
open "obsidian://adv-uri?vault=MyVault&filepath=Projects/blog.md&heading=TODO&data=새%20항목&mode=append"

# Obsidian 커맨드 실행
open "obsidian://adv-uri?vault=MyVault&commandid=editor:toggle-bold"

URI 방식의 매력은 진입 장벽이 낮다는 데 있습니다. CLI를 따로 활성화하지 않아도 앱만 설치돼 있으면 동작하고, 브라우저나 Alfred, Raycast, Shortcuts 같은 외부 앱에서 호출할 수 있으며, macOS, Windows, Linux를 모두 지원합니다.

한계도 뚜렷합니다. 기본 URI로는 열기, 생성, 검색 정도만 가능하고, 한글이나 특수문자가 들어가면 URL 인코딩이 번거로워집니다. 무엇보다 명령을 보내기만 할 뿐 결과를 터미널로 받아올 수 없고, 고급 기능은 Advanced URI 플러그인에 의존합니다.

직접 파일 조작 (Vault as Code)

Obsidian 볼트의 본질은 마크다운 파일이 들어 있는 디렉토리입니다. 따라서 표준 유닉스 도구로 직접 조작할 수 있습니다.

사용 예시

# 볼트 구조 확인
ls ~/Documents/MyVault/

# 키워드 검색
grep -r "TODO" ~/Documents/MyVault/ --include="*.md"

# 특정 태그가 달린 파일 찾기
grep -rl "#project" ~/Documents/MyVault/ --include="*.md"

# 노트 생성
cat << 'EOF' > ~/Documents/MyVault/TIL/obsidian-cli.md
---
tags: [til, obsidian]
---
# Obsidian CLI
오늘 배운 것
EOF

# 일괄 태그 변경
find ~/Documents/MyVault -name "*.md" -exec sed -i '' 's/#old-tag/#new-tag/g' {} +

fzf와 조합

# fzf로 노트 선택해서 Neovim으로 열기
find ~/Documents/MyVault -name "*.md" | fzf --preview 'head -20 {}' | xargs nvim

이 방식의 장점은 앱에서 완전히 자유롭다는 것입니다. Obsidian이 설치돼 있지 않아도, SSH로 접속한 원격 서버에서도 동작합니다. grep, sed, awk, find 같은 유닉스 도구를 전부 끌어다 쓸 수 있어 유연성이 가장 크고, 수백 개 파일을 일괄 수정하는 대량 처리도 간편합니다.

문제는 Obsidian을 거치지 않는다는 데서 그대로 나옵니다. 변경 사항은 앱을 다시 열거나 리로드해야 인덱스에 반영되고, 파일을 옮기거나 이름을 바꾸면 위키링크가 자동으로 따라오지 않습니다. Templater나 Dataview 같은 플러그인 기능도 적용되지 않으며, 프론트매터 YAML 포맷은 직접 맞춰야 합니다.

종합 비교

기능공식 CLIURI Scheme직접 파일 조작
앱 실행 필요필수필수불필요
원격 서버 사용지원
검색 결과 반환터미널 출력grep 등
위키링크 자동 업데이트지원
인덱스 즉시 반영지원지원지연
플러그인 연동지원일부
템플릿 지원지원Advanced URI수동
대량 일괄 처리루프 필요지원
외부 앱 연동지원
설정 난이도낮음낮음없음

이럴 때는 이것을

  • 터미널에서 빠르게 노트를 쓰고 싶다 → 공식 CLI
  • 브라우저나 Alfred에서 Obsidian을 열고 싶다 → URI scheme
  • 수백 개 파일의 태그를 일괄 수정하고 싶다 → 직접 파일 조작
  • 서버에서 마크다운 파일을 관리하고 싶다 → 직접 파일 조작
  • 데일리 노트를 자동으로 만들고 싶다 → 공식 CLI
  • Shortcuts/Raycast에서 Obsidian 연동 → URI scheme

조합해서 쓰기

실제로는 하나만 쓰기보다 상황에 따라 조합하는 편이 낫습니다.

예시 워크플로우는 다음과 같습니다.

# 1. 공식 CLI로 데일리 노트 작성 (인덱스 반영 + 템플릿 적용)
obsidian daily:append content="## 작업 로그"

# 2. grep으로 볼트 전체에서 미완료 태스크 카운트 (대량 검색에 강함)
grep -rc "\- \[ \]" ~/Documents/MyVault/ --include="*.md" | sort -t: -k2 -rn | head -5

# 3. URI로 특정 노트를 Obsidian GUI에서 열기 (그래프 뷰 등 GUI 기능 활용)
open "obsidian://open?vault=MyVault&file=Projects/dashboard"

각 방법의 강점을 살려서 쓰면 됩니다. CLI로 안 되는 대량 처리는 직접 파일 조작으로, 터미널에서 안 되는 GUI 기능은 URI로 보완합니다.

마치며

세 방법은 맞고 틀리고의 문제가 아니라 각각 잘하는 것이 다르고, 상황에 따라 최적의 도구가 달라집니다.

일상적인 노트 작성에는 공식 CLI가 가장 편하고, 대량 처리에는 직접 파일 조작이, 외부 앱 연동에는 URI scheme이 낫습니다.

다음 글에서는 이 도구들을 활용한 실전 자동화 워크플로우를 정리해요. 셸 별칭, cron, tmux 연동, git hook까지 다룰게요.

참고 자료

Obsidian CLI 입문

· 약 5분

이 글은 Obsidian CLI 시리즈의 첫 번째 글이에요.

  1. Obsidian CLI 입문: 터미널에서 노트를 다루는 새로운 방법 ← 현재 글
  2. Obsidian CLI 비교: 공식 CLI vs URI vs 직접 파일 조작
  3. Obsidian CLI 자동화: 스크립트와 워크플로우 실전 가이드

문제: 노트 하나 쓰려고 GUI를 열어야 하는가

터미널에서 코드를 쓰다가 떠오른 생각을 메모하고 싶을 때가 있습니다.

  1. ⌘+Tab으로 Obsidian 창을 찾습니다
  2. 데일리 노트를 엽니다
  3. 적당한 위치에 커서를 놓고 입력합니다
  4. 다시 ⌘+Tab으로 터미널로 돌아옵니다

한 줄 메모에 4단계. 이런 상황이 반복되면 점점 메모를 안 하게 됩니다.

자동화도 마찬가지입니다. 매일 데일리 노트를 만들고, 커밋 로그를 기록하고, 태그를 정리하고 싶은데, GUI에서는 이걸 스크립트로 만들 수가 없습니다.

2026년 2월, Obsidian v1.12에서 공식 CLI가 추가됐습니다.

Obsidian CLI란

Obsidian CLI는 Obsidian v1.12.0에서 Early Access로 출시되고, v1.12.4부터 모든 사용자에게 무료로 공개된 공식 커맨드라인 인터페이스입니다.

100개 이상의 명령어를 제공하며, 데일리 노트 작성부터 검색, 태그 관리, 노트 생성, 파일 비교까지 Obsidian의 핵심 기능을 터미널에서 사용할 수 있습니다.

동작 구조는 다음과 같습니다:

터미널 명령어 → CLI → 로컬 소켓 → Obsidian 프로세스 → 볼트 조작

CLI가 Obsidian 내부 API를 통해 작동하기 때문에, 파일을 이동하면 위키링크가 자동으로 업데이트되고, 속성을 변경하면 인덱스에 즉시 반영됩니다. 단, Obsidian 데스크톱 앱이 실행 중이어야 합니다 — 헤드리스 도구가 아닙니다.

활성화

1. CLI 활성화

Obsidian을 열고 Settings → General → Command line interface를 켭니다.

화면의 안내에 따라 시스템 PATH에 CLI를 추가하고, 터미널을 재시작합니다.

2. 설치 확인

obsidian --version

정상이면 버전 번호가 출력됩니다.

3. 볼트 확인

# 등록된 볼트 목록
obsidian vault list

여러 볼트를 사용한다면 기본 볼트를 지정해두면 편리합니다:

# 기본 볼트 설정
obsidian vault set-default "MyVault"

이후 명령어에서 vault= 옵션을 생략할 수 있습니다.

데일리 노트

CLI의 킬러 피처입니다. 터미널에서 데일리 노트를 열고, 내용을 추가하고, 태스크를 확인할 수 있습니다.

기본 사용

# 오늘의 데일리 노트 열기 (없으면 자동 생성)
obsidian daily

# 어제 데일리 노트 열기
obsidian daily --offset=-1

# 특정 날짜
obsidian daily --offset=-7

내용 추가

# 데일리 노트에 텍스트 추가
obsidian daily:append content="## 오후 회의 메모
- 배포 일정 확인
- 버그 #234 논의"

태스크 확인

# 오늘 데일리 노트의 태스크 목록
obsidian tasks daily

실전 예제: git 커밋 로그를 데일리 노트에 기록

터미널에서 하루 작업을 마치고, 오늘의 커밋을 데일리 노트에 자동으로 기록할 수 있습니다:

obsidian daily:append content="## Git 커밋 요약
$(git log --oneline --since='08:00' --until='now')"

이 한 줄이면 됩니다. GUI를 열 필요도, 복사-붙여넣기를 할 필요도 없습니다.

검색과 읽기

볼트 검색

# 키워드로 볼트 전체 검색
obsidian search query="프로젝트 일정"

# 특정 경로 안에서만 검색
obsidian search query="배포" path="Work/"

검색 옵션:

옵션설명예시
query키워드 검색obsidian search query="TODO"
tag태그로 필터링obsidian search tag="#project"
path경로 제한obsidian search query="회의" path="Daily/"

노트 읽기

# 노트 내용을 터미널에 출력
obsidian read path="Projects/blog-migration.md"

# 활성 파일 읽기
obsidian read

터미널에서 노트를 읽을 수 있다는 건, grep이나 fzf와 조합할 수 있다는 뜻입니다.

파일 비교

# 노트의 변경 이력 확인
obsidian diff path="Projects/blog-migration.md"

노트 생성

# 새 노트 생성
obsidian create name="Meeting/2026-04-14-standup"

# 템플릿을 적용해서 생성
obsidian create name="Projects/new-feature" template="Templates/project"

# 내용과 함께 생성
obsidian create name="TIL/obsidian-cli" content="# Obsidian CLI
오늘 배운 것: 터미널에서 노트를 다루는 방법"

GUI에서 템플릿을 쓰는 것과 동일하게, template 옵션으로 지정한 템플릿이 적용됩니다. Obsidian 내부 API를 통해 생성되므로 플러그인(Templater 등)도 정상 작동합니다.

태그 관리

# 볼트의 모든 태그와 사용 횟수
obsidian tags counts

출력 예시:

태그노트 수
#project23
#til45
#meeting12
#blog8

특정 태그가 달린 노트를 찾으려면:

# 태그로 노트 목록 조회
obsidian tags list tag="#project"

태그 사용 현황을 한눈에 파악하고, 정리가 필요한 태그를 빠르게 찾을 수 있습니다.

주요 명령어 정리

명령어설명
obsidian daily오늘의 데일리 노트 열기/생성
obsidian daily:append content="..."데일리 노트에 내용 추가
obsidian daily --offset=-1어제 데일리 노트 열기
obsidian tasks daily데일리 노트의 태스크 목록
obsidian search query="..."볼트 전체 검색
obsidian read path="..."노트 내용을 터미널에 출력
obsidian diff path="..."노트 변경 이력 확인
obsidian create name="..."새 노트 생성
obsidian create ... template=...템플릿으로 노트 생성
obsidian tags counts태그별 사용 횟수
obsidian tags list tag="..."태그로 노트 필터링
obsidian vault list볼트 목록
obsidian vault set-default "..."기본 볼트 설정

마치며

Obsidian CLI는 Obsidian을 터미널 시민으로 만들어줍니다. 생각이 떠오른 순간에서 기록까지의 거리가 짧아집니다.

설정에 1분, 첫 명령어 실행에 10초예요. 이미 Obsidian을 쓰고 있다면 한번 켜보세요.

다음 글에서는 공식 CLI 외에 URI scheme과 직접 파일 조작까지 포함해서, Obsidian을 터미널에서 제어하는 세 가지 방법을 비교해요.

참고 자료