Exporter 받기
문서CLI

exporter 명령줄

터미널, cron, 백업 도구, 에이전트에서 내보내기를 실행합니다.

exporter는 창 없이 실행하는 Exporter Mac 앱입니다. 앱에서 설정한 연결, 내보내기 폴더, 선택 항목, 설정을 그대로 쓰며, 같은 내보내기 로그에 기록합니다. 앱이 닫혀 있어도 동작하고 절대 확인을 요청하지 않습니다. 무언가 빠져 있으면 종료 코드 2와 해야 할 일을 알려주는 한 줄을 출력하고 실행을 멈춥니다. macOS 전용입니다.

설치

  1. Mac App Store에서 Exporter를 설치하고(다운로드) 엽니다.
  2. 앱(Apple 메모, Bear, Logseq, 연락처, 메시지, 스크린 타임)이나 문서 폴더를 연결하고 내보내기 폴더를 선택합니다(시작하기). 이 권한은 앱에서만 부여할 수 있습니다.
  3. 앱의 명령줄 카드에서 “설치 명령 복사”를 누르고 터미널에 한 번 붙여넣습니다.

앱은 샌드박스 안에 있어 PATH에 쓸 수 없기 때문에 마지막 단계가 붙여넣기입니다. 이 줄은 /opt/homebrew/bin 폴더가 있고 내 소유라면 그곳에(sudo 없이), 그렇지 않으면 sudo로 /usr/local/binexporter를 설치합니다. 다시 붙여넣어도 안전하며, 기존 것을 교체합니다. exporter help install은 내 Mac에 맞는 줄을 출력합니다.

소스

--source는 다음 중 하나를 받습니다:

소스 함께 허용되는 값 쓰는 형식
apple apple-notes, applenotes, notes markdown 또는 html
bear markdown 또는 html
logseq 항상 markdown
contacts apple-contacts, addressbook 항상 markdown
messages imessage, chats, conversations 항상 markdown
screentime screen-time, usage 항상 markdown, 하루에 파일 하나
documents docs, files, pdf 문서 카드에서 선택한 형식

형식

--formatmarkdown(또는 md)이나 html을 받으며, 대소문자는 상관없습니다. 그 밖의 값은 error: --format pdf: expected markdown | html을 출력하고 64로 종료합니다.

  • 이 플래그가 없으면 sync는 각 앱을 해당 카드에서 설정한 형식으로 쓰고(Apple 메모와 Bear는 각자 설정이 있습니다), export는 내보내는 앱의 설정으로 씁니다. 현재 설정은 exporter help syncexporter help export에서 확인할 수 있습니다
  • Logseq, 연락처, 메시지, 스크린 타임은 항상 markdown이고 문서는 카드에서 선택한 형식으로 쓰므로, 이들에게는 --format html이 안내 메시지와 함께 무시됩니다: note: logseq export is always markdown, so --format is ignored for this source.
  • Apple 메모는 메모마다 .html 페이지 하나를 쓰고(HTML 형식), 첨부 파일은 옆의 attachments/에 복사해 링크하며, 프런트매터는 없습니다. Bear의 HTML은 스타일 없이 메모의 일반 텍스트를 <pre> 안에 넣은 것이고, 첨부 파일 참조는 Markdown 텍스트로 남습니다: 파일은 복사되지만 링크되지 않습니다
  • MCP 서버는 markdown 파일만 읽으므로, HTML로만 된 내보내기는 서버에 보이지 않습니다
  • Apple 메모와 Bear는 실행마다 한 형식만 쓰며, 한 번의 동기화로 두 형식을 모두 쓰는 것은 문서뿐입니다. 실행은 자기 형식의 오래된 파일만 지우므로, 형식을 바꾸면 다른 형식의 파일이 폴더에 그대로 남습니다. 두 형식을 모두 받으려면 형식마다 폴더를 따로 주세요:
exporter export --dest ~/Backups/notes-md   --format markdown
exporter export --dest ~/Backups/notes-html --format html

