exporter コマンドライン
ターミナル、cron、バックアップツール、エージェントから書き出しを実行します。
exporter は、ウインドウなしで動く Exporter の Mac アプリです。アプリで設定した接続、書き出しフォルダ、選択、設定をそのまま使い、同じ書き出しログに記録します。アプリを閉じていても動き、確認を求めることはありません。何かが足りない場合は、終了コード 2 と、どうすればよいかを示す 1 行で実行を止めます。macOS 専用です。
インストール
- Mac App Store から Exporter をインストールして開きます(ダウンロード)。
- アプリ(Apple メモ、Bear、Logseq、連絡先、メッセージ、スクリーンタイム)または書類のフォルダを接続し、書き出しフォルダを選びます(はじめに)。これらのアクセス許可はアプリの中でしか与えられません。
- アプリのコマンドラインのカードで「インストールコマンドをコピー」を押し、ターミナルに一度貼り付けます。
アプリはサンドボックス化されていて PATH に書き込めないため、最後の手順は貼り付けになります。この行は、/opt/homebrew/bin があってあなたの所有であればそこに(sudo 不要)、そうでなければ sudo で /usr/local/bin に exporter をインストールします。もう一度貼り付けても問題なく、既存のものを置き換えます。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、1 日 1 ファイル |
documents |
docs、files、pdf |
書類のカードでチェックを入れた形式 |
形式
--format には markdown(または md)か html を指定します。大文字と小文字は区別しません。それ以外を指定すると error: --format pdf: expected markdown | html と表示され、終了コード 64 で止まります。
- 指定しない場合、
syncは各アプリをそのカードで設定した形式で書き出し(Apple メモと Bear はそれぞれ独自の設定を持ちます)、exportは書き出すアプリの設定の形式で書き出します。現在の設定はexporter help syncとexporter help exportで表示されます - Logseq、連絡先、メッセージ、スクリーンタイムは常に markdown で、書類はカードでチェックを入れた形式で書き出すため、これらでは
--format htmlは注記を出して無視されます:note: logseq export is always markdown, so --format is ignored for this source. - Apple メモはメモごとに 1 つの
.htmlページを書き出し(HTML 形式)、添付ファイルはその隣のattachments/にコピーされてリンクされ、フロントマターは付きません。Bear の HTML はメモのプレーンテキストを<pre>の中に入れただけで、スタイルはなく、添付ファイルの参照も Markdown のテキストのまま残ります。ファイルはコピーされますが、リンクはされません - MCP サーバーは markdown ファイルしか読まないので、HTML だけの書き出しはサーバーからは見えません
- Apple メモと Bear は 1 回の実行で 1 つの形式を書き出し、1 回の同期で両方を書き出せるのは書類だけです。実行で削除されるのはその形式の古いファイルだけなので、形式を切り替えると、もう一方の形式のファイルがフォルダに残ります。両方の形式が必要なら、それぞれに専用のフォルダを用意してください:
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]
| 一覧 | 表示内容 | JSON |
|---|---|---|
sources |
接続の有無にかかわらず各アプリとその件数。書類は表示されません | [{"source": "apple", "connected": true, "notes": 1204}, {"source": "messages", "connected": true, "conversations": 1532}, {"source": "bear", "connected": false}]。logseq は pages、contacts、screen-time は days |
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"}]。kind は granted、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 という名前でアプリごとに 1 つのオブジェクト(それぞれ {"connected": true, "lastExport": "2026-09-11 03:00"}、一度も書き出していなければ null)、destinations(パス)、tier(full または free、Apple メモのロック解除)と freeNotesUsed、contactsTier と freeContactsUsed、messagesTier と freeConversationsUsed、screenTimeTier と freeDaysUsed、appRunning が出力されます。時刻は現地時刻で yyyy-MM-dd HH:mm の形式です。
log
最近の書き出しの実行を新しい順に表示します。アプリに表示されるのと同じログで、すべての書き出しフォルダと許可済みの --dest フォルダから集めます。許可済みフォルダの下に作られた日付入りのフォルダは読まれず、その記録は <folder>/.exporter/ にあります。
exporter log [--last N] [--json]
| フラグ | 動作 | デフォルト |
|---|---|---|
--last N |
表示する実行の数 | 10 |
--json |
実行ごとに 1 つのオブジェクト | オフ |
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"}]。status は clean、warnings(添付ファイルの欠落)、failures のいずれかです。
doctor
ヘッドレスでの書き出しが動くかを確認し、確認項目ごとに 1 行を表示します: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 出力
--json は sync、export、list、status、log で使えます。出力はキーを並べ替えて整形されます。sync と export では --quiet も付けてください。付けないと、JSON の前に進行状況とメモの行が stdout に出力されます。export は概要のオブジェクトを 1 つ、sync はソースごとに 1 つずつ入った {"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 は 1 行だけを表示し、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 に書き込みます。ホームの階層か、その 1 つ下のフォルダ(~/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 サーバーを動かすのはコマンドラインではなくアプリで、Claude、Cursor、VS Code などのクライアントが http://localhost:8744/mcp で書き出したものを検索して読めるようにします。起動から 6 つのツールまで、そのすべては 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