From 5a42f7cabd9d6057ab07438d5f8f1dc09b442a79 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Tue, 20 Jan 2026 11:53:31 +0000 Subject: [PATCH] fix: align bird skill metadata and flags (#1302) (thanks @odysseus0) --- CHANGELOG.md | 1 + skills/bird/SKILL.md | 46 ++++++++++---------------------------------- 2 files changed, 11 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e094f9184..6d1ab8331 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ Docs: https://docs.clawd.bot - Repo: remove the Peekaboo git submodule now that the SPM release is used. - Plugins: require manifest-embedded config schemas, validate configs without loading plugin code, and surface plugin config warnings. (#1272) — thanks @thewilloftheshadow. - Plugins: move channel catalog metadata into plugin manifests; align Nextcloud Talk policy helpers with core patterns. (#1290) — thanks @NicholaiVogel. +- Docs: refresh bird skill install metadata and usage notes. (#1302) — thanks @odysseus0. ### Fixes - Web search: infer Perplexity base URL from API key source (direct vs OpenRouter). - TUI: keep thinking blocks ordered before content during streaming and isolate per-run assembly. (#1202) — thanks @aaronveklabs. diff --git a/skills/bird/SKILL.md b/skills/bird/SKILL.md index d4f402321..307828472 100644 --- a/skills/bird/SKILL.md +++ b/skills/bird/SKILL.md @@ -2,17 +2,17 @@ name: bird description: X/Twitter CLI for reading, searching, posting, and engagement via cookies. homepage: https://bird.fast -metadata: {"clawdbot":{"emoji":"🐦","requires":{"bins":["bird"]},"install":[{"id":"brew","kind":"brew","formula":"steipete/tap/bird","bins":["bird"],"label":"Install bird (brew)"},{"id":"npm","kind":"npm","package":"@steipete/bird","bins":["bird"],"label":"Install bird (npm)"}]}} +metadata: {"clawdbot":{"emoji":"🐦","requires":{"bins":["bird"]},"install":[{"id":"brew","kind":"brew","formula":"steipete/tap/bird","bins":["bird"],"label":"Install bird (brew)"},{"id":"npm","kind":"node","package":"@steipete/bird","bins":["bird"],"label":"Install bird (npm)"}]}} --- # bird 🐦 -Fast X/Twitter CLI using GraphQL + cookie auth. No API keys needed. +Fast X/Twitter CLI using GraphQL + cookie auth. ## Install ```bash -# npm/pnpm/bun (Node ≥ 20) +# npm/pnpm/bun npm install -g @steipete/bird # Homebrew (macOS, prebuilt binary) @@ -24,14 +24,11 @@ bunx @steipete/bird whoami ## Authentication -`bird` uses your existing browser session (cookie auth). No password prompt. +`bird` uses cookie-based auth. -Resolution order: -1. CLI flags: `--auth-token`, `--ct0` -2. Environment: `AUTH_TOKEN`, `CT0` -3. Browser cookies via `--cookie-source` (default: Safari → Chrome → Firefox) +Use `--auth-token` / `--ct0` to pass cookies directly, or `--cookie-source` for browser cookies. -For Chromium variants (Arc/Brave), use `--chrome-profile-dir `. +Run `bird check` to see which source is active. For Arc/Brave, use `--chrome-profile-dir `. ## Commands @@ -115,8 +112,6 @@ bird follow @handle # Follow a user bird unfollow @handle # Unfollow a user ``` -The library also exposes like/unlike/retweet/unretweet/bookmark mutations. - ### Posting ```bash @@ -125,7 +120,7 @@ bird reply "nice thread!" bird tweet "check this out" --media image.png --alt "description" ``` -**⚠️ Posting risks**: Twitter may flag automated posting (error 226). `bird` falls back to legacy endpoints, but for high-volume or sensitive posting, consider using the browser tool instead. +**⚠️ Posting risks**: Posting is more likely to be rate limited; if blocked, use the browser tool instead. ## Media Uploads @@ -135,8 +130,6 @@ bird tweet "pics" --media a.jpg --media b.jpg # Up to 4 images bird tweet "video" --media clip.mp4 # Or 1 video ``` -Supported: jpg, jpeg, png, webp, gif, mp4, mov. - ## Pagination Commands supporting pagination: `replies`, `thread`, `search`, `bookmarks`, `likes`, `list-timeline`, `following`, `followers`, `user-tweets` @@ -164,9 +157,9 @@ bird replies --all --delay 1000 # Delay between pages (ms) ```bash --auth-token # Set auth_token cookie --ct0 # Set ct0 cookie ---cookie-source # safari|chrome|firefox (repeatable) +--cookie-source # Cookie source for browser cookies (repeatable) --chrome-profile # Chrome profile name ---chrome-profile-dir # Chromium profile dir (Arc/Brave) +--chrome-profile-dir # Chrome/Chromium profile dir or cookie DB path --firefox-profile # Firefox profile --timeout # Request timeout --cookie-timeout # Cookie extraction timeout @@ -178,7 +171,7 @@ bird replies --all --delay 1000 # Delay between pages (ms) ```json5 { - cookieSource: ["safari", "chrome"], + cookieSource: ["chrome"], chromeProfileDir: "/path/to/Arc/Profile", timeoutMs: 20000, quoteDepth: 1 @@ -187,18 +180,6 @@ bird replies --all --delay 1000 # Delay between pages (ms) Environment variables: `BIRD_TIMEOUT_MS`, `BIRD_COOKIE_TIMEOUT_MS`, `BIRD_QUOTE_DEPTH` -## Library Usage - -```typescript -import { TwitterClient, resolveCredentials } from '@steipete/bird'; - -const { cookies } = await resolveCredentials({ cookieSource: 'safari' }); -const client = new TwitterClient({ cookies }); - -const searchResult = await client.search('from:steipete', 50); -const newsResult = await client.getNews(10, { aiOnly: true }); -``` - ## Troubleshooting ### Query IDs stale (404 errors) @@ -211,13 +192,6 @@ bird query-ids --fresh - Try different `--cookie-source` - For Arc/Brave: use `--chrome-profile-dir` -### Rate limited (429) -- Space out requests -- Reading is generous; posting/engagement is watched more closely - -### Error 226 on posting -Twitter flagged as automated. `bird` auto-retries with legacy endpoint, but may still fail. Use browser for reliable posting. - --- **TL;DR**: Read/search/engage with CLI. Post carefully or use browser. 🐦