sync

앱에서 설정한 내보내기를 앱의 내보내기 폴더로, 증분 방식으로 한 번 실행합니다.

exporter sync [--source <source>]... [--format markdown|html] [--full] [--json] [--quiet]
플래그 하는 일 기본값
--source <source> 이 앱만, 반복 가능 연결된 모든 앱. 연결되지 않은 앱은 건너뜀
--format markdown|html 이번 실행에만 적용되며 앱 설정은 바뀌지 않습니다. 다른 형식과 같은 내보내기 폴더에 저장됩니다. 둘 다 유지하려면 export --dest로 각각 다른 폴더에 내보내세요 앱 설정
--full 모두 다시 내보냅니다. 쓰기 전에 Exporter가 쓴 파일만 지우며, 내보내기 폴더의 다른 파일은 그대로 남습니다
--json 기계가 읽을 수 있는 요약
--quiet, -q 오류만
exporter sync --source apple
apple notes: exporting…
apple notes: 1204 of 1204 exported · 3 removed · 18.2s · markdown → /Users/me/Documents/notes

요약 줄은 <source>: <succeeded> of <selected> exported이고, 해당하면 그 뒤에 N failed, N removed(삭제, 이름 변경, 이동된 항목의 파일), N attachment issues가 오며, 이어서 소요 시간, 형식, 저장한 폴더가 옵니다.

앱이 실행 중이면 sync는 아무것도 내보내지 않고 0으로 종료하며 Exporter is running: real-time sync is live, the export root is already current.를 출력합니다.

export

원하는 폴더로 한 번 내보내며, 스냅샷과 스크립트용입니다. 앱이 열려 있어도 문제없이 실행됩니다.

exporter export --dest <folder> [--source <source>] [--format markdown|html] [--organize folders|tags|smart] [--folder "Name"]... [--tag name]... [--dry-run] [--json] [--quiet]
플래그 하는 일 기본값
--dest <folder> 필수. 앱의 명령줄 카드에서 권한을 준 폴더(“폴더 추가”) 안에 있어야 합니다. ~/Backups에 권한을 주면 그 아래 모든 폴더에 적용됩니다 없음
--source <source> 내보낼 앱 apple
--format markdown|html 이번 실행의 형식 앱 설정
--organize folders|tags|smart Apple 메모만: 메모를 폴더에 배치하는 방식 앱 설정
--folder "Name" 이 Apple 메모 폴더만, 반복 가능, 대소문자 구분 없이 이름 일치 앱에 저장된 선택 항목
--tag name 이 태그만, 반복 가능, Apple 메모 또는 Bear 앱에 저장된 선택 항목
--dry-run 내보낼 내용을 출력만 하고 아무것도 쓰지 않음
--json, --quiet (-q) sync와 같음

--folder--tag가 없으면 Apple 메모와 Bear는 앱에 저장된 선택 항목을 내보냅니다. Logseq는 그래프 전체, 연락처는 모든 카드, 메시지는 모든 대화, 스크린 타임은 모든 날을 내보내며, 이들에게는 필터가 안내 메시지와 함께 무시됩니다.

exporter export --dest ~/Backups/notes-$(date +%F)
exporter export --dest ~/Backups/work --folder "Work" --format html
exporter export --dest ~/Backups/bear --source bear --tag journal
exporter export --dest ~/Backups/people --source contacts
exporter export --dest ~/Backups/papers --source documents
exporter export --dest ~/Backups/notes --dry-run
would export 100 apple notes · markdown → /Users/me/Backups/notes

list

