# שורת הפקודה exporter

הריצו את הייצואים שלכם מ-Terminal, מ-cron, מכלי גיבוי ומסוכנים.

`exporter` הוא אפליקציית Exporter ל-Mac שרצה בלי חלון. היא משתמשת באותם חיבורים, תיקיות ייצוא, בחירה והגדרות שהגדרתם באפליקציה, וכותבת לאותו יומן ייצוא. היא עובדת כשהאפליקציה סגורה ולעולם לא שואלת שאלות: כל דבר חסר עוצר את ההרצה עם קוד יציאה 2 ושורה אחת שאומרת מה לעשות. macOS בלבד.

## התקנה

1. התקינו את Exporter מ-Mac App Store ([הורדה](https://exporter.dev/download)) ופתחו אותו.
2. חברו אפליקציה (Apple Notes,‏ Bear,‏ Logseq,‏ Contacts,‏ Messages או Screen Time) או תיקיית Documents, ובחרו את תיקיית הייצוא שלה ([תחילת העבודה](https://exporter.dev/docs/getting-started)). את ההרשאות האלה אפשר לתת רק באפליקציה.
3. בכרטיס 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](https://exporter.dev/docs/notes#markdown-and-html)), עם קבצים מצורפים שמועתקים ל-`attachments/` לידו ומקושרים, בלי front matter. ה-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>` | חובה. חייב להיות בתוך תיקייה שהוענקה לה הרשאה בכרטיס 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.`

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

```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 ההרצות האחרונות). כל אפליקציה שומרת גם `.exporter/files.json`, כל קובץ שהרצה כתבה: ההרצה הבאה מסירה רק קבצים שרשומים שם ושאף פריט כבר לא מפיק, כך שפתקים שמחקתם, ששיניתם את שמם או שתייגתם מחדש מאבדים את הקובץ הישן שלהם (זמן מסך אף פעם לא מסיר קובץ של יום). ייצואים של פתקים של Apple ושל Logseq מקבלים גם `bases/` עם תצוגות ל-Obsidian.

## מכסה חינמית

לשורת הפקודה אותן מכסות כמו לאפליקציה:

| אפליקציה | בחינם |
| --- | --- |
| פתקים של Apple | 100 פתקים |
| אנשי קשר | 100 אנשי קשר |
| הודעות | 50 השיחות האחרונות |
| זמן מסך | 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 (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, [במחיר לפי מדינה](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` כסקריפט שרץ לפני הגיבוי ופעלו לפי קוד היציאה. הפקודה נשארת מחוברת לכל אורך הייצוא, גם כש-macOS משעה אותה כשאף אחד לא מחובר. בזמן שהאפליקציה רצה, כשהחלון שלה פתוח או סגור, `sync` לא עושה כלום: הסנכרון בזמן אמת כבר שומר על התיקייה מעודכנת.

כלי גיבוי שמריץ את הסקריפטים שלו כ-root (כמו Carbon Copy Cloner) חייב להפעיל את `exporter` בתוך הסשן של המשתמש המחובר, ולא רק בתור המשתמש הזה. `sudo -u` לבדו עוצר אותו מיד עם קוד יציאה 133; הוסיפו לפניו `launchctl asuser`:

```sh
/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](https://exporter.dev/docs/mcp) מכסה עליו הכול, מההפעלה ועד שישה הכלים שלו.

## פתרון בעיות

הריצו קודם `exporter doctor`; כל בדיקה שנכשלת מדפיסה את הפתרון שלה. [עזרה](https://exporter.dev/docs/help) מכסה גם את ההודעות של האפליקציה.

- `X is not authorized`: הוסיפו את התיקייה (או תיקיית אב) בכרטיס Command Line, ואז הריצו שוב. `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](https://exporter.dev/he/docs/mcp): חיבור Claude וסוכנים אחרים
- [לסוכנים](https://exporter.dev/he/agents): Skills, שורת פקודה ו-MCP לסוכנים
- [פתקים של Apple](https://exporter.dev/he/docs/notes): תיקיות, שדות, HTML ופתרונות
- [Changelog](https://exporter.dev/changelog): What changed in each version

---

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