Ottieni Exporter
DocumentazioneCLI

La riga di comando exporter

Esegua le sue esportazioni da Terminale, cron, strumenti di backup e agenti.

exporter è l’app Exporter per Mac eseguita senza finestra. Usa le stesse connessioni, cartelle di esportazione, selezione e impostazioni configurate nell’app, e scrive nello stesso registro delle esportazioni. Funziona anche con l’app chiusa e non chiede mai nulla: qualsiasi cosa manchi interrompe l’esecuzione con codice di uscita 2 e una riga che dice cosa fare. Solo macOS.

Installazione

  1. Installi Exporter dal Mac App Store (download) e lo apra.
  2. Colleghi un’app (Apple Notes, Bear, Logseq, Contatti, Messaggi o Tempo di utilizzo) o una cartella di Documenti, e scelga la sua cartella di esportazione (per iniziare). Questi permessi si possono concedere solo nell’app.
  3. Sulla scheda Riga di comando dell’app, prema “copia il comando di installazione” e lo incolli una volta nel Terminale.

L’app è in sandbox e non può scrivere nel suo PATH, ed è per questo che l’ultimo passaggio è un incolla. La riga installa exporter in /opt/homebrew/bin quando quella cartella esiste e le appartiene (senza sudo), altrimenti in /usr/local/bin con sudo. Incollarla di nuovo non causa problemi; sostituisce ciò che c’era. exporter help install stampa la riga per il suo Mac.

Sorgenti

--source accetta uno di questi valori:

sorgente accettato anche scrive
apple apple-notes, applenotes, notes markdown o html
bear markdown o html
logseq sempre markdown
contacts apple-contacts, addressbook sempre markdown
messages imessage, chats, conversations sempre markdown
screentime screen-time, usage sempre markdown, un file al giorno
documents docs, files, pdf i formati selezionati sulla scheda Documenti

Formati

--format accetta markdown (o md) oppure html; maiuscole e minuscole sono indifferenti. Qualsiasi altro valore si ferma con error: --format pdf: expected markdown | html e codice di uscita 64.

  • senza il flag, sync scrive ogni app nel formato impostato sulla sua scheda (Apple Notes e Bear hanno ciascuno il proprio) ed export scrive nel formato impostato per l’app che esporta; exporter help sync ed exporter help export mostrano quelli attuali
  • Logseq, Contatti, Messaggi e Tempo di utilizzo sono sempre markdown, e Documenti scrive i formati selezionati sulla sua scheda, quindi per loro --format html viene ignorato con un avviso: note: logseq export is always markdown, so --format is ignored for this source.
  • Apple Notes scrive una pagina .html per nota (il formato HTML), con gli allegati copiati in attachments/ accanto e collegati, senza front matter. L’HTML di Bear è il testo semplice della nota dentro un <pre>, senza stile, con i riferimenti agli allegati lasciati come testo Markdown: i file vengono copiati, non collegati
  • il server MCP legge solo file markdown, quindi un’esportazione solo in HTML gli è invisibile
  • Apple Notes e Bear scrivono un formato per esecuzione; solo Documenti scrive entrambi in una sola sincronizzazione. Un’esecuzione rimuove solo i vecchi file del proprio formato, quindi cambiando formato i file dell’altro restano nella cartella. Per avere entrambi i formati, dia a ciascuno la propria cartella:
exporter export --dest ~/Backups/notes-md   --format markdown
exporter export --dest ~/Backups/notes-html --format html

sync

Esegue l’esportazione configurata nell’app, una volta, in modo incrementale, nelle cartelle di esportazione dell’app.

