# exporter コマンドライン

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

`exporter` は、ウインドウなしで動く Exporter の Mac アプリです。アプリで設定した接続、書き出しフォルダ、選択、設定をそのまま使い、同じ書き出しログに記録します。アプリを閉じていても動き、確認を求めることはありません。何かが足りない場合は、終了コード 2 と、どうすればよいかを示す 1 行で実行を止めます。macOS 専用です。

## インストール

1. Mac App Store から Exporter をインストールして開きます（[ダウンロード](https://exporter.dev/download)）。
2. アプリ（Apple メモ、Bear、Logseq、連絡先、メッセージ、スクリーンタイム）または書類のフォルダを接続し、書き出しフォルダを選びます（[はじめに](https://exporter.dev/docs/getting-started)）。これらのアクセス許可はアプリの中でしか与えられません。
3. アプリのコマンドラインのカードで「インストールコマンドをコピー」を押し、ターミナルに一度貼り付けます。

アプリはサンドボックス化されていて 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 形式](https://exporter.dev/docs/notes#markdown-and-html)）、添付ファイルはその隣の `attachments/` にコピーされてリンクされ、フロントマターは付きません。Bear の HTML はメモのプレーンテキストを `<pre>` の中に入れただけで、スタイルはなく、添付ファイルの参照も Markdown のテキストのまま残ります。ファイルはコピーされますが、リンクはされません
- MCP サーバーは markdown ファイルしか読まないので、HTML だけの書き出しはサーバーからは見えません
- Apple メモと Bear は 1 回の実行で 1 つの形式を書き出し、1 回の同期で両方を書き出せるのは書類だけです。実行で削除されるのはその形式の古いファイルだけなので、形式を切り替えると、もう一方の形式のファイルがフォルダに残ります。両方の形式が必要なら、それぞれに専用のフォルダを用意してください：

```sh
exporter export --dest ~/Backups/notes-md   --format markdown
exporter export --dest ~/Backups/notes-html --format html
```

## sync

アプリで設定した書き出しを、アプリの書き出しフォルダに、差分で一度実行します。

```sh
exporter sync [--source <source>]... [--format markdown|html] [--full] [--json] [--quiet]
```

| フラグ | 動作 | デフォルト |
| --- | --- | --- |
| `--source <source>` | このアプリだけ。複数指定可 | 接続済みのすべてのアプリ。未接続のものはスキップ |
| `--format markdown\|html` | この実行だけで、アプリの設定は変わりません。もう一方の形式と同じ書き出しフォルダに書き出されます。両方を残すには、`export --dest` でそれぞれ別のフォルダに書き出してください | アプリの設定 |
| `--full` | すべてを書き出し直します。書き込む前に削除するのは Exporter が書いたファイルだけで、書き出しフォルダのそれ以外のものは残ります | オフ |
| `--json` | 機械が読める形式の概要 | オフ |
| `--quiet`、`-q` | エラーのみ | オフ |

```sh
exporter sync --source apple
```

```text
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

好きなフォルダへの一度きりの書き出しで、スナップショットやスクリプト向けです。アプリが開いていても問題なく動きます。

```sh
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 はグラフ全体、連絡先はすべてのカード、メッセージはすべての会話、スクリーンタイムはすべての日を書き出し、これらに対するフィルタは注記を出して無視されます。

```sh
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
```

```text
would export 100 apple notes · markdown → /Users/me/Backups/notes
```

## list

```sh
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)` のいずれか |

```sh
exporter list folders --json
```

```json
[{"name": "Work", "notes": 42, "level": 0}]
```

## status

```sh
exporter status [--json]
```

```text
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/` にあります。

```sh
exporter log [--last N] [--json]
```

| フラグ | 動作 | デフォルト |
| --- | --- | --- |
| `--last N` | 表示する実行の数 | 10 |
| `--json` | 実行ごとに 1 つのオブジェクト | オフ |

```text
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`、情報の場合は `--`。

```sh
exporter doctor
```

接続済みの各アプリのデータベースが読めて書き出しフォルダに書き込めること、保存されたすべてのフォルダの許可が有効なこと、すべての `--dest` フォルダに書き込めること、インデックス、インストールされたコマンドを確認します。最後にバージョンのプラン、アプリが動いているかどうか、直近のクラッシュ（あれば）を表示します。終了コード 0 では `all good.`、終了コード 2 では `N problem(s) found.` と表示されます。

## report

診断レポート（アプリのバージョン、macOS とハードウェア、接続の状態、最近の実行、直近のクラッシュ。メモの内容は含みません）を表示し、クリップボードにコピーします。

```sh
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": [...]}` を出力します。

```json
{
  "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` のときは表示しません）。

```text
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 内でそれぞれ買い切りのアプリ内課金でロックを解除します。[価格は国ごと](https://exporter.dev/pricing) に設定されていて、サブスクリプションもウェブでの購入手続きもありません。コマンドラインは実行のたびに購入状況を読み取り、App Store が 5 秒以内に応答しなければ、無料枠のまま実行を続けます。

## スケジュール実行

`exporter help cron` は、あなたの Mac でのコマンドのフルパスを使って次の行を表示します。cron の PATH にインストール先のフォルダが含まれていないことがあるので、表示されたものを使ってください。crontab では `%` を `\%` とエスケープします。

```sh
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 サーバーのページ](https://exporter.dev/docs/mcp) にあります。

## トラブルシューティング

まず `exporter doctor` を実行してください。失敗した確認項目にはそれぞれ修正方法が表示されます。アプリのメッセージについては [ヘルプ](https://exporter.dev/docs/help) をご覧ください。

- `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`

## Related

- [MCP server](https://exporter.dev/docs/mcp): Connect Claude and other agents
- [For agents](https://exporter.dev/agents): Skills, command line and MCP for agents
- [Apple Notes](https://exporter.dev/docs/notes): Folders, fields, HTML and fixes
- [Changelog](https://exporter.dev/changelog): What changed in each version

---

human version: https://exporter.dev/ja/docs/cli
every page: https://exporter.dev/llms.txt
