احصل على Exporter
التوثيقسطر الأوامر

سطر أوامر exporter

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

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

التثبيت

  1. ثبّت Exporter من Mac App Store (التنزيل) وافتحه.
  2. اربط تطبيقًا (ملاحظات Apple أو Bear أو Logseq أو جهات الاتصال أو الرسائل أو مدة استخدام الجهاز) أو مجلد مستندات، واختر مجلد التصدير الخاص به (البدء). لا يمكن منح هذه الأذونات إلا داخل التطبيق.
  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)، والمرفقات منسوخة إلى attachments/ بجوارها ومرتبطة بها، بلا ترويسة. أما 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 كل تطبيق، مرتبطًا كان أم لا، مع عدده. المستندات لا تُدرج [{"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> يضيف عنوانك لنتمكن من الرد لا شيء

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

  • 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 تشغيلًا). وتحتفظ ملاحظات 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 كبرنامج نصي تمهيدي (pre-flight) وتفرّع حسب رمز الخروج. يبقى الأمر متصلًا طوال عملية التصدير، حتى حين يعلّقه 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. (والأمر نفسه لكل تطبيق): اربطه في 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

الإصدار 3.24 (App Store)

macOS 15 أو أحدث

exporter@tinysend.com

© system operator