Отримати Exporter
Документація CLI

Командний рядок exporter

Запускайте свої експорти з Термінала, cron, програм резервного копіювання та агентів.

exporter є застосунком Exporter для Mac, запущеним без вікна. Він використовує ті самі під’єднання, папки експорту, вибір і параметри, які ви налаштували в застосунку, і записує в той самий журнал експорту. Він працює, коли застосунок закрито, і ніколи нічого не запитує: якщо чогось бракує, запуск зупиняється з кодом виходу 2 і одним рядком, що пояснює, що робити. Лише macOS.

Встановлення

  1. Встановіть Exporter із Mac App Store (завантажити) і відкрийте його.
  2. Під’єднайте застосунок (Нотатки Apple, Bear, Logseq, Контакти, Повідомлення або Екранний час) чи папку Документів і виберіть його папку експорту (початок роботи). Ці дозволи можна надати лише в застосунку.
  3. На картці «Командний рядок» у застосунку натисніть «Копіювати команду встановлення» і один раз вставте команду в Термінал.

Застосунок працює в пісочниці й не може записувати у ваш PATH, тому останній крок полягає у вставленні. Рядок встановлює exporter у /opt/homebrew/bin, якщо ця папка існує і належить вам (без sudo), інакше в /usr/local/bin через sudo. Повторне вставлення безпечне; воно замінює те, що там було. Рядок також встановлює notes-exporter, стару назву команди, тож старіші скрипти й рядки cron і далі працюють. exporter help install виводить рядок для вашого Mac.

Джерела

--source приймає одне з цих значень:

джерело також приймається записує
apple apple-notes, applenotes, notes markdown або html
bear markdown або html
logseq завжди markdown
contacts apple-contacts, addressbook завжди markdown
messages imessage, chats, conversations завжди markdown
screentime screen-time, usage завжди markdown, один файл на день
reminders apple-reminders, lists, todos завжди markdown, один файл на список
claude-code claudecode, claude, claude-code-sessions markdown, оригінальний лог або обидва, як позначено на картці
wallet passes, pkpass, boarding-passes, tickets завжди markdown, один файл на картку
documents docs, files, pdf формати, позначені на картці Документів

Формати

--format приймає markdown (або md) чи html; регістр не має значення. Будь-що інше зупиняє запуск з error: --format pdf: expected markdown | html і кодом 64.

  • без нього sync записує кожен застосунок у форматі, заданому на його картці (Нотатки Apple і Bear мають кожен свій), а export записує у форматі з параметра застосунку, який експортує; exporter help sync і exporter help export показують поточні
  • Logseq, Контакти, Повідомлення й Екранний час завжди в markdown, а Документи записують формати, позначені на своїй картці, тож для них --format html ігнорується з приміткою: note: logseq export is always markdown, so --format is ignored for this source.
  • Нотатки Apple записують одну сторінку .html на нотатку (формат HTML), вкладення копіюються в attachments/ поруч і пов’язуються, без front matter. HTML від Bear містить простий текст нотатки всередині <pre>, без стилів, а посилання на вкладення залишаються текстом Markdown: файли копіюються, а не пов’язуються
  • сервер MCP читає лише файли markdown, тож експорт лише в HTML для нього невидимий
  • Нотатки Apple і Bear записують один формат за запуск; обидва за одну синхронізацію записують лише Документи. Запуск видаляє лише старі файли свого формату, тож після перемикання файли іншого формату залишаються в папці. Для обох форматів дайте кожному власну папку:
exporter export --dest ~/Backups/notes-md   --format markdown
exporter export --dest ~/Backups/notes-html --format html

sync

Запускає експорт, налаштований у застосунку, один раз, інкрементно, у папки експорту застосунку.

