Obtener Exporter
DocumentaciónCLI

La línea de comandos exporter

Ejecute sus exportaciones desde Terminal, cron, herramientas de copia de seguridad y agentes.

exporter es la app Exporter para Mac ejecutada sin ventana. Usa las mismas conexiones, carpetas de exportación, selección y ajustes que configuró en la app, y escribe en el mismo registro de exportación. Funciona con la app cerrada y nunca pregunta nada: si falta algo, la ejecución se detiene con el código de salida 2 y una línea que dice qué hacer. Solo macOS.

Instalación

  1. Instale Exporter desde el Mac App Store (descarga) y ábralo.
  2. Conecte una app (Apple Notes, Bear, Logseq, Contactos, Mensajes o Tiempo de uso) o una carpeta de Documentos, y elija su carpeta de exportación (primeros pasos). Estos permisos solo se pueden conceder en la app.
  3. En la tarjeta Línea de comandos de la app, pulse «copiar el comando de instalación» y péguelo una vez en Terminal.

La app funciona en un entorno aislado (sandbox) y no puede escribir en su PATH, por eso el último paso es pegar. La línea instala exporter en /opt/homebrew/bin cuando esa carpeta existe y le pertenece (sin sudo); si no, en /usr/local/bin con sudo. Volver a pegarla no causa problemas; sustituye lo que hubiera. exporter help install muestra la línea para su Mac.

Fuentes

--source admite una de estas:

fuente también se acepta escribe
apple apple-notes, applenotes, notes markdown o html
bear markdown o html
logseq siempre markdown
contacts apple-contacts, addressbook siempre markdown
messages imessage, chats, conversations siempre markdown
screentime screen-time, usage siempre markdown, un archivo por día
documents docs, files, pdf los formatos marcados en la tarjeta Documentos

Formatos

--format admite markdown (o md) o html; no distingue mayúsculas. Cualquier otro valor se detiene con error: --format pdf: expected markdown | html y la salida 64.

  • sin él, sync escribe cada app en el formato definido en su tarjeta (Apple Notes y Bear tienen cada una el suyo) y export escribe según el ajuste de la app que exporta; exporter help sync y exporter help export muestran los actuales
  • Logseq, Contactos, Mensajes y Tiempo de uso son siempre markdown, y Documentos escribe los formatos marcados en su tarjeta, así que para ellos --format html se ignora con un aviso: note: logseq export is always markdown, so --format is ignored for this source.
  • Apple Notes escribe una página .html por nota (el formato HTML), con los adjuntos copiados en attachments/ junto a ella y enlazados, sin front matter. El HTML de Bear es el texto plano de la nota dentro de un <pre>, sin estilos, y con las referencias a adjuntos como texto Markdown: los archivos se copian, no se enlazan
  • el servidor MCP solo lee archivos markdown, así que una exportación solo en HTML le resulta invisible
  • Apple Notes y Bear escriben un formato por ejecución; solo Documentos escribe ambos en una sola sincronización. Una ejecución solo elimina archivos antiguos de su propio formato, así que al cambiar de formato los archivos del otro se quedan en la carpeta. Para los dos formatos, dé a cada uno su propia carpeta:
exporter export --dest ~/Backups/notes-md   --format markdown
exporter export --dest ~/Backups/notes-html --format html

sync

Ejecuta una vez, de forma incremental, la exportación que configuró en la app, en las carpetas de exportación de la app.

exporter sync [--source <source>]... [--format markdown|html] [--full] [--json] [--quiet]
flag qué hace valor por defecto
--source <source> solo esta app, repetible todas las apps conectadas; las no conectadas se omiten
--format markdown|html solo en esta ejecución, el ajuste de la app no cambia. Se guarda en la misma carpeta de exportación que el otro formato; para conservar los dos, exporte cada uno a su propia carpeta con export --dest el ajuste de la app
--full vuelve a exportarlo todo. Antes de escribir solo elimina los archivos que escribió Exporter; todo lo demás de la carpeta de exportación se queda desactivado
--json un resumen legible por máquinas desactivado
--quiet, -q solo errores desactivado
exporter sync --source apple
apple notes: exporting…
apple notes: 1204 of 1204 exported · 3 removed · 18.2s · markdown → /Users/me/Documents/notes

La línea de resumen es <source>: <succeeded> of <selected> exported, seguida, cuando corresponde, de N failed, N removed (archivos de elementos que se eliminaron, renombraron o movieron), N attachment issues, y después la duración, el formato y la carpeta escrita.

Si la app está abierta, sync no exporta nada, sale con 0 y muestra Exporter is running: real-time sync is live, the export root is already current.

export

Una exportación puntual a la carpeta que elija, para instantáneas y scripts. Funciona sin problemas con la app abierta.

