Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Fetch, summarize, and manage X/Twitter bookmarks via bird CLI or X API v2. Use when: (1) user says "check my bookmarks", "what did I bookmark", "bookmark dig...
Fetch, summarize, and manage X/Twitter bookmarks via bird CLI or X API v2. Use when: (1) user says "check my bookmarks", "what did I bookmark", "bookmark dig...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
Turn X/Twitter bookmarks from a graveyard of good intentions into actionable work. Core philosophy: Don't just summarize โ propose actions the agent can execute.
This skill supports two backends. Pick the first one that works:
Fast, no API key needed, uses browser cookies Install: npm install -g bird-cli Test: bird whoami โ if this prints a username, you're good
Works without bird CLI Requires an X Developer account + OAuth 2.0 app Setup: see references/auth-setup.md โ "X API Setup"
1. Check if `bird` command exists โ try `bird whoami` 2. If bird works โ use bird CLI path 3. If not โ check for X API tokens (~/.config/x-bookmarks/tokens.json) 4. If tokens exist โ use X API path (auto-refresh) 5. If neither โ guide user through setup (offer both options)
# Latest 20 bookmarks (default) bird bookmarks --json # Specific count bird bookmarks -n 50 --json # All bookmarks (paginated) bird bookmarks --all --json # With thread context bird bookmarks --include-parent --thread-meta --json # With Chrome cookie auth bird --chrome-profile "Default" bookmarks --json # With manual tokens bird --auth-token "$AUTH_TOKEN" --ct0 "$CT0" bookmarks --json If user has a .env.bird file or env vars AUTH_TOKEN/CT0, source them first: source .env.bird
# First-time setup (opens browser for OAuth) python3 scripts/x_api_auth.py --client-id "YOUR_CLIENT_ID" --client-secret "YOUR_SECRET" # Fetch bookmarks (auto-refreshes token) python3 scripts/fetch_bookmarks_api.py -n 20 # All bookmarks python3 scripts/fetch_bookmarks_api.py --all # Since a specific tweet python3 scripts/fetch_bookmarks_api.py --since-id "1234567890" # Pretty print python3 scripts/fetch_bookmarks_api.py -n 50 --pretty The API script outputs the same JSON format as bird CLI, so all downstream workflows work identically. Token management is automatic: tokens are stored in ~/.config/x-bookmarks/tokens.json and refreshed via the saved refresh_token. If refresh fails, the agent should guide the user to re-run x_api_auth.py.
If the user already has a Bearer token (e.g., from another tool), they can skip the OAuth dance: X_API_BEARER_TOKEN="your_token" python3 scripts/fetch_bookmarks_api.py -n 20
Each bookmark returns: { "id": "tweet_id", "text": "tweet content", "createdAt": "2026-02-11T01:00:06.000Z", "replyCount": 46, "retweetCount": 60, "likeCount": 801, "bookmarkCount": 12, "viewCount": 50000, "author": { "username": "handle", "name": "Display Name" }, "media": [{ "type": "photo|video", "url": "..." }], "quotedTweet": { "id": "..." } }
The key differentiator: don't just summarize, propose actions the agent can execute. Fetch bookmarks (bird or API, auto-detected) Parse and categorize by topic (auto-detect: crypto, AI, marketing, tools, personal, etc.) For EACH category, propose specific actions: Tool/repo bookmarks โ "I can test this, set it up, or analyze the code" Strategy/advice bookmarks โ "Here are the actionable steps extracted โ want me to implement any?" News/trends โ "This connects to [user's work]. Here's the angle for content" Content ideas โ "This would make a great tweet/video in your voice. Here's a draft" Questions/discussions โ "I can research this deeper and give you a summary" Flag stale bookmarks (>2 weeks old) โ "Use it or lose it" Deliver categorized digest with actions Format output as: ๐ CATEGORY (count) โข Bookmark summary (@author) โ ๐ค I CAN: [specific action the agent can take]
Set up a recurring bookmark check. Suggest this cron config to the user: Schedule: daily or weekly Payload: "Check my X bookmarks for new saves since last check. Fetch bookmarks, compare against last digest, summarize only NEW ones. Categorize and propose actions. Deliver to me." Track state by saving the most recent bookmark ID processed. Store in workspace: memory/bookmark-state.json โ { "lastSeenId": "...", "lastDigestAt": "..." }
When user asks for content ideas from bookmarks: Fetch recent bookmarks Identify high-engagement tweets (>500 likes) with frameworks, tips, or insights Rewrite key ideas in the user's voice (if voice data available) Suggest posting times based on the bookmark's original engagement
When user has enough bookmark history: Fetch all bookmarks (--all) Cluster by topic/keywords Report: "You've bookmarked N tweets about [topic]. Want me to go deeper?" Suggest: research reports, content series, or tools based on patterns
For stale bookmarks: Identify bookmarks older than a threshold (default: 30 days) For each: extract the TL;DR and one actionable takeaway Present: "Apply it today or clear it" User can unbookmark via: bird unbookmark <tweet-id> (bird only)
ErrorCauseFixbird: command not foundbird CLI not installedUse X API path instead, or npm i -g bird-cli"No Twitter cookies found"Not logged into X in browserLog into x.com in Chrome/Firefox, or use X APIEPERM on Safari cookiesmacOS permissionsUse Chrome/Firefox or X API insteadEmpty resultsCookies/token expiredRe-login or re-run x_api_auth.pyRate limit (429)Too many API requestsWait and retry, use --count to limit"No X API token found"Haven't run auth setupRun x_api_auth.py --client-id YOUR_IDToken refresh failedRefresh token expiredRe-run x_api_auth.py to re-authorize
Start with -n 20 for quick digests, --all for deep analysis bird: Use --include-parent for thread context on replies API: includes bookmarkCount and viewCount (bird may not) Bookmark folders supported via bird --folder-id <id> Both backends output identical JSON โ workflows are backend-agnostic
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.