# 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

1. Installera Exporter från Mac App Store ([hämta](https://exporter.dev/download)) och öppna den.
2. 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](https://exporter.dev/docs/getting-started)). De här åtkomsterna kan bara ges i appen.
3. 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 `sync` varje app i formatet som är inställt på dess kort (Apple Anteckningar och Bear har var sitt) och `export` skriver inställningen för appen den exporterar; `exporter help sync` och `exporter help export` visar 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 html` med 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](https://exporter.dev/docs/notes#markdown-and-html)), med bilagor kopierade till `attachments/` 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:

```sh
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.

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

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

```text
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.

```sh
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.`

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

```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 · 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/`.

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

```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` ä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.

```sh
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.

```sh
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]`: ämnena `sync`, `export`, `list`, `status`, `log`, `doctor`, `report`, `cron`, `install`. Hjälpen för ett kommando visar dina nuvarande inställningar som standardvärden
- `sync`, `export`, `list`, `log` och `report` tar också `--help` eller `-h`
- `exporter version` (eller `--version`, `-v`) skriver ut `exporter 3.24`
- `exporter` ensamt 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:

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

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`):

```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 (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](https://exporter.dev/pricing), 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 `\%`:

```sh
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:

```sh
/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](https://exporter.dev/docs/mcp) 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](https://exporter.dev/docs/help) 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 dests` visar vad som har getts åtkomst
- `apple notes is not set up. open Exporter and connect Apple Notes + an export folder.` (samma för varje app): anslut den i Exporter
- `sync` skriver ut att Exporter körs: inget att göra, appen håller mappen aktuell. Använd `export --dest` för en separat kopia
- `no notes were written. run "exporter doctor" to check folders and permissions.`: körningen valde anteckningar och skrev inga; `doctor` kontrollerar mapparna och behörigheterna
- `bookmark 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`

## Related

- [MCP-server](https://exporter.dev/sv/docs/mcp): Anslut Claude och andra agenter
- [För agenter](https://exporter.dev/sv/agents): Färdigheter, kommandorad och MCP för agenter
- [Apple Anteckningar](https://exporter.dev/sv/docs/notes): Mappar, fält, HTML och lösningar
- [Changelog](https://exporter.dev/changelog): What changed in each version

---

human version: https://exporter.dev/sv/docs/cli
every page: https://exporter.dev/llms.txt