exporter list sources|folders|tags|dests [--source apple|bear] [--json]
list 보여주는 것 JSON
sources 연결 여부와 관계없이 각 앱과 그 개수. 문서는 나오지 않음 [{"source": "apple", "connected": true, "notes": 1204}, {"source": "messages", "connected": true, "conversations": 1532}, {"source": "bear", "connected": false}], logseq는 pages, contacts, screen-timedays
folders 메모 수가 붙은 Apple 메모 폴더, 깊이에 따라 들여쓰기. --source bear는 오류(종료 코드 64) [{"name": "Work", "notes": 42, "level": 0}]
tags 개수가 붙은 태그, 기본은 Apple 메모, --source bear면 Bear [{"name": "journal", "notes": 12}]
dests export --dest가 쓸 수 있는 폴더와 각 앱의 내보내기 폴더 [{"path": "/Users/me/Backups", "kind": "granted"}], kindgranted, granted, volume not mounted, export root (apple-notes) 중 하나
exporter list folders --json
[{"name": "Work", "notes": 42, "level": 0}]

status

exporter status [--json]
apple notes    connected · last export 2026-09-11 03:00
bear           not connected
logseq         not connected
contacts       not connected
messages       connected · last export 2026-09-11 03:01
screen time    not connected
documents      not connected
root (apple-notes)  /Users/me/Documents/notes
root (messages)  /Users/me/Documents/messages
destinations   /Users/me/Backups
version        3.24 · free · 100 of 100 free notes used
messages       free · 10 of 10 free conversations used
app            not running

--json을 쓰면: apple-notes, bear, logseq, contacts, messages, screen-time, documents라는 이름의 앱마다 객체 하나, 각각 {"connected": true, "lastExport": "2026-09-11 03:00"}(한 번도 내보내지 않았으면 null). destinations(경로). tier(full 또는 free, Apple 메모 잠금 해제)와 freeNotesUsed. contactsTierfreeContactsUsed. messagesTierfreeConversationsUsed. screenTimeTierfreeDaysUsed. appRunning. 시각은 현지 시간이며 yyyy-MM-dd HH:mm 형식입니다.

log

최근 내보내기 실행을 최신순으로 보여줍니다. 앱이 보여주는 것과 같은 로그이며, 모든 내보내기 폴더와 권한을 준 --dest 폴더에서 가져옵니다. 권한을 준 폴더 아래에 만들어진 날짜 폴더는 읽지 않으며, 그 기록은 <folder>/.exporter/에 있습니다.

exporter log [--last N] [--json]
플래그 하는 일 기본값
--last N 보여줄 실행 수 10
--json 실행마다 객체 하나
2026-09-11 03:00  apple-notes   1204/1204 exported  3 removed  clean  → /Users/me/Documents/notes

JSON: [{"source", "finishedAt", "selected", "succeeded", "failed", "format", "status", "destination", "prunedFiles", "runError"}]. statusclean, warnings(첨부 파일 누락), failures 중 하나입니다.

doctor

헤드리스 내보내기가 동작할지 확인하고, 확인 항목마다 한 줄을 출력합니다: ok, 아래에 fix: 줄이 붙는 FAIL, warn, 또는 정보를 뜻하는 --.

exporter doctor

연결된 각 앱의 데이터베이스를 읽을 수 있고 내보내기 폴더에 쓸 수 있는지, 저장된 모든 폴더 권한이 유효한지, 모든 --dest 폴더에 쓸 수 있는지, 색인, 그리고 설치된 명령을 확인합니다. 마지막으로 버전 등급, 앱 실행 여부, 마지막 충돌(있었다면)을 보여줍니다. 종료 코드 0이면 all good., 종료 코드 2면 N problem(s) found.를 출력합니다.

report

진단 보고서(앱 버전, macOS와 하드웨어, 연결 상태, 최근 실행, 마지막 충돌. 메모 내용은 포함되지 않음)를 출력하고 클립보드에 복사합니다.

exporter report [--send] [--email <addr>]
플래그 하는 일 기본값
--send 보고서를 저희에게 보내고 sent. 또는 offline: queued, will send on the next run or app launch.를 출력
--email <addr> 답장할 수 있도록 내 주소를 추가 없음

help와 version

  • exporter help [topic]: 주제는 sync, export, list, status, log, doctor, report, cron, install. 명령의 도움말은 현재 설정을 기본값으로 보여줍니다
  • sync, export, list, log, report--help-h도 받습니다
  • exporter version(또는 --version, -v)은 exporter 3.24를 출력합니다
  • 터미널에서 exporter만 입력하면 개요를 출력하고 64로 종료합니다

