Kommandoraden exporter
Kör dina exporter från Terminal, cron, säkerhetskopieringsverktyg och agenter.
exporter är Mac-appen Exporter körd utan fönster. Den använder samma anslutningar, exportmappar, urval och inställningar som du ställt in i appen, och den skriver till samma exportlogg. Den fungerar medan appen är stängd och frågar aldrig något: allt som saknas stoppar körningen med slutkod 2 och en rad som säger vad du ska göra. Bara macOS.
Installera
- Installera Exporter från Mac App Store (hämta) och öppna den.
- Anslut en app (Apple Anteckningar, Bear, Logseq, Kontakter, Meddelanden eller Skärmtid) eller en mapp med Dokument, och välj dess exportmapp (kom igång). De här åtkomsterna kan bara ges i appen.
- Tryck på “Kopiera installationskommando” på appens kort Kommandorad och klistra in det en gång i Terminal.
Appen är sandlådad och kan inte skriva till din PATH, och därför är det sista steget en inklistring. Raden installerar exporter i /opt/homebrew/bin när den mappen finns och tillhör dig (ingen sudo), annars i /usr/local/bin med sudo. Det är säkert att klistra in den igen; den ersätter det som fanns där. Raden installerar också notes-exporter, kommandots gamla namn, så att äldre skript och cron-rader fortsätter att fungera. exporter help install skriver ut raden för din Mac.
Källor
--source tar en av dessa:
| källa | accepteras också | skriver |
|---|---|---|
apple |
apple-notes, applenotes, notes |
markdown eller html |
bear |
markdown eller html | |
logseq |
alltid markdown | |
contacts |
apple-contacts, addressbook |
alltid markdown |
messages |
imessage, chats, conversations |
alltid markdown |
screentime |
screen-time, usage |
alltid markdown, en fil per dag |
reminders |
apple-reminders, lists, todos |
alltid markdown, en fil per lista |
claude-code |
claudecode, claude, claude-code-sessions |
markdown, originalloggen eller båda, som markerat på kortet |
wallet |
passes, pkpass, boarding-passes, tickets |
alltid markdown, en fil per kort |
documents |
docs, files, pdf |
formaten som är markerade på kortet Dokument |
Format
--format tar markdown (eller md) eller html; skiftläget spelar ingen roll. Allt annat stoppar med error: --format pdf: expected markdown | html och slutkod 64.
- utan den skriver
syncvarje app i formatet som är inställt på dess kort (Apple Anteckningar och Bear har var sitt) ochexportskriver inställningen för appen den exporterar;exporter help syncochexporter help exportvisar de nuvarande - Logseq, Kontakter, Meddelanden och Skärmtid är alltid markdown, och Dokument skriver formaten som är markerade på sitt kort, så för dem ignoreras
--format htmlmed en notering:note: logseq export is always markdown, so --format is ignored for this source. - Apple Anteckningar skriver en
.html-sida per anteckning (HTML-formatet), med bilagor kopierade tillattachments/bredvid och länkade, utan frontmatter. Bears HTML är anteckningens råtext i en<pre>, utan formgivning, och hänvisningar till bilagor lämnas som Markdown-text: filerna kopieras, men länkas inte - MCP-servern läser bara markdown-filer, så en export som bara är HTML är osynlig för den
- Apple Anteckningar och Bear skriver ett format per körning; bara Dokument skriver båda i en synkning. En körning tar bara bort gamla filer i sitt eget format, så att byta lämnar det andra formatets filer kvar i mappen. För båda formaten ger du vart och ett en egen mapp:
exporter export --dest ~/Backups/notes-md --format markdown
exporter export --dest ~/Backups/notes-html --format html
sync
Kör exporten du ställde in i appen, en gång, inkrementellt, till appens exportmappar.
exporter sync [--source <source>]... [--format markdown|html] [--full] [--json] [--quiet]
| flagga | vad den gör | standard |
|---|---|---|
--source <source> |
bara den här appen, kan upprepas | varje ansluten app; de som inte är anslutna hoppas över |
--format markdown|html |
bara den här körningen, din appinställning ändras inte. Den hamnar i samma exportmapp som det andra formatet; för att behålla båda exporterar du vart och ett till en egen mapp med export --dest |
din appinställning |
--full |
exportera om allt. Den tar bara bort filerna som Exporter skrev innan den skriver; allt annat i exportmappen ligger kvar | av |
--json |
en maskinläsbar sammanfattning | av |
--quiet, -q |
bara fel | av |
exporter sync --source apple
apple notes: exporting…
apple notes: 1204 of 1204 exported · 3 removed · 18.2s · markdown → /Users/me/Documents/notes
Sammanfattningsraden är <source>: <succeeded> of <selected> exported, sedan, när de finns, N failed, N removed (filer från objekt som raderades, bytte namn eller flyttades), N attachment issues, och sist tiden, formatet och mappen som skrevs.
Om appen körs exporterar sync ingenting, avslutar med 0 och skriver ut Exporter is running: real-time sync is live, the export root is already current.
export
En engångsexport till en mapp du väljer, för ögonblicksbilder och skript. Den fungerar fint medan appen är öppen.
exporter export --dest <folder> [--source <source>] [--format markdown|html] [--organize folders|tags|smart] [--folder "Name"]... [--tag name]... [--dry-run] [--json] [--quiet]
| flagga | vad den gör | standard |
|---|---|---|
--dest <folder> |
obligatorisk. Måste ligga i en mapp som har getts åtkomst på appens kort Kommandorad (“Lägg till mapp…”). En åtkomst till ~/Backups täcker varje mapp under den |
ingen |
--source <source> |
appen som ska exporteras | apple |
--format markdown|html |
formatet för den här körningen | din appinställning |
--organize folders|tags|smart |
bara Apple Anteckningar: hur anteckningarna ordnas i mappar, för den här körningen | “Ordna” på kortet |
--folder "Name" |
bara den här mappen i Apple Anteckningar, kan upprepas, namnet matchas oavsett skiftläge | urvalet som sparats i appen |
--tag name |
bara den här taggen, kan upprepas, Apple Anteckningar eller Bear | urvalet som sparats i appen |
--dry-run |
skriv ut vad som skulle exporteras, skriv ingenting | av |
--json, --quiet (-q) |
som för sync | av |
Utan --folder eller --tag exporterar Apple Anteckningar och Bear urvalet som sparats i appen. Logseq exporterar hela grafen; Kontakter, Meddelanden, Skärmtid och Dokument exporterar det som är markerat på deras kort, precis som sync; filter ignoreras för dem med en notering. För Dokument skriver --dry-run ut would convert <n> document(s), och en körning noterar filerna den inte kan läsa: 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 | vad den visar | JSON |
|---|---|---|
sources |
varje app, ansluten eller inte, med sitt antal. Dokument listas inte | [{"source": "apple", "connected": true, "notes": 1204}, {"source": "messages", "connected": true, "conversations": 1532}, {"source": "bear", "connected": false}], med pages för logseq, contacts, och days för screen-time |
folders |
mappar i Apple Anteckningar med antal anteckningar, indragna efter djup. --source bear är ett fel (slutkod 64) |
[{"name": "Work", "notes": 42, "level": 0}] |
tags |
taggar med antal, Apple Anteckningar som standard, Bear med --source bear |
[{"name": "journal", "notes": 12}] |
dests |
mappar som export --dest får skriva till, plus varje apps exportmapp |
[{"path": "/Users/me/Backups", "kind": "granted"}], där kind är granted, granted, volume not mounted eller 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
Med --json: ett objekt per app, med namnen apple-notes, bear, logseq, contacts, messages, screen-time, documents, vart och ett {"connected": true, "lastExport": "2026-09-11 03:00"} (null när den aldrig har exporterats); destinations (sökvägar); tier (full eller free, upplåsningen av Apple Anteckningar) och freeNotesUsed; contactsTier och freeContactsUsed; messagesTier och freeConversationsUsed; screenTimeTier och freeDaysUsed; organize ({"appleNotes": "folders", "contacts": "flat"}, kortens “Ordna”); appRunning. Tiderna är lokala, yyyy-MM-dd HH:mm.
log
De senaste exportkörningarna, nyaste först: samma logg som appen visar, från varje exportmapp och varje --dest-mapp med åtkomst. Daterade mappar som skapats under en mapp med åtkomst läses inte; deras logg finns i <folder>/.exporter/.
exporter log [--last N] [--json]
| flagga | vad den gör | standard |
|---|---|---|
--last N |
hur många körningar | 10 |
--json |
ett objekt per körning | av |
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 är clean, warnings (bilagor saknas) eller failures.
doctor
Kontrollerar att export utan fönster kommer att fungera och skriver ut en rad per kontroll: ok, FAIL med en rad fix: under, warn, eller -- för information.
exporter doctor
Den kontrollerar att varje ansluten apps databas går att läsa och dess exportmapp går att skriva till, att varje sparad mappåtkomst går att lösa upp, att varje --dest-mapp går att skriva till, indexet och det installerade kommandot. Den avslutar med versionsnivån, om appen körs och den senaste kraschen om det fanns någon. Slutkod 0 skriver ut all good., slutkod 2 skriver ut N problem(s) found.
report
Skriver ut en diagnostisk rapport (appversion, macOS och hårdvara, anslutningsstatus, senaste körningar, senaste krasch; inget innehåll från anteckningar) och kopierar den till urklipp.
exporter report [--send] [--email <addr>]
| flagga | vad den gör | standard |
|---|---|---|
--send |
skickar rapporten till oss och skriver ut sent., eller offline: queued, will send on the next run or app launch. |
av |
--email <addr> |
lägger till din adress så att vi kan svara | ingen |
Hjälp och version
exporter help [topic]: ämnenasync,export,list,status,log,doctor,report,cron,install. Hjälpen för ett kommando visar dina nuvarande inställningar som standardvärdensync,export,list,logochreporttar också--helpeller-hexporter version(eller--version,-v) skriver utexporter 3.24exporterensamt i en terminal skriver ut översikten och avslutar med 64
JSON-utdata
--json fungerar med sync, export, list, status och log. Utdata är snyggt formaterade med sorterade nycklar. För sync och export lägger du till --quiet: utan den skrivs förlopps- och noteringsraderna ut på stdout före JSON. export skriver ut ett sammanfattningsobjekt, sync skriver ut {"runs": [...]} med ett per källa:
{
"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
}
Medan appen körs skriver sync ut sin enda rad och ingen JSON. Fel går till stderr som error: <what happened and what to do>.
Slutkoder
| kod | betydelse |
|---|---|
| 0 | ok, också en körning som gratiskvoten avbröt |
| 1 | exportfel: ett objekt misslyckades, körningen stötte på ett fel, eller den valde objekt och skrev inga |
| 2 | behöver inställning: appen är inte ansluten, mappen har ingen åtkomst, mappen eller taggen hittades inte, inget att exportera; doctor hittade problem; det installerade kommandot har ett gammalt format eller appen det pekar på finns inte längre |
| 64 | användning: okänt kommando eller okänd flagga, saknat eller felaktigt värde, --folder med Bear, list folders --source bear, exporter ensamt i en terminal |
Var filerna hamnar
sync skriver till exportmappen som är inställd för varje app i Exporter, som ~/Documents/notes eller ~/Documents/messages; export skriver till --dest. En mapp på hemmappens nivå eller en nivå under den, som själva ~/Documents, får en undermapp per app (notes-export, messages-export och så vidare), och en djupare mapp används som den är. Sammanfattningsraden (efter pilen) och JSON-fältet root visar den verkliga mappen.
Varje exportmapp innehåller .exporter/last-export.json och .exporter/last-export.md (den senaste körningen) och .exporter/history/ (de senaste 50 körningarna). Varje app har också .exporter/files.json, varje fil en körning skrev: nästa körning tar bara bort filer som står där och som inget objekt längre ger upphov till, så anteckningar du raderat, bytt namn på eller taggat om förlorar sin gamla fil (Skärmtid tar aldrig bort en dagsfil). Exporter från Apple Anteckningar och Logseq får också bases/ med vyer för Obsidian.
Gratiskvot
Kommandoraden har samma kvoter som appen:
| app | gratis |
|---|---|
| Apple Anteckningar | 100 anteckningar |
| Kontakter | 100 kontakter |
| Meddelanden | de 50 senaste konversationerna |
| Skärmtid | de 10 senaste dagarna vid den första synkningen, och bara de: senare dagar kräver upplåsningen |
| Dokument | de 10 senast ändrade dokumenten |
| Bear och Logseq | obegränsat |
Objekt som redan exporterats fortsätter att synkas om gratis; kvoten stoppar bara nya. En körning som når den exporterar ändå det den får, avslutar med 0 och skriver ut en notering (inte med --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 innehåller nivån och antalet använda för Apple Anteckningar, Kontakter, Meddelanden och Skärmtid. Varje begränsad app låses upp med sitt eget engångsköp i appen Exporter, prissatt per land, ingen prenumeration och ingen betalning på webben. Kommandoraden läser köpet vid varje körning; om App Store inte svarar inom 5 sekunder fortsätter körningen på gratiskvoten.
Schemaläggning
exporter help cron skriver ut de här raderna med kommandots fullständiga sökväg på din Mac: använd den, eftersom crons PATH kanske inte innehåller installationsmappen. I en crontab skriver du % som \%:
0 3 * * * exporter sync
0 3 * * * exporter export --dest ~/Backups/notes-$(date +\%F)
För Carbon Copy Cloner och andra säkerhetskopieringsverktyg kör du exporter sync som ett skript före körningen och förgrenar på slutkoden. Kommandot förblir anslutet under hela exporten, även när macOS pausar det när ingen är inloggad. Medan appen körs, med fönstret öppet eller stängt, gör sync ingenting: realtidssynkningen håller redan mappen aktuell.
Ett säkerhetskopieringsverktyg som kör sina skript som root (det gör Carbon Copy Cloner) måste starta exporter i den inloggade användarens session, inte bara som den användaren. Bara sudo -u stoppar det direkt med slutkod 133; sätt launchctl asuser framför:
/bin/launchctl asuser "$(id -u "$CONSOLE_USER")" /usr/bin/sudo -u "$CONSOLE_USER" exporter sync
MCP-server
Det är appen, inte kommandoraden, som kör en lokal MCP-server som låter Claude, Cursor, VS Code och andra klienter söka i och läsa dina exporter, på http://localhost:8744/mcp. Sidan om MCP-servern täcker allt om den, från att starta den till dess sex verktyg.
Felsökning
Kör exporter doctor först; varje kontroll som misslyckas skriver ut sin lösning. Hjälp täcker också appens meddelanden.
X is not authorized: lägg till mappen (eller en överordnad mapp) på kortet Kommandorad och kör sedan igen.exporter list destsvisar vad som har getts åtkomstapple notes is not set up. open Exporter and connect Apple Notes + an export folder.(samma för varje app): anslut den i Exportersyncskriver ut att Exporter körs: inget att göra, appen håller mappen aktuell. Användexport --destför en separat kopiano notes were written. run "exporter doctor" to check folders and permissions.: körningen valde anteckningar och skrev inga;doctorkontrollerar mapparna och behörigheternabookmark broken: mappen har flyttats, raderats eller så är dess volym inte ansluten. Välj den igen i appen- det installerade kommandot har ett gammalt format, eller cron och säkerhetskopieringsverktyg ser slutkod 19: klistra in installationskommandot igen
- appen har flyttats sedan du installerade kommandot: klistra in installationskommandot igen
- upplåst men körningen säger gratis: köpkontrollen väntar högst 5 sekunder och fortsätter sedan på gratiskvoten. Kör igen
- ett problem som doctor inte kan förklara:
exporter report --send --email you@example.com