# Wiersz poleceń exporter

Uruchamiaj eksporty z Terminala, crona, narzędzi do kopii zapasowych i agentów.

`exporter` to aplikacja Exporter na Maca uruchomiona bez okna. Używa tych samych połączeń, folderów eksportu, wyboru i ustawień, które skonfigurowałeś w aplikacji, i zapisuje do tego samego dziennika eksportu. Działa, gdy aplikacja jest zamknięta, i nigdy o nic nie pyta: gdy czegoś brakuje, przerywa uruchomienie z kodem wyjścia 2 i jednym wierszem z informacją, co zrobić. Tylko macOS.

## Instalacja

1. Zainstaluj Exportera z Mac App Store ([pobierz](https://exporter.dev/download)) i otwórz go.
2. Połącz aplikację (Notatki Apple, Bear, Logseq, Kontakty, Wiadomości lub Czas przed ekranem) albo folder Dokumentów i wybierz jego folder eksportu ([pierwsze kroki](https://exporter.dev/docs/getting-started)). Te uprawnienia można nadać tylko w aplikacji.
3. Na karcie Wiersz poleceń w aplikacji naciśnij „kopiuj polecenie instalacji” i wklej je raz w Terminalu.

Aplikacja działa w sandboksie i nie może zapisywać w twoim PATH, dlatego ostatni krok to wklejenie. Wiersz instaluje `exporter` w `/opt/homebrew/bin`, gdy ten folder istnieje i należy do ciebie (bez sudo), w przeciwnym razie w `/usr/local/bin` przez sudo. Ponowne wklejenie jest bezpieczne; zastępuje to, co tam było. `exporter help install` wypisuje wiersz dla twojego Maca.

## Źródła

`--source` przyjmuje jedno z tych:

| źródło | przyjmuje też | zapisuje |
| --- | --- | --- |
| `apple` | `apple-notes`, `applenotes`, `notes` | markdown lub html |
| `bear` | | markdown lub html |
| `logseq` | | zawsze markdown |
| `contacts` | `apple-contacts`, `addressbook` | zawsze markdown |
| `messages` | `imessage`, `chats`, `conversations` | zawsze markdown |
| `screentime` | `screen-time`, `usage` | zawsze markdown, jeden plik na dzień |
| `documents` | `docs`, `files`, `pdf` | formaty zaznaczone na karcie Dokumenty |

## Formaty

`--format` przyjmuje `markdown` (lub `md`) albo `html`; wielkość liter nie ma znaczenia. Wszystko inne przerywa działanie z `error: --format pdf: expected markdown | html` i kodem 64.

- bez tej flagi `sync` zapisuje każdą aplikację w formacie ustawionym na jej karcie (Notatki Apple i Bear mają każde własny), a `export` zapisuje zgodnie z ustawieniem eksportowanej aplikacji; `exporter help sync` i `exporter help export` pokazują bieżące ustawienia
- Logseq, Kontakty, Wiadomości i Czas przed ekranem są zawsze w markdown, a Dokumenty zapisują formaty zaznaczone na swojej karcie, więc dla nich `--format html` jest ignorowane z komunikatem: `note: logseq export is always markdown, so --format is ignored for this source.`
- Notatki Apple zapisują jedną stronę `.html` na notatkę ([format HTML](https://exporter.dev/docs/notes#markdown-and-html)), z załącznikami skopiowanymi do `attachments/` obok niej i linkowanymi, bez frontmattera. HTML z Bear to zwykły tekst notatki w `<pre>`, bez stylów, z odwołaniami do załączników zostawionymi jako tekst Markdown: pliki są kopiowane, a nie linkowane
- serwer MCP czyta tylko pliki markdown, więc eksport wyłącznie w HTML jest dla niego niewidoczny
- Notatki Apple i Bear zapisują jeden format na uruchomienie; tylko Dokumenty zapisują oba w jednej synchronizacji. Uruchomienie usuwa tylko stare pliki własnego formatu, więc po przełączeniu pliki drugiego formatu zostają w folderze. Dla obu formatów daj każdemu własny folder:

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

## sync

Uruchamia eksport skonfigurowany w aplikacji, raz, przyrostowo, do folderów eksportu aplikacji.

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

| flaga | co robi | domyślnie |
| --- | --- | --- |
| `--source <source>` | tylko ta aplikacja, można powtarzać | każda połączona aplikacja; niepołączone są pomijane |
| `--format markdown\|html` | tylko dla tego uruchomienia, ustawienie w aplikacji się nie zmienia. Trafia do tego samego folderu eksportu co drugi format; aby zachować oba, eksportuj każdy do osobnego folderu przez `export --dest` | ustawienie z aplikacji |
| `--full` | eksportuje wszystko ponownie. Przed zapisem usuwa tylko pliki zapisane przez Exporter; wszystko inne w folderze eksportu zostaje | wyłączone |
| `--json` | podsumowanie czytelne dla maszyn | wyłączone |
| `--quiet`, `-q` | tylko błędy | wyłączone |

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

```text
apple notes: exporting…
apple notes: 1204 of 1204 exported · 3 removed · 18.2s · markdown → /Users/me/Documents/notes
```

Wiersz podsumowania to `<source>: <succeeded> of <selected> exported`, potem, jeśli występują, `N failed`, `N removed` (pliki elementów, które zostały usunięte, przemianowane lub przeniesione), `N attachment issues`, a na końcu czas trwania, format i zapisany folder.

Jeśli aplikacja działa, `sync` niczego nie eksportuje, kończy się kodem 0 i wypisuje `Exporter is running: real-time sync is live, the export root is already current.`

## export

Jednorazowy eksport do wybranego folderu, dla migawek i skryptów. Działa bez problemu, gdy aplikacja jest otwarta.

```sh
exporter export --dest <folder> [--source <source>] [--format markdown|html] [--organize folders|tags|smart] [--folder "Name"]... [--tag name]... [--dry-run] [--json] [--quiet]
```

| flaga | co robi | domyślnie |
| --- | --- | --- |
| `--dest <folder>` | wymagana. Musi leżeć w folderze dodanym na karcie Wiersz poleceń w aplikacji („dodaj folder…”). Uprawnienie dla `~/Backups` obejmuje każdy folder pod nim | brak |
| `--source <source>` | aplikacja do eksportu | `apple` |
| `--format markdown\|html` | format dla tego uruchomienia | ustawienie z aplikacji |
| `--organize folders\|tags\|smart` | tylko Notatki Apple: jak notatki są rozłożone w folderach | ustawienie z aplikacji |
| `--folder "Name"` | tylko ten folder Notatek Apple, można powtarzać, nazwa bez rozróżniania wielkości liter | wybór zapisany w aplikacji |
| `--tag name` | tylko ten tag, można powtarzać, Notatki Apple lub Bear | wybór zapisany w aplikacji |
| `--dry-run` | wypisuje, co zostałoby wyeksportowane, niczego nie zapisuje | wyłączone |
| `--json`, `--quiet` (`-q`) | jak przy sync | wyłączone |

Bez `--folder` ani `--tag` Notatki Apple i Bear eksportują wybór zapisany w aplikacji. Logseq eksportuje cały graf, Kontakty każdą wizytówkę, Wiadomości każdą rozmowę, Czas przed ekranem każdy dzień; filtry są dla nich ignorowane z komunikatem.

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

| lista | co pokazuje | JSON |
| --- | --- | --- |
| `sources` | każda aplikacja, połączona lub nie, z liczbą elementów. Dokumenty nie są wymienione | `[{"source": "apple", "connected": true, "notes": 1204}, {"source": "messages", "connected": true, "conversations": 1532}, {"source": "bear", "connected": false}]`, z `pages` dla logseq, `contacts` i `days` dla `screen-time` |
| `folders` | foldery Notatek Apple z liczbą notatek, z wcięciem według głębokości. `--source bear` to błąd (kod 64) | `[{"name": "Work", "notes": 42, "level": 0}]` |
| `tags` | tagi z liczbą notatek, domyślnie z Notatek Apple, z Bear przy `--source bear` | `[{"name": "journal", "notes": 12}]` |
| `dests` | foldery, do których może zapisywać `export --dest`, plus folder eksportu każdej aplikacji | `[{"path": "/Users/me/Backups", "kind": "granted"}]`, gdzie `kind` to `granted`, `granted, volume not mounted` lub `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
```

Z `--json`: jeden obiekt na aplikację, o nazwach `apple-notes`, `bear`, `logseq`, `contacts`, `messages`, `screen-time`, `documents`, każdy `{"connected": true, "lastExport": "2026-09-11 03:00"}` (`null`, gdy nigdy nie eksportowano); `destinations` (ścieżki); `tier` (`full` lub `free`, odblokowanie Notatek Apple) i `freeNotesUsed`; `contactsTier` i `freeContactsUsed`; `messagesTier` i `freeConversationsUsed`; `screenTimeTier` i `freeDaysUsed`; `appRunning`. Czasy są lokalne, `yyyy-MM-dd HH:mm`.

## log

Ostatnie uruchomienia eksportu, od najnowszych: ten sam dziennik, który pokazuje aplikacja, ze wszystkich folderów eksportu i dodanych folderów `--dest`. Foldery z datą tworzone w dodanym folderze nie są czytane; ich zapis jest w `<folder>/.exporter/`.

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

| flaga | co robi | domyślnie |
| --- | --- | --- |
| `--last N` | ile uruchomień | 10 |
| `--json` | jeden obiekt na uruchomienie | wyłączone |

```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` to `clean`, `warnings` (brakujące załączniki) lub `failures`.

## doctor

Sprawdza, czy eksport bez okna będzie działał, i wypisuje jeden wiersz na test: `ok`, `FAIL` z wierszem `fix:` pod spodem, `warn` lub `--` dla informacji.

```sh
exporter doctor
```

Sprawdza, czy baza danych każdej połączonej aplikacji jest czytelna, a jego folder eksportu zapisywalny, czy każde zapisane uprawnienie do folderu działa, czy każdy folder `--dest` jest zapisywalny, a także indeks i zainstalowane polecenie. Na końcu podaje poziom wersji, informację, czy aplikacja działa, i ostatnią awarię, jeśli była. Kod 0 wypisuje `all good.`, kod 2 wypisuje `N problem(s) found.`

## report

Wypisuje raport diagnostyczny (wersja aplikacji, macOS i sprzęt, stan połączeń, ostatnie uruchomienia, ostatnia awaria; bez treści notatek) i kopiuje go do schowka.

```sh
exporter report [--send] [--email <addr>]
```

| flaga | co robi | domyślnie |
| --- | --- | --- |
| `--send` | wysyła raport do nas i wypisuje `sent.` albo `offline: queued, will send on the next run or app launch.` | wyłączone |
| `--email <addr>` | dodaje twój adres, żebyśmy mogli odpowiedzieć | brak |

## help i version

- `exporter help [topic]`: tematy `sync`, `export`, `list`, `status`, `log`, `doctor`, `report`, `cron`, `install`. Pomoc do polecenia pokazuje twoje bieżące ustawienia jako wartości domyślne
- `sync`, `export`, `list`, `log` i `report` przyjmują też `--help` lub `-h`
- `exporter version` (lub `--version`, `-v`) wypisuje `exporter 3.24`
- samo `exporter` w terminalu wypisuje przegląd i kończy się kodem 64

## Wynik JSON

`--json` działa z `sync`, `export`, `list`, `status` i `log`. Wynik jest sformatowany, z posortowanymi kluczami. Przy `sync` i `export` dodaj `--quiet`: bez niego wiersze postępu i komunikaty są wypisywane na stdout przed JSON. `export` wypisuje jeden obiekt podsumowania, `sync` wypisuje `{"runs": [...]}` z jednym obiektem na źródło:

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

Gdy aplikacja działa, `sync` wypisuje swój jeden wiersz i żadnego JSON. Błędy trafiają na stderr jako `error: <what happened and what to do>`.

## Kody wyjścia

| kod | znaczenie |
| --- | --- |
| 0 | ok, także uruchomienie przerwane przez darmowy limit |
| 1 | błędy eksportu: element się nie wyeksportował, uruchomienie trafiło na błąd albo wybrało elementy i nie zapisało żadnego |
| 2 | wymaga konfiguracji: aplikacja niepołączona, brak uprawnienia do folderu, nie znaleziono folderu lub tagu, nic do eksportu; `doctor` znalazł problemy; zainstalowane polecenie ma stary format albo aplikacja, na którą wskazuje, zniknęła |
| 64 | użycie: nieznane polecenie lub flaga, brakująca lub błędna wartość, `--folder` z Bear, `list folders --source bear`, samo `exporter` w terminalu |

## Gdzie trafiają pliki

`sync` zapisuje do folderu eksportu ustawionego dla każdej aplikacji w Exporterze, jak `~/Documents/notes` lub `~/Documents/messages`; `export` zapisuje do `--dest`. Folder na poziomie katalogu domowego lub jeden niżej, jak sam `~/Documents`, dostaje podfolder dla każdej aplikacji (`notes-export`, `messages-export` i tak dalej), a głębszy folder jest używany bez zmian. Wiersz podsumowania (za strzałką) i `root` w JSON pokazują rzeczywisty folder.

Każdy folder eksportu zawiera `.exporter/last-export.json` i `.exporter/last-export.md` (ostatnie uruchomienie) oraz `.exporter/history/` (ostatnie 50 uruchomień). Notatki Apple, Kontakty, Wiadomości, Czas przed ekranem i Dokumenty prowadzą też `.exporter/files.json`, listę każdego pliku zapisanego przez uruchomienie: następne uruchomienie usuwa tylko pliki z tej listy, których żaden element już nie tworzy (Czas przed ekranem nigdy nie usuwa pliku dnia). Bear i Logseq też usuwają przy następnym uruchomieniu pliki notatek, które usunąłeś, przemianowałeś lub którym zmieniłeś tagi. Eksporty Notatek Apple i Logseq dostają też `bases/` z widokami Obsidian.

## Darmowy limit

Wiersz poleceń ma te same limity co aplikacja:

| aplikacja | za darmo |
| --- | --- |
| Notatki Apple | 100 notatek |
| Kontakty | 100 kontaktów |
| Wiadomości | 10 najnowszych rozmów |
| Czas przed ekranem | 10 ostatnich dni przy pierwszej synchronizacji i tylko one: kolejne dni wymagają odblokowania |
| Dokumenty | 10 ostatnio zmienionych dokumentów |
| Bear i Logseq | bez limitu |

Już wyeksportowane elementy dalej synchronizują się za darmo; limit zatrzymuje tylko nowe. Uruchomienie, które go osiąga, nadal eksportuje to, co może, kończy się kodem 0 i wypisuje komunikat (nie przy `--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` zawiera poziom i liczbę wykorzystanych elementów dla Notatek Apple, Kontaktów, Wiadomości i Czasu przed ekranem. Każdą aplikację z limitem odblokowujesz osobnym jednorazowym zakupem w Exporterze, [w cenie twojego kraju](https://exporter.dev/pricing), bez abonamentu i bez płatności przez stronę. Wiersz poleceń sprawdza zakup przy każdym uruchomieniu; jeśli App Store nie odpowie w ciągu 5 sekund, uruchomienie działa dalej w ramach darmowego limitu.

## Harmonogram

`exporter help cron` wypisuje te wiersze z pełną ścieżką polecenia na twoim Macu: użyj jej, bo PATH crona może nie zawierać folderu instalacji. W crontab zapisz `%` jako `\%`:

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

W Carbon Copy Cloner i innych narzędziach do backupu uruchamiaj `exporter sync` jako skrypt przed kopią i reaguj na kod wyjścia. Polecenie pozostaje aktywne przez cały eksport, nawet gdy macOS wstrzymuje je, bo nikt nie jest zalogowany. Gdy aplikacja działa, z otwartym lub zamkniętym oknem, `sync` nic nie robi: synchronizacja na żywo już utrzymuje folder w aktualności.

## Serwer MCP

To aplikacja, a nie wiersz poleceń, uruchamia lokalny serwer MCP, który pozwala Claude, Cursor, VS Code i innym klientom przeszukiwać i czytać twoje eksporty, pod adresem `http://localhost:8744/mcp`. [Strona o serwerze MCP](https://exporter.dev/docs/mcp) opisuje wszystko o nim, od uruchomienia po sześć narzędzi.

## Rozwiązywanie problemów

Najpierw uruchom `exporter doctor`; każdy nieudany test wypisuje sposób naprawy. [Rozwiązywanie problemów](https://exporter.dev/docs/help) omawia też komunikaty aplikacji.

- `X is not authorized`: dodaj folder (lub folder nadrzędny) na karcie Wiersz poleceń i uruchom ponownie. `exporter list dests` pokazuje, co ma uprawnienia
- `apple notes is not set up. open Exporter and connect Apple Notes + an export folder.` (tak samo dla każdej aplikacji): połącz ją w Exporterze
- `sync` wypisuje, że Exporter działa: nic nie trzeba robić, aplikacja utrzymuje folder w aktualności. Użyj `export --dest` dla osobnej kopii
- `no notes were written. run "exporter doctor" to check folders and permissions.`: uruchomienie wybrało notatki i nie zapisało żadnej; `doctor` sprawdza foldery i uprawnienia
- `bookmark broken`: folder został przeniesiony lub usunięty albo jego wolumin nie jest podłączony. Wybierz go ponownie w aplikacji
- zainstalowane polecenie ma stary format albo cron i narzędzia do backupu widzą kod 19: wklej ponownie polecenie instalacji
- aplikacja została przeniesiona od czasu instalacji polecenia: wklej ponownie polecenie instalacji
- odblokowane, a uruchomienie mówi, że wersja darmowa: sprawdzenie zakupu czeka najwyżej 5 sekund, a potem działa dalej w ramach darmowego limitu. Uruchom ponownie
- problem, którego doctor nie umie wyjaśnić: `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/pl/docs/cli
every page: https://exporter.dev/llms.txt