JSON 출력

--jsonsync, export, list, status, log에서 동작합니다. 출력은 키가 정렬된 보기 좋은 형식입니다. syncexport에는 --quiet를 추가하세요. 없으면 JSON 앞에 진행 상황과 안내 줄이 stdout에 출력됩니다. export는 요약 객체 하나를, sync는 소스마다 하나씩 담긴 {"runs": [...]}를 출력합니다:

{
  "attachmentIssues" : 0,
  "durationSec" : 18.2,
  "failed" : 0,
  "format" : "markdown",
  "root" : "/Users/me/Documents/notes",
  "runError" : null,
  "selected" : 1204,
  "source" : "apple-notes",
  "status" : "clean",
  "succeeded" : 1204
}

앱이 실행 중이면 sync는 한 줄만 출력하고 JSON은 출력하지 않습니다. 오류는 error: <what happened and what to do> 형식으로 stderr에 출력됩니다.

종료 코드

코드 의미
0 정상. 무료 한도로 중간에 멈춘 실행도 포함
1 내보내기 실패: 항목 하나가 실패했거나, 실행 중 오류가 났거나, 항목을 선택했는데 하나도 쓰지 못함
2 설정 필요: 앱이 연결되지 않음, 폴더 권한 없음, 폴더나 태그를 찾을 수 없음, 내보낼 것이 없음. doctor가 문제를 발견함. 설치된 명령이 이전 형식이거나 가리키는 앱이 없어짐
64 사용법 오류: 알 수 없는 명령이나 플래그, 값이 없거나 잘못됨, Bear에 --folder, list folders --source bear, 터미널에서 exporter만 입력

파일이 저장되는 곳

sync는 Exporter에서 각 앱에 설정한 내보내기 폴더(예: ~/Documents/notes, ~/Documents/messages)에 쓰고, export--dest에 씁니다. 홈 폴더 수준이나 그 한 단계 아래의 폴더(예: ~/Documents 자체)를 고르면 앱마다 하위 폴더(notes-export, messages-export 등)가 생기고, 더 깊은 폴더는 그대로 사용됩니다. 요약 줄(화살표 뒤)과 JSON의 root가 실제 폴더를 보여줍니다.

각 내보내기 폴더에는 .exporter/last-export.json.exporter/last-export.md(마지막 실행), .exporter/history/(최근 50번의 실행)가 있습니다. Apple 메모, 연락처, 메시지, 스크린 타임, 문서는 실행이 쓴 모든 파일을 기록한 .exporter/files.json도 유지합니다. 다음 실행은 여기 기록된 파일 중 더 이상 어떤 항목도 만들지 않는 파일만 삭제합니다(스크린 타임은 날짜 파일을 절대 지우지 않습니다). Bear와 Logseq는 다음 실행에서 삭제하거나 이름을 바꾸거나 태그를 바꾼 메모의 파일도 지웁니다. Apple 메모와 Logseq 내보내기에는 Obsidian 보기가 담긴 bases/도 생깁니다.

무료 한도

명령줄의 한도는 앱과 같습니다:

무료
Apple 메모 메모 100개
연락처 연락처 100개
메시지 최근 대화 10개
스크린 타임 첫 동기화 때의 최근 10일, 그 날짜들만: 이후 날짜에는 잠금 해제가 필요합니다
문서 최근 수정한 문서 10개
Bear와 Logseq 무제한

이미 내보낸 항목은 계속 무료로 다시 동기화되며, 한도는 새 항목만 막습니다. 한도에 도달한 실행도 가능한 만큼 내보내고 0으로 종료하며, 안내 메시지를 출력합니다(--quiet에서는 출력하지 않음):

