Viralevo
Self-evolving viral content trend advisor. Monitors 11 platforms, predicts what to post and when, and improves its own accuracy every week automatically.
Description
name: viralevo description: Self-evolving viral content trend advisor. Monitors 11 platforms, predicts what to post and when, and improves its own accuracy every week automatically. version: 0.6.4 homepage: https://github.com/0xF69/viralevo user-invocable: true metadata: {"openclaw":{"emoji":"📈","requires":{"bins":["node","python3"],"env":["TAVILY_API_KEY"]},"primaryEnv":"TAVILY_API_KEY","install":[{"id":"node","kind":"node","label":"Install npm dependencies (better-sqlite3, axios, dotenv)"}]}}
ViralEvo — Viral Content Trend Advisor
Version: v0.6.4 | Languages: English / 中文
语言说明 / Language Support
本 Skill 完整支持中文操作。安装完成后,你可以:
- 用中文与 Agent 对话("今天该发什么内容?")
- 接收中文版每日报告
- 用中文关键词监控中文平台内容
- 在引导设置时选择界面语言
This skill fully supports both English and Chinese. During onboarding, the agent will ask which language you prefer.
What This Skill Does
ViralEvo monitors content platforms, scores trending topics using a weighted formula, predicts lifecycle windows, and automatically adjusts its own prediction weights every week based on how accurate it was.
Three core advantages over manual research:
- Catches trends 12–48h early — monitors signal velocity across 11 platforms simultaneously
- Learns from your results — when you report your post outcomes, those signals feed back into the model
- Self-corrects weekly — every Monday the system reviews its prediction errors and updates its weights automatically
Quick Start
After installation, add your Tavily API key:
echo "TAVILY_API_KEY=tvly-xxxx" >> ~/.openclaw/workspace/.env
Then tell your agent:
"Start ViralEvo setup"
— or in Chinese —
"开始趋势雷达设置"
Or run onboarding directly:
node {baseDir}/scripts/onboarding.js
Natural Language Triggers
When the user reports post results (e.g. "got 80k views", "效果很好"), the agent should:
- Search for the matching topic:
python3 {baseDir}/scripts/feedback.py --search "<keyword>" - Confirm the match with the user
- Log the result:
python3 {baseDir}/scripts/feedback.py --topic-id <id> --platform <platform> --views <n>
When the user says any of the following, the agent should run collect → report:
- "What should I post today?" / "今天该发什么?"
- "Any trends?" / "有什么趋势?"
- "Show me the trend report" / "给我看趋势报告"
- "What's trending in my niche?" / "我的赛道有什么热点?"
When the user says:
- "Run ViralEvo" / "运行趋势雷达" → run collect then report
- "Collect trends" / "采集趋势" → run collect only
- "Generate report" / "生成报告" → run report only
- "Weekly review" / "周度复盘" → run weekly_review
- "Show keywords" / "查看关键词" → run keywords --show
Feedback Intake
When the user describes post results, always match to a recent topic, confirm before logging:
- "The hair clips video got 80k views on TikTok" → match topic, log: views=80000, platform=tiktok
- "那个AI文章效果很好,小红书5000收藏" → 匹配话题,记录:saves=5000, platform=xiaohongshu
Use the /trend feedback command or natural language — both are accepted.
Available Commands
| Command | Action |
|---|---|
node {baseDir}/scripts/onboarding.js |
First-time setup wizard |
node {baseDir}/scripts/collect.js |
Fetch trend signals from all sources |
python3 {baseDir}/scripts/report.py |
Generate and output today's report |
python3 {baseDir}/scripts/verify.py --hours 24 |
Verify yesterday's predictions |
python3 {baseDir}/scripts/verify.py --hours 72 |
Verify 72h-old predictions |
python3 {baseDir}/scripts/weekly_review.py |
Run self-evolution (Mondays recommended) |
python3 {baseDir}/scripts/keywords.py --show |
View your keyword index |
python3 {baseDir}/scripts/keywords.py --add "term" |
Add a keyword manually |
python3 {baseDir}/scripts/keywords.py --remove "term" |
Remove a keyword |
python3 {baseDir}/setup.py |
Check all system requirements |
python3 {baseDir}/scripts/feedback.py --list |
List recent topics to log feedback for |
python3 {baseDir}/scripts/feedback.py --search "keyword" |
Find a topic by keyword |
python3 {baseDir}/scripts/feedback.py --topic-id <id> --platform tiktok --views 80000 |
Log post performance |
python3 {baseDir}/db/init_db.py |
Re-initialize database (use if DB is corrupted) |
python3 {baseDir}/scripts/status.py |
Quick health check — config, API key, DB, recent data |
System Requirements
| Requirement | Minimum | Role |
|---|---|---|
| Node.js | v18+ | Data collection, onboarding |
| Python | 3.10+ | Scoring, reports, self-evolution |
| OpenClaw | v2026.1+ | Agent runtime, scheduling |
| Tavily API Key | Free tier | Indirect platform search |
Tavily free tier = 1,000 calls/month. Single niche daily usage ≈ 60–120/month.
Supported Platforms
| Platform | Method | Confidence Cap |
|---|---|---|
| HackerNews | Official Algolia API | 1.00 |
| Dev.to | Official API | 1.00 |
| Product Hunt | RSS | 1.00 |
| JSON API (public) | 0.90 | |
| YouTube | Tavily search | 0.70 |
| Twitter / X | Tavily search | 0.70 |
| Tavily search | 0.70 | |
| Tavily search | 0.70 | |
| TikTok | Tavily search | 0.65 |
| Tavily search | 0.65 |
Supported Niches
AI/Tech · E-commerce · Beauty/Skincare · Fitness/Health · Finance · Gaming · Fashion/Lifestyle · Education · Real Estate · Pets · Custom (11 niches)
Scoring Formula
Total Score =
(Platform Signal Strength) × W1 [default 0.25]
+ (Engagement Velocity) × W2 [default 0.25]
+ (Cross-Platform Spread) × W3 [default 0.20]
+ (Niche Relevance Score) × W4 [default 0.15]
+ (Goal Alignment Score) × W5 [default 0.15]
Constraints: W1+W2+W3+W4+W5 = 1.0 exactly
Each weight: floor=0.08, ceiling=0.45
Max change per weekly review: ±0.05 (±0.10 after algorithm change detection)
Report Output Format
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔥 ViralEvo | AI/Tech | 2026-03-09 08:15
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔴 ACT NOW (Score > 80)
1. OpenClaw Security Issue — 135k instances exposed
████████████████████ 93% | Confidence: 0.85
📅 Detected 14h ago | Source: hackernews
⏰ Estimated window: ~42h remaining
🎯 Post: TODAY
🟡 PREPARE (Score 60–80)
2. OpenAI Government Surveillance Controversy
████████████████░░░░ 78% | Confidence: 0.74
📅 Detected 6h ago | Source: dev.to
⏰ Estimated window: ~68h remaining
🎯 Post: Tomorrow morning
🟢 EVERGREEN (Score < 60)
3. MCP Protocol Enterprise Adoption
████████░░░░░░░░░░░░ 44% | Confidence: 0.79
📅 Steady growth — no spike
⏰ Relevant: 30d+
🎯 Post: Any time this week
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 Model Health
Accuracy : 58% (44 predictions)
Sources : 6/6 ✅
Tavily usage : 112 / 1,000 this month
Keyword index: 1,203 terms
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Scheduling (Cron Setup)
ViralEvo runs automatically via OpenClaw's cron system. After onboarding, add these four jobs to your OpenClaw cron config.
How to add cron jobs in OpenClaw:
Tell your agent:
"Add a cron job to run ViralEvo daily at 8am"
Or add manually to ~/.openclaw/openclaw.json:
{
"cron": {
"jobs": [
{
"id": "viralevo-collect-report",
"schedule": "0 8 * * *",
"commands": [
"node ~/.openclaw/workspace/viralevo/scripts/collect.js",
"python3 ~/.openclaw/workspace/viralevo/scripts/report.py"
]
},
{
"id": "viralevo-verify-24h",
"schedule": "5 8 * * *",
"commands": ["python3 ~/.openclaw/workspace/viralevo/scripts/verify.py --hours 24"]
},
{
"id": "viralevo-verify-72h",
"schedule": "10 8 * * *",
"commands": ["python3 ~/.openclaw/workspace/viralevo/scripts/verify.py --hours 72"]
},
{
"id": "viralevo-weekly-review",
"schedule": "0 8 * * 1",
"commands": ["python3 ~/.openclaw/workspace/viralevo/scripts/weekly_review.py"]
}
]
}
}
See OpenClaw docs: https://docs.openclaw.ai/automation/cron-jobs
OpenClaw Config (Alternative API Key Setup)
Instead of using .env, you can configure your Tavily key via ~/.openclaw/openclaw.json:
{
"skills": {
"entries": {
"viralevo": {
"enabled": true,
"apiKey": "tvly-your-key-here"
}
}
}
}
Self-Evolution Loop
Daily verification (5 min and 65 min after your report time): re-fetches topics predicted 24h ago, compares predicted lifecycle vs actual activity, records error.
Weekly review (every Monday at your report time):
- Aggregates all predictions from past 7 days
- Calculates accuracy per platform, per topic type
- Identifies top 3 sources of systematic error
- Proposes weight adjustments (max ±0.05 per weight)
- Applies new weights to config.json
- Writes report to
reports/YYYY-MM-DD_weekly.md - Auto-rolls back if accuracy drops for 2 consecutive weeks
Accuracy Expectations
| Period | Expected Accuracy |
|---|---|
| Week 1–2 | 30–40% (cold start) |
| Month 2 | 55–65% |
| Month 3+ | 65–75% |
| Month 6+ | 75%+ |
Accuracy = prediction within ±20% of actual topic lifecycle.
Data Location
~/.openclaw/workspace/viralevo/
├── config.json ← niche, weights, schedule
├── user_profile.json ← onboarding answers, language
├── data/
│ ├── trends.db ← SQLite database
│ └── backups/ ← daily snapshots, 7-day retention
├── reports/ ← daily + weekly markdown reports
└── logs/
└── execution.log
Privacy
All data is stored locally on your machine. The skill makes outbound network requests only to fetch public trend signals:
- HackerNews, Dev.to, Product Hunt, Reddit: public APIs, no auth required
- Tavily API: receives only search query strings — no personal data transmitted
⚠️ Disclaimers
ViralEvo provides probabilistic estimates based on publicly available signals. It does not guarantee specific outcomes in views, impressions, followers, or revenue. All predictions are directional guidance — not the sole basis for business decisions. Platform APIs change without notice.
Uninstall
# Step 1: Remove skill from OpenClaw
openclaw skills remove viralevo
# Step 2: Delete local data (optional)
rm -rf ~/.openclaw/workspace/viralevo/
# Step 3: Verify
openclaw skills list
If you reinstall later without deleting Step 2, ViralEvo will resume from your existing data.
Troubleshooting
| Symptom | Fix |
|---|---|
| "Not configured" | Run node {baseDir}/scripts/onboarding.js |
| "TAVILY_API_KEY not set" | Add key to ~/.openclaw/workspace/.env |
| No topics in report | Run node {baseDir}/scripts/collect.js first |
| System check | Run python3 {baseDir}/setup.py |
| Accuracy dropping | Run python3 {baseDir}/scripts/weekly_review.py manually |
| Quick diagnosis | Run python3 {baseDir}/scripts/status.py |
Reviews (0)
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!