exporter sync [--source <source>]... [--format markdown|html] [--full] [--json] [--quiet]
прапорець що робить типово
--source <source> лише цей застосунок, можна повторювати усі під’єднані застосунки; непід’єднані пропускаються
--format markdown|html лише для цього запуску, параметр застосунку не змінюється. Результат потрапляє в ту саму папку експорту, що й інший формат; щоб зберегти обидва, експортуйте кожен у власну папку через export --dest параметр застосунку
--full повторно експортувати все. Перед записом видаляє лише файли, які записав Exporter; усе інше в папці експорту залишається вимкнено
--json підсумок у машиночитному форматі вимкнено
--quiet, -q лише помилки вимкнено
exporter sync --source apple
apple notes: exporting…
apple notes: 1204 of 1204 exported · 3 removed · 18.2s · markdown → /Users/me/Documents/notes

Рядок підсумку має вигляд <source>: <succeeded> of <selected> exported, далі, якщо є, N failed, N removed (файли елементів, які було видалено, перейменовано чи переміщено), N attachment issues, потім тривалість, формат і папка, куди записано.

Якщо застосунок працює, sync нічого не експортує, завершується з кодом 0 і виводить Exporter is running: real-time sync is live, the export root is already current.

export

Одноразовий експорт у вибрану вами папку, для знімків і скриптів. Він добре працює, коли застосунок відкрито.

exporter export --dest <folder> [--source <source>] [--format markdown|html] [--organize folders|tags|smart] [--folder "Name"]... [--tag name]... [--dry-run] [--json] [--quiet]
прапорець що робить типово
--dest <folder> обов’язковий. Має бути всередині папки, дозволеної на картці «Командний рядок» у застосунку («додати папку…»). Дозвіл на ~/Backups охоплює всі папки під нею немає
--source <source> застосунок для експорту apple
--format markdown|html формат для цього запуску параметр застосунку
--organize folders|tags|smart лише Нотатки Apple: як нотатки розкладаються по папках, для цього запуску «Упорядкування» на картці
--folder "Name" лише ця папка Нотаток Apple, можна повторювати, назва без урахування регістру вибір, збережений у застосунку
--tag name лише цей тег, можна повторювати, Нотатки Apple або Bear вибір, збережений у застосунку
--dry-run вивести, що буде експортовано, нічого не записуючи вимкнено
--json, --quiet (-q) як для sync вимкнено

Без --folder чи --tag Нотатки Apple і Bear експортують вибір, збережений у застосунку. Logseq експортує весь граф; Контакти, Повідомлення, Екранний час і Документи експортують те, що позначено на їхній картці, так само як sync; фільтри для них ігноруються з приміткою. Для Документів --dry-run виводить would convert <n> document(s), а запуск зазначає файли, які не може прочитати: 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]
список що показує JSON
sources кожен застосунок, під’єднаний чи ні, з кількістю. Documents не показується [{"source": "apple", "connected": true, "notes": 1204}, {"source": "messages", "connected": true, "conversations": 1532}, {"source": "bear", "connected": false}], з pages для logseq, contacts і days для screen-time
folders папки Нотаток Apple з кількістю нотаток, з відступами за глибиною. --source bear дає помилку (код 64) [{"name": "Work", "notes": 42, "level": 0}]
tags теги з кількістю, типово Нотатки Apple, Bear із --source bear [{"name": "journal", "notes": 12}]
dests папки, у які може записувати export --dest, а також папка експорту кожного застосунку [{"path": "/Users/me/Backups", "kind": "granted"}], де kind набуває значень granted, granted, volume not mounted або 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

З --json: по одному об’єкту на застосунок, з назвами apple-notes, bear, logseq, contacts, messages, screen-time, documents, кожен {"connected": true, "lastExport": "2026-09-11 03:00"} (null, якщо експорту ще не було); destinations (шляхи); tier (full або free, розблокування Нотаток Apple) і freeNotesUsed; contactsTier і freeContactsUsed; messagesTier і freeConversationsUsed; screenTimeTier і freeDaysUsed; organize ({"appleNotes": "folders", "contacts": "flat"}, «Упорядкування» на картках); appRunning. Час місцевий, yyyy-MM-dd HH:mm.

log

Нещодавні запуски експорту, від найновішого: той самий журнал, що показує застосунок, з усіх папок експорту та дозволених папок --dest. Папки з датами, створені в дозволеній папці, не читаються; їхній запис лежить у <folder>/.exporter/.

exporter log [--last N] [--json]
прапорець що робить типово
--last N скільки запусків 10
--json один об’єкт на запуск вимкнено
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 (бракує вкладень) або failures.

doctor

Перевіряє, чи працюватиме експорт без вікна, і виводить по рядку на кожну перевірку: ok, FAIL з рядком fix: під ним, warn або -- для інформації.

exporter doctor

Він перевіряє, що база даних кожного під’єднаного застосунку доступна для читання, а його папка експорту для запису, що кожен збережений дозвіл на папку дійсний, що кожна папка --dest доступна для запису, а також індекс і встановлену команду. Наприкінці він показує рівень версії, чи працює застосунок, і останній збій, якщо він був. Код 0 виводить all good., код 2 виводить N problem(s) found.

report

Виводить діагностичний звіт (версія застосунку, macOS і обладнання, стан під’єднань, нещодавні запуски, останній збій; без вмісту нотаток) і копіює його в буфер обміну.

exporter report [--send] [--email <addr>]
прапорець що робить типово
--send надсилає звіт нам і виводить sent. або offline: queued, will send on the next run or app launch. вимкнено
--email <addr> додає вашу адресу, щоб ми могли відповісти немає

help і version

  • exporter help [topic]: теми sync, export, list, status, log, doctor, report, cron, install. Довідка до команди показує ваші поточні параметри як типові значення
  • sync, export, list, log і report також приймають --help або -h
  • exporter version (або --version, -v) виводить exporter 3.24
  • exporter без аргументів у терміналі виводить огляд і завершується з кодом 64

Вивід JSON

--json працює з sync, export, list, status і log. Вивід відформатовано з відсортованими ключами. Для sync і export додайте --quiet: без нього рядки прогресу й приміток виводяться в stdout перед JSON. export виводить один об’єкт підсумку, sync виводить {"runs": [...]} з одним об’єктом на джерело:

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

Поки застосунок працює, sync виводить свій один рядок і жодного JSON. Помилки йдуть у stderr у вигляді error: <what happened and what to do>.

Коди виходу

код значення
0 гаразд, зокрема запуск, який обірвав безкоштовний ліміт
1 збої експорту: елемент не експортувався, запуск натрапив на помилку або вибрав елементи й не записав жодного
2 потрібне налаштування: застосунок не під’єднано, папку не дозволено, папку чи тег не знайдено, нічого експортувати; doctor знайшов проблеми; встановлена команда має старий формат або застосунку, на який вона вказує, більше немає
64 неправильне використання: невідома команда чи прапорець, відсутнє або хибне значення, --folder з Bear, list folders --source bear, exporter без аргументів у терміналі

Куди потрапляють файли

sync записує в папку експорту, задану для кожного застосунку в Exporter, як-от ~/Documents/notes або ~/Documents/messages; export записує в --dest. Папка на рівні вашої домашньої папки або на рівень нижче, як-от сама ~/Documents, отримує вкладену папку для кожного застосунку (notes-export, messages-export тощо), а глибша папка використовується як є. Рядок підсумку (після стрілки) і root у JSON показують справжню папку.

Кожна папка експорту містить .exporter/last-export.json і .exporter/last-export.md (останній запуск) та .exporter/history/ (останні 50 запусків). Кожен застосунок також веде .exporter/files.json, перелік кожного файлу, записаного запуском: наступний запуск видаляє лише перелічені там файли, яких жоден елемент більше не створює, тож нотатки, які ви видалили, перейменували або яким змінили теги, втрачають свій старий файл (Екранний час ніколи не видаляє файл дня). Експорти Нотаток Apple і Logseq також отримують bases/ з поданнями Obsidian.