note: 42 note(s) skipped: free version limit (100 of 100 free notes). upgrade in the app to export everything.
note: 58 contact(s) skipped: free version limit (100 of 100 free contacts). unlock contacts in the app to export everything.
note: 1522 conversation(s) skipped: free version limit (10 of 10 free conversations). unlock messages in the app to export everything.
note: 11 day(s) skipped: free version limit (10 of 10 free days). unlock screen time in the app to archive every day.
note: 5 document(s) skipped: free version limit (10 of 10 free documents). unlock documents in the app to convert every one.

status --json에는 Apple 메모, 연락처, 메시지, 스크린 타임의 등급과 사용한 개수가 들어 있습니다. 한도가 있는 각 앱은 Exporter 안에서 각자의 일회성 앱 내 구매로 잠금 해제되며, 국가별로 가격이 다르고, 구독도 웹 결제도 없습니다. 명령줄은 실행할 때마다 구매 내역을 읽으며, App Store가 5초 안에 응답하지 않으면 무료 한도로 실행을 계속합니다.

예약 실행

exporter help cron은 내 Mac에 설치된 명령의 전체 경로가 들어간 다음 줄을 출력합니다. cron의 PATH에 설치 폴더가 없을 수 있으므로 그 줄을 사용하세요. crontab에서는 %\%로 이스케이프합니다:

0 3 * * * exporter sync
0 3 * * * exporter export --dest ~/Backups/notes-$(date +\%F)

Carbon Copy Cloner와 다른 백업 도구에서는 exporter sync를 사전 스크립트로 실행하고 종료 코드에 따라 분기하세요. 이 명령은 로그인한 사람이 없어 macOS가 일시 중단하더라도 내보내기가 끝날 때까지 연결된 상태를 유지합니다. 앱이 실행 중이면 창이 열려 있든 닫혀 있든 sync는 아무것도 하지 않습니다. 실시간 동기화가 이미 폴더를 최신 상태로 유지하고 있기 때문입니다.

MCP 서버

명령줄이 아니라 앱이 로컬 MCP 서버를 http://localhost:8744/mcp에서 실행하며, Claude, Cursor, VS Code 등의 클라이언트가 내보낸 파일을 검색하고 읽을 수 있게 합니다. 시작하는 방법부터 도구 여섯 개까지 모든 내용은 MCP 서버 페이지에 있습니다.

문제 해결

먼저 exporter doctor를 실행하세요. 실패한 확인 항목마다 해결 방법을 출력합니다. 앱의 메시지는 도움말에서도 다룹니다.

  • X is not authorized: 명령줄 카드에서 해당 폴더(또는 상위 폴더)를 추가한 다음 다시 실행하세요. exporter list dests로 권한을 준 폴더를 확인할 수 있습니다
  • apple notes is not set up. open Exporter and connect Apple Notes + an export folder.(다른 앱도 마찬가지): Exporter에서 연결하세요
  • sync가 Exporter가 실행 중이라고 출력함: 할 일이 없습니다. 앱이 폴더를 최신 상태로 유지합니다. 별도 사본이 필요하면 export --dest를 사용하세요
  • no notes were written. run "exporter doctor" to check folders and permissions.: 실행이 메모를 선택했지만 하나도 쓰지 못했습니다. doctor가 폴더와 권한을 확인합니다
  • bookmark broken: 폴더가 이동 또는 삭제되었거나, 볼륨이 마운트되지 않았습니다. 앱에서 폴더를 다시 선택하세요
  • 설치된 명령이 이전 형식이거나, cron과 백업 도구가 종료 코드 19를 받음: 설치 명령을 다시 붙여넣으세요
  • 명령을 설치한 뒤 앱을 옮김: 설치 명령을 다시 붙여넣으세요
  • 잠금 해제했는데 실행 결과가 무료로 나옴: 구매 확인은 최대 5초를 기다린 뒤 무료 한도로 계속합니다. 다시 실행하세요
  • doctor로 설명되지 않는 문제: exporter report --send --email you@example.com

Exporter

버전 3.24 (App Store)

macOS 15 이상

exporter@tinysend.com

© system operator