Exporter を入手
ドキュメントCLI

exporter コマンドライン

ターミナル、cron、バックアップツール、エージェントから書き出しを実行します。

exporter は、ウインドウなしで動く Exporter の Mac アプリです。アプリで設定した接続、書き出しフォルダ、選択、設定をそのまま使い、同じ書き出しログに記録します。アプリを閉じていても動き、確認を求めることはありません。何かが足りない場合は、終了コード 2 と、どうすればよいかを示す 1 行で実行を止めます。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-notesapplenotesnotes markdown または html
bear markdown または html
logseq 常に markdown
contacts apple-contactsaddressbook 常に markdown
messages imessagechatsconversations 常に markdown
screentime screen-timeusage 常に markdown、1 日 1 ファイル
documents docsfilespdf 書類のカードでチェックを入れた形式

形式

--format には markdown(または 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 メモはメモごとに 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 failedN 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 は pagescontactsscreen-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"}]kindgrantedgranted, volume not mountedexport 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-notesbearlogseqcontactsmessagesscreen-timedocuments という名前でアプリごとに 1 つのオブジェクト(それぞれ {"connected": true, "lastExport": "2026-09-11 03:00"}、一度も書き出していなければ null)、destinations(パス)、tierfull または free、Apple メモのロック解除)と freeNotesUsedcontactsTierfreeContactsUsedmessagesTierfreeConversationsUsedscreenTimeTierfreeDaysUsedappRunning が出力されます。時刻は現地時刻で 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"}]statuscleanwarnings(添付ファイルの欠落)、failures のいずれかです。

doctor

ヘッドレスでの書き出しが動くかを確認し、確認項目ごとに 1 行を表示します:ok、下に fix: の行が付く FAILwarn、情報の場合は --

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]:トピックは syncexportliststatuslogdoctorreportcroninstall。コマンドのヘルプには、現在の設定がデフォルト値として表示されます
  • syncexportlistlogreport--help または -h も受け付けます
  • exporter version(または --version-v)は exporter 3.24 と表示します
  • ターミナルで exporter だけを実行すると概要を表示し、終了コード 64 で終わります

JSON 出力

--jsonsyncexportliststatuslog で使えます。出力はキーを並べ替えて整形されます。syncexport では --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 での --folderlist folders --source bear、ターミナルで exporter だけを実行

ファイルの置き場所

sync は Exporter でアプリごとに設定した書き出しフォルダ(~/Documents/notes~/Documents/messages など)に、export--dest に書き込みます。ホームの階層か、その 1 つ下のフォルダ(~/Documents そのものなど)を指定すると、アプリごとのサブフォルダ(notes-exportmessages-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

Exporter

バージョン 3.24(App Store)

macOS 15 以降

exporter@tinysend.com

© system operator