| name | daily-alpha-scanner |
| description | One-click daily alpha scanner that runs a full 8-step on-chain research pipeline using OKX OnchainOS + social sentiment + historical backtesting + trend monitoring & alerts: (1) Hot Token Discovery with narrative categorization, (2) Smart Money / KOL / Whale buy-signal tracking, (3) Social Sentiment Scan via crypto news (opennews), Reddit, and Twitter KOL tracking (xreach), (4) Meme Coin launchpad scanning with dev reputation and bundle/sniper detection, (5) Batch security audit (honeypot, mintable, fake LP, wash trading), (6) Historical Signal Validation via DexPaprika OHLCV โ backtest what happened after past smart money entries, (7) Trend Monitoring & Alerts via TrendRadar (Chinese platforms: Zhihu/Weibo/Bilibili) + Google Trends (global search interest) โ detect tokens trending BEFORE they pump, plus multi-channel alert push (Telegram/Feishu/Slack/DingTalk/WeChat), (8) Consolidated briefing with 8-dimension composite scoring (0-100) and BUY / WATCH / AVOID verdicts. Supports Solana, Base, Ethereum, BSC, Arbitrum. Use when the user wants a daily market scan, alpha discovery, token recommendations, or asks 'what to buy today'. Trigger keywords: daily scan, alpha scanner, today's alpha, what to buy, market scan, daily briefing, ๆฏๆฅๆซๆ, ไปๆฅๆจ่, ๆซ้พ, ไปๅคฉไนฐไปไน, ๅธๅบๆซๆ, ้พไธๆฅๆฅ, ๆฏๆฅ็ ๆฅ, ่ถๅฟ้ข่ญฆ. |
| license | MIT |
| compatibility | Requires onchainos CLI v3.1+ and OKX Web3 API key (OKX_API_KEY, OKX_SECRET_KEY, OKX_PASSPHRASE). Internet access required for on-chain data queries. |
| metadata | {"author":"zhuyansen","version":"4.0.0","homepage":"https://github.com/zhuyansen/daily-alpha-scanner"} |
Daily Alpha Scanner
A systematic 8-step pipeline that scans on-chain data + social sentiment + historical backtesting + trend monitoring & alerts across multiple chains and produces a consolidated briefing with purchase recommendations.
Pipeline
Step 1: Hot Tokens โ Step 2: Smart Money โ Step 3: Social Sentiment
โ โ โ
Step 4: Meme Scan โ Step 5: Security Audit (batch scan all candidates)
โ
Step 6: Signal Backtesting (DexPaprika OHLCV โ historical validation)
โ
Step 7: Trend Monitoring & Alerts (TrendRadar Chinese platforms + Google Trends global)
โ
Step 8: Consolidated Briefing + Purchase Recommendations (8D scoring)
Prerequisites
Required: OKX OnchainOS
which onchainos && onchainos --version
If missing: curl -sSL https://raw.githubusercontent.com/okx/onchainos-skills/main/install.sh | sh
Required env vars: OKX_API_KEY, OKX_SECRET_KEY, OKX_PASSPHRASE (Web3 API key from https://web3.okx.com/onchainos/dev-portal)
Social Sentiment Tools (graceful degradation โ all optional, use what's available)
Check availability in order of priority:
curl -s "https://www.reddit.com/r/cryptocurrency/hot.json?limit=1" -H "User-Agent: agent-reach/1.0" | python3 -c "import json,sys; print('Reddit: OK')" 2>/dev/null || echo "Reddit: unavailable"
which xreach && xreach search "test" --json -n 1 --proxy http://127.0.0.1:7890 2>/dev/null && echo "xreach: OK" || echo "xreach: unavailable"
At least one social source must work. If all fail, Step 3 is skipped and social score defaults to 50 (neutral).
Historical Data: DexPaprika (free, no API key)
curl -s "https://api.dexpaprika.com/search?query=TROLL" | python3 -c "import json,sys; print(json.loads(sys.stdin.read()).get('tokens',[])[0])"
If DexPaprika API is unreachable, Step 6 is skipped and backtestScore defaults to 50 (neutral).
Trend Monitoring: TrendRadar + Google Trends (graceful degradation โ both optional)
If TrendRadar is unavailable, Chinese platform trend data is skipped. If Google Trends is unavailable, global trend data is skipped. If both are down, Step 7 is skipped and trendScore defaults to 50 (neutral).
Execution
User Parameters
Ask the user before starting (or use defaults):
| Parameter | Default | Options |
|---|
| Chains | Solana + Base | Solana (501), Ethereum (1), Base (8453), BSC (56), Arbitrum (42161) |
| Focus | All narratives | AI, Meme, DeFi, Infra, BTC-eco, Political |
| Risk tolerance | Medium | Conservative, Medium, Aggressive |
| Output | Terminal | Terminal, Markdown file |
If the user just says "ๆซไธไธ" or "daily scan" without parameters, use defaults (Solana + Base, all narratives, medium risk).
Step 1: Hot Token Discovery
Goal: Find trending tokens across target chains, categorize by narrative.
1.1 Fetch Trending Tokens
Run in parallel for each target chain:
onchainos token hot-tokens --chain <chainId> --limit 20
onchainos token trending --chains <chainIds> --sort-by 5 --time-frame 4 --limit 30
1.2 Extract & Categorize
From the results, extract for each token:
tokenSymbol, tokenContractAddress, chainIndex
price, change (24h %), volume, marketCap, liquidity
holders, top10HoldPercent, bundleHoldPercent, devHoldPercent
riskLevelControl (1=low, 2=medium, 3=high)
Categorize by narrative based on token name, symbol, and tags:
- AI/Agent: tokens related to AI, agents, virtual, autonomous
- Meme: animal names, cultural references, ironic/funny names
- DeFi: DEX tokens, lending, yield, staking
- Infra: L1/L2, bridges, oracles, tooling
- BTC-eco: BTC wrappers, ordinals, BTC-related
- Political: political figures, events
- Stablecoin/Yield: USD-pegged, yield-bearing stablecoins
1.3 Filter Criteria
Remove tokens that are obvious noise:
- Top10 concentration > 80% (extreme whale control)
- Market cap < $5K (dust)
- Volume/MCap ratio > 100x (likely bot wash trading)
- Zero holders or zero liquidity
Keep a shortlist of top 15-20 interesting tokens for further analysis.
Step 2: Smart Money Signal Scan
Goal: Identify what smart money, KOLs, and whales are actively buying.
2.1 Aggregated Buy Signals
Run in parallel for each target chain:
onchainos signal list --chain <chainId> --wallet-type 1 --limit 10
onchainos signal list --chain <chainId> --wallet-type 2 --limit 10
onchainos signal list --chain <chainId> --wallet-type 3 --limit 10
2.2 Extract Signal Data
For each signal entry:
token.symbol, token.tokenAddress, token.marketCapUsd
triggerWalletCount (number of smart money addresses buying)
amountUsd (total buy amount)
soldRatioPercent (how much they've already sold โ key metric!)
token.top10HolderPercent, token.holders
2.3 Signal Quality Scoring
Rate each signal:
- Strong: 5+ wallets buying, soldRatio < 30%, marketCap > $100K
- Medium: 3+ wallets buying, soldRatio < 60%
- Weak: 1-2 wallets, soldRatio > 70% (already exiting)
- Exit signal: soldRatio > 90% (smart money dumping)
2.4 Cross-reference with Hot Tokens
Flag tokens that appear in BOTH Step 1 (trending) AND Step 2 (smart money buying) โ these have the strongest alpha signal.
Step 3: Social Sentiment Scan
Goal: Gauge market sentiment from crypto news, Reddit communities, and Twitter/X KOL discussions for candidate tokens from Steps 1-2.
3.1 Determine Available Sources
At the start of this step, check which social tools are available:
Source priority (use all that work):
1. opennews MCP โ mcp__opennews__search_news_by_coin (if MCP configured)
2. Reddit API โ curl to reddit JSON endpoints (always available)
3. xreach CLI โ Twitter search (if installed + authenticated)
4. opentwitter โ Twitter MCP (if MCP configured)
Record which sources are active. If none work, skip this step entirely and assign socialScore = 50 (neutral) for all tokens.
3.2 Crypto News Sentiment (opennews)
For each candidate token (top 10 from Steps 1-2 combined):
Tool: mcp__opennews__search_news_by_coin
Args: coin = "<TOKEN_SYMBOL>", limit = 5
From results, extract:
- newsCount: how many articles in the last 24-48h
- sentiment: classify each headline as bullish / bearish / neutral
- catalysts: any major events (listing, partnership, hack, regulation)
Scoring:
- 5+ bullish articles, no bearish โ
newsSentiment = 90
- 3+ bullish, no bearish โ
newsSentiment = 75
- Mixed (both bullish & bearish) โ
newsSentiment = 50
- Mostly bearish โ
newsSentiment = 25
- No news at all โ
newsSentiment = 50 (neutral, not penalized)
3.3 Reddit Community Buzz
For each candidate token, search crypto subreddits:
curl -s "https://www.reddit.com/r/cryptocurrency+CryptoMoonShots+solana+defi/search.json?q=<TOKEN_SYMBOL>&limit=10&sort=new&t=week" \
-H "User-Agent: daily-alpha-scanner/2.0"
From results, extract:
- postCount: number of posts mentioning this token in the past week
- totalScore: sum of upvotes across all matching posts
- commentCount: total comments (engagement depth)
- sentimentRatio: ratio of positive vs negative posts (read titles + top comments)
Scoring:
- 10+ posts, totalScore > 100, mostly positive โ
redditBuzz = 85
- 5+ posts, totalScore > 30, mixed-positive โ
redditBuzz = 65
- 1-4 posts, low engagement โ
redditBuzz = 45
- Zero mentions โ
redditBuzz = 30 (no buzz is slightly bearish for a "hot" token)
3.4 Twitter/X KOL Tracking (if available)
If xreach CLI is available:
xreach search "$TOKEN_SYMBOL crypto" --json -n 15 --proxy http://127.0.0.1:7890
If opentwitter MCP is available, use its search tool instead.
From results, extract:
- tweetCount: number of tweets in past 24-48h
- kol_mentions: tweets from accounts with 10K+ followers
- sentiment: bullish / bearish / neutral ratio
- engagementRate: avg (likes + retweets + replies) per tweet
Scoring:
- 3+ KOL mentions, mostly bullish, high engagement โ
twitterScore = 90
- 1-2 KOL mentions, positive sentiment โ
twitterScore = 70
- Mentions exist but mixed/low engagement โ
twitterScore = 50
- No data (tool unavailable) โ
twitterScore = null (excluded from average)
3.5 Social Score Calculation
Combine available sources into a single socialScore (0-100):
If all 3 sources available:
socialScore = newsSentiment ร 0.40 + redditBuzz ร 0.30 + twitterScore ร 0.30
If 2 sources available:
socialScore = weighted average of available sources (equal weights)
If 1 source available:
socialScore = that source's score
If 0 sources:
socialScore = 50 (neutral)
3.6 Social Signal Flags
Flag notable patterns:
- ๐ฅ VIRAL: socialScore > 80 โ strong positive buzz across multiple platforms
- ๐ฐ NEWS_CATALYST: major news event detected (listing, partnership, whale buy)
- ๐คซ SILENT_ALPHA: smart money buying (Step 2) but zero social buzz โ potential early signal
- โ ๏ธ HYPE_RISK: social score > 85 but smart money already selling (soldRatio > 60%) โ possible exit liquidity
- ๐ง COLD: socialScore < 30 โ no one is talking about this token
Step 4: Meme Coin Scan
Goal: Scan launchpads for new launches worth tracking.
4.1 New Token Scan
onchainos memepump tokens --chain 501
onchainos memepump tokens --chain 56
4.2 Extract Key Metrics
For each new meme token:
symbol, tokenAddress, bondingPercent (bonding curve progress)
market.marketCapUsd, market.buyTxCount1h, market.sellTxCount1h
tags.snipersPercent, tags.bundlersPercent
tags.top10HoldingsPercent, tags.devHoldingsPercent, tags.freshWalletsPercent
tags.totalHolders
social.x (has Twitter?), social.website, social.telegram
creatorAddress (for dev reputation lookup)
4.3 Developer Reputation Check
For promising tokens (survived bonding, has social presence):
onchainos memepump token-dev-info --address <tokenAddress> --chain <chainId>
Key fields:
devCreateTokenCount โ how many tokens this dev has created
devRugPullTokenCount โ how many rugged
devLaunchedTokenCount โ how many survived past bonding curve
4.4 Bundle/Sniper Detection
onchainos memepump token-bundle-info --address <tokenAddress> --chain <chainId>
4.5 Meme Scoring
Filter out garbage:
- Sniper % > 50% โ likely bot-controlled โ skip
- Top10 holdings > 60% โ extreme concentration โ skip
- 0 holders or < 3 holders โ too early โ skip
- No social presence at all โ skip
- Dev has > 5 rug pulls โ skip
Keep tokens that have:
- Survived bonding curve (migrated)
- Sniper < 20%, bundle < 10%
- Has at least Twitter presence
- Dev rug pull rate < 20%
- Growing holder count
Step 5: Security Audit
Goal: Batch security scan all candidate tokens from Steps 1-4.
5.1 Collect Candidates
Merge the shortlisted tokens from Steps 1, 2, 3, and 4 (deduplicate by address). Max 10 tokens for batch scan.
5.2 Batch Token Security Scan
onchainos security token-scan --tokens "<chainId1>:<addr1>,<chainId2>:<addr2>,..."
Up to 10 tokens per batch. Key fields to check:
riskLevel: LOW / MEDIUM / HIGH
isHoneypot: true = INSTANT REJECT
isMintable: true = can create infinite tokens
isDumping: true = active sell pressure
isFakeLiquidity: true = liquidity is fake
isLiquidityRemoval: true = LP being pulled
isCounterfeit: true = fake/copycat token
isWash: true = wash trading detected
5.3 Advanced Risk Analysis
For tokens that pass the security scan, run advanced info:
onchainos token advanced-info --address <address> --chain <chainId>
Key fields:
devCreateTokenCount โ serial deployer?
devRugPullTokenCount โ rug history
lpBurnedPercent โ LP lock safety (higher = safer)
sniperHoldingPercent โ sniper concentration
bundleHoldingPercent โ bundle bot concentration
suspiciousHoldingPercent โ flagged wallets
tokenTags โ look for: communityRecognized, smartMoneyBuy, dsPaid, CTO
5.4 Risk Classification
| Risk Level | Criteria | Action |
|---|
| SAFE | LOW risk, no flags, LP burned > 90%, dev clean | Can consider |
| CAUTION | LOW risk but some flags (high dev token count, moderate concentration) | Small position only |
| DANGER | Any honeypot/mintable/fake liquidity flag | REJECT |
| CRITICAL | Multiple red flags, dev rug history, active dumping | REJECT + warn |
Step 6: Signal Backtesting (Historical Validation)
Goal: For BUY/WATCH candidates that passed security audit, validate the signal by checking historical price performance using DexPaprika OHLCV data.
6.1 Select Candidates for Backtesting
Only backtest tokens that:
- Passed Step 5 security audit (Risk = LOW or MEDIUM, no critical flags)
- Have a composite score > 45 from Steps 1-5 (skip obvious AVOIDs)
- Max 5 tokens to backtest (API rate limiting)
6.2 Get Token Pool (Highest Liquidity)
For each candidate, find the highest-liquidity DEX pool:
curl -s "https://api.dexpaprika.com/networks/<network>/tokens/<tokenAddress>/pools?limit=3"
Network mapping:
- Solana โ
solana
- Base โ
base
- Ethereum โ
ethereum
- BSC โ
bsc
- Arbitrum โ
arbitrum-one
From results, pick the pool with highest volume_usd. Record pool_id.
6.3 Pull Historical OHLCV
curl -s "https://api.dexpaprika.com/networks/<network>/pools/<pool_id>/ohlcv?start=<30d_ago>&end=<today>&interval=24h&limit=30"
curl -s "https://api.dexpaprika.com/networks/<network>/pools/<pool_id>/ohlcv?start=<7d_ago>&end=<today>&interval=1h&limit=168"
Available intervals: 1m, 5m, 10m, 15m, 30m, 1h, 6h, 12h, 24h
6.4 Compute Signal Metrics
From OHLCV data, calculate:
Price Trend:
price_7d_change: 7-day price change %
price_30d_change: 30-day price change %
price_from_ath: distance from 30-day all-time high %
price_from_atl: distance from 30-day all-time low %
Volatility:
daily_volatility: average daily (high-low)/open %
max_drawdown_7d: worst peak-to-trough decline in 7 days
Volume Trend:
volume_trend: is 7d avg volume higher or lower than 30d avg? (expanding = bullish)
volume_spike_days: days with volume > 3x average in last 30d
Support/Resistance:
current_vs_7d_vwap: current price relative to 7-day VWAP (above = bullish, below = bearish)
consolidation_range: is price in a tight range (<10% spread) in last 3 days? (potential breakout)
6.5 Smart Money Entry Timing Analysis
If the token appeared in Step 2 (smart money signals), analyze:
- Where is the current price relative to when smart money likely entered?
- Did SM enter near recent lows (good timing) or near highs (chasing)?
- Is the token still within 20% of SM entry zone? (potential upside remains)
- Has SM already captured > 50% of the recent move? (late entry risk)
Estimate SM entry price by looking at the OHLCV around the signal detection time.
6.6 Backtest Scoring
Rate each token's historical performance:
| backtestScore | Criteria |
|---|
| 80-100 | Uptrend + expanding volume + near support + SM entered low |
| 60-79 | Mixed trend but positive volume + reasonable entry zone |
| 40-59 | Sideways/declining + no volume expansion |
| 20-39 | Downtrend + shrinking volume + SM entry near highs |
| 0-19 | Crash + extreme drawdown + volume collapse |
6.7 Backtest Signal Flags
- ๐ UPTREND: 7d change > +15%, expanding volume โ momentum confirmed
- ๐ CONSOLIDATION: tight range + volume drying up โ potential breakout/breakdown
- ๐ DOWNTREND: 7d change < -20%, declining volume โ avoid or wait for bottom
- ๐ DIAMOND_ENTRY: price within 10% of 30d low + volume expanding โ potential reversal point
- ๐๏ธ NEAR_ATH: price within 10% of 30d high โ late entry risk, wait for pullback
Step 7: Trend Monitoring & Alerts
Goal: Detect whether candidate tokens are trending on mainstream platforms BEFORE price pumps, and optionally push alerts via multi-channel notifications.
7.1 Determine Available Trend Sources
Check which trend monitoring tools are available:
Source priority (use all that work):
1. TrendRadar MCP โ Chinese platforms (Zhihu, Weibo, Bilibili, Douyin, Baidu, etc.)
2. Google Trends MCP โ Global search interest (worldwide + country-specific)
If neither is available, skip this step. Assign trendScore = 50 (neutral) for all tokens.
7.2 TrendRadar: Chinese Platform Trend Detection
TrendRadar provides trend data from 30+ Chinese platforms. For our use case:
Step A: Trigger a fresh crawl (if data is stale)
Tool: mcp__trendradar__trigger_crawl
Args: save_to_local = true
If crawl fails (no config), skip to cached data or Google Trends only.
Step B: Check global trending topics
Tool: mcp__trendradar__get_trending_topics
Args: top_n = 20, extract_mode = "auto_extract"
Scan the trending topic list for any crypto/blockchain/Web3 keywords. Note which narratives are hot on Chinese platforms (AI, meme, DeFi, etc.).
Step C: Search for each candidate token
For each candidate token (top 5 from Steps 1-5):
Tool: mcp__trendradar__search_news
Args: query = "<TOKEN_SYMBOL>", limit = 10
From results, extract:
- cnMentionCount: number of mentions on Chinese platforms
- cnPlatforms: which platforms mention it (Zhihu = informed community, Weibo = mass awareness, Bilibili = young community)
- cnSentiment: positive / negative / neutral ratio from titles
Step D: Analyze viral potential (if mentions found)
Tool: mcp__trendradar__analyze_topic_trend
Args: topic = "<TOKEN_SYMBOL>", analysis_type = "viral", spike_threshold = 3.0
Check for:
- spike_detected: is there a sudden surge in mentions?
- lifecycle_phase: emerging / growing / peak / declining
- heat_score: normalized heat score across platforms
Scoring:
- 5+ mentions across 3+ platforms, spike detected โ
cnTrendScore = 90
- 3+ mentions, positive sentiment, growing phase โ
cnTrendScore = 70
- 1-2 mentions, neutral sentiment โ
cnTrendScore = 50
- Zero mentions โ
cnTrendScore = 30 (Chinese community hasn't noticed yet)
7.3 Google Trends: Global Search Interest
Step A: Get currently trending topics
Tool: mcp__google-trends__google_trends_trending
Args: language = "en", country = "US"
Step B: Cross-check with candidate tokens
Scan the global trending topics list for:
- Exact token symbol matches (e.g., "TROLL", "PEPE")
- Related narrative keywords (e.g., "solana meme coin", "AI crypto")
- Broader crypto market trends (e.g., "bitcoin ATH", "crypto bull run")
Scoring:
- Token name appears in trending topics โ
globalTrendScore = 95 (extremely bullish โ mainstream attention)
- Related narrative is trending โ
globalTrendScore = 70 (narrative tailwind)
- Crypto/blockchain terms trending โ
globalTrendScore = 55 (general market interest)
- No crypto-related trends โ
globalTrendScore = 40 (no mainstream tailwind)
7.4 Trend Score Calculation
Combine available trend sources:
If both TrendRadar + Google Trends available:
trendScore = cnTrendScore ร 0.50 + globalTrendScore ร 0.50
If only TrendRadar available:
trendScore = cnTrendScore
If only Google Trends available:
trendScore = globalTrendScore
If neither available:
trendScore = 50 (neutral)
7.5 Trend Signal Flags
- ๐ TREND_SURGE: trendScore > 80, token found on BOTH Chinese platforms AND Google Trends โ massive cross-market attention, move fast
- ๐ CN_BUZZ: cnTrendScore > 70 but globalTrendScore < 50 โ hot on Chinese platforms, not yet global โ potential early signal for Western markets
- ๐ GLOBAL_TREND: globalTrendScore > 70 but cnTrendScore < 50 โ global mainstream attention, Chinese community hasn't caught up yet
- ๐ก EARLY_SIGNAL: 1-2 mentions found in trend analysis but not mainstream trending โ very early, needs more confirmation
- ๐ค NO_TREND: trendScore < 30 โ not trending anywhere, may lack the catalyst for price action
7.6 Multi-Channel Alert Push (Optional โ Post-Scan)
If BUY recommendations are found AND TrendRadar notification channels are configured:
Step A: Check available channels
Tool: mcp__trendradar__get_notification_channels
Step B: Format and send alert
Tool: mcp__trendradar__send_notification
Args:
title = "๐ Daily Alpha Scanner โ BUY Signal"
message = "<formatted BUY recommendations with scores>"
channels = [configured channels]
Alert content format:
**Daily Alpha Scanner v4.0 โ BUY Alert**
๐ข **TOKEN_NAME** (Chain) โ Score: XX/100
ยท MCap: $XXM | SM: X wallets | Social: XX | Backtest: ๐
ยท Trend: ๐ TREND_SURGE โ trending on Google + Chinese platforms
ยท Why: [1-line reason]
โฐ Scanned at: YYYY-MM-DD HH:MM UTC
Supported channels: Telegram, Feishu (้ฃไนฆ), Slack, DingTalk (้้), WeChat Work (ไผไธๅพฎไฟก), Email, ntfy, Bark
If no notification channels are configured, skip alerts. The report still contains all trend data.
Step 8: Consolidated Briefing
Goal: Synthesize all data into a single actionable report.
8.1 Report Structure
Use the template at templates/daily-briefing.md to generate the output.
8.2 Scoring Model (8 Dimensions)
Each candidate token gets a composite score (0-100):
| Factor | Weight | Data Source |
|---|
| Narrative strength | 8% | Step 1 categorization + current market meta |
| On-chain momentum | 8% | Price change, volume, tx count, holder growth |
| Smart money conviction | 25% | Step 2: signal count, wallet count, sold ratio |
| Social sentiment | 8% | Step 3: news + Reddit + Twitter combined socialScore |
| Security score | 25% | Step 5: security scan + advanced info |
| Historical validation | 8% | Step 6: DexPaprika OHLCV backtest โ price trend, volume, entry timing |
| Trend monitoring | 10% | Step 7: TrendRadar Chinese platforms + Google Trends global search interest |
| Liquidity depth | 8% | Liquidity USD, liquidity/mcap ratio |
Signal Bonus/Penalty (Social + Backtest + Trend combined):
- If social signal = ๐ฅ VIRAL โ add +5 bonus to final score
- If social signal = ๐คซ SILENT_ALPHA โ no change (early signal, not penalized)
- If social signal = โ ๏ธ HYPE_RISK โ subtract -10 from final score (exit liquidity warning)
- If social signal = ๐ง COLD โ subtract -3 from final score
- If backtest signal = ๐ UPTREND โ add +3 bonus (momentum confirmed by history)
- If backtest signal = ๐ DIAMOND_ENTRY โ add +5 bonus (price near bottom + volume expanding)
- If backtest signal = ๐ DOWNTREND โ subtract -5 from final score
- If backtest signal = ๐๏ธ NEAR_ATH โ subtract -3 from final score (late entry risk)
- If trend signal = ๐ TREND_SURGE โ add +5 bonus (cross-market trending)
- If trend signal = ๐ CN_BUZZ โ add +3 bonus (Chinese community early signal)
- If trend signal = ๐ GLOBAL_TREND โ add +3 bonus (global mainstream interest)
- If trend signal = ๐ก EARLY_SIGNAL โ add +1 bonus (very early, minimal weight)
- If trend signal = ๐ค NO_TREND โ subtract -2 from final score (no catalyst)
8.3 Purchase Recommendation Tiers
Based on composite score and risk tolerance:
BUY (Score > 70, Security = SAFE)
- Strong narrative + smart money backing + clean security
- Suggested position: 2-5% of portfolio
WATCH (Score 50-70, Security = SAFE/CAUTION)
- Promising but needs more confirmation
- Set price alerts, monitor daily
AVOID (Score < 50 or Security = DANGER/CRITICAL)
- Too risky or no clear edge
- Explain specific red flags
8.4 Output Format
Generate the briefing with:
- Executive summary (3-5 bullets)
- Hot tokens by narrative table
- Smart money signal table
- Social sentiment overview (news + Reddit + Twitter summary per token)
- Meme scan highlights
- Security audit results
- Historical validation (price chart summary, backtest scores, entry timing)
- Trend monitoring (Chinese platform buzz + Google Trends + trend signals)
- Final recommendation table with 8D score breakdown and risk rating
- Alert push status (if notifications sent)
- Disclaimer
8.5 Save Report
mkdir -p reports
Error Handling
- If
onchainos returns error 50125 (region restriction): inform user to check API key region or use VPN
- If any step returns empty data: skip that step, note it in the report, continue with available data
- If security scan returns empty for a token: mark as "UNSCANNED" in the report, do NOT recommend
- Social sentiment graceful degradation: if opennews MCP unavailable โ use Reddit + Twitter only; if Reddit blocked โ use opennews + Twitter; if all social tools fail โ assign socialScore = 50 (neutral) and note "Social data unavailable" in report
- If xreach times out (common without proxy): fall back to opentwitter-mcp or skip Twitter entirely
- DexPaprika graceful degradation: if API returns error or empty data โ skip backtesting, assign backtestScore = 50 (neutral) and note "Historical data unavailable" in report
- If pool not found for a token (new token, no DEX history) โ backtestScore = 50, note "No trading history"
- TrendRadar graceful degradation: if Docker container not running or MCP unreachable โ skip Chinese platform trend check, use only Google Trends; if crawl fails (no config.yaml) โ try using cached data via search_news; if no cached data โ cnTrendScore = 50 (neutral)
- Google Trends graceful degradation: if MCP connection fails or timeout โ skip global trend check, use only TrendRadar; if both fail โ trendScore = 50 (neutral) and note "Trend data unavailable"
- Alert push graceful degradation: if send_notification fails or no channels configured โ skip alerts, report still generated normally
- Always run all 8 steps even if some data is partial โ the report should indicate data completeness per step
Quick Mode
If the user says "ๅฟซ้ๆซๆ" / "quick scan", run abbreviated version:
hot-tokens top 10 only (single chain)
signal list smart money only (single chain)
- Quick social scan: opennews only (skip Reddit/Twitter), top 5 tokens
- Skip meme scan
- Security scan top 5 candidates only
- Skip backtesting (quick mode does not run DexPaprika)
- Skip trend monitoring (quick mode does not run TrendRadar/Google Trends)
- Abbreviated 1-page briefing with 8D scores (backtest + trend = neutral)
If notification channels are configured, still push BUY alerts in quick mode
Chain Reference
| Chain | ID | Meme Support |
|---|
| Solana | 501 | pumpfun, believe, launchlab, moonshot, etc. |
| BSC | 56 | fourmeme, flap |
| Base | 8453 | clanker, bankr |
| Ethereum | 1 | Limited |
| TRON | 195 | sunpump |