De opdrachtregel exporter
Voer je exports uit vanuit Terminal, cron, back-uptools en agents.
exporter is de Mac-app Exporter zonder venster. Hij gebruikt dezelfde verbindingen, exportmappen, selectie en instellingen die je in de app hebt ingesteld, en schrijft naar hetzelfde exportlogboek. Hij werkt terwijl de app gesloten is en stelt nooit vragen: ontbreekt er iets, dan stopt de export met exitcode 2 en één regel die zegt wat je moet doen. Alleen macOS.
Installeren
- Installeer Exporter uit de Mac App Store (downloaden) en open hem.
- Verbind een app (Apple Notities, Bear, Logseq, Contacten, Berichten of Schermtijd) of een map met documenten, en kies de exportmap (aan de slag). Deze toestemmingen kun je alleen in de app geven.
- Druk op de kaart Opdrachtregel in de app op “installatiecommando kopiëren” en plak het één keer in Terminal.
De app draait in een sandbox en kan niet naar je PATH schrijven; daarom is de laatste stap plakken. De regel installeert exporter in /opt/homebrew/bin als die map bestaat en van jou is (geen sudo), anders in /usr/local/bin met sudo. Hem nog eens plakken kan geen kwaad; hij vervangt wat er stond. exporter help install toont de regel voor jouw Mac.
Bronnen
--source accepteert een van deze:
| bron | ook geaccepteerd | schrijft |
|---|---|---|
apple |
apple-notes, applenotes, notes |
markdown of html |
bear |
markdown of html | |
logseq |
altijd markdown | |
contacts |
apple-contacts, addressbook |
altijd markdown |
messages |
imessage, chats, conversations |
altijd markdown |
screentime |
screen-time, usage |
altijd markdown, één bestand per dag |
documents |
docs, files, pdf |
de formaten die op de kaart Documenten zijn aangevinkt |
Formaten
--format accepteert markdown (of md) of html; hoofdletters maken niet uit. Al het andere stopt met error: --format pdf: expected markdown | html en exit 64.
- zonder deze flag schrijft
syncelke app in het formaat dat op zijn kaart is ingesteld (Apple Notities en Bear hebben elk een eigen instelling) en schrijftexportde instelling van de app die hij exporteert;exporter help syncenexporter help exporttonen de huidige - Logseq, Contacten, Berichten en Schermtijd zijn altijd markdown, en Documenten schrijft de formaten die op zijn kaart zijn aangevinkt, dus voor hen wordt
--format htmlgenegeerd met een melding:note: logseq export is always markdown, so --format is ignored for this source. - Apple Notities schrijft één
.html-pagina per notitie (het HTML-formaat), met bijlagen gekopieerd naarattachments/ernaast en gelinkt, zonder front matter. De HTML van Bear is de platte tekst van de notitie in een<pre>, zonder opmaak, en verwijzingen naar bijlagen blijven Markdown-tekst: de bestanden worden gekopieerd, niet gelinkt - de MCP-server leest alleen markdown-bestanden, dus een export die alleen uit HTML bestaat, is voor hem onzichtbaar
- Apple Notities en Bear schrijven één formaat per export; alleen Documenten schrijft beide in één synchronisatie. Een export verwijdert alleen oude bestanden van zijn eigen formaat, dus na overschakelen blijven de bestanden van het andere formaat in de map staan. Wil je beide formaten, geef elk dan een eigen map:
exporter export --dest ~/Backups/notes-md --format markdown
exporter export --dest ~/Backups/notes-html --format html
sync
Voert de export uit die je in de app hebt ingesteld, één keer, incrementeel, naar de exportmappen van de app.
exporter sync [--source <source>]... [--format markdown|html] [--full] [--json] [--quiet]
| flag | wat hij doet | standaard |
|---|---|---|
--source <source> |
alleen deze app, herhaalbaar | elke verbonden app; niet verbonden apps worden overgeslagen |
--format markdown|html |
alleen voor deze export, je instelling in de app blijft ongewijzigd. Het resultaat komt in dezelfde exportmap als het andere formaat; wil je beide houden, exporteer elk dan naar een eigen map met export --dest |
je instelling in de app |
--full |
alles opnieuw exporteren. Het verwijdert vóór het schrijven alleen de bestanden die Exporter schreef; al het andere in de exportmap blijft staan | uit |
--json |
een machineleesbaar overzicht | uit |
--quiet, -q |
alleen fouten | uit |
exporter sync --source apple
apple notes: exporting…
apple notes: 1204 of 1204 exported · 3 removed · 18.2s · markdown → /Users/me/Documents/notes
De overzichtsregel is <source>: <succeeded> of <selected> exported, dan, als ze er zijn, N failed, N removed (bestanden van items die zijn verwijderd, hernoemd of verplaatst), N attachment issues, en daarna de duur, het formaat en de map waarnaar geschreven is.
Draait de app, dan exporteert sync niets, eindigt met 0 en toont Exporter is running: real-time sync is live, the export root is already current.
export
Een eenmalige export naar een map naar keuze, voor momentopnamen en scripts. Werkt prima terwijl de app open is.
exporter export --dest <folder> [--source <source>] [--format markdown|html] [--organize folders|tags|smart] [--folder "Name"]... [--tag name]... [--dry-run] [--json] [--quiet]
| flag | wat hij doet | standaard |
|---|---|---|
--dest <folder> |
verplicht. Moet binnen een map liggen waarvoor toestemming is gegeven op de kaart Opdrachtregel in de app (“map toevoegen…”). Toestemming voor ~/Backups geldt voor elke map daaronder |
geen |
--source <source> |
de app om te exporteren | apple |
--format markdown|html |
het formaat voor deze export | je instelling in de app |
--organize folders|tags|smart |
alleen Apple Notities: hoe notities over mappen worden verdeeld | je instelling in de app |
--folder "Name" |
alleen deze map van Apple Notities, herhaalbaar, naam hoofdletterongevoelig | de selectie die in de app is bewaard |
--tag name |
alleen deze tag, herhaalbaar, Apple Notities of Bear | de selectie die in de app is bewaard |
--dry-run |
tonen wat er geëxporteerd zou worden, niets schrijven | uit |
--json, --quiet (-q) |
zoals bij sync | uit |
Zonder --folder of --tag exporteren Apple Notities en Bear de selectie die in de app is bewaard. Logseq exporteert de hele graph, Contacten elke kaart, Berichten elk gesprek, Schermtijd elke dag; filters worden voor hen genegeerd, met een melding.
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]
| list | wat het toont | JSON |
|---|---|---|
sources |
elke app, verbonden of niet, met het aantal. Documenten wordt niet getoond | [{"source": "apple", "connected": true, "notes": 1204}, {"source": "messages", "connected": true, "conversations": 1532}, {"source": "bear", "connected": false}], met pages voor logseq, contacts, en days voor screen-time |
folders |
mappen van Apple Notities met het aantal notities, ingesprongen naar diepte. --source bear is een fout (exit 64) |
[{"name": "Work", "notes": 42, "level": 0}] |
tags |
tags met aantallen, standaard Apple Notities, Bear met --source bear |
[{"name": "journal", "notes": 12}] |
dests |
mappen waarnaar export --dest mag schrijven, plus de exportmap van elke app |
[{"path": "/Users/me/Backups", "kind": "granted"}], waarbij kind granted, granted, volume not mounted of export root (apple-notes) is |
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
Met --json: één object per app, genaamd apple-notes, bear, logseq, contacts, messages, screen-time, documents, elk {"connected": true, "lastExport": "2026-09-11 03:00"} (null als er nooit is geëxporteerd); destinations (paden); tier (full of free, de ontgrendeling van Apple Notities) en freeNotesUsed; contactsTier en freeContactsUsed; messagesTier en freeConversationsUsed; screenTimeTier en freeDaysUsed; appRunning. Tijden zijn lokaal, yyyy-MM-dd HH:mm.
log
De recente exports, nieuwste eerst: hetzelfde logboek dat de app toont, uit elke exportmap en elke --dest-map met toestemming. Mappen met een datum die onder een map met toestemming zijn aangemaakt, worden niet gelezen; hun verslag staat in <folder>/.exporter/.
exporter log [--last N] [--json]
| flag | wat hij doet | standaard |
|---|---|---|
--last N |
hoeveel exports | 10 |
--json |
één object per export | uit |
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 is clean, warnings (bijlagen ontbreken) of failures.
doctor
Controleert of exporteren zonder venster zal werken en toont één regel per controle: ok, FAIL met een regel fix: eronder, warn, of -- ter informatie.
exporter doctor
Hij controleert of de database van elke verbonden app leesbaar is en de exportmap schrijfbaar, of elke bewaarde maptoestemming nog klopt, of elke --dest-map schrijfbaar is, de index, en de geïnstalleerde opdracht. Hij sluit af met de versie, of de app draait, en de laatste crash als die er was. Exit 0 toont all good., exit 2 toont N problem(s) found.
report
Toont een diagnoserapport (versie van de app, macOS en hardware, verbindingsstatus, recente exports, laatste crash; geen inhoud van notities) en kopieert het naar het klembord.
exporter report [--send] [--email <addr>]
| flag | wat hij doet | standaard |
|---|---|---|
--send |
stuurt het rapport naar ons en toont sent., of offline: queued, will send on the next run or app launch. |
uit |
--email <addr> |
voegt je adres toe zodat we kunnen antwoorden | geen |
help en versie
exporter help [topic]: onderwerpensync,export,list,status,log,doctor,report,cron,install. De help voor een opdracht toont je huidige instellingen als standaardwaardensync,export,list,logenreportaccepteren ook--helpof-hexporter version(of--version,-v) toontexporter 3.24exporterzonder meer in een terminal toont het overzicht en eindigt met 64
JSON-uitvoer
--json werkt bij sync, export, list, status en log. De uitvoer is netjes opgemaakt met gesorteerde sleutels. Voeg bij sync en export --quiet toe: zonder die flag komen de voortgangs- en meldingsregels vóór de JSON op stdout. export toont één overzichtsobject, sync toont {"runs": [...]} met één per bron:
{
"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
}
Terwijl de app draait, toont sync zijn ene regel en geen JSON. Fouten gaan naar stderr als error: <what happened and what to do>.
Exitcodes
| code | betekenis |
|---|---|
| 0 | ok, ook een export die door de gratis hoeveelheid is ingekort |
| 1 | exportfouten: een item mislukte, de export stuitte op een fout, of hij selecteerde items en schreef er geen |
| 2 | instellen nodig: app niet verbonden, geen toestemming voor de map, map of tag niet gevonden, niets te exporteren; doctor vond problemen; de geïnstalleerde opdracht heeft een oud formaat of de app waar hij naar wijst is weg |
| 64 | gebruik: onbekende opdracht of flag, ontbrekende of foute waarde, --folder met Bear, list folders --source bear, exporter zonder meer in een terminal |
Waar bestanden terechtkomen
sync schrijft naar de exportmap die voor elke app in Exporter is ingesteld, zoals ~/Documents/notes of ~/Documents/messages; export schrijft naar --dest. Een map in je thuismap of één niveau lager, zoals ~/Documents zelf, krijgt een submap per app (notes-export, messages-export enzovoort), en een map die dieper ligt, wordt gebruikt zoals hij is. De overzichtsregel (na de pijl) en root in de JSON tonen de echte map.
Elke exportmap bevat .exporter/last-export.json en .exporter/last-export.md (de laatste export) en .exporter/history/ (de laatste 50 exports). Apple Notities, Contacten, Berichten, Schermtijd en Documenten houden ook .exporter/files.json bij, elk bestand dat een export schreef: de volgende export verwijdert alleen bestanden uit die lijst die door geen enkel item meer worden gemaakt (Schermtijd verwijdert nooit een dagbestand). Bear en Logseq verwijderen bij de volgende export ook de bestanden van notities die je verwijderde, hernoemde of een andere tag gaf. Exports van Apple Notities en Logseq krijgen ook bases/ met weergaven voor Obsidian.
Gratis hoeveelheid
De opdrachtregel heeft dezelfde gratis hoeveelheden als de app:
| app | gratis |
|---|---|
| Apple Notities | 100 notities |
| Contacten | 100 contacten |
| Berichten | de 10 recentste gesprekken |
| Schermtijd | de 10 recentste dagen bij de eerste synchronisatie, en alleen die: voor latere dagen heb je de ontgrendeling nodig |
| Documenten | de 10 laatst gewijzigde documenten |
| Bear en Logseq | onbeperkt |
Items die al zijn geëxporteerd, blijven gratis opnieuw synchroniseren; de gratis hoeveelheid houdt alleen nieuwe items tegen. Een export die de grens bereikt, exporteert nog wat mag, eindigt met 0 en toont een melding (niet met --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 bevat de versie en het gebruikte aantal voor Apple Notities, Contacten, Berichten en Schermtijd. Elke beperkte app ontgrendel je met een eigen eenmalige aankoop in Exporter, met een prijs per land, zonder abonnement en zonder webkassa. De opdrachtregel leest de aankoop bij elke export; antwoordt de App Store niet binnen 5 seconden, dan gaat de export verder met de gratis hoeveelheid.
Planning
exporter help cron toont deze regels met het volledige pad van de opdracht op jouw Mac: gebruik dat, want het PATH van cron bevat de installatiemap misschien niet. Schrijf in een crontab % als \%:
0 3 * * * exporter sync
0 3 * * * exporter export --dest ~/Backups/notes-$(date +\%F)
Voor Carbon Copy Cloner en andere back-uptools: voer exporter sync uit als voorafgaand script en vertak op de exitcode. De opdracht blijft verbonden tijdens de hele export, ook als macOS hem pauzeert terwijl niemand is ingelogd. Zolang de app draait, met zijn venster open of dicht, doet sync niets: realtime synchronisatie houdt de map al actueel.
MCP-server
De app, niet de opdrachtregel, draait een lokale MCP-server waarmee Claude, Cursor, VS Code en andere clients je exports kunnen doorzoeken en lezen, op http://localhost:8744/mcp. De pagina over de MCP-server behandelt alles erover, van starten tot de zes tools.
Problemen oplossen
Voer eerst exporter doctor uit; elke mislukte controle toont de oplossing. Hulp behandelt ook de meldingen van de app.
X is not authorized: voeg de map (of een bovenliggende map) toe op de kaart Opdrachtregel en voer het opnieuw uit.exporter list deststoont waarvoor toestemming isapple notes is not set up. open Exporter and connect Apple Notes + an export folder.(hetzelfde voor elke app): verbind hem in Exportersyncmeldt dat Exporter draait: niets te doen, de app houdt de map actueel. Gebruikexport --destvoor een aparte kopieno notes were written. run "exporter doctor" to check folders and permissions.: de export selecteerde notities en schreef er geen;doctorcontroleert de mappen en toestemmingenbookmark broken: de map is verplaatst, verwijderd, of het volume is niet gekoppeld. Kies de map opnieuw in de app- de geïnstalleerde opdracht heeft een oud formaat, of cron en back-uptools zien exit 19: plak het installatiecommando opnieuw
- de app is verplaatst sinds je de opdracht installeerde: plak het installatiecommando opnieuw
- ontgrendeld, maar de export zegt gratis: de aankoopcontrole wacht maximaal 5 seconden en gaat dan verder met de gratis hoeveelheid. Voer het opnieuw uit
- een probleem dat doctor niet kan verklaren:
exporter report --send --email you@example.com