Безкоштовний ліміт

Командний рядок має ті самі ліміти, що й застосунок:

застосунок безкоштовно
Нотатки Apple 100 нотаток
Контакти 100 контактів
Повідомлення 50 останніх розмов
Екранний час 10 останніх днів на момент першої синхронізації, і лише вони: пізніші дні потребують розблокування
Документи 10 нещодавно змінених документів
Bear і Logseq без обмежень

Уже експортовані елементи й далі безкоштовно синхронізуються; ліміт зупиняє лише нові. Запуск, який досяг ліміту, усе одно експортує дозволене, завершується з кодом 0 і виводить примітку (але не з --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 містить рівень і використану кількість для Нотаток Apple, Контактів, Повідомлень і Екранного часу. Кожен обмежений застосунок розблоковується власною одноразовою покупкою в Exporter, ціна залежить від країни, без підписки й без оплати на сайті. Командний рядок перевіряє покупку під час кожного запуску; якщо App Store не відповідає протягом 5 секунд, запуск продовжується в межах безкоштовного ліміту.

Розклад

exporter help cron виводить ці рядки з повним шляхом до команди на вашому Mac: використовуйте його, бо PATH у cron може не містити папки встановлення. У crontab екрануйте % як \%:

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

Для Carbon Copy Cloner та інших програм резервного копіювання запускайте exporter sync як попередній скрипт і розгалужуйтеся за кодом виходу. Команда залишається під’єднаною протягом усього експорту, навіть коли macOS призупиняє її, а в системі ніхто не ввійшов. Поки застосунок працює, з відкритим чи закритим вікном, sync нічого не робить: синхронізація в реальному часі вже тримає папку актуальною.

Програма резервного копіювання, яка запускає свої скрипти від імені root (Carbon Copy Cloner так робить), має запускати exporter у сеансі користувача, що ввійшов у систему, а не лише від його імені. Сам sudo -u одразу зупиняє його з кодом виходу 133; додайте перед ним launchctl asuser:

/bin/launchctl asuser "$(id -u "$CONSOLE_USER")" /usr/bin/sudo -u "$CONSOLE_USER" exporter sync

Сервер MCP

Локальний сервер MCP, через який Claude, Cursor, VS Code та інші клієнти шукають і читають ваші експорти за адресою http://localhost:8744/mcp, запускає застосунок, а не командний рядок. Сторінка про сервер MCP описує все про нього, від запуску до шести інструментів.

Усунення проблем

Спершу запустіть exporter doctor; кожна невдала перевірка виводить своє виправлення. Довідка описує й повідомлення застосунку.

  • X is not authorized: додайте папку (або батьківську) на картці «Командний рядок», потім запустіть знову. exporter list dests показує, що дозволено
  • apple notes is not set up. open Exporter and connect Apple Notes + an export folder. (так само для кожного застосунку): під’єднайте його в Exporter
  • sync повідомляє, що Exporter працює: нічого робити не треба, застосунок тримає папку актуальною. Для окремої копії використовуйте export --dest
  • no notes were written. run "exporter doctor" to check folders and permissions.: запуск вибрав нотатки й не записав жодної; doctor перевіряє папки й дозволи
  • bookmark broken: папку переміщено, видалено або її том не підключено. Виберіть її знову в застосунку
  • встановлена команда має старий формат, або cron і програми резервного копіювання бачать код 19: вставте команду встановлення знову
  • застосунок перемістили після встановлення команди: вставте команду встановлення знову
  • розблоковано, але запуск каже free: перевірка покупки чекає щонайбільше 5 секунд, а потім продовжує в межах безкоштовного ліміту. Запустіть знову
  • проблема, яку doctor не може пояснити: exporter report --send --email you@example.com

Exporter

Версія 5.5 (App Store)

macOS 15 або новіша

exporter@tinysend.com

© system operator