A command-line interface for Twitter/X using cookie-based authentication
Project description
X from terminal. Built for humans and AI agents. No API keys.
Why?
Twitter killed free API access. clix uses cookie-based auth — just log in with your browser, and you're in. Zero API keys, zero OAuth dance.
Three interfaces, one tool: rich terminal output for humans, --json/--yaml/--compact for scripts, and a built-in MCP server for AI agents.
Quick Start
# install
uv pip install clix0
# authenticate (extracts cookies from your browser)
clix auth login
Commands
Content
| Command | Description |
|---|---|
clix feed [--type for-you|following] [--count N] |
Timeline |
clix search <query> [--type top|latest|photos|videos] |
Search tweets |
clix trending |
Trending topics |
clix tweet <id> [--export FILE] |
View tweet + thread (export articles as Markdown) |
clix tweets <id1> <id2> ... |
Batch fetch tweets |
clix user <handle> |
Profile + recent tweets |
clix users <handle1> <handle2> ... |
Batch fetch users |
clix bookmarks |
List bookmarks |
clix bookmarks-folders |
List bookmark folders |
clix bookmarks-folder <id> |
View tweets in a bookmark folder |
Actions
| Command | Description |
|---|---|
clix post <text> [--reply-to ID|URL] [--image FILE] |
Post a tweet (up to 4 images) |
clix delete <id> |
Delete a tweet |
clix like <id> / clix unlike <id> |
Like / unlike |
clix retweet <id> / clix unretweet <id> |
Retweet / undo |
clix bookmark <id> / clix unbookmark <id> |
Bookmark / remove |
clix follow <handle> / clix unfollow <handle> |
Follow / unfollow |
clix block <handle> / clix unblock <handle> |
Block / unblock |
clix mute <handle> / clix unmute <handle> |
Mute / unmute |
clix download <tweet-id> [--output-dir DIR] |
Download media |
Scheduled Tweets
| Command | Description |
|---|---|
clix schedule <text> --at <time> |
Schedule a tweet |
clix scheduled |
List scheduled tweets |
clix unschedule <id> |
Cancel scheduled tweet |
Lists
| Command | Description |
|---|---|
clix lists |
View your lists |
clix lists view <id> |
Tweets from a list |
clix lists create <name> [--private] |
Create a list |
clix lists delete <id> |
Delete a list |
clix lists members <id> |
View members |
clix lists add-member <id> <handle> |
Add member |
clix lists remove-member <id> <handle> |
Remove member |
clix lists pin <id> / clix lists unpin <id> |
Pin / unpin list |
Jobs
| Command | Description |
|---|---|
clix jobs search <query> [--location LOC] [--location-type remote|onsite|hybrid] |
Search job listings on X |
clix jobs view <id> |
View job details |
Direct Messages
| Command | Description |
|---|---|
clix dm inbox |
View conversations |
clix dm send <handle> <text> |
Send a DM |
System
| Command | Description |
|---|---|
clix auth status|login|set|accounts|switch|import |
Authentication |
clix config |
Manage config |
clix doctor |
Run diagnostics |
Output Modes
Every command supports --json for structured output. Pipe detection is automatic — non-TTY gets JSON by default.
# structured JSON
clix feed --json | jq '.tweets[0].text'
# token-optimized for AI agents
clix feed --compact
# YAML
clix feed --yaml
# full text (no truncation)
clix feed --full-text
MCP Server
clix ships as an MCP server — any MCP-compatible client can use it.
{
"mcpServers": {
"clix": {
"command": "uvx",
"args": ["clix0", "mcp"]
}
}
}
Or with explicit auth:
{
"mcpServers": {
"clix": {
"command": "uvx",
"args": ["clix0", "mcp"],
"env": {
"X_AUTH_TOKEN": "your-token",
"X_CT0": "your-ct0"
}
}
}
}
46 tools covering all commands: feed, search, trending, tweets, users, bookmarks, lists, DMs, jobs, post, delete, like, unlike, retweet, unretweet, bookmark, unbookmark, follow, unfollow, block, unblock, mute, unmute, schedule, download, and more.
Proxy Support
# via environment variable
CLIX_PROXY=socks5://127.0.0.1:1080 clix feed
# via config
clix config set network.proxy socks5://127.0.0.1:1080
Contributing
See CONTRIBUTING.md.
Disclaimer
This tool is for educational and personal use only. It is not affiliated with, endorsed by, or associated with X Corp (formerly Twitter). Use at your own risk. The authors are not responsible for any consequences resulting from the use of this software. By using this tool, you agree to comply with X/Twitter's Terms of Service.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file clix0-0.5.0.tar.gz.
File metadata
- Download URL: clix0-0.5.0.tar.gz
- Upload date:
- Size: 3.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ef62e9669eaa91663714c20871888cacd75ac654d4e635ba521e4c2e3cc3651
|
|
| MD5 |
62184eff0f21273ea8337aa6b6a0f0d3
|
|
| BLAKE2b-256 |
973c588ece84d375320378bad203fee37cb2b5591924588f85511195e9dc56cb
|
Provenance
The following attestation bundles were made for clix0-0.5.0.tar.gz:
Publisher:
release.yml on spideystreet/clix
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
clix0-0.5.0.tar.gz -
Subject digest:
0ef62e9669eaa91663714c20871888cacd75ac654d4e635ba521e4c2e3cc3651 - Sigstore transparency entry: 1172006437
- Sigstore integration time:
-
Permalink:
spideystreet/clix@bd688994674fddc3467ff2b4483048cafde5e341 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/spideystreet
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@bd688994674fddc3467ff2b4483048cafde5e341 -
Trigger Event:
push
-
Statement type:
File details
Details for the file clix0-0.5.0-py3-none-any.whl.
File metadata
- Download URL: clix0-0.5.0-py3-none-any.whl
- Upload date:
- Size: 70.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3fcba0ae3c2787deac8d0bc3ddad5c8a7f6af18952ed0d409d72be2ec1205a62
|
|
| MD5 |
79cfc7e8bd553f13a46fb2bdbe0bbd28
|
|
| BLAKE2b-256 |
13f39ee109aa3fdd49cc5e73d47d27a6b43cbbff79710e67e82801a5fbd02b63
|
Provenance
The following attestation bundles were made for clix0-0.5.0-py3-none-any.whl:
Publisher:
release.yml on spideystreet/clix
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
clix0-0.5.0-py3-none-any.whl -
Subject digest:
3fcba0ae3c2787deac8d0bc3ddad5c8a7f6af18952ed0d409d72be2ec1205a62 - Sigstore transparency entry: 1172006449
- Sigstore integration time:
-
Permalink:
spideystreet/clix@bd688994674fddc3467ff2b4483048cafde5e341 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/spideystreet
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@bd688994674fddc3467ff2b4483048cafde5e341 -
Trigger Event:
push
-
Statement type: