289 lines
5.7 KiB
Markdown
289 lines
5.7 KiB
Markdown
|
|
# 🔥 Hot Scanner
|
||
|
|
|
||
|
|
Find viral stocks & crypto trends in real-time by aggregating multiple data sources.
|
||
|
|
|
||
|
|
## Overview
|
||
|
|
|
||
|
|
The Hot Scanner answers one question: **"What's hot right now?"**
|
||
|
|
|
||
|
|
It aggregates data from:
|
||
|
|
- CoinGecko (trending coins, biggest movers)
|
||
|
|
- Google News (finance & crypto headlines)
|
||
|
|
- Yahoo Finance (gainers, losers, most active)
|
||
|
|
- Twitter/X (social sentiment, optional)
|
||
|
|
|
||
|
|
## Quick Start
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Full scan with all sources
|
||
|
|
python3 scripts/hot_scanner.py
|
||
|
|
|
||
|
|
# Skip social media (faster)
|
||
|
|
python3 scripts/hot_scanner.py --no-social
|
||
|
|
|
||
|
|
# JSON output for automation
|
||
|
|
python3 scripts/hot_scanner.py --json
|
||
|
|
```
|
||
|
|
|
||
|
|
## Output Format
|
||
|
|
|
||
|
|
### Console Output
|
||
|
|
|
||
|
|
```
|
||
|
|
============================================================
|
||
|
|
🔥 HOT SCANNER v2 - What's Trending Right Now?
|
||
|
|
📅 2026-02-02 10:45:30 UTC
|
||
|
|
============================================================
|
||
|
|
|
||
|
|
📊 TOP TRENDING (by buzz):
|
||
|
|
1. BTC (6 pts) [CoinGecko, Google News] 📉 bearish (-2.5%)
|
||
|
|
2. ETH (5 pts) [CoinGecko, Twitter] 📉 bearish (-7.2%)
|
||
|
|
3. NVDA (3 pts) [Google News, Yahoo] 📰 Earnings beat...
|
||
|
|
|
||
|
|
🪙 CRYPTO HIGHLIGHTS:
|
||
|
|
🚀 RIVER River +14.0%
|
||
|
|
📉 BTC Bitcoin -2.5%
|
||
|
|
📉 ETH Ethereum -7.2%
|
||
|
|
|
||
|
|
📈 STOCK MOVERS:
|
||
|
|
🟢 NVDA (gainers)
|
||
|
|
🔴 TSLA (losers)
|
||
|
|
📊 AAPL (most active)
|
||
|
|
|
||
|
|
🐦 SOCIAL BUZZ:
|
||
|
|
[twitter] Bitcoin to $100k prediction...
|
||
|
|
[reddit_wsb] GME yolo update...
|
||
|
|
|
||
|
|
📰 BREAKING NEWS:
|
||
|
|
[BTC, ETH] Crypto crash: $2.5B liquidated...
|
||
|
|
[NVDA] Nvidia beats earnings expectations...
|
||
|
|
```
|
||
|
|
|
||
|
|
### JSON Output
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"scan_time": "2026-02-02T10:45:30+00:00",
|
||
|
|
"top_trending": [
|
||
|
|
{
|
||
|
|
"symbol": "BTC",
|
||
|
|
"mentions": 6,
|
||
|
|
"sources": ["CoinGecko Trending", "Google News"],
|
||
|
|
"signals": ["📉 bearish (-2.5%)"]
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"crypto_highlights": [...],
|
||
|
|
"stock_highlights": [...],
|
||
|
|
"social_buzz": [...],
|
||
|
|
"breaking_news": [...]
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## Data Sources
|
||
|
|
|
||
|
|
### CoinGecko (No Auth Required)
|
||
|
|
|
||
|
|
| Endpoint | Data |
|
||
|
|
|----------|------|
|
||
|
|
| `/search/trending` | Top 15 trending coins |
|
||
|
|
| `/coins/markets` | Top 100 by market cap with 24h changes |
|
||
|
|
|
||
|
|
**Scoring:** Trending coins get 2 points, movers with >3% change get 1 point.
|
||
|
|
|
||
|
|
### Google News RSS (No Auth Required)
|
||
|
|
|
||
|
|
| Feed | Content |
|
||
|
|
|------|---------|
|
||
|
|
| Business News | General finance headlines |
|
||
|
|
| Crypto Search | Bitcoin, Ethereum, crypto keywords |
|
||
|
|
|
||
|
|
**Ticker Extraction:** Uses regex patterns and company name mappings.
|
||
|
|
|
||
|
|
### Yahoo Finance (No Auth Required)
|
||
|
|
|
||
|
|
| Page | Data |
|
||
|
|
|------|------|
|
||
|
|
| `/gainers` | Top gaining stocks |
|
||
|
|
| `/losers` | Top losing stocks |
|
||
|
|
| `/most-active` | Highest volume stocks |
|
||
|
|
|
||
|
|
**Note:** Requires gzip decompression.
|
||
|
|
|
||
|
|
### Twitter/X (Auth Required)
|
||
|
|
|
||
|
|
Uses [bird CLI](https://github.com/steipete/bird) for Twitter search.
|
||
|
|
|
||
|
|
**Searches:**
|
||
|
|
- `stock OR $SPY OR $QQQ OR earnings`
|
||
|
|
- `bitcoin OR ethereum OR crypto OR $BTC`
|
||
|
|
|
||
|
|
## Twitter/X Setup
|
||
|
|
|
||
|
|
### 1. Install bird CLI
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# macOS
|
||
|
|
brew install steipete/tap/bird
|
||
|
|
|
||
|
|
# npm
|
||
|
|
npm install -g @steipete/bird
|
||
|
|
```
|
||
|
|
|
||
|
|
### 2. Get Auth Tokens
|
||
|
|
|
||
|
|
**Option A: Browser cookies (macOS)**
|
||
|
|
1. Login to x.com in Safari/Chrome
|
||
|
|
2. Grant Terminal "Full Disk Access" in System Settings
|
||
|
|
3. Run `bird whoami` to verify
|
||
|
|
|
||
|
|
**Option B: Manual extraction**
|
||
|
|
1. Open x.com in Chrome
|
||
|
|
2. DevTools (F12) → Application → Cookies → x.com
|
||
|
|
3. Copy `auth_token` and `ct0` values
|
||
|
|
|
||
|
|
### 3. Configure
|
||
|
|
|
||
|
|
Create `.env` file in the skill directory:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# /path/to/stock-analysis/.env
|
||
|
|
AUTH_TOKEN=your_auth_token_here
|
||
|
|
CT0=your_ct0_token_here
|
||
|
|
```
|
||
|
|
|
||
|
|
Or export as environment variables:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
export AUTH_TOKEN="..."
|
||
|
|
export CT0="..."
|
||
|
|
```
|
||
|
|
|
||
|
|
### 4. Verify
|
||
|
|
|
||
|
|
```bash
|
||
|
|
bird whoami
|
||
|
|
# Should show: 🙋 @YourUsername
|
||
|
|
```
|
||
|
|
|
||
|
|
## Scoring System
|
||
|
|
|
||
|
|
Each mention from a source adds points:
|
||
|
|
|
||
|
|
| Source | Points |
|
||
|
|
|--------|--------|
|
||
|
|
| CoinGecko Trending | 2 |
|
||
|
|
| CoinGecko Movers | 1 |
|
||
|
|
| Google News | 1 |
|
||
|
|
| Yahoo Finance | 1 |
|
||
|
|
| Twitter/X | 1 |
|
||
|
|
| Reddit (high score) | 2 |
|
||
|
|
| Reddit (normal) | 1 |
|
||
|
|
|
||
|
|
Symbols are ranked by total points across all sources.
|
||
|
|
|
||
|
|
## Ticker Extraction
|
||
|
|
|
||
|
|
### Patterns
|
||
|
|
|
||
|
|
```python
|
||
|
|
# Cashtag: $AAPL
|
||
|
|
r'\$([A-Z]{1,5})\b'
|
||
|
|
|
||
|
|
# Parentheses: (AAPL)
|
||
|
|
r'\(([A-Z]{2,5})\)'
|
||
|
|
|
||
|
|
# Stock mentions: AAPL stock, AAPL shares
|
||
|
|
r'\b([A-Z]{2,5})(?:\'s|:|\s+stock|\s+shares)'
|
||
|
|
```
|
||
|
|
|
||
|
|
### Company Mappings
|
||
|
|
|
||
|
|
```python
|
||
|
|
{
|
||
|
|
"Apple": "AAPL",
|
||
|
|
"Microsoft": "MSFT",
|
||
|
|
"Tesla": "TSLA",
|
||
|
|
"Nvidia": "NVDA",
|
||
|
|
"Bitcoin": "BTC",
|
||
|
|
"Ethereum": "ETH",
|
||
|
|
# ... etc
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### Crypto Keywords
|
||
|
|
|
||
|
|
```python
|
||
|
|
{
|
||
|
|
"bitcoin": "BTC",
|
||
|
|
"ethereum": "ETH",
|
||
|
|
"solana": "SOL",
|
||
|
|
"dogecoin": "DOGE",
|
||
|
|
# ... etc
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## Automation
|
||
|
|
|
||
|
|
### Cron Job
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Daily at 8 AM
|
||
|
|
0 8 * * * cd /path/to/stock-analysis && python3 scripts/hot_scanner.py --json > cache/daily_scan.json
|
||
|
|
```
|
||
|
|
|
||
|
|
### OpenClaw Integration
|
||
|
|
|
||
|
|
```yaml
|
||
|
|
# Cron job config
|
||
|
|
name: "🔥 Daily Hot Scanner"
|
||
|
|
schedule:
|
||
|
|
kind: cron
|
||
|
|
expr: "0 8 * * *"
|
||
|
|
tz: "Europe/Berlin"
|
||
|
|
payload:
|
||
|
|
kind: agentTurn
|
||
|
|
message: "Run hot scanner and summarize results"
|
||
|
|
deliver: true
|
||
|
|
sessionTarget: isolated
|
||
|
|
```
|
||
|
|
|
||
|
|
## Caching
|
||
|
|
|
||
|
|
Results are saved to:
|
||
|
|
- `cache/hot_scan_latest.json` — Most recent scan
|
||
|
|
|
||
|
|
## Limitations
|
||
|
|
|
||
|
|
- **Reddit:** Blocked without OAuth (403). Requires API application.
|
||
|
|
- **Twitter:** Requires auth tokens, may expire.
|
||
|
|
- **Yahoo:** Sometimes rate-limited.
|
||
|
|
- **Google News:** RSS URLs may change.
|
||
|
|
|
||
|
|
## Future Enhancements
|
||
|
|
|
||
|
|
- [ ] Reddit API integration (PRAW)
|
||
|
|
- [ ] StockTwits integration
|
||
|
|
- [ ] Google Trends
|
||
|
|
- [ ] Historical trend tracking
|
||
|
|
- [ ] Alert thresholds (notify when score > X)
|
||
|
|
|
||
|
|
## Troubleshooting
|
||
|
|
|
||
|
|
### Twitter not working
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Check auth
|
||
|
|
bird whoami
|
||
|
|
|
||
|
|
# Should see your username
|
||
|
|
# If not, re-export tokens
|
||
|
|
```
|
||
|
|
|
||
|
|
### Yahoo 403 or gzip errors
|
||
|
|
|
||
|
|
The scanner handles gzip automatically. If issues persist, Yahoo may be rate-limiting.
|
||
|
|
|
||
|
|
### No tickers found
|
||
|
|
|
||
|
|
Check that news headlines contain recognizable patterns. The scanner uses conservative extraction to avoid false positives.
|