שורת הפקודה exporter
הריצו את הייצואים שלכם מ-Terminal, מ-cron, מכלי גיבוי ומסוכנים.
exporter הוא אפליקציית Exporter ל-Mac שרצה בלי חלון. היא משתמשת באותם חיבורים, תיקיות ייצוא, בחירה והגדרות שהגדרתם באפליקציה, וכותבת לאותו יומן ייצוא. היא עובדת כשהאפליקציה סגורה ולעולם לא שואלת שאלות: כל דבר חסר עוצר את ההרצה עם קוד יציאה 2 ושורה אחת שאומרת מה לעשות. macOS בלבד.
התקנה
- התקינו את Exporter מ-Mac App Store (הורדה) ופתחו אותו.
- חברו אפליקציה (Apple Notes, Bear, Logseq, Contacts, Messages או Screen Time) או תיקיית Documents, ובחרו את תיקיית הייצוא שלה (תחילת העבודה). את ההרשאות האלה אפשר לתת רק באפליקציה.
- בכרטיס Command Line של האפליקציה, לחצו על “Copy Install Command” והדביקו פעם אחת ב-Terminal.
האפליקציה רצה בארגז חול (sandbox) ולא יכולה לכתוב ל-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 |
הפורמטים שמסומנים בכרטיס Documents |
פורמטים
--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> |
חובה. חייב להיות בתוך תיקייה שהוענקה לה הרשאה בכרטיס Command Line של האפליקציה (“add folder”). הרשאה על ~/Backups מכסה כל תיקייה שמתחתיה |
אין |
--source <source> |
האפליקציה לייצוא | apple |
--format markdown|html |
הפורמט להרצה הזו | ההגדרה שלכם באפליקציה |
--organize folders|tags|smart |
פתקים של Apple בלבד: איך הפתקים מסודרים בתיקיות, להרצה הזו | “Organize” בכרטיס |
--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 |
כל אפליקציה, מחוברת או לא, עם הספירה שלה. מסמכים לא מופיע | [{"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"}, ה-“Organize” של הכרטיסים); 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או-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 ההרצות האחרונות). כל אפליקציה שומרת גם .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: הוסיפו את התיקייה (או תיקיית אב) בכרטיס Command Line, ואז הריצו שוב.exporter list destsמציג מה הוענקapple notes is not set up. open Exporter and connect Apple Notes + an export folder.(אותו דבר לכל אפליקציה): חברו אותה ב-Exportersyncמדפיס ש-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