# سطر أوامر exporter

شغّل عمليات التصدير من Terminal وcron وأدوات النسخ الاحتياطي والوكلاء.

`exporter` هو تطبيق Exporter على Mac يعمل دون نافذة. يستخدم الاتصالات ومجلدات التصدير والتحديد والإعدادات نفسها التي ضبطتها في التطبيق، ويكتب في سجل التصدير نفسه. يعمل والتطبيق مغلق، ولا يطرح أي سؤال أبدًا: أي نقص يوقف التشغيل برمز الخروج 2 وسطر واحد يقول ما يجب فعله. لنظام macOS فقط.

## التثبيت

1. ثبّت Exporter من Mac App Store ([التنزيل](https://exporter.dev/download)) وافتحه.
2. اربط تطبيقًا (ملاحظات Apple أو Bear أو Logseq أو جهات الاتصال أو الرسائل أو مدة استخدام الجهاز) أو مجلد مستندات، واختر مجلد التصدير الخاص به ([البدء](https://exporter.dev/docs/getting-started)). لا يمكن منح هذه الأذونات إلا داخل التطبيق.
3. في بطاقة سطر الأوامر في التطبيق، اضغط «نسخ أمر التثبيت» والصقه مرة واحدة في Terminal.

التطبيق يعمل داخل بيئة معزولة (sandbox) ولا يمكنه الكتابة في 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](https://exporter.dev/docs/notes#markdown-and-html))، والمرفقات منسوخة إلى `attachments/` بجوارها ومرتبطة بها، بلا ترويسة. أما HTML في Bear فهو نص الملاحظة العادي داخل `<pre>`، بلا تنسيق، مع بقاء مراجع المرفقات نصًا بصيغة Markdown: تُنسخ الملفات ولا تُربط
- لا يقرأ خادم MCP إلا ملفات markdown، لذا فالتصدير الذي يقتصر على HTML غير مرئي له
- تكتب ملاحظات Apple وBear صيغة واحدة في كل تشغيل، والمستندات وحدها تكتب الصيغتين في مزامنة واحدة. لا يحذف التشغيل إلا الملفات القديمة من صيغته هو، لذا فإن التبديل يترك ملفات الصيغة الأخرى في المجلد. وللحصول على الصيغتين، خصّص لكل منهما مجلدًا:

```sh
exporter export --dest ~/Backups/notes-md   --format markdown
exporter export --dest ~/Backups/notes-html --format html
```

## sync

يشغّل التصدير الذي ضبطته في التطبيق، مرة واحدة، تدريجيًا، إلى مجلدات التصدير في التطبيق.

```sh
exporter sync [--source <source>]... [--format markdown|html] [--full] [--json] [--quiet]
```

| الخيار | ما يفعله | الافتراضي |
| --- | --- | --- |
| `--source <source>` | هذا التطبيق فقط، ويمكن تكراره | كل تطبيق مرتبط، وتُتخطّى التطبيقات غير المرتبطة |
| `--format markdown\|html` | لهذا التشغيل فقط، ويبقى إعداد التطبيق كما هو. يصل الناتج إلى مجلد التصدير نفسه الذي فيه الصيغة الأخرى، وللاحتفاظ بالاثنتين صدّر كلًّا منهما إلى مجلده الخاص بواسطة `export --dest` | إعداد التطبيق |
| `--full` | يعيد تصدير كل شيء. لا يحذف قبل الكتابة إلا الملفات التي كتبها Exporter، وكل ما عداها في مجلد التصدير يبقى | متوقف |
| `--json` | ملخص قابل للقراءة آليًا | متوقف |
| `--quiet`، `-q` | الأخطاء فقط | متوقف |

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

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

تصدير لمرة واحدة إلى مجلد تختاره، للقطات والبرامج النصية. يعمل بلا مشكلة والتطبيق مفتوح.

```sh
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 الرسم البياني كله، وجهات الاتصال كل البطاقات، والرسائل كل المحادثات، ومدة استخدام الجهاز كل الأيام، وتُتجاهل عوامل التصفية لهذه المصادر مع ملاحظة.

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

| القائمة | ما تعرضه | JSON |
| --- | --- | --- |
| `sources` | كل تطبيق، مرتبطًا كان أم لا، مع عدده. المستندات لا تُدرج | `[{"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)` |

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

```sh
exporter log [--last N] [--json]
```

| الخيار | ما يفعله | الافتراضي |
| --- | --- | --- |
| `--last N` | عدد عمليات التشغيل | 10 |
| `--json` | كائن لكل تشغيل | متوقف |

```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` هي `clean` أو `warnings` (مرفقات مفقودة) أو `failures`.

## doctor

يتحقق من أن التصدير دون واجهة سيعمل ويطبع سطرًا لكل فحص: `ok`، أو `FAIL` وتحته سطر `fix:`، أو `warn`، أو `--` للمعلومات.

```sh
exporter doctor
```

يتحقق من أن قاعدة بيانات كل تطبيق مرتبط قابلة للقراءة ومجلد التصدير الخاص به قابل للكتابة، ومن أن كل إذن مجلد محفوظ لا يزال صالحًا، ومن أن كل مجلد `--dest` قابل للكتابة، ومن الفهرس، ومن الأمر المثبَّت. وينتهي بمستوى الإصدار، وبما إذا كان التطبيق يعمل، وبآخر انهيار إن وُجد. الخروج 0 يطبع `all good.`، والخروج 2 يطبع `N problem(s) found.`

## report

يطبع تقريرًا تشخيصيًا (إصدار التطبيق، وmacOS والعتاد، وحالة الاتصالات، وعمليات التشغيل الأخيرة، وآخر انهيار، دون أي محتوى من الملاحظات) وينسخه إلى الحافظة.

```sh
exporter report [--send] [--email <addr>]
```

| الخيار | ما يفعله | الافتراضي |
| --- | --- | --- |
| `--send` | يرسل التقرير إلينا ويطبع `sent.`، أو `offline: queued, will send on the next run or app launch.` | متوقف |
| `--email <addr>` | يضيف عنوانك لنتمكن من الرد | لا شيء |

## التعليمات والإصدار

- `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": [...]}` مع كائن لكل مصدر:

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

ما دام التطبيق يعمل، يطبع `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`):

```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 (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، [بسعر يُحدَّد لكل بلد](https://exporter.dev/pricing)، بلا اشتراك وبلا دفع عبر الويب. يقرأ سطر الأوامر حالة الشراء في كل تشغيل، وإذا لم يستجب App Store خلال 5 ثوانٍ، يستمر التشغيل على الحصة المجانية.

## الجدولة

يطبع `exporter help cron` هذه الأسطر مع المسار الكامل للأمر على جهاز Mac لديك: استخدمه، لأن PATH الخاص بـ cron قد لا يتضمن مجلد التثبيت. في ملف crontab، اكتب `%` بالشكل `\%`:

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

لـ Carbon Copy Cloner وأدوات النسخ الاحتياطي الأخرى، شغّل `exporter sync` كبرنامج نصي تمهيدي (pre-flight) وتفرّع حسب رمز الخروج. يبقى الأمر متصلًا طوال عملية التصدير، حتى حين يعلّقه macOS دون أن يكون أحد مسجّل الدخول. وما دام التطبيق يعمل، ونافذته مفتوحة أو مغلقة، فإن `sync` لا يفعل شيئًا: المزامنة الفورية تبقي المجلد محدَّثًا أصلًا.

## خادم MCP

التطبيق، لا سطر الأوامر، هو من يشغّل خادم MCP محليًا يتيح لـ Claude وCursor وVS Code وغيرها من العملاء البحث في صادراتك وقراءتها، على `http://localhost:8744/mcp`. وتغطي [صفحة خادم MCP](https://exporter.dev/docs/mcp) كل ما يتعلق به، من تشغيله إلى أدواته الست.

## حل المشكلات

شغّل `exporter doctor` أولًا، فكل فحص فاشل يطبع طريقة إصلاحه. وتغطي [المساعدة](https://exporter.dev/docs/help) رسائل التطبيق أيضًا.

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

## Related

- [MCP server](https://exporter.dev/docs/mcp): Connect Claude and other agents
- [For agents](https://exporter.dev/agents): Skills, command line and MCP for agents
- [Apple Notes](https://exporter.dev/docs/notes): Folders, fields, HTML and fixes
- [Changelog](https://exporter.dev/changelog): What changed in each version

---

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