| name | bird |
| description | Read and post to Twitter/X via the `bird` CLI — tweets, threads, search, timelines, bookmarks, follows, lists, media. |
Auth: Extract Firefox Cookies
bird needs auth_token and ct0 from Firefox. node:sqlite is broken on this system, so extract manually before every bird session:
cp /home/mikekey/.mozilla/firefox/u80t1430.default-release/cookies.sqlite /tmp/ff_cookies.sqlite
sqlite3 /tmp/ff_cookies.sqlite "SELECT name, value FROM moz_cookies WHERE (host LIKE '%twitter.com%' OR host LIKE '%x.com%') AND name IN ('auth_token', 'ct0');"
Capture both values, then pass to every bird command:
bird <command> --auth-token <auth_token> --ct0 <ct0> --plain ...
Always use --plain (no emoji, no color — stable for LLM parsing). Use --json when structured data is needed. bird check verifies credentials without making other calls.
Commands
Read / discover
bird read <id-or-url>
bird thread <id-or-url>
bird replies <id-or-url>
bird search "query"
bird mentions
bird home
bird user-tweets <handle>
bird list-timeline <id-or-url>
bird lists
bird news
bird bookmarks
bird likes
Write / act
bird tweet "text"
bird reply <id-or-url> "text"
bird unbookmark <id-or-url>...
bird follow <username-or-id>
bird unfollow <username-or-id>
Social graph
bird following [handle]
bird followers [handle]
bird about <username>
bird whoami
Media attachments (global flags on tweet/reply)
--media <path>
--alt "text"
Example:
bird tweet "caption" --media ./a.png --alt "a description" --media ./b.png --alt "b description"
Auth / infrastructure
bird check
bird query-ids
Output flags
--plain — stable, no emoji, no color. Default for LLM use.
--json — structured output. Works on: read, replies, thread, search, mentions, bookmarks, likes, following, followers, about, lists, list-timeline, user-tweets, query-ids
--json-full — adds raw API response in _raw field (tweet/reply only)
--no-emoji, --no-color — individual overrides
--quote-depth <N> — max quoted-tweet depth (default 1, 0 disables)
--timeout <ms> — request timeout
Workflow
- Extract cookies (see Auth section)
- Store
auth_token and ct0 in shell variables
- Run bird commands with
--plain --auth-token "$AUTH_TOKEN" --ct0 "$CT0"
- On auth errors, re-extract from Firefox — cookies expire
Config files
bird reads ~/.config/bird/config.json5 and ./.birdrc.json5 (JSON5 format).
Supports: chromeProfile, chromeProfileDir, firefoxProfile, cookieSource, cookieTimeoutMs, timeoutMs, quoteDepth.
Env vars: NO_COLOR, BIRD_TIMEOUT_MS, BIRD_COOKIE_TIMEOUT_MS, BIRD_QUOTE_DEPTH.
Notes
- Binary:
/home/mikekey/.bun/bin/bird (v0.8.0)
- Uses Twitter/X GraphQL API under the hood
- No DM support as of v0.8.0
- Firefox must have an active Twitter/X session for cookies to be valid