home / skills / bradautomates / head-of-content / x-research

x-research skill

/.claude/skills/x-research

This skill analyzes high-performing X/Twitter content from tracked accounts to identify trends, patterns, and actionable content ideas.

npx playbooks add skill bradautomates/head-of-content --skill x-research

Review the files below or copy the command above to add this skill to your agents.

Files (3)
SKILL.md
5.8 KB
---
name: x-research
description: |
  Research high-performing X/Twitter content from tracked accounts using Apify's Tweet Scraper V2.
  Identifies outlier tweets, trending topics, and content patterns to inform content strategy.

  Use when asked to:
  - Find trending tweets or content in a niche
  - Research what's performing on X/Twitter
  - Identify high-performing tweet patterns
  - Analyze competitors' X content
  - Generate content ideas from X trends
  - Run X/Twitter research

  Triggers: "x research", "twitter research", "find trending tweets", "analyze x accounts",
  "what's working on twitter", "content research x", "tweet analysis"
---

# X/Twitter Research

Research high-performing tweets from tracked accounts, identify outliers, and optionally analyze video content for hooks and structure.

## Prerequisites

- `APIFY_TOKEN` environment variable or in `.env`
- `GEMINI_API_KEY` environment variable or in `.env` (for video analysis)
- `apify-client` and `google-genai` Python packages
- Accounts configured in `.claude/context/x-accounts.md`

Verify setup:
```bash
python3 -c "
import os
try:
    from dotenv import load_dotenv
    load_dotenv()
except ImportError:
    pass
from apify_client import ApifyClient
assert os.environ.get('APIFY_TOKEN'), 'APIFY_TOKEN not set'
" && echo "Prerequisites OK"
```

## Workflow

### 1. Create Run Folder

```bash
RUN_FOLDER="x-research/$(date +%Y-%m-%d_%H%M%S)" && mkdir -p "$RUN_FOLDER" && echo "$RUN_FOLDER"
```

### 2. Fetch Tweets

```bash
python3 .claude/skills/x-research/scripts/fetch_tweets.py \
  --days 30 \
  --max-items 100 \
  --output {RUN_FOLDER}/raw.json
```

Parameters:
- `--days`: Days back to search (default: 30)
- `--max-items`: Max tweets per account (default: 100)
- `--handles`: Override accounts file with specific handles

**API Limits:** Minimum 50 tweets per query required. Wait a couple minutes between runs.

### 3. Identify Outliers

```bash
python3 .claude/skills/x-research/scripts/analyze_posts.py \
  --input {RUN_FOLDER}/raw.json \
  --output {RUN_FOLDER}/outliers.json \
  --threshold 2.0
```

Output JSON contains:
- `total_posts`: Number of tweets analyzed
- `outlier_count`: Number of outliers found
- `topics`: Top hashtags, mentions, and keywords
- `content_patterns`: Analysis of what formats perform well
- `accounts`: List of accounts analyzed
- `outliers`: Array of outlier tweets with engagement metrics

### 4. Analyze Videos with AI (Optional)

If outliers contain video content:

```bash
python3 .claude/skills/video-content-analyzer/scripts/analyze_videos.py \
  --input {RUN_FOLDER}/outliers.json \
  --output {RUN_FOLDER}/video-analysis.json \
  --platform x \
  --max-videos 5
```

Note: X/Twitter is primarily text-based. Video analysis is optional and only useful when outliers contain video posts.

### 5. Generate Report

Read `{RUN_FOLDER}/outliers.json` (and optionally `{RUN_FOLDER}/video-analysis.json`), then generate `{RUN_FOLDER}/report.md`.

**Report Structure:**

```markdown
# X/Twitter Research Report

Generated: {date}

## Summary

- **Total tweets analyzed**: {total_posts}
- **Outlier tweets identified**: {outlier_count}
- **Outlier rate**: {percentage}%

## Top Performing Tweets (Outliers)

### 1. @{username} ({name})

> {tweet_text}

- **URL**: {url}
- **Date**: {created_at}
- **Engagement**: {likes} likes | {retweets} RTs | {replies} replies | {bookmarks} bookmarks
- **Engagement Score**: {score}
- **Engagement Rate**: {rate}%
- **Followers**: {followers}

[Repeat for top 15 outliers]

## Top Performing Hooks (if video analysis available)

### Hook 1: {technique} - @{username}
- **Opening**: "{opening_line}"
- **Why it works**: {attention_grab}
- **Replicable Formula**: {replicable_formula}
- [Watch Video]({url})

## Trending Topics

### Top Hashtags
[From outliers.json topics.hashtags]

### Top Keywords
[From outliers.json topics.keywords]

### Top Mentions
[From outliers.json topics.mentions]

## Content Patterns in Outliers

| Pattern | Count | Percentage |
|---------|-------|------------|
| Contains media | {count} | {pct}% |
| Contains external link | {count} | {pct}% |
| Thread format | {count} | {pct}% |
| Quote tweet | {count} | {pct}% |
| Asks a question | {count} | {pct}% |
| List/numbered format | {count} | {pct}% |
| Short (<100 chars) | {count} | {pct}% |
| Medium (100-200 chars) | {count} | {pct}% |
| Long (>200 chars) | {count} | {pct}% |

## Actionable Takeaways

[Synthesize patterns into 4-6 specific recommendations]

## Accounts Analyzed

[List accounts]
```

Focus on actionable insights. Content patterns and trending topics are key for X/Twitter research.

## Quick Reference

Full pipeline:
```bash
RUN_FOLDER="x-research/$(date +%Y-%m-%d_%H%M%S)" && mkdir -p "$RUN_FOLDER" && \
python3 .claude/skills/x-research/scripts/fetch_tweets.py -o "$RUN_FOLDER/raw.json" && \
python3 .claude/skills/x-research/scripts/analyze_posts.py -i "$RUN_FOLDER/raw.json" -o "$RUN_FOLDER/outliers.json"
```

With video analysis (optional):
```bash
python3 .claude/skills/video-content-analyzer/scripts/analyze_videos.py -i "$RUN_FOLDER/outliers.json" -o "$RUN_FOLDER/video-analysis.json" -p x
```

Then read JSON files and generate the report.

## Engagement Metrics

**Engagement Score (weighted):**
- Bookmarks: 4x (highest signal - saved for reference)
- Replies: 3x (active conversation)
- Retweets: 2x (amplification)
- Quotes: 2x (engagement with commentary)
- Likes: 1x (passive approval)

**Outlier Detection:** Tweets with engagement rate > mean + (threshold x std_dev)

**Engagement Rate:** (score / followers) x 100

## Output Location

All output goes to timestamped run folders:
```
x-research/
└── {YYYY-MM-DD_HHMMSS}/
    ├── raw.json            # Raw tweet data from Apify
    ├── outliers.json       # Outliers with metadata and topics
    ├── video-analysis.json # AI video analysis (optional)
    └── report.md           # Final report
```

Overview

This skill researches high-performing X/Twitter content from tracked accounts using Apify's Tweet Scraper V2 and downstream analytics. It identifies outlier tweets, trending topics, and repeatable content patterns to inform content strategy. The output includes outlier lists, topic summaries, engagement-pattern breakdowns, and an optional AI-driven video hook analysis.

How this skill works

The skill fetches tweets from configured accounts over a specified time window, then calculates an engagement score and detects outliers using statistical thresholds. It extracts top hashtags, mentions, keywords, and content-format patterns (media, thread, questions, lists). If outliers include videos and a video-analysis API key is available, it optionally analyzes openings, hooks, and repeatable formulas.

When to use it

  • Find trending tweets or content in a niche
  • Analyze what’s performing on X/Twitter for competitors
  • Identify high-performing tweet patterns to replicate
  • Generate content ideas from trending topics and hooks
  • Run recurring X/Twitter research to inform posting strategy

Best practices

  • Ensure APIFY_TOKEN is set and accounts list is up to date before running
  • Use a 30-day window and at least 50 tweets per query to stabilize statistics
  • Adjust outlier threshold (e.g., 2.0) to control sensitivity of results
  • Combine content-pattern outputs with audience data before changing strategy
  • Run video analysis only when outliers include video posts and Gemini API key is available

Example use cases

  • Competitor analysis: identify which tweets drive amplification and why
  • Content ideation: derive replicable hooks and thread formulas from top outliers
  • Trend spotting: surface rising hashtags and keywords across tracked accounts
  • Format testing: discover whether short text, lists, media, or threads perform best
  • Quarterly audit: generate a report of top-performing posts and actionable takeaways

FAQ

What inputs are required to run research?

You need APIFY_TOKEN and a configured list of X accounts; optionally provide GEMINI_API_KEY for video analysis.

How are outliers determined?

Outliers are tweets with engagement rates above mean plus threshold times standard deviation; threshold is configurable (default example 2.0).