MarsDawn

에이전트를 위한 marsdawn

marsdawn 명령줄 도구를 호출하는 AI 에이전트와 스크립트를 위한 레퍼런스입니다. 이 페이지의 모든 예시는 현재 소스로 빌드한 도구에서 실제로 실행했습니다.

Markdown 파일을 PDF로 바꾸려면 marsdawn export notes.md --json을 실행하고 stdout에서 JSON 객체 하나를 읽으세요. Mermaid 다이어그램과 강조 표시된 코드는 MarsDawn 앱에서와 똑같이 렌더링됩니다. export에는 앱이 필요 없고, open에는 필요합니다.

하는 일

하지 않는 일

export

marsdawn export notes.md --json

notes.md 옆에 notes.pdf를 씁니다. 옵션:

marsdawn export notes.md -o out.pdf --theme classic --paper letter --force --json

성공, 종료 코드 0:

{"diagramErrors":[],"ok":true,"output":"/path/to/out.pdf","pages":1,"paper":"letter","theme":"classic"}

open

marsdawn open notes.md --json
marsdawn open notes.md:120 --json
marsdawn open notes.md --line 120 --json
marsdawn open . --json
marsdawn open notes.md --folder . --background --json

성공, 종료 코드 0:

{"app":"/Applications/MarsDawn.app","ok":true,"opened":[{"line":120,"path":"/path/to/notes.md"}]}

폴더를 준 경우(marsdawn 0.5.1 이상), 종료 코드 0:

{"app":"/Applications/MarsDawn.app","folder":{"path":"/path/to/project","requested":true},"ok":true,"opened":[{"path":"/path/to/project/notes.md"}]}

marsdawn 0.2.x는 opened를 경로 문자열 목록으로 출력했습니다. 두 형식을 모두 처리해야 한다면 marsdawn --version을 확인하세요.

Claude Code가 편집하는 파일 바로 열기

선택해서 쓰는 Claude Code 훅입니다. Claude가 Markdown 파일을 쓰거나 편집하면 그 파일을 MarsDawn에서 백그라운드로 엽니다. 세션마다 파일당 한 번입니다. 요청하지 않은 윈도우는 주의를 빼앗기 때문에, 직접 추가하기 전까지는 꺼져 있고 프로젝트별로 하나씩 켭니다. 셸 명령을 실행할 뿐이라 모델 토큰은 들지 않습니다.

--background를 쓰므로 marsdawn 0.5.1 이상과 MarsDawn 앱이 필요합니다.

다음을 프로젝트의 .claude/hooks/marsdawn-open.sh로 저장하고 chmod +x로 실행 권한을 주세요.

#!/bin/sh
# Claude Code PostToolUse hook: open a Markdown file Claude just wrote or edited in MarsDawn,
# in the background, once per file per session. Never blocks Claude: every path exits 0.
input=$(cat)
file=$(printf '%s' "$input" | /usr/bin/jq -r '.tool_input.file_path // empty' 2>/dev/null)
session=$(printf '%s' "$input" | /usr/bin/jq -r '.session_id // "unknown"' 2>/dev/null)

case "$file" in
  *.md|*.markdown) ;;
  *) exit 0 ;;
esac
[ -f "$file" ] || exit 0
# A hook runs with Claude Code's PATH, which may not include Homebrew's.
marsdawn=$(command -v marsdawn || { [ -x /opt/homebrew/bin/marsdawn ] && echo /opt/homebrew/bin/marsdawn; }) || exit 0
[ -n "$marsdawn" ] || exit 0

# One list per session, so a file opens once however often Claude edits it.
seen="${TMPDIR:-/tmp}/marsdawn-hook/$session"
mkdir -p "$(dirname "$seen")"
grep -qxF "$file" "$seen" 2>/dev/null && exit 0
echo "$file" >> "$seen"

"$marsdawn" open --background "$file" >/dev/null 2>&1 || true
exit 0

그런 다음 프로젝트의 .claude/settings.json에 훅을 추가하세요. 나만 쓰려면 .claude/settings.local.json에 추가하면 됩니다.

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          { "type": "command", "command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/marsdawn-open.sh" }
        ]
      }
    ]
  }
}

실패

--json을 주면 실패 시 stdout에 JSON 객체 하나를 출력하고 해당 코드로 종료합니다.

{"error":"output_exists","message":"/path/to/notes.pdf already exists. Pass --force to replace it.","ok":false}

JSON 스키마

모든 --json 결과에 대한 JSON Schema(draft 2020-12):

환경 변수

요구 사항

설치

Homebrew로 설치합니다. Apple 실리콘에서는 미리 빌드된 bottle을 몇 초 만에 설치하며 Xcode가 필요 없습니다. Intel Mac에서는 marsdawn을 소스에서 컴파일하므로 몇 분이 걸리고 Xcode 26 이상이 필요합니다.

brew tap redtear1115/tap && brew install marsdawn
marsdawn --version

또는 소스에서 직접 빌드하세요. 첫 빌드는 의존성을 가져와 컴파일하므로 역시 몇 분이 걸립니다.

git clone https://github.com/redtear1115/mars-dawn-kit.git
cd mars-dawn-kit
swift build -c release --product marsdawn
.build/release/marsdawn export notes.md --json

marsdawn --version은 0.3.0 같은 버전 번호를 출력하고 코드 0으로 종료합니다.

다음