Командний рядок exporter
Запускайте свої експорти з Термінала, cron, програм резервного копіювання та агентів.
exporter є застосунком Exporter для Mac, запущеним без вікна. Він використовує ті самі під’єднання, папки експорту, вибір і параметри, які ви налаштували в застосунку, і записує в той самий журнал експорту. Він працює, коли застосунок закрито, і ніколи нічого не запитує: якщо чогось бракує, запуск зупиняється з кодом виходу 2 і одним рядком, що пояснює, що робити. Лише macOS.
Встановлення
- Встановіть Exporter із Mac App Store (завантажити) і відкрийте його.
- Під’єднайте застосунок (Нотатки Apple, Bear, Logseq, Контакти, Повідомлення або Екранний час) чи папку Документів і виберіть його папку експорту (початок роботи). Ці дозволи можна надати лише в застосунку.
- На картці «Командний рядок» у застосунку натисніть «копіювати команду встановлення» і один раз вставте команду в Термінал.
Застосунок працює в пісочниці й не може записувати у ваш PATH, тому останній крок полягає у вставленні. Рядок встановлює exporter у /opt/homebrew/bin, якщо ця папка існує і належить вам (без sudo), інакше в /usr/local/bin через sudo. Повторне вставлення безпечне; воно замінює те, що там було. 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, один файл на день |
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 експортує весь граф, Контакти всі картки, Повідомлення всі розмови, Екранний час усі дні; фільтри для них ігноруються з приміткою.
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 · 10 of 10 free conversations used
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; 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або-hexporter version(або--version,-v) виводитьexporter 3.24exporterбез аргументів у терміналі виводить огляд і завершується з кодом 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 запусків). Нотатки Apple, Контакти, Повідомлення, Екранний час і Документи також ведуть .exporter/files.json, перелік кожного файлу, записаного запуском: наступний запуск видаляє лише перелічені там файли, яких жоден елемент більше не створює (Екранний час ніколи не видаляє файл дня). Bear і Logseq також видаляють під час наступного запуску файли нотаток, які ви видалили, перейменували або яким змінили теги. Експорти Нотаток Apple і Logseq також отримують bases/ з поданнями Obsidian.
Безкоштовний ліміт
Командний рядок має ті самі ліміти, що й застосунок:
| застосунок | безкоштовно |
|---|---|
| Нотатки Apple | 100 нотаток |
| Контакти | 100 контактів |
| Повідомлення | 10 останніх розмов |
| Екранний час | 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 (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 містить рівень і використану кількість для Нотаток 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 нічого не робить: синхронізація в реальному часі вже тримає папку актуальною.
Сервер 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.(так само для кожного застосунку): під’єднайте його в Exportersyncповідомляє, що Exporter працює: нічого робити не треба, застосунок тримає папку актуальною. Для окремої копії використовуйтеexport --destno 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