exporter export --dest <folder> [--source <source>] [--format markdown|html] [--organize folders|tags|smart] [--folder "Name"]... [--tag name]... [--dry-run] [--json] [--quiet]
flag qué hace valor por defecto
--dest <folder> obligatorio. Debe estar dentro de una carpeta autorizada en la tarjeta Línea de comandos de la app («añadir carpeta»). Una autorización sobre ~/Backups cubre todas las carpetas que contiene ninguno
--source <source> la app que se exporta apple
--format markdown|html el formato de esta ejecución el ajuste de la app
--organize folders|tags|smart solo Apple Notes: cómo se reparten las notas en carpetas el ajuste de la app
--folder "Name" solo esta carpeta de Apple Notes, repetible, nombre sin distinguir mayúsculas la selección guardada en la app
--tag name solo esta etiqueta, repetible, Apple Notes o Bear la selección guardada en la app
--dry-run muestra lo que se exportaría, sin escribir nada desactivado
--json, --quiet (-q) como en sync desactivado

Sin --folder ni --tag, Apple Notes y Bear exportan la selección guardada en la app. Logseq exporta todo el grafo, Contactos todas las fichas, Mensajes todas las conversaciones y Tiempo de uso todos los días; en ellos los filtros se ignoran con un aviso.

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 qué muestra JSON
sources cada app, conectada o no, con su recuento. Documentos no aparece [{"source": "apple", "connected": true, "notes": 1204}, {"source": "messages", "connected": true, "conversations": 1532}, {"source": "bear", "connected": false}], con pages para logseq, contacts, y days para screen-time
folders carpetas de Apple Notes con su número de notas, sangradas según la profundidad. --source bear es un error (salida 64) [{"name": "Work", "notes": 42, "level": 0}]
tags etiquetas con recuentos, de Apple Notes por defecto, de Bear con --source bear [{"name": "journal", "notes": 12}]
dests carpetas en las que puede escribir export --dest, más la carpeta de exportación de cada app [{"path": "/Users/me/Backups", "kind": "granted"}], donde kind es 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 objeto por app, llamado apple-notes, bear, logseq, contacts, messages, screen-time, documents, cada uno {"connected": true, "lastExport": "2026-09-11 03:00"} (null si nunca se exportó); destinations (rutas); tier (full o free, el desbloqueo de Apple Notes) y freeNotesUsed; contactsTier y freeContactsUsed; messagesTier y freeConversationsUsed; screenTimeTier y freeDaysUsed; appRunning. Las horas son locales, yyyy-MM-dd HH:mm.

log

Las ejecuciones de exportación recientes, de la más nueva a la más antigua: el mismo registro que muestra la app, de cada carpeta de exportación y de cada carpeta --dest autorizada. Las carpetas con fecha creadas dentro de una carpeta autorizada no se leen; su registro está en <folder>/.exporter/.

exporter log [--last N] [--json]
flag qué hace valor por defecto
--last N cuántas ejecuciones 10
--json un objeto por ejecución desactivado
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 es clean, warnings (faltan adjuntos) o failures.

doctor

Comprueba que la exportación sin interfaz funcionará y muestra una línea por comprobación: ok, FAIL con una línea fix: debajo, warn, o -- para información.

exporter doctor

Comprueba que la base de datos de cada app conectada se puede leer y que en su carpeta de exportación se puede escribir, que cada permiso de carpeta guardado se resuelve, que en cada carpeta --dest se puede escribir, el índice y el comando instalado. Termina con el nivel de la versión, si la app está abierta y el último fallo, si lo hubo. La salida 0 muestra all good., la salida 2 muestra N problem(s) found.

report

Muestra un informe de diagnóstico (versión de la app, macOS y hardware, estado de las conexiones, ejecuciones recientes, último fallo; sin contenido de notas) y lo copia al portapapeles.

exporter report [--send] [--email <addr>]
flag qué hace valor por defecto
--send nos envía el informe y muestra sent., o offline: queued, will send on the next run or app launch. desactivado
--email <addr> añade su dirección para que podamos responder ninguno

help y version

  • exporter help [topic]: temas sync, export, list, status, log, doctor, report, cron, install. La ayuda de un comando muestra sus ajustes actuales como valores por defecto
  • sync, export, list, log y report también admiten --help o -h
  • exporter version (o --version, -v) muestra exporter 3.24
  • exporter solo en un terminal muestra la descripción general y sale con 64

Salida JSON

--json funciona en sync, export, list, status y log. La salida se imprime con formato y claves ordenadas. Para sync y export, añada --quiet: sin él, las líneas de progreso y de notas se imprimen en stdout antes del JSON. export imprime un objeto de resumen, sync imprime {"runs": [...]} con uno por fuente:

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

Con la app abierta, sync imprime su única línea y ningún JSON. Los errores van a stderr como error: <what happened and what to do>.

Códigos de salida

