x-research

ClawSkills 作者 clawskills

X/Twitter research skill powered by TwitterAPI.io. Agentic search, profile analysis, thread reading, watchlists, and sourced briefings. Use when asked to search X/Twitter, check what people are saying about a topic, monitor accounts, or research crypto/tech narratives on X.

安装 / 下载方式

TotalClaw CLI推荐
totalclaw install clawskills:clawskills~minilozio-x-research-but-cheaper
cURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/clawskills%3Aclawskills~minilozio-x-research-but-cheaper/file -o minilozio-x-research-but-cheaper.md
# X Research

General-purpose X/Twitter research agent powered by [TwitterAPI.io](https://twitterapi.io). Search, filter, monitor — all from the terminal. No X Developer Portal account needed.

For API details: read `references/twitterapi-io.md`.

## Why TwitterAPI.io?

| | X API Official | TwitterAPI.io |
|---|---|---|
| **Cost** | $100+/mo (Basic plan) | ~$0.15/1k tweets (pay-per-use) |
| **Setup** | Developer Portal application | Just an API key |
| **Rate limit** | 10 req/15min | 200 QPS |
| **Archive** | 7 days (recent) | Full archive |

## Setup

1. Get a TwitterAPI.io key from [twitterapi.io](https://twitterapi.io)

2. Set the env var:
```bash
export TWITTERAPI_KEY="your-key-here"
```
Or add to your `.env` file.

3. Node.js 18+ required (for native `fetch`). No `npm install` needed — zero dependencies.

## CLI Tool

All commands run from the scripts directory:

```bash
cd <skill-dir>/scripts
```

### Search

```bash
npx tsx x-search.ts search "<query>" [options]
```

**Options:**
- `--sort likes|retweets|impressions|recent` — sort order (default: likes)
- `--since 1h|3h|12h|1d|7d` — time filter
- `--min-likes N` — filter minimum likes
- `--min-impressions N` — filter minimum views
- `--pages N` — pages to fetch, 1-5 (default: 1)
- `--limit N` — max results to display (default: 15)
- `--quick` — fast mode: 1 page, max 10 results, noise filter, 1hr cache
- `--from <username>` — shorthand for `from:username` in query
- `--quality` — filter low-engagement tweets (≥10 likes)
- `--no-replies` — exclude replies
- `--save` — save results to file
- `--type Top|Latest` — search mode (default: Latest; Top returns algorithmic ranking)
- `--json` — raw JSON output
- `--markdown` — markdown formatted output

Auto-adds `-is:retweet` unless query already includes it. Cost estimate shown after each search.

**Examples:**
```bash
npx tsx x-search.ts search "AI agents Base chain" --sort likes --limit 10
npx tsx x-search.ts search "BNKR" --quick
npx tsx x-search.ts search "from:frankdegods" --sort recent
npx tsx x-search.ts search "(opus OR claude) trading" --pages 2 --save
npx tsx x-search.ts search "$SOL memecoin" --min-likes 50 --since 1d
```

**Search operators** (passed through to X):

| Operator | Example | Notes |
|----------|---------|-------|
| keyword | `bun 2.0` | Implicit AND |
| `OR` | `bun OR deno` | Must be uppercase |
| `-` | `-is:retweet` | Negation |
| `()` | `(fast OR perf)` | Grouping |
| `from:` | `from:elonmusk` | Posts by user |
| `to:` | `to:elonmusk` | Replies to user |
| `#` | `#buildinpublic` | Hashtag |
| `$` | `$AAPL` | Cashtag |
| `lang:` | `lang:en` | Language filter |
| `is:retweet` | `-is:retweet` | Filter retweets |
| `is:reply` | `-is:reply` | Filter replies |
| `has:media` | `has:media` | Contains media |
| `has:links` | `has:links` | Contains links |
| `min_faves:` | `min_faves:100` | Min likes (native) |

### Profile

```bash
npx tsx x-search.ts profile <username> [--count N] [--replies] [--json]
```

Fetches user info and recent tweets. Excludes replies by default.

### Single Tweet

```bash
npx tsx x-search.ts tweet <tweet_id> [--json]
```

### Thread

```bash
npx tsx x-search.ts thread <tweet_id>
```

Fetches root tweet, author thread continuations, and replies in chronological order.

### Replies

```bash
npx tsx x-search.ts replies <tweet_id> [--sort likes|recent] [--limit N]
```

Get replies to a specific tweet, sorted by engagement.

### Quote Tweets

```bash
npx tsx x-search.ts quotes <tweet_id> [--sort likes|recent] [--limit N]
```

See who quoted a tweet and what they said.

### Mentions

```bash
npx tsx x-search.ts mentions <username> [--since 1d|7d] [--sort recent|likes] [--limit N]
```

Get tweets that mention a user. Great for tracking what people are saying about someone.

### Followers / Following

```bash
npx tsx x-search.ts followers <username> [--limit N]
npx tsx x-search.ts following <username> [--limit N]
```

List a user's followers or who they follow. Shows name, follower count, and bio snippet.

### Search Users

```bash
npx tsx x-search.ts users "<query>" [--limit N]
```

Search for user accounts by keyword.

### Trending

```bash
npx tsx x-search.ts trending [--woeid N] [--count N]
```

Get trending topics. Default: worldwide (woeid=1). Common WOEIDs: US=23424977, UK=23424975, Italy=23424853.

### Community

```bash
npx tsx x-search.ts community <id>           # Community info
npx tsx x-search.ts community tweets <id>    # Community tweets
```

Research X Communities by ID.

### Watchlist

```bash
npx tsx x-search.ts watchlist                       # Show all
npx tsx x-search.ts watchlist add <user> [note]     # Add account
npx tsx x-search.ts watchlist remove <user>          # Remove account
npx tsx x-search.ts watchlist check                  # Check recent from all
```

Watchlist stored in `data/watchlist.json`. Use for periodic monitoring — check if key accounts posted anything notable.

### Cache

```bash
npx tsx x-search.ts cache clear    # Clear all cached results
```

Default 15-minute TTL. Quick mode uses 1-hour TTL. Avoids repeat API charges.

## Research Loop (Agentic)

When doing deep research (not just a quick search), follow this loop:

### 1. Decompose the Question into Queries

Turn the research question into 3-5 keyword queries:

- **Core query**: Direct keywords for the topic
- **Expert voices**: `from:` specific known experts
- **Pain points**: Keywords like `(broken OR bug OR issue)`
- **Positive signal**: Keywords like `(shipped OR love OR fast)`
- **Links**: `has:links` for resource-rich tweets
- **Crypto spam**: Add `-airdrop -giveaway -whitelist` if needed

### 2. Search and Extract

Run each query via CLI. After each, assess:
- Signal or noise? Adjust operators.
- Key voices worth searching `from:` specifically?
- Threads worth following via `thread` command?

### 3. Follow Threads

When a tweet has high engagement or is a thread starter:
```bash
npx tsx x-search.ts thread <tweet_id>
```

### 4. Synthesize

Group findings by theme, not by query:

```
### [Theme/Finding Title]

[1-2 sentence summary]

- @username: "[key quote]" (♥ N, 👁 N) [Tweet](url)
- @username2: "[another perspective]" (♥ N, 👁 N) [Tweet](url)
```

### 5. Save

Use `--save` flag or `--markdown` for research docs.

## Refinement Heuristics

- **Too much noise?** Add `--no-replies`, use `--sort likes`, narrow keywords
- **Too few results?** Broaden with `OR`, remove restrictive operators
- **Crypto spam?** Add `-airdrop -giveaway -whitelist` to query
- **Expert takes only?** Use `from:` or `--min-likes 50`
- **Substance over hot takes?** Search with `has:links`

## Heartbeat Integration

On heartbeat, run `watchlist check` to see if key accounts posted anything notable. Flag only if genuinely interesting/actionable.

## Cost

TwitterAPI.io pay-per-use pricing:
- ~$0.15 per 1,000 tweets fetched
- ~$0.18 per profile lookup
- Cost estimate shown after each command
- Cache prevents redundant charges

## File Structure

```
skills/x-research/
├── SKILL.md                # This file
├── package.json            # Zero dependencies
├── scripts/
│   ├── x-search.ts         # CLI entry point
│   └── lib/
│       ├── api.ts          # TwitterAPI.io wrapper
│       ├── cache.ts        # File-based cache (15min/1hr TTL)
│       └── format.ts       # Terminal + markdown formatters
├── data/
│   ├── watchlist.json      # Accounts to monitor
│   └── cache/              # Auto-managed
└── references/
    └── twitterapi-io.md    # API endpoint reference
```

## Requirements

- Node.js 18+ (for native `fetch`)
- A TwitterAPI.io API key
- No npm install needed — zero dependencies