From aviz85-claude-skills-library
Fetches X (Twitter) bookmarks via official API v2. Downloads tweet text, images, and videos to a local folder. Use when user wants to grab/export/save bookmarks.
How this skill is triggered — by the user, by Claude, or both
Slash command
/aviz85-claude-skills-library:x-bookmarks-fetcherThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Download X/Twitter bookmarks via the official X API v2 (no scraping, no Chrome session). Saves tweet text, metadata, images, and videos to a local folder.
Download X/Twitter bookmarks via the official X API v2 (no scraping, no Chrome session). Saves tweet text, metadata, images, and videos to a local folder.
If scripts/.env does not yet exist, follow SETUP.md in this skill folder. It walks through:
http://127.0.0.1:8765/callback.envnpm run auth (one-time browser consent → saves refresh token)Once scripts/.env and scripts/.tokens.json exist, fetching is pure API.
cd ~/.claude/skills/x-bookmarks-fetcher/scripts
# One-time auth (opens browser for consent, saves tokens)
node auth.mjs
# Fetch bookmarks from the last 48 hours (default)
node fetch.mjs
# Custom hours window
node fetch.mjs --hours 24
# Custom output folder
node fetch.mjs --hours 48 --out /tmp/my-bookmarks
# Specific time range (ISO timestamps)
node fetch.mjs --since 2026-05-19T00:00:00Z
fetch.mjs| Option | Default | Description |
|---|---|---|
--hours <N> | 48 | Filter to tweets created within last N hours |
--since <iso> | derived from --hours | Lower bound (ISO 8601 timestamp). Overrides --hours |
--out <dir> | /tmp/x-bookmarks-YYYYMMDD | Output directory |
--max-pages <N> | 20 | Stop after N API pages (100 bookmarks each) |
--no-media | off | Skip downloading images/videos |
<out>/
├── bookmarks-raw.json # Full API response (incl. includes for users, media, referenced tweets)
├── index.json # Parsed/flattened items
├── index.md # Human-readable summary
├── <handle>_<id>.txt # One file per bookmark with text + URL + media list
└── media/
├── <media_key>.jpg # Photos
├── <media_key>.mp4 # Highest-bitrate MP4 for videos/GIFs
└── <media_key>_poster.jpg # Video thumbnails
The X API returns bookmarks in bookmarking-order (most recently saved first), but doesn't expose the bookmark timestamp. The --hours / --since filter is applied to tweet created_at (when the post was published). For most uses this approximates "what I saved recently" — but if you bookmarked an old tweet today, it will be excluded.
GET /2/users/:id/bookmarksbookmark.read scopeSKILL.md — this fileREADME.md — same content as SKILL.md, for non-Claude readersSETUP.md — first-time setup walkthroughscripts/auth.mjs — OAuth 2.0 PKCE flow (opens browser once)scripts/fetch.mjs — bookmark fetcher + media downloaderscripts/.env.example — credential templatescripts/.gitignore — ignores .env and .tokens.json2plugins reuse this skill
First indexed Jul 8, 2026
npx claudepluginhub aviz85/claude-skills-library --plugin teach-by-doingExports X/Twitter bookmarks with full metadata to CSV/JSON, auto-organizes by keyword categories, and clears in bulk using browser console scripts and Puppeteer. Use on x.com/i/bookmarks for managing large bookmark collections.
Syncs X/Twitter bookmarks locally for search, classification, and querying via a CLI. Useful for bookmark management, personal research, and AI agent integration.
CLI for X (Twitter) API v2: fetch following lists, diff snapshots for follow changes, get likes/bookmarks/latest posts, screenshot tweets with Playwright.