Install
openclaw skills install competitive-intelligence-agentMonitors competitors across pricing, social media, online reviews, and product changes — distills everything into a concise weekly briefing.
openclaw skills install competitive-intelligence-agentMonitors competitors across pricing, social media, online reviews, and product changes — then distills everything into a concise weekly briefing. No more manual tab-switching across 20 competitor pages.
| Requirement | Version/Detail |
|---|---|
| OpenClaw | v2.4+ |
| Python 3 | v3.10+ |
| Playwright | v1.40+ (for JavaScript-rendered pages) |
| curl/wget | For API-based data sources |
| API key (opt.) | BrightData/ScrapingBee for blocked sites |
cp -r streams/01_ClawHub_Skills/03_Competitive_Intelligence_Agent/* ~/.openclaw/skills/
cd ~/.openclaw/skills/competitive-intelligence
pip install -r requirements.txt
playwright install chromium
Edit config/targets.yaml:
competitors:
- name: "Competitor A"
website: "https://competitor-a.com"
pricing_url: "https://competitor-a.com/pricing"
social:
twitter: "@comp_a"
linkedin: "competitor-a"
facebook: "CompetitorAPage"
review_sites:
- "https://www.hellopeter.com/competitor-a"
- "https://www.g2.com/products/competitor-a"
monitoring:
pricing_check: daily
social_check: daily
reviews_check: weekly
product_check: weekly
Edit config/delivery.yaml:
delivery:
channel: "slack" # Options: slack, email, telegram, file
slack_webhook: "https://hooks.slack.com/services/..."
email:
to: "team@yourcompany.com"
from: "ci-agent@yourcompany.com"
schedule:
weekly_report: "0 9 * * 1" # Monday 9 AM
daily_alerts: "0 8 * * 1-5" # Weekdays 8 AM
# What triggers a real-time alert (not just in the weekly report)
alerts:
- type: price_change
threshold_percent: 10
- type: new_product_launch
- type: review_drop
threshold_stars: 1.5
- type: leadership_change
- type: funding_round
# Immediate sweep of all configured competitors
openclaw skill run competitive-intelligence --full-sweep
# Specific competitor only
openclaw skill run competitive-intelligence --target "Competitor A"
# Specific data source only
openclaw skill run competitive-intelligence --source pricing
# Weekly report (summary for all monitored metrics)
openclaw skill run competitive-intelligence --report weekly
# Pricing snapshot
openclaw skill run competitive-intelligence --report pricing
# Social media sentiment
openclaw skill run competitive-intelligence --report social
# Competitive landscape overview
openclaw skill run competitive-intelligence --report landscape
# Custom date range
openclaw skill run competitive-intelligence --report weekly --from "2025-01-01" --to "2025-01-07"
# Start continuous monitoring (uses configured schedule)
openclaw skill run competitive-intelligence --watch
Target Configuration (competitors + metrics + schedules)
├── Daily: Pricing Check → Compare → Alert on Δ > 10%
├── Daily: Social Monitor → Sentiment Analysis → Flag trends
├── Weekly: Review Scrape → Aggregate → Summary
├── Weekly: Product/Website Changes → Diff → Changelog
└── Weekly: Generate Report → Deliver (Slack/Email/Telegram)
| Command | Description |
|---|---|
/sweep | Trigger full intelligence sweep now |
/report | Generate weekly briefing immediately |
/alert <type> | Show recent alerts (price, social, review, product) |
/competitors | List all monitored competitors |
/add-competitor | Interactive wizard to add a new competitor |
/remove <name> | Stop monitoring a competitor |
/status | Show monitor health, last sweep time, next scheduled sweep |
/export <format> | Export data as CSV or JSON (format: csv, json) |
| /config | Show current monitoring configuration |
# config/scraping.yaml extract
pricing:
methods:
- type: "css_selector"
description: "Scrape pricing page with CSS selectors"
example: "div.pricing-card span.price"
- type: "api_endpoint"
description: "Check for public pricing API"
example: "https://api.competitor.com/v1/pricing"
- type: "playwright"
description: "Full browser render for JS-heavy pricing pages"
comparison:
price_fields:
- plan_name
- monthly_price
- annual_price
- features_included
- user_limit
Prompt-Driven Analysis:
# config/analysis.yaml extract
analysis:
- name: pricing_analysis
description: "Compare own pricing vs competitors"
prompt: |
Compare {{our_pricing}} to {{competitor_pricing}}.
Identify:
- Where we're more expensive
- Where we're cheaper
- Feature gaps at each price point
- Recommended pricing adjustments
- Market positioning suggestions
social:
platforms:
- twitter
- linkedin
- facebook
monitoring:
frequency: daily
metrics:
- follower_count
- engagement_rate
- sentiment_score
- top_posts
- response_time
alert_rules:
- metric: sentiment_score
direction: drop
threshold: 0.3
action: alert
reviews:
sites:
- hellopeter
- g2
- trustpilot
- cacx (South Africa)
- google_reviews
aggregation:
metrics:
- average_rating
- review_count
- sentiment_breakdown
- common_complaints_cloud # most common complaint keywords
- common_praise_cloud # most common praise keywords
alert_rules:
- metric: average_rating
direction: drop
threshold: 1.5
window: 7d
action: alert
The generated report follows this structure:
╔══════════════════════════════════════════╗
║ COMPETITIVE INTELLIGENCE BRIEFING ║
║ Week 3 | Jan 13–19, 2025 ║
╚══════════════════════════════════════════╝
📊 EXECUTIVE SUMMARY
- Key movements this week
- Top 3 things to act on
- Risk level: [Low/Medium/High]
💰 PRICING CHANGES
Competitor A → Increased Enterprise by 15%
Competitor B → Launched Freemium tier
📱 SOCIAL MEDIA
Competitor A → Viral tweet about [topic]
Competitor C → Follower growth +22% (attributed to campaign)
⭐ REVIEW CHANGES
Competitor B → Hellopeter dropped 3.2 → 2.8
Common complaints: [support wait time, uptime]
🚀 PRODUCT LAUNCHES
Competitor A → New AI analytics feature
Competitor C → Mobile app v2.0
📰 NEWS & HIRING
Competitor B raised $5M Series A
Competitor A hired new CMO from [company]
🎯 RECOMMENDATIONS
1. Match dropdown on Enterprise tier pricing
2. Highlight our 24/7 support (competitor weakness)
3. Consider AI analytics feature for Q3 roadmap
────────────────────────────────────────
Generated by Competitive Intelligence Agent
Next report: Mon Jan 20, 2025
"Hey Marvis, run a full competitive sweep and send me the briefing." "Add 'Competitor D' to monitoring — here's their website and social links." "Alert me if any competitor drops their price by more than 10%." "What are the common complaints about our competitors on Hellopeter?" "Show me the pricing comparison between us and Competitor A." "Send the weekly report to the #competitive-intel Slack channel." "Which competitor launched something new this week?"
competitive-intelligence/
├── SKILL.md
├── README.md
├── config/
│ ├── targets.yaml # Competitor profiles (websites, social, review sites)
│ ├── scraping.yaml # CSS selectors, API endpoints, playwright config
│ ├── analysis.yaml # Analysis prompts and comparison rules
│ ├── delivery.yaml # Report delivery channels and schedules
│ └── alerts.yaml # Alert thresholds and notification rules
├── collectors/
│ ├── pricing.py # Price scraping logic
│ ├── social.py # Social media monitoring
│ ├── reviews.py # Review aggregation
│ ├── product_changes.py # Website/product diffing
│ └── news.py # News and hiring monitoring
├── analyzers/
│ ├── pricing_comparison.py
│ ├── sentiment.py
│ ├── product_gap.py
│ └── trend_analysis.py
├── templates/
│ └── weekly_report.md # Weekly briefing template
├── output/
│ ├── reports/ # Generated reports (archived by week)
│ ├── data/ # Raw data dumps (rotated after 90 days)
│ └── screenshots/ # Evidence snapshots (when alerts trigger)
├── scripts/
│ ├── full-sweep.sh # Complete intelligence sweep
│ ├── test-collectors.sh # Verify all collectors work
│ └── setup-cron.sh # Install cron jobs for schedules
├── requirements.txt
└── package.json
| Symptom | Likely Cause | Fix |
|---|---|---|
| Pricing page returns empty | CSS selector changed | Update config/scraping.yaml selectors |
| Social metrics stale | API rate limit hit | Increase check_interval in targets.yaml |
| Report not delivered | Slack webhook URL wrong | Check config/delivery.yaml |
| Playwright failing | Headless browser issue | Run playwright install chromium |
| "No data for competitor" | Target URL unreachable | Verify URL or add proxy in scraping config |
| Alerts not firing | Threshold too conservative | Lower threshold_percent in alerts.yaml |
| Reviews returning nothing | Review site blocks scraping | Add user_agent or rotate proxy |
| Memory grows over time | Data not rotated | Check output/data rotation schedule |