código significado
0 correcto, incluida una ejecución que el cupo gratuito cortó
1 fallos de exportación: un elemento falló, la ejecución encontró un error o seleccionó elementos y no escribió ninguno
2 falta configuración: app no conectada, carpeta no autorizada, carpeta o etiqueta no encontrada, nada que exportar; doctor encontró problemas; el comando instalado tiene un formato antiguo o la app a la que apunta ya no existe
64 uso: comando o flag desconocido, valor ausente o incorrecto, --folder con Bear, list folders --source bear, exporter solo en un terminal

Dónde quedan los archivos

sync escribe en la carpeta de exportación definida para cada app en Exporter, como ~/Documents/notes o ~/Documents/messages; export escribe en --dest. Una carpeta en su carpeta de inicio o un nivel por debajo, como la propia ~/Documents, recibe una subcarpeta por app (notes-export, messages-export, etc.), y una carpeta más profunda se usa tal cual. La línea de resumen (tras la flecha) y el root del JSON muestran la carpeta real.

Cada carpeta de exportación contiene .exporter/last-export.json y .exporter/last-export.md (la última ejecución), .exporter/history/ (las últimas 50 ejecuciones). Apple Notes, Contactos, Mensajes, Tiempo de uso y Documentos también guardan .exporter/files.json, cada archivo que escribió una ejecución: la siguiente solo elimina archivos de esa lista que ya no produce ningún elemento (Tiempo de uso nunca elimina un archivo de día). Bear y Logseq también eliminan en la siguiente ejecución los archivos de las notas que eliminó, renombró o cambió de etiqueta. Las exportaciones de Apple Notes y Logseq también reciben bases/ con vistas de Obsidian.

Cupo gratuito

La línea de comandos tiene los mismos cupos que la app:

app gratis
Apple Notes 100 notas
Contactos 100 contactos
Mensajes las 10 conversaciones más recientes
Tiempo de uso los 10 días más recientes en la primera sincronización, y solo esos: los días posteriores necesitan el desbloqueo
Documentos los 10 documentos modificados más recientemente
Bear y Logseq sin límite

Los elementos ya exportados se siguen resincronizando gratis; el cupo solo detiene los nuevos. Una ejecución que lo alcanza exporta lo que puede, sale con 0 y muestra un aviso (no 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 incluye el nivel y el número usado para Apple Notes, Contactos, Mensajes y Tiempo de uso. Cada app limitada se desbloquea con su propio pago único dentro de Exporter, con precio por país, sin suscripción ni pago en la web. La línea de comandos comprueba la compra en cada ejecución; si el App Store no responde en 5 segundos, la ejecución continúa con el cupo gratuito.

Programación

exporter help cron muestra estas líneas con la ruta completa del comando en su Mac: úsela, porque el PATH de cron puede no incluir la carpeta de instalación. En un crontab, escape % como \%:

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

Para Carbon Copy Cloner y otras herramientas de copia de seguridad, ejecute exporter sync como script previo y actúe según el código de salida. El comando permanece activo durante toda la exportación, incluso cuando macOS lo suspende sin nadie con la sesión iniciada. Mientras la app está en marcha, con la ventana abierta o cerrada, sync no hace nada: la sincronización en tiempo real ya mantiene la carpeta al día.

Servidor MCP

La app, no la línea de comandos, ejecuta un servidor MCP local que permite a Claude, Cursor, VS Code y otros clientes buscar y leer sus exportaciones, en http://localhost:8744/mcp. La página del servidor MCP lo cubre todo, desde cómo iniciarlo hasta sus seis herramientas.

Solución de problemas

Ejecute primero exporter doctor; cada comprobación fallida muestra su solución. Ayuda también cubre los mensajes de la app.

  • X is not authorized: añada la carpeta (o una superior) en la tarjeta Línea de comandos y vuelva a ejecutar. exporter list dests muestra lo que está autorizado
  • apple notes is not set up. open Exporter and connect Apple Notes + an export folder. (lo mismo para cada app): conéctela en Exporter
  • sync indica que Exporter está abierto: no hay nada que hacer, la app mantiene la carpeta al día. Use export --dest para una copia aparte
  • no notes were written. run "exporter doctor" to check folders and permissions.: la ejecución seleccionó notas y no escribió ninguna; doctor comprueba las carpetas y los permisos
  • bookmark broken: la carpeta se movió, se eliminó o su volumen no está montado. Vuelva a elegirla en la app
  • el comando instalado tiene un formato antiguo, o cron y las herramientas de copia de seguridad ven la salida 19: vuelva a pegar el comando de instalación
  • la app se ha movido desde que instaló el comando: vuelva a pegar el comando de instalación
  • está desbloqueado pero la ejecución dice free: la comprobación de la compra espera como máximo 5 segundos y luego continúa con el cupo gratuito. Vuelva a ejecutar
  • un problema que doctor no puede explicar: exporter report --send --email you@example.com

Exporter

Versión 3.24 (App Store)

macOS 15 o posterior

exporter@tinysend.com

© system operator