exporter sync [--source <source>]... [--format markdown|html] [--full] [--json] [--quiet]
flag cosa fa predefinito
--source <source> solo questa app, ripetibile ogni app collegata; quelle non collegate vengono saltate
--format markdown|html solo per questa esecuzione, l’impostazione dell’app non cambia. Finisce nella stessa cartella di esportazione dell’altro formato; per tenerli entrambi, esporti ciascuno nella propria cartella con export --dest l’impostazione dell’app
--full riesporta tutto. Prima di scrivere rimuove solo i file scritti da Exporter; tutto il resto nella cartella di esportazione rimane disattivato
--json un riepilogo leggibile da un programma disattivato
--quiet, -q solo errori disattivato
exporter sync --source apple
apple notes: exporting…
apple notes: 1204 of 1204 exported · 3 removed · 18.2s · markdown → /Users/me/Documents/notes

La riga di riepilogo è <source>: <succeeded> of <selected> exported, poi, se presenti, N failed, N removed (file di elementi eliminati, rinominati o spostati), N attachment issues, quindi la durata, il formato e la cartella scritta.

Se l’app è in esecuzione, sync non esporta nulla, esce con 0 e stampa Exporter is running: real-time sync is live, the export root is already current.

export

Un’esportazione singola in una cartella a sua scelta, per istantanee e script. Funziona anche con l’app aperta.

exporter export --dest <folder> [--source <source>] [--format markdown|html] [--organize folders|tags|smart] [--folder "Name"]... [--tag name]... [--dry-run] [--json] [--quiet]
flag cosa fa predefinito
--dest <folder> obbligatorio. Deve trovarsi dentro una cartella autorizzata sulla scheda Riga di comando dell’app (“aggiungi cartella”). Un’autorizzazione su ~/Backups vale per ogni cartella al suo interno nessuno
--source <source> l’app da esportare apple
--format markdown|html il formato per questa esecuzione l’impostazione dell’app
--organize folders|tags|smart solo Apple Notes: come le note vengono disposte nelle cartelle l’impostazione dell’app
--folder "Name" solo questa cartella di Apple Notes, ripetibile, nome confrontato senza distinzione tra maiuscole e minuscole la selezione salvata nell’app
--tag name solo questo tag, ripetibile, Apple Notes o Bear la selezione salvata nell’app
--dry-run stampa cosa verrebbe esportato, non scrive nulla disattivato
--json, --quiet (-q) come per sync disattivato

Senza --folder o --tag, Apple Notes e Bear esportano la selezione salvata nell’app. Logseq esporta l’intero grafo, Contatti ogni scheda, Messaggi ogni conversazione, Tempo di utilizzo ogni giorno; per loro i filtri vengono ignorati con un avviso.

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]
elenco cosa mostra JSON
sources ogni app, collegata o no, con il suo conteggio. Documenti non è elencato [{"source": "apple", "connected": true, "notes": 1204}, {"source": "messages", "connected": true, "conversations": 1532}, {"source": "bear", "connected": false}], con pages per logseq, contacts, e days per screen-time
folders cartelle di Apple Notes con il numero di note, rientrate per profondità. --source bear è un errore (codice di uscita 64) [{"name": "Work", "notes": 42, "level": 0}]
tags tag con i conteggi, Apple Notes per impostazione predefinita, Bear con --source bear [{"name": "journal", "notes": 12}]
dests le cartelle in cui export --dest può scrivere, più la cartella di esportazione di ogni app [{"path": "/Users/me/Backups", "kind": "granted"}], dove kind è granted, granted, volume not mounted o 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

Con --json: un oggetto per app, chiamato apple-notes, bear, logseq, contacts, messages, screen-time, documents, ciascuno {"connected": true, "lastExport": "2026-09-11 03:00"} (null se mai esportato); destinations (percorsi); tier (full o free, lo sblocco di Apple Notes) e freeNotesUsed; contactsTier e freeContactsUsed; messagesTier e freeConversationsUsed; screenTimeTier e freeDaysUsed; appRunning. Gli orari sono locali, yyyy-MM-dd HH:mm.

log

Le esecuzioni di esportazione recenti, dalla più nuova: lo stesso registro che mostra l’app, da ogni cartella di esportazione e da ogni cartella --dest autorizzata. Le cartelle con data create sotto una cartella autorizzata non vengono lette; il loro registro è in <folder>/.exporter/.

exporter log [--last N] [--json]
flag cosa fa predefinito
--last N quante esecuzioni 10
--json un oggetto per esecuzione disattivato
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 è clean, warnings (allegati mancanti) o failures.

doctor

Verifica che l’esportazione senza interfaccia funzionerà e stampa una riga per controllo: ok, FAIL con sotto una riga fix:, warn, oppure -- per un’informazione.

exporter doctor

Controlla che il database di ogni app collegata sia leggibile e la sua cartella di esportazione scrivibile, che ogni autorizzazione di cartella salvata sia valida, che ogni cartella --dest sia scrivibile, l’indice e il comando installato. Termina con il livello della versione, se l’app è in esecuzione, e l’ultimo arresto anomalo, se c’è stato. Con l’uscita 0 stampa all good., con l’uscita 2 stampa N problem(s) found.

report

Stampa un report diagnostico (versione dell’app, macOS e hardware, stato delle connessioni, esecuzioni recenti, ultimo arresto anomalo; nessun contenuto delle note) e lo copia negli appunti.

exporter report [--send] [--email <addr>]
flag cosa fa predefinito
--send ci invia il report e stampa sent., oppure offline: queued, will send on the next run or app launch. disattivato
--email <addr> aggiunge il suo indirizzo così possiamo risponderle nessuno

help e version

  • exporter help [topic]: argomenti sync, export, list, status, log, doctor, report, cron, install. L’aiuto per un comando mostra le sue impostazioni attuali come valori predefiniti
  • anche sync, export, list, log e report accettano --help o -h
  • exporter version (o --version, -v) stampa exporter 3.24
  • exporter da solo in un terminale stampa la panoramica ed esce con 64

Output JSON

--json funziona con sync, export, list, status e log. L’output è formattato, con chiavi ordinate. Per sync ed export aggiunga --quiet: senza, le righe di avanzamento e gli avvisi vengono stampati su stdout prima del JSON. export stampa un oggetto di riepilogo, sync stampa {"runs": [...]} con uno per sorgente:

{
  "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
}

Mentre l’app è in esecuzione, sync stampa la sua riga e nessun JSON. Gli errori vanno su stderr come error: <what happened and what to do>.

Codici di uscita

codice significato
0 ok, compresa un’esecuzione interrotta dalla quota gratuita
1 errori di esportazione: un elemento non è riuscito, l’esecuzione ha incontrato un errore, oppure ha selezionato elementi e non ne ha scritto nessuno
2 configurazione necessaria: app non collegata, cartella non autorizzata, cartella o tag non trovati, niente da esportare; doctor ha trovato problemi; il comando installato è in un formato vecchio o l’app a cui punta non c’è più
64 uso errato: comando o flag sconosciuto, valore mancante o non valido, --folder con Bear, list folders --source bear, exporter da solo in un terminale

Dove finiscono i file

sync scrive nella cartella di esportazione impostata per ogni app in Exporter, come ~/Documents/notes o ~/Documents/messages; export scrive in --dest. Una cartella al livello della sua home o un livello sotto, come ~/Documents stessa, riceve una sottocartella per app (notes-export, messages-export e così via), e una cartella più profonda viene usata così com’è. La riga di riepilogo (dopo la freccia) e il campo JSON root mostrano la cartella reale.

Ogni cartella di esportazione contiene .exporter/last-export.json e .exporter/last-export.md (l’ultima esecuzione) e .exporter/history/ (le ultime 50 esecuzioni). Apple Notes, Contatti, Messaggi, Tempo di utilizzo e Documenti tengono anche .exporter/files.json, ogni file scritto da un’esecuzione: l’esecuzione successiva rimuove solo i file elencati lì che nessun elemento produce più (Tempo di utilizzo non rimuove mai il file di un giorno). Anche Bear e Logseq rimuovono, all’esecuzione successiva, i file delle note che ha eliminato, rinominato o a cui ha cambiato tag. Le esportazioni di Apple Notes e Logseq ricevono anche bases/ con viste di Obsidian.

Quota gratuita

La riga di comando ha le stesse quote dell’app:

app gratis
Apple Notes 100 note
Contatti 100 contatti
Messaggi le 10 conversazioni più recenti
Tempo di utilizzo i 10 giorni più recenti alla prima sincronizzazione, e solo quelli: i giorni successivi richiedono lo sblocco
Documenti i 10 documenti modificati più di recente
Bear e Logseq illimitato

Gli elementi già esportati continuano a risincronizzarsi gratis; la quota ferma solo quelli nuovi. Un’esecuzione che la raggiunge esporta comunque ciò che può, esce con 0 e stampa un avviso (non con --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 riporta il livello e il numero di elementi usati per Apple Notes, Contatti, Messaggi e Tempo di utilizzo. Ogni app con quota si sblocca con il proprio acquisto in-app una tantum dentro Exporter, con prezzi per paese, senza abbonamento e senza pagamento sul web. La riga di comando legge l’acquisto a ogni esecuzione; se l’App Store non risponde entro 5 secondi, l’esecuzione continua con la quota gratuita.

Pianificazione

exporter help cron stampa queste righe con il percorso completo del comando sul suo Mac: usi quello, perché il PATH di cron potrebbe non includere la cartella di installazione. In un crontab, scriva % come \%:

0 3 * * * exporter sync
0 3 * * * exporter export --dest ~/Backups/notes-$(date +\%F)

Per Carbon Copy Cloner e altri strumenti di backup, esegua exporter sync come script preliminare e agisca in base al codice di uscita. Il comando resta attivo per tutta l’esportazione, anche quando macOS lo sospende senza nessun utente connesso. Mentre l’app è in esecuzione, con la finestra aperta o chiusa, sync non fa nulla: la sincronizzazione in tempo reale mantiene già aggiornata la cartella.

Server MCP

È l’app, non la riga di comando, ad avviare un server MCP locale che permette a Claude, Cursor, VS Code e altri client di cercare e leggere le sue esportazioni, su http://localhost:8744/mcp. La pagina del server MCP spiega tutto ciò che lo riguarda, dall’avvio ai suoi sei strumenti.

Risoluzione dei problemi

Esegua prima exporter doctor; ogni controllo non riuscito stampa la sua soluzione. Aiuto copre anche i messaggi dell’app.

  • X is not authorized: aggiunga la cartella (o una cartella superiore) sulla scheda Riga di comando, poi esegua di nuovo. exporter list dests mostra cosa è autorizzato
  • apple notes is not set up. open Exporter and connect Apple Notes + an export folder. (lo stesso per ogni app): la colleghi in Exporter
  • sync stampa che Exporter è in esecuzione: non c’è nulla da fare, l’app mantiene aggiornata la cartella. Usi export --dest per una copia separata
  • no notes were written. run "exporter doctor" to check folders and permissions.: l’esecuzione ha selezionato note e non ne ha scritta nessuna; doctor controlla le cartelle e i permessi
  • bookmark broken: la cartella è stata spostata, eliminata, o il suo volume non è montato. La scelga di nuovo nell’app
  • il comando installato è in un formato vecchio, oppure cron e gli strumenti di backup vedono il codice di uscita 19: incolli di nuovo il comando di installazione
  • l’app è stata spostata dopo l’installazione del comando: incolli di nuovo il comando di installazione
  • l’app è sbloccata ma l’esecuzione risulta gratuita: la verifica dell’acquisto attende al massimo 5 secondi, poi continua con la quota gratuita. Esegua di nuovo
  • un problema che doctor non sa spiegare: exporter report --send --email you@example.com

Exporter

Versione 3.24 (App Store)

macOS 15 o successivo

exporter@tinysend.com

© system operator