הורידו את ה-bookmarks שלכם מ-X (טוויטר) דרך ה-API הרשמי — טקסט, תמונות, סרטונים
הסקיל משתמש בנקודת הקצה GET /2/users/:id/bookmarks של X API v2. אין session של Chrome, אין כלים של צד שלישי, אין סיכון להפרה של תנאי השימוש. אישור חד-פעמי בדפדפן (OAuth 2.0), ומכאן והלאה הכל דרך API עם refresh token שמתחדש אוטומטית.
שואב את ה-bookmarks האחרונים שלכם מ-X ושומר אותם לתיקייה מקומית:
.txt לכל bookmark עם המחבר, ה-URL והטקסט המלאmedia/ (MP4 באיכות הגבוהה ביותר)index.json ו-index.md לסקירה כוללתהיכנסו ל-developer.x.com/en/portal/dashboard, צרו פרויקט (אם אין) ובתוכו צרו App חדש.
בעמוד ה-App, גשו ל-User authentication settings ולחצו Set up. מלאו:
| שדה | ערך |
|---|---|
| App permissions | Read או Read and write |
| Type of App | Web App, Automated App or Bot |
| Callback URI / Redirect URL | http://127.0.0.1:8765/callback |
| Website URL | כל URL שלכם (לדוגמה הפרופיל ב-X) |
שמרו. X יציג את ה-Client ID וה-Client Secret — העתיקו עכשיו (ה-secret יכול להופיע רק פעם אחת).
.env
cd ~/.claude/skills/x-bookmarks-fetcher/scripts
cp .env.example .env
ערכו את .env:
X_CLIENT_ID=your-client-id
X_CLIENT_SECRET=your-client-secret
node auth.mjs
הדפדפן ייפתח אוטומטית, תלחצו Authorize app, וה-tokens יישמרו ל-.tokens.json (chmod 600). מכאן והלאה כל קריאה מתחדשת לבדה.
# Bookmarks מ-48 השעות האחרונות (ברירת מחדל)
node fetch.mjs
# 24 שעות אחרונות
node fetch.mjs --hours 24
# שבוע אחרון
node fetch.mjs --hours 168
# מתאריך ספציפי
node fetch.mjs --since 2026-05-19T00:00:00Z
# תיקיית פלט מותאמת
node fetch.mjs --out ~/Downloads/x-bookmarks
# בלי הורדת media (רק טקסט — מהיר)
node fetch.mjs --no-media
/tmp/x-bookmarks-YYYYMMDD/
├── bookmarks-raw.json # תשובת API מלאה
├── index.json # פריטים מנותחים
├── index.md # סקירה קריאה
├── @handle_tweetid.txt # קובץ אחד לכל bookmark
└── media/
├── <media_key>.jpg
├── <media_key>.mp4
└── <media_key>_poster.jpg
fetch.mjs| אפשרות | ברירת מחדל | תיאור |
|---|---|---|
--hours N | 48 | סינון לציוצים מ-N השעות האחרונות |
--since ISO | — | חוצץ זמן מדויק (ISO 8601). דורס את --hours |
--out DIR | /tmp/x-bookmarks-YYYYMMDD | תיקיית פלט |
--max-pages N | 20 | עצור אחרי N עמודי API (100 לעמוד) |
--no-media | off | דלג על הורדת תמונות/סרטונים |
X API מחזיר bookmarks בסדר השמירה (החדש ראשון), אבל לא חושף את זמן השמירה עצמו — רק את created_at של הציוץ עצמו. הסינון לפי --hours חל על מתי הציוץ פורסם. אם שמרתם היום ציוץ ישן, הוא יסונן החוצה. רוב המקרים זה קירוב טוב מספיק.
.env ו-.tokens.json ב-.gitignore — לא נדחפים ל-gitchmod 600api.twitter.com ו-api.x.com — בלי צד שלישיnode auth.mjs שוב — דקה ואתם חזרהה-Callback URL לא רשום או לא תואם בדיוק. ודאו שב-X dev portal זה בדיוק http://127.0.0.1:8765/callback (בלי slash בסוף, http ולא https).
fetch.mjsה-bookmarks endpoint דורש OAuth 2.0 User Context. ודאו ש-node auth.mjs סיים בהצלחה ושיש .tokens.json ב-scripts/. בדקו עם cat .tokens.json שהשדה scope כולל bookmark.read.
Free tier ≈ 10 בקשות ל-15 דקות. הסקריפט קורא את x-rate-limit-reset וישן עד שהחלון נפתח.
שחררו את הפורט (lsof -i :8765) או שנו את PORT בראש auth.mjs — אבל אז עדכנו גם את ה-Callback URI ב-X dev portal.