155 lines
3.9 KiB
Markdown
155 lines
3.9 KiB
Markdown
---
|
|
name: twitter-cli
|
|
description: CLI skill for Twitter/X to read timelines, bookmarks, user posts, and profiles from the terminal without API keys
|
|
author: jackwener
|
|
version: "1.0.0"
|
|
tags:
|
|
- twitter
|
|
- x
|
|
- social-media
|
|
- terminal
|
|
- cli
|
|
---
|
|
|
|
# twitter-cli Skill
|
|
|
|
Use this skill when the user wants to read or interact with Twitter/X content from terminal without API keys.
|
|
|
|
## Prerequisites
|
|
|
|
```bash
|
|
# Install (requires Python 3.10+)
|
|
uv tool install twitter-cli
|
|
# Or: pipx install twitter-cli
|
|
```
|
|
|
|
## Authentication
|
|
|
|
- Auto-extracts browser cookies from Chrome/Edge/Firefox/Brave.
|
|
- Or set environment variables: `TWITTER_AUTH_TOKEN` + `TWITTER_CT0`.
|
|
|
|
## Command Reference
|
|
|
|
### Feed
|
|
|
|
```bash
|
|
twitter feed # Home timeline (For You)
|
|
twitter feed -t following # Following timeline
|
|
twitter feed --max 50 # Limit count
|
|
twitter feed --filter # Enable ranking filter
|
|
twitter feed --json > tweets.json # Export as JSON
|
|
twitter feed --input tweets.json # Read from local JSON file
|
|
```
|
|
|
|
### Bookmarks
|
|
|
|
```bash
|
|
twitter favorites # List bookmarked tweets
|
|
twitter favorites --max 30 --json
|
|
twitter favorites --filter # Apply ranking filter
|
|
```
|
|
|
|
### Search
|
|
|
|
```bash
|
|
twitter search "keyword"
|
|
twitter search "AI agent" -t Latest --max 50
|
|
twitter search "机器学习" --json
|
|
```
|
|
|
|
### Tweet Detail
|
|
|
|
```bash
|
|
twitter tweet 1234567890 # View tweet + replies
|
|
twitter tweet https://x.com/user/status/12345 # Accepts URL too
|
|
```
|
|
|
|
### List Timeline
|
|
|
|
```bash
|
|
twitter list 1539453138322673664 # Fetch tweets from a Twitter List
|
|
```
|
|
|
|
### User
|
|
|
|
```bash
|
|
twitter user elonmusk # User profile
|
|
twitter user-posts elonmusk --max 20 # User's tweets
|
|
twitter likes elonmusk --max 30 # User's likes
|
|
twitter followers elonmusk --max 50 # User's followers
|
|
twitter following elonmusk --max 50 # User's following
|
|
```
|
|
|
|
### Write Operations
|
|
|
|
```bash
|
|
twitter post "Hello from twitter-cli!" # Post tweet
|
|
twitter post "reply text" --reply-to 1234567890 # Reply
|
|
twitter delete 1234567890 # Delete tweet
|
|
twitter like 1234567890 # Like
|
|
twitter unlike 1234567890 # Unlike
|
|
twitter retweet 1234567890 # Retweet
|
|
twitter unretweet 1234567890 # Unretweet
|
|
twitter favorite 1234567890 # Bookmark
|
|
twitter unfavorite 1234567890 # Unbookmark
|
|
```
|
|
|
|
## JSON / Scripting
|
|
|
|
```bash
|
|
twitter feed --json > tweets.json
|
|
twitter feed --input tweets.json
|
|
twitter user-posts elonmusk --json | jq '.[0].text'
|
|
twitter search "keyword" --json | jq 'length'
|
|
```
|
|
|
|
## Ranking Filter
|
|
|
|
Filtering is opt-in (disabled by default). Enable with `--filter`.
|
|
|
|
```bash
|
|
twitter feed --filter
|
|
twitter favorites --filter
|
|
```
|
|
|
|
The scoring formula:
|
|
|
|
```text
|
|
score = likes_w * likes
|
|
+ retweets_w * retweets
|
|
+ replies_w * replies
|
|
+ bookmarks_w * bookmarks
|
|
+ views_log_w * log10(max(views, 1))
|
|
```
|
|
|
|
Configure weights and mode in `config.yaml`.
|
|
|
|
## Common Patterns for AI Agents
|
|
|
|
```bash
|
|
# Get latest tweets from a user
|
|
twitter user-posts elonmusk --max 5 --json
|
|
|
|
# Search and export for analysis
|
|
twitter search "topic" --json > results.json
|
|
|
|
# Check user profile
|
|
twitter user elonmusk --json
|
|
|
|
# Daily reading workflow
|
|
twitter feed -t following --filter
|
|
twitter favorites --filter
|
|
```
|
|
|
|
## Error Handling
|
|
|
|
- `No Twitter cookies found` — login to `x.com` in a supported browser, or set env vars.
|
|
- `Cookie expired or invalid (HTTP 401/403)` — re-login to `x.com` and retry.
|
|
- `Twitter API error 404` — queryId rotation, retry the command (client has live fallback).
|
|
|
|
## Safety Notes
|
|
|
|
- Do not ask users to share raw cookie values in chat logs.
|
|
- Prefer local browser cookie extraction over manual secret copy/paste.
|
|
- If auth fails with 401/403, ask the user to re-login to `x.com`.
|