supertwee is a local-first cli for exploring your x feed.
it syncs your home timeline, saves it to disk, finds repeated topics, and ranks the tweets your feed is rewarding hardest.
- see what your feed is actually amplifying
- catch repeat themes before they feel obvious
- find high-signal tweets without scrolling for hours
- keep your archive and analysis on your own machine
syncfetches pages from the x web timeline using the same internal graphql pattern the web app usessearch postsqueries x web search using the same logged-in session methoduser tweetspulls a user timeline using the same logged-in session methodtweet threadfetches a tweet conversation view using the same logged-in session methodtrendsextracts recurring topics, phrases, domains, hashtags, and standout tweetsexportwrites filtered local archive exports asjsonlandmarkdownuiopens an interactive command hub in the terminal, including raw last-sync previewdoctorshows which auth path supertwee can use on this machine
run it directly from npm:
npx supertwee doctor
npx supertwee sync --pages 5 --count 40
npx supertwee search posts --query "ai agents"
npx supertwee user tweets --handle xdevelopers
npx supertwee tweet thread --id 1346889436626259968
npx supertwee trends
npx supertwee export --since 2026-04-01 --format jsonl,md
npx supertwee uior install it globally:
npm install -g supertwee
supertwee doctor
supertwee sync --pages 5 --count 40
supertwee search posts --query "ai agents"
supertwee user tweets --handle xdevelopers
supertwee tweet thread --id 1346889436626259968
supertwee trends
supertwee export --since 2026-04-01 --format jsonl,md
supertwee uiif you want to run it from source instead:
git clone https://github.com/Nainish-Rai/supertwee.git
cd supertwee
npm install
npm link
supertwee doctor
supertwee sync --pages 5 --count 40
supertwee search posts --query "ai agents"
supertwee user tweets --handle xdevelopers
supertwee tweet thread --id 1346889436626259968
supertwee trends
supertwee export --since 2026-04-01 --format jsonl,md
supertwee uiif you do not want to use npm link, run the repo-local cli directly:
node ./bin/supertwee.mjs doctor
node ./bin/supertwee.mjs sync --pages 5 --count 40
node ./bin/supertwee.mjs search posts --query "ai agents"
node ./bin/supertwee.mjs user tweets --handle xdevelopers
node ./bin/supertwee.mjs tweet thread --id 1346889436626259968
node ./bin/supertwee.mjs trends
node ./bin/supertwee.mjs export --limit 100
node ./bin/supertwee.mjs uiyou can also run the repo-local cli through npm without linking:
npm start -- doctor
npm start -- sync --pages 5 --count 40
npm start -- search posts --query "ai agents"
npm start -- user tweets --handle xdevelopers
npm start -- tweet thread --id 1346889436626259968
npm start -- trends
npm start -- export --limit 100syncreads your logged-in x browser session or manual cookies.- it fetches timeline pages and stores normalized tweet records in
./data. trendsscores repeated patterns across the saved archive.- each
syncalso writes the raw records fetched in that run tolast-sync.jsonandlast-sync.md. exportwrites filtered slices as reusablejsonlplus a readable markdown report.trendshighlights both topic momentum and top-performing tweets.
supertwee doctor
supertwee sync
supertwee sync --pages 5 --count 40
supertwee sync --ranking
supertwee sync --browser chrome
supertwee sync --browser firefox
supertwee search posts --query "ai agents" --count 20
supertwee user tweets --handle xdevelopers --count 20
supertwee tweet thread --id 1346889436626259968
supertwee trends
supertwee trends --json
supertwee export
supertwee export --since 2026-04-01 --until 2026-04-15 --limit 200
supertwee export --format md --out-dir ./tmp/export
supertwee uisupertwee tries browser-session auth first.
supported paths:
- chrome-family browser cookie extraction
- firefox cookie extraction
- manual cookie override
- manual env var override
examples:
supertwee sync --browser chrome
supertwee sync --browser firefox
supertwee sync --chrome-profile-directory "Profile 1"
supertwee sync --firefox-profile-dir "/absolute/profile/path"
supertwee sync --cookies <ct0> <auth_token>manual env vars also work:
export X_AUTH_TOKEN='...'
export X_CT0='...'the web-session commands also accept manual query id overrides for internal x graphql operations:
export SUPERTWEE_SEARCH_TIMELINE_QUERY_ID='...'
export SUPERTWEE_USER_BY_SCREEN_NAME_QUERY_ID='...'
export SUPERTWEE_USER_TWEETS_QUERY_ID='...'
export SUPERTWEE_TWEET_DETAIL_QUERY_ID='...'or pass --query-id directly for a single command. user tweets also supports --lookup-query-id for the handle-to-user lookup step.
by default, supertwee writes local data to:
./dataoverride it with:
export SUPERTWEE_DATA_DIR=/absolute/pathexports are written to ./data/exports/<timestamp>/ unless --out-dir is provided.
each sync also refreshes:
./data/last-sync.json
./data/last-sync.mdthese files contain the raw records fetched in the current sync run only.
supertwee ui opens a dependency-free interactive menu for sync, preview last sync output, trends, export, and doctor.
when you run sync from supertwee ui, it automatically drops into a terminal-only preview menu for the latest raw markdown or json output.
the new read commands stay on the same web-session path as sync. they do not switch to the official x api.
supertwee search posts --query "founder mode" --count 25
supertwee user tweets --handle xdevelopers --count 20
supertwee tweet thread --id 1346889436626259968these commands print json by default so agents can consume them directly.
supertwee looks for repeated signal, not just one loud tweet.
it weights:
- recurring phrases
- hashtags and cashtags
- repeated high-signal terms
- repeated domains
- cross-tweet topic overlap
supertwee ranks tweets using engagement and reach signals, including:
- views
- likes
- reposts
- replies
- quotes
- bookmarks
- author follower count
when enough original tweets exist, retweets are pushed down so the list stays useful.
x rotates internal graphql query ids sometimes.
if sync starts failing after a web app change, override the current homelatesttimeline query id:
export SUPERTWEE_HOME_LATEST_QUERY_ID='CRprHpVA12yhsub-KRERIg'- your feed archive stays local
- supertwee does not need a hosted backend
- analysis runs on saved data, not a remote dashboard
supertwee is for people who spend serious time on x and want a faster way to answer:
- what topics are taking over my feed
- which tweets are breaking out
- what kinds of posts keep getting rewarded
npm test
npm start -- doctor
node ./bin/supertwee.mjs doctormit