Pobierz Exporter
Dokumentacja CLI

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) 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). 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. Wiersz instaluje też notes-exporter, dawną nazwę polecenia, więc starsze skrypty i wpisy cron nadal działają. 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ń
reminders apple-reminders, lists, todos zawsze markdown, jeden plik na listę
claude-code claudecode, claude, claude-code-sessions markdown, oryginalny log albo oba, zgodnie z zaznaczeniem na karcie
wallet passes, pkpass, boarding-passes, tickets zawsze markdown, jeden plik na kartę
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), 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:
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, dla tego uruchomienia „Porządkuj” na karcie
--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, Wiadomości, Czas przed ekranem i Dokumenty eksportują to, co mają zaznaczone na swojej karcie, tak samo jak sync; filtry są dla nich ignorowane z komunikatem. Dla Dokumentów --dry-run wypisuje would convert <n> document(s), a uruchomienie zgłasza pliki, których nie może odczytać: note: 3 file(s) skipped: not a format any engine converts.

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 · 50 of 50 free conversations used
organize       apple notes by folder · contacts in one folder
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; organize ({"appleNotes": "folders", "contacts": "flat"}, „Porządkuj” z kart); 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]: 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:

{
  "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ń). Każda aplikacja prowadzi 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, więc notatki, które usunąłeś, przemianowałeś lub którym zmieniłeś tagi, tracą swój stary plik (Czas przed ekranem nigdy nie usuwa pliku dnia). 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 50 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 (50 of 50 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.

Narzędzie do backupu, które uruchamia swoje skrypty jako root (tak robi Carbon Copy Cloner), musi uruchamiać exporter wewnątrz sesji zalogowanego użytkownika, a nie tylko jako ten użytkownik. Samo sudo -u od razu go zatrzymuje z kodem wyjścia 133; dodaj przed nim launchctl asuser:

/bin/launchctl asuser "$(id -u "$CONSOLE_USER")" /usr/bin/sudo -u "$CONSOLE_USER" exporter sync

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

Exporter

Wersja 5.5 (App Store)

macOS 15 lub nowszy

exporter@tinysend.com

© system operator