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
- Zainstaluj Exportera z Mac App Store (pobierz) i otwórz go.
- 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). Te uprawnienia można nadać tylko w aplikacji.
- 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
synczapisuje każdą aplikację w formacie ustawionym na jej karcie (Notatki Apple i Bear mają każde własny), aexportzapisuje zgodnie z ustawieniem eksportowanej aplikacji;exporter help synciexporter help exportpokazują 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 htmljest ignorowane z komunikatem:note: logseq export is always markdown, so --format is ignored for this source. - Notatki Apple zapisują jedną stronę
.htmlna notatkę (format HTML), z załącznikami skopiowanymi doattachments/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:
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.
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 |
exporter sync --source apple
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.
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.
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]
| 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) |
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
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/.
exporter log [--last N] [--json]
| flaga | co robi | domyślnie |
|---|---|---|
--last N |
ile uruchomień | 10 |
--json |
jeden obiekt na uruchomienie | wyłączone |
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.
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.
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]: tematysync,export,list,status,log,doctor,report,cron,install. Pomoc do polecenia pokazuje twoje bieżące ustawienia jako wartości domyślnesync,export,list,logireportprzyjmują też--helplub-hexporter version(lub--version,-v) wypisujeexporter 3.24- samo
exporterw 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:
{
"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):
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, 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 \%:
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 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 omawia też komunikaty aplikacji.
X is not authorized: dodaj folder (lub folder nadrzędny) na karcie Wiersz poleceń i uruchom ponownie.exporter list destspokazuje, co ma uprawnieniaapple notes is not set up. open Exporter and connect Apple Notes + an export folder.(tak samo dla każdej aplikacji): połącz ją w Exporterzesyncwypisuje, że Exporter działa: nic nie trzeba robić, aplikacja utrzymuje folder w aktualności. Użyjexport --destdla osobnej kopiino notes were written. run "exporter doctor" to check folders and permissions.: uruchomienie wybrało notatki i nie zapisało żadnej;doctorsprawdza foldery i uprawnieniabookmark 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