Daily Ethereum intelligence. The top tweets from the last 24 hours, ranked by importance with one-line commentary.
Fork it for any topic.
- Crawl - Dual Grok x_search (trending + ecosystem) finds tweets by context, dual X API v2 search (relevancy + recency) finds tweets by engagement, RSS feeds for background context
- Rank - AI selects up to 10 by importance, writes one-line commentary
- Output - CLI (stdout) or tweet mode (formatted post preview)
Grok x_search (trending) ──\
├──> contextual discovery
Grok x_search (ecosystem) ──/ \
X API lookup ──> engagement metrics
/ |
X API search (relevancy) ──\ / merge + dedup
├──> keyword tweets |
X API search (recency) ──/ RSS ──> AI ranking
|
♦︎ output
Neither data source alone is good enough.
Grok x_search understands context. It finds tweets that matter even if engagement is low - a new EIP with 50 likes can be more important than a meme with 5,000. But Grok doesn't return reliable engagement metrics.
X API v2 has real metrics (likes, retweets, replies) but finds tweets by keyword matching, which surfaces a lot of noise. Popular doesn't mean important.
The hybrid approach: Grok discovers what's important. X API verifies how much traction it has. The merge gives you both signal and validation. Either source can run independently if the other fails - Grok-only or X API-only both produce usable results, just less complete.
Why the ranking is a separate AI step: Engagement scores alone produce bad digests. A spam airdrop tweet with botted likes would outrank a meaningful protocol update. The AI ranking step filters junk, deduplicates overlapping stories, and writes commentary that adds context the original tweet doesn't provide.
No hardcoded account list - anyone can surface a top tweet. Candidates are scored by (likes + retweets) / 2 with a configurable engagement floor that auto-lowers on quiet days.
| Step | API | Cost |
|---|---|---|
| Grok discovery (2 queries) | xAI Responses API (grok-4-1-fast + x_search) | ~$0.30 |
| X API search (2 passes) | X API v2 recent search (up to 600 tweets) | ~$3.00 |
| X API lookup | X API v2 tweet lookup (10-50 enrichments) | ~$0.10 |
| AI ranking | Anthropic Claude or xAI Grok (fallback) | ~$0.10 |
| Total per run | ~$3.50 | |
| Monthly (daily) | ~$105 |
When using the Claude Code skill flow (/eth24), the ranking step is free - Claude handles it directly. Drops the per-run cost to ~$3.40.
X API is pay-per-use at ~$0.005/tweet read. The xAI minimum credit buy is $25, which covers ~130 daily runs of the Grok steps alone.
npx clawhub@latest install eth24Clone this repo and run /eth24 from Claude Code. Claude handles the ranking directly - no separate AI API key needed for that step.
pip install -r requirements.txt
python3 main.py # CLI mode (default)
python3 main.py --mode tweet # Tweet-formatted previewXAI_API_KEY=... # xAI API key (console.x.ai) - Grok discovery + ranking fallback
X_BEARER_TOKEN=... # X API v2 bearer token (developer.x.com) - keyword search + metrics
ANTHROPIC_API_KEY=... # Anthropic API key (optional, primary ranking provider)
At minimum, set XAI_API_KEY and X_BEARER_TOKEN. Add ANTHROPIC_API_KEY for Claude-based ranking (falls back to Grok if unavailable).
Edit config.json:
{
"topic": "Ethereum",
"brand": {
"name": "ETH24",
"account": "@yourhandle",
"repo_url": "github.com/you/your-fork"
},
"crawl": {
"x_search_terms": ["Ethereum", "ETH", "EIP", "Pectra", "L2", "rollups"],
"rss_feeds": {
"The Block": "https://www.theblock.co/rss.xml",
"Bankless": "https://feeds.banklesshq.com/rss"
},
"lookback_hours": 24,
"max_tweets": 10,
"engagement_floor": 200,
"max_candidates": 50
},
"rank": {
"ai_provider_order": ["anthropic", "xai"],
"voice": "Concise, informed, direct. Short sentences. Plain language. No emojis. No emdashes."
}
}ETH24 is built for Ethereum but the pipeline is topic-agnostic. To run it for something else:
- Fork this repo
- Edit
config.json: changetopic,brand,x_search_terms,rss_feeds - Set your API keys
- Run it
Examples: SOL24, AI24, DEFI24, BTC24 - same architecture, different search terms.
ETH24 - 2/18/26
Vitalik on surveillance, EIP-7623 efficiency, privacy momentum
♦︎ Vitalik underscores the real-world harms of surveillance,
highlighting privacy's urgency in Ethereum.
https://x.com/VitalikButerin/status/2024106047460475063
♦︎ EIP-7623 increases calldata gas costs but keeps overall
expenses low due to other optimizations.
https://x.com/nero_eth/status/2023681491499163911
All output goes to output/YYYY-MM-DD/:
crawled.json- raw tweet data with engagement metricsranked.json- selected stories with commentarycli.txt- formatted plain text (CLI mode)thread.txt- formatted tweet (tweet mode)
Built by Pat McGowan at Number Group for the Ethereum Community Foundation.
MIT License