{
  "schemaVersion": "1.0",
  "item": {
    "slug": "topic-monitor",
    "name": "Topic Monitor",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/robbyczgw-cla/topic-monitor",
    "canonicalUrl": "https://clawhub.ai/robbyczgw-cla/topic-monitor",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/topic-monitor",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=topic-monitor",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "CHANGELOG.md",
      "README.md",
      "SKILL.md",
      "config.example.json",
      "package.json",
      "scripts/config.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/topic-monitor"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/topic-monitor",
    "agentPageUrl": "https://openagent3.xyz/skills/topic-monitor/agent",
    "manifestUrl": "https://openagent3.xyz/skills/topic-monitor/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/topic-monitor/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Topic Monitor",
        "body": "Monitor what matters. Get notified when it happens.\n\nTopic Monitor transforms your assistant from reactive to proactive by continuously monitoring topics you care about and intelligently alerting you only when something truly matters."
      },
      {
        "title": "⚡ Quick Start (New in v1.2.0!)",
        "body": "Just want to monitor one topic? One command:\n\npython3 scripts/quick.py \"AI Model Releases\"\n\nThat's it! This creates a topic with sensible defaults:\n\nQuery: Auto-generated from topic name\nKeywords: Extracted from topic name\nFrequency: Daily\nImportance: Medium\nChannel: Telegram"
      },
      {
        "title": "Quick Start Options",
        "body": "# Basic - just a topic name\npython3 scripts/quick.py \"Bitcoin Price\"\n\n# With keywords\npython3 scripts/quick.py \"Security CVEs\" --keywords \"CVE,vulnerability,critical\"\n\n# High priority, hourly checks\npython3 scripts/quick.py \"Production Alerts\" --frequency hourly --importance high\n\n# Custom query\npython3 scripts/quick.py \"Competitor News\" --query \"CompanyName product launch funding\"\n\n# Different channel\npython3 scripts/quick.py \"Team Updates\" --channel discord"
      },
      {
        "title": "Quick Start vs Full Setup",
        "body": "FeatureQuick StartFull SetupSpeed⚡ 1 command📝 WizardDefaultsSmartCustomizableUse caseSingle topicMultiple topicsConfigurationMinimalFull control\n\nAfter Quick Start, you can always customize:\n\npython3 scripts/manage_topics.py edit ai-model-releases --frequency hourly"
      },
      {
        "title": "Core Capabilities",
        "body": "Topic Configuration - Define subjects with custom parameters\nScheduled Monitoring - Automated searches at configurable intervals\nAI Importance Scoring - Smart filtering: immediate alert vs digest vs ignore\nContextual Summaries - Not just links—meaningful summaries with context\nWeekly Digest - Low-priority findings compiled into readable reports\nMemory Integration - References your past conversations and interests"
      },
      {
        "title": "Full Setup (Interactive Wizard)",
        "body": "For configuring multiple topics or advanced options:\n\npython3 scripts/setup.py\n\nThe wizard will guide you through:\n\nTopics - What subjects do you want to monitor?\nSearch queries - How to search for each topic\nKeywords - What terms indicate relevance\nFrequency - How often to check (hourly/daily/weekly)\nImportance threshold - When to send alerts (low/medium/high)\nWeekly digest - Compile non-urgent findings into a summary\n\nThe wizard creates config.json with your preferences. You can always edit it later or use manage_topics.py to add/remove topics.\n\nExample session:\n\n🔍 Topic Monitor - Setup Wizard\n\nWhat topics do you want to monitor?\n  > AI Model Releases\n  > Security Vulnerabilities\n  > \n\n--- Topic 1/2: AI Model Releases ---\n  Search query for 'AI Model Releases' [AI Model Releases news updates]: new AI model release announcement\n  Keywords to watch for in 'AI Model Releases'?\n  > GPT, Claude, Llama, release\n\n--- Topic 2/2: Security Vulnerabilities ---\n  Search query for 'Security Vulnerabilities' [Security Vulnerabilities news updates]: CVE critical vulnerability patch\n  Keywords to watch for in 'Security Vulnerabilities'?\n  > CVE, vulnerability, critical, patch\n\nHow often should I check for updates?\n  1. hourly\n  2. daily *\n  3. weekly\n\n✅ Setup Complete!"
      },
      {
        "title": "Quick Start",
        "body": "Already know what you're doing? Here's the manual approach:\n\n# Initialize config from template\ncp config.example.json config.json\n\n# Add a topic\npython3 scripts/manage_topics.py add \"Product Updates\" \\\n  --keywords \"release,update,patch\" \\\n  --frequency daily \\\n  --importance medium\n\n# Test monitoring (dry run)\npython3 scripts/monitor.py --dry-run\n\n# Set up cron for automatic monitoring\npython3 scripts/setup_cron.py"
      },
      {
        "title": "Topic Configuration",
        "body": "Each topic has:\n\nname - Display name (e.g., \"AI Model Releases\")\nquery - Search query (e.g., \"new AI model release announcement\")\nkeywords - Relevance filters ([\"GPT\", \"Claude\", \"Llama\", \"release\"])\nfrequency - hourly, daily, weekly\nimportance_threshold - high (alert immediately), medium (alert if important), low (digest only)\nchannels - Where to send alerts ([\"telegram\", \"discord\"])\ncontext - Why you care (for AI contextual summaries)"
      },
      {
        "title": "Example config.json",
        "body": "{\n  \"topics\": [\n    {\n      \"id\": \"ai-models\",\n      \"name\": \"AI Model Releases\",\n      \"query\": \"new AI model release GPT Claude Llama\",\n      \"keywords\": [\"GPT\", \"Claude\", \"Llama\", \"release\", \"announcement\"],\n      \"frequency\": \"daily\",\n      \"importance_threshold\": \"high\",\n      \"channels\": [\"telegram\"],\n      \"context\": \"Following AI developments for work\",\n      \"alert_on\": [\"model_release\", \"major_update\"]\n    },\n    {\n      \"id\": \"tech-news\",\n      \"name\": \"Tech Industry News\",\n      \"query\": \"technology startup funding acquisition\",\n      \"keywords\": [\"startup\", \"funding\", \"Series A\", \"acquisition\"],\n      \"frequency\": \"daily\",\n      \"importance_threshold\": \"medium\",\n      \"channels\": [\"telegram\"],\n      \"context\": \"Staying informed on tech trends\",\n      \"alert_on\": [\"major_funding\", \"acquisition\"]\n    },\n    {\n      \"id\": \"security-alerts\",\n      \"name\": \"Security Vulnerabilities\",\n      \"query\": \"CVE critical vulnerability security patch\",\n      \"keywords\": [\"CVE\", \"vulnerability\", \"security\", \"patch\", \"critical\"],\n      \"frequency\": \"hourly\",\n      \"importance_threshold\": \"high\",\n      \"channels\": [\"telegram\", \"email\"],\n      \"context\": \"DevOps security monitoring\",\n      \"alert_on\": [\"critical_cve\", \"zero_day\"]\n    }\n  ],\n  \"settings\": {\n    \"digest_day\": \"sunday\",\n    \"digest_time\": \"18:00\",\n    \"max_alerts_per_day\": 5,\n    \"deduplication_window_hours\": 72,\n    \"learning_enabled\": true\n  }\n}"
      },
      {
        "title": "manage_topics.py",
        "body": "Manage research topics:\n\n# Add topic\npython3 scripts/manage_topics.py add \"Topic Name\" \\\n  --query \"search query\" \\\n  --keywords \"word1,word2\" \\\n  --frequency daily \\\n  --importance medium \\\n  --channels telegram\n\n# List topics\npython3 scripts/manage_topics.py list\n\n# Edit topic\npython3 scripts/manage_topics.py edit eth-price --frequency hourly\n\n# Remove topic\npython3 scripts/manage_topics.py remove eth-price\n\n# Test topic (preview results without saving)\npython3 scripts/manage_topics.py test eth-price"
      },
      {
        "title": "monitor.py",
        "body": "Main monitoring script (run via cron):\n\n# Normal run (alerts + saves state)\npython3 scripts/monitor.py\n\n# Dry run (no alerts, shows what would happen)\npython3 scripts/monitor.py --dry-run\n\n# Force check specific topic\npython3 scripts/monitor.py --topic eth-price\n\n# Verbose logging\npython3 scripts/monitor.py --verbose\n\nHow it works:\n\nReads topics due for checking (based on frequency)\nSearches using web-search-plus or built-in web_search\nScores each result with AI importance scorer\nHigh-importance → immediate alert\nMedium-importance → saved for digest\nLow-importance → ignored\nUpdates state to prevent duplicate alerts"
      },
      {
        "title": "digest.py",
        "body": "Generate weekly digest:\n\n# Generate digest for current week\npython3 scripts/digest.py\n\n# Generate and send\npython3 scripts/digest.py --send\n\n# Preview without sending\npython3 scripts/digest.py --preview\n\nOutput format:\n\n# Weekly Research Digest - [Date Range]\n\n## 🔥 Highlights\n\n- **AI Models**: Claude 4.5 released with improved reasoning\n- **Security**: Critical CVE patched in popular framework\n\n## 📊 By Topic\n\n### AI Model Releases\n- [3 findings this week]\n\n### Security Vulnerabilities\n- [1 finding this week]\n\n## 💡 Recommendations\n\nBased on your interests, you might want to monitor:\n- \"Kubernetes security\" (mentioned 3x this week)"
      },
      {
        "title": "setup_cron.py",
        "body": "Configure automated monitoring:\n\n# Interactive setup\npython3 scripts/setup_cron.py\n\n# Auto-setup with defaults\npython3 scripts/setup_cron.py --auto\n\n# Remove cron jobs\npython3 scripts/setup_cron.py --remove\n\nCreates cron entries:\n\n# Topic Monitor - Hourly topics\n0 * * * * cd /path/to/skills/topic-monitor && python3 scripts/monitor.py --frequency hourly\n\n# Topic Monitor - Daily topics  \n0 9 * * * cd /path/to/skills/topic-monitor && python3 scripts/monitor.py --frequency daily\n\n# Topic Monitor - Weekly digest\n0 18 * * 0 cd /path/to/skills/topic-monitor && python3 scripts/digest.py --send"
      },
      {
        "title": "AI Importance Scoring",
        "body": "The scorer uses multiple signals to decide alert priority:"
      },
      {
        "title": "Scoring Signals",
        "body": "HIGH priority (immediate alert):\n\nMajor breaking news (detected via freshness + keyword density)\nPrice changes >10% (for finance topics)\nProduct releases matching your exact keywords\nSecurity vulnerabilities in tools you use\nDirect answers to specific questions you asked\n\nMEDIUM priority (digest-worthy):\n\nRelated news but not urgent\nMinor updates to tracked products\nInteresting developments in your topics\nTutorial/guide releases\nCommunity discussions with high engagement\n\nLOW priority (ignore):\n\nDuplicate news (already alerted)\nTangentially related content\nLow-quality sources\nOutdated information\nSpam/promotional content"
      },
      {
        "title": "Learning Mode",
        "body": "When enabled (learning_enabled: true), the system:\n\nTracks which alerts you interact with\nAdjusts scoring weights based on your behavior\nSuggests topic refinements\nAuto-adjusts importance thresholds\n\nLearning data stored in .learning_data.json (privacy-safe, never shared)."
      },
      {
        "title": "Memory Integration",
        "body": "Topic Monitor connects to your conversation history:\n\nExample alert:\n\n🔔 Dirac Live Update\nVersion 3.8 released with the room correction improvements you asked about last week.\nContext: You mentioned struggling with bass response in your studio. This update includes new low-frequency optimization.\n[Link] | [Full details]\n\nHow it works:\n\nReads references/memory_hints.md (create this file)\nScans recent conversation logs (if available)\nMatches findings to past context\nGenerates personalized summaries"
      },
      {
        "title": "memory_hints.md (optional)",
        "body": "Help the AI connect dots:\n\n# Memory Hints for Topic Monitor\n\n## AI Models\n- Using Claude for coding assistance\n- Interested in reasoning improvements\n- Comparing models for different use cases\n\n## Security\n- Running production Kubernetes clusters\n- Need to patch critical CVEs quickly\n- Interested in zero-day disclosures\n\n## Tech News\n- Following startup ecosystem\n- Interested in developer tools space\n- Tracking potential acquisition targets"
      },
      {
        "title": "Telegram",
        "body": "Requires OpenClaw message tool:\n\n{\n  \"channels\": [\"telegram\"],\n  \"telegram_config\": {\n    \"chat_id\": \"@your_username\",\n    \"silent\": false,\n    \"effects\": {\n      \"high_importance\": \"🔥\",\n      \"medium_importance\": \"📌\"\n    }\n  }\n}"
      },
      {
        "title": "Discord",
        "body": "Agent-delivered (no webhook in skill config):\n\nmonitor.py emits DISCORD_ALERT JSON payloads, and OpenClaw sends them via the message tool. This matches the Telegram alert flow (structured output, no direct HTTP in skill code).\n\n{\n  \"channels\": [\"discord\"]\n}"
      },
      {
        "title": "Email",
        "body": "SMTP or API:\n\n{\n  \"channels\": [\"email\"],\n  \"email_config\": {\n    \"to\": \"you@example.com\",\n    \"from\": \"research@yourdomain.com\",\n    \"smtp_server\": \"smtp.gmail.com\",\n    \"smtp_port\": 587\n  }\n}"
      },
      {
        "title": "Alert Conditions",
        "body": "Fine-tune when to alert:\n\n{\n  \"alert_on\": [\n    \"price_change_10pct\",\n    \"keyword_exact_match\",\n    \"source_tier_1\",\n    \"high_engagement\"\n  ],\n  \"ignore_sources\": [\n    \"spam-site.com\",\n    \"clickbait-news.io\"\n  ],\n  \"boost_sources\": [\n    \"github.com\",\n    \"arxiv.org\",\n    \"official-site.com\"\n  ]\n}"
      },
      {
        "title": "Regex Patterns",
        "body": "Match specific patterns:\n\n{\n  \"patterns\": [\n    \"version \\\\d+\\\\.\\\\d+\\\\.\\\\d+\",\n    \"\\\\$\\\\d{1,3}(,\\\\d{3})*\",\n    \"CVE-\\\\d{4}-\\\\d+\"\n  ]\n}"
      },
      {
        "title": "Rate Limiting",
        "body": "Prevent alert fatigue:\n\n{\n  \"settings\": {\n    \"max_alerts_per_day\": 5,\n    \"max_alerts_per_topic_per_day\": 2,\n    \"quiet_hours\": {\n      \"start\": \"22:00\",\n      \"end\": \"08:00\"\n    }\n  }\n}"
      },
      {
        "title": "Environment Variables",
        "body": "Configure these environment variables to customize topic-monitor:\n\nVariableDefaultDescriptionTOPIC_MONITOR_TELEGRAM_ID—Your Telegram chat ID for receiving alertsTOPIC_MONITOR_DATA_DIR.data/ in skill dirWhere to store state and findingsWEB_SEARCH_PLUS_PATHRelative to skillPath to web-search-plus search.pySERPER_API_KEY / TAVILY_API_KEY / EXA_API_KEY / YOU_API_KEY / SEARXNG_INSTANCE_URL / WSP_CACHE_DIR—Optional search-provider vars passed via subprocess env allowlist\n\nExample setup:\n\n# Add to ~/.bashrc or .env\nexport TOPIC_MONITOR_TELEGRAM_ID=\"123456789\"\nexport TOPIC_MONITOR_DATA_DIR=\"/home/user/topic-monitor-data\"\nexport WEB_SEARCH_PLUS_PATH=\"/path/to/skills/web-search-plus/scripts/search.py\""
      },
      {
        "title": ".research_state.json",
        "body": "Stored in TOPIC_MONITOR_DATA_DIR (default: .data/ in skill directory).\n\nTracks:\n\nLast check time per topic\nAlerted URLs (deduplication)\nImportance scores history\nLearning data (if enabled)\n\nExample:\n\n{\n  \"topics\": {\n    \"eth-price\": {\n      \"last_check\": \"2026-01-28T22:00:00Z\",\n      \"last_alert\": \"2026-01-28T15:30:00Z\",\n      \"alerted_urls\": [\n        \"https://example.com/eth-news-1\"\n      ],\n      \"findings_count\": 3,\n      \"alerts_today\": 1\n    }\n  },\n  \"deduplication\": {\n    \"url_hash_map\": {\n      \"abc123\": \"2026-01-28T15:30:00Z\"\n    }\n  }\n}"
      },
      {
        "title": ".findings/ directory",
        "body": "Stores digest-worthy findings:\n\n.findings/\n├── 2026-01-22_eth-price.json\n├── 2026-01-24_fm26-patches.json\n└── 2026-01-27_ai-breakthroughs.json"
      },
      {
        "title": "Best Practices",
        "body": "Start conservative - Set importance_threshold: medium initially, adjust based on alert quality\nUse context field - Helps AI generate better summaries\nRefine keywords - Add negative keywords to filter noise: \"keywords\": [\"AI\", \"-clickbait\", \"-spam\"]\nEnable learning - Improves over time based on your behavior\nReview digest weekly - Don't ignore the digest—it surfaces patterns\nCombine with personal-analytics - Get topic recommendations based on your chat patterns"
      },
      {
        "title": "web-search-plus",
        "body": "Automatically uses intelligent routing:\n\nProduct/price topics → Serper\nResearch topics → Tavily\nCompany/startup discovery → Exa"
      },
      {
        "title": "personal-analytics",
        "body": "Suggests topics based on conversation patterns:\n\n\"You've asked about Rust 12 times this month. Want me to monitor 'Rust language updates'?\""
      },
      {
        "title": "Privacy & Security",
        "body": "All data local - No external services except search APIs\nState files gitignored - Safe to use in version-controlled workspace\nMemory hints optional - You control what context is shared\nLearning data stays local - Never sent to APIs\nSubprocess env allowlist - monitor forwards only PATH/HOME/LANG/TERM and search-provider keys\nNo direct HTTP in skill code - alerts are emitted as JSON for OpenClaw delivery"
      },
      {
        "title": "Troubleshooting",
        "body": "No alerts being sent:\n\nCheck cron is running: crontab -l\nVerify channel config (Telegram chat ID, topic channel list for Discord/email)\nRun with --dry-run --verbose to see scoring\n\nToo many alerts:\n\nIncrease importance_threshold\nAdd rate limiting\nRefine keywords (add negative filters)\nEnable learning mode\n\nMissing important news:\n\nDecrease importance_threshold\nIncrease check frequency\nBroaden keywords\nCheck .research_state.json for deduplication issues\n\nDigest not generating:\n\nVerify .findings/ directory exists and has content\nCheck digest cron schedule\nRun manually: python3 scripts/digest.py --preview"
      },
      {
        "title": "Track Product Release",
        "body": "python3 scripts/manage_topics.py add \"iPhone 17 Release\" \\\n  --query \"iPhone 17 announcement release date\" \\\n  --keywords \"iPhone 17,Apple event,September\" \\\n  --frequency daily \\\n  --importance high \\\n  --channels telegram \\\n  --context \"Planning to upgrade from iPhone 13\""
      },
      {
        "title": "Monitor Competitor",
        "body": "python3 scripts/manage_topics.py add \"Competitor Analysis\" \\\n  --query \"CompetitorCo product launch funding\" \\\n  --keywords \"CompetitorCo,product,launch,Series,funding\" \\\n  --frequency weekly \\\n  --importance medium \\\n  --channels discord,email"
      },
      {
        "title": "Research Topic",
        "body": "python3 scripts/manage_topics.py add \"Quantum Computing Papers\" \\\n  --query \"quantum computing arxiv\" \\\n  --keywords \"quantum,qubit,arxiv\" \\\n  --frequency weekly \\\n  --importance low \\\n  --channels email"
      },
      {
        "title": "Credits",
        "body": "Built for ClawHub. Uses web-search-plus skill for intelligent search routing."
      }
    ],
    "body": "Topic Monitor\n\nMonitor what matters. Get notified when it happens.\n\nTopic Monitor transforms your assistant from reactive to proactive by continuously monitoring topics you care about and intelligently alerting you only when something truly matters.\n\n⚡ Quick Start (New in v1.2.0!)\n\nJust want to monitor one topic? One command:\n\npython3 scripts/quick.py \"AI Model Releases\"\n\n\nThat's it! This creates a topic with sensible defaults:\n\nQuery: Auto-generated from topic name\nKeywords: Extracted from topic name\nFrequency: Daily\nImportance: Medium\nChannel: Telegram\nQuick Start Options\n# Basic - just a topic name\npython3 scripts/quick.py \"Bitcoin Price\"\n\n# With keywords\npython3 scripts/quick.py \"Security CVEs\" --keywords \"CVE,vulnerability,critical\"\n\n# High priority, hourly checks\npython3 scripts/quick.py \"Production Alerts\" --frequency hourly --importance high\n\n# Custom query\npython3 scripts/quick.py \"Competitor News\" --query \"CompanyName product launch funding\"\n\n# Different channel\npython3 scripts/quick.py \"Team Updates\" --channel discord\n\nQuick Start vs Full Setup\nFeature\tQuick Start\tFull Setup\nSpeed\t⚡ 1 command\t📝 Wizard\nDefaults\tSmart\tCustomizable\nUse case\tSingle topic\tMultiple topics\nConfiguration\tMinimal\tFull control\n\nAfter Quick Start, you can always customize:\n\npython3 scripts/manage_topics.py edit ai-model-releases --frequency hourly\n\nCore Capabilities\nTopic Configuration - Define subjects with custom parameters\nScheduled Monitoring - Automated searches at configurable intervals\nAI Importance Scoring - Smart filtering: immediate alert vs digest vs ignore\nContextual Summaries - Not just links—meaningful summaries with context\nWeekly Digest - Low-priority findings compiled into readable reports\nMemory Integration - References your past conversations and interests\nFull Setup (Interactive Wizard)\n\nFor configuring multiple topics or advanced options:\n\npython3 scripts/setup.py\n\n\nThe wizard will guide you through:\n\nTopics - What subjects do you want to monitor?\nSearch queries - How to search for each topic\nKeywords - What terms indicate relevance\nFrequency - How often to check (hourly/daily/weekly)\nImportance threshold - When to send alerts (low/medium/high)\nWeekly digest - Compile non-urgent findings into a summary\n\nThe wizard creates config.json with your preferences. You can always edit it later or use manage_topics.py to add/remove topics.\n\nExample session:\n\n🔍 Topic Monitor - Setup Wizard\n\nWhat topics do you want to monitor?\n  > AI Model Releases\n  > Security Vulnerabilities\n  > \n\n--- Topic 1/2: AI Model Releases ---\n  Search query for 'AI Model Releases' [AI Model Releases news updates]: new AI model release announcement\n  Keywords to watch for in 'AI Model Releases'?\n  > GPT, Claude, Llama, release\n\n--- Topic 2/2: Security Vulnerabilities ---\n  Search query for 'Security Vulnerabilities' [Security Vulnerabilities news updates]: CVE critical vulnerability patch\n  Keywords to watch for in 'Security Vulnerabilities'?\n  > CVE, vulnerability, critical, patch\n\nHow often should I check for updates?\n  1. hourly\n  2. daily *\n  3. weekly\n\n✅ Setup Complete!\n\nQuick Start\n\nAlready know what you're doing? Here's the manual approach:\n\n# Initialize config from template\ncp config.example.json config.json\n\n# Add a topic\npython3 scripts/manage_topics.py add \"Product Updates\" \\\n  --keywords \"release,update,patch\" \\\n  --frequency daily \\\n  --importance medium\n\n# Test monitoring (dry run)\npython3 scripts/monitor.py --dry-run\n\n# Set up cron for automatic monitoring\npython3 scripts/setup_cron.py\n\nTopic Configuration\n\nEach topic has:\n\nname - Display name (e.g., \"AI Model Releases\")\nquery - Search query (e.g., \"new AI model release announcement\")\nkeywords - Relevance filters ([\"GPT\", \"Claude\", \"Llama\", \"release\"])\nfrequency - hourly, daily, weekly\nimportance_threshold - high (alert immediately), medium (alert if important), low (digest only)\nchannels - Where to send alerts ([\"telegram\", \"discord\"])\ncontext - Why you care (for AI contextual summaries)\nExample config.json\n{\n  \"topics\": [\n    {\n      \"id\": \"ai-models\",\n      \"name\": \"AI Model Releases\",\n      \"query\": \"new AI model release GPT Claude Llama\",\n      \"keywords\": [\"GPT\", \"Claude\", \"Llama\", \"release\", \"announcement\"],\n      \"frequency\": \"daily\",\n      \"importance_threshold\": \"high\",\n      \"channels\": [\"telegram\"],\n      \"context\": \"Following AI developments for work\",\n      \"alert_on\": [\"model_release\", \"major_update\"]\n    },\n    {\n      \"id\": \"tech-news\",\n      \"name\": \"Tech Industry News\",\n      \"query\": \"technology startup funding acquisition\",\n      \"keywords\": [\"startup\", \"funding\", \"Series A\", \"acquisition\"],\n      \"frequency\": \"daily\",\n      \"importance_threshold\": \"medium\",\n      \"channels\": [\"telegram\"],\n      \"context\": \"Staying informed on tech trends\",\n      \"alert_on\": [\"major_funding\", \"acquisition\"]\n    },\n    {\n      \"id\": \"security-alerts\",\n      \"name\": \"Security Vulnerabilities\",\n      \"query\": \"CVE critical vulnerability security patch\",\n      \"keywords\": [\"CVE\", \"vulnerability\", \"security\", \"patch\", \"critical\"],\n      \"frequency\": \"hourly\",\n      \"importance_threshold\": \"high\",\n      \"channels\": [\"telegram\", \"email\"],\n      \"context\": \"DevOps security monitoring\",\n      \"alert_on\": [\"critical_cve\", \"zero_day\"]\n    }\n  ],\n  \"settings\": {\n    \"digest_day\": \"sunday\",\n    \"digest_time\": \"18:00\",\n    \"max_alerts_per_day\": 5,\n    \"deduplication_window_hours\": 72,\n    \"learning_enabled\": true\n  }\n}\n\nScripts\nmanage_topics.py\n\nManage research topics:\n\n# Add topic\npython3 scripts/manage_topics.py add \"Topic Name\" \\\n  --query \"search query\" \\\n  --keywords \"word1,word2\" \\\n  --frequency daily \\\n  --importance medium \\\n  --channels telegram\n\n# List topics\npython3 scripts/manage_topics.py list\n\n# Edit topic\npython3 scripts/manage_topics.py edit eth-price --frequency hourly\n\n# Remove topic\npython3 scripts/manage_topics.py remove eth-price\n\n# Test topic (preview results without saving)\npython3 scripts/manage_topics.py test eth-price\n\nmonitor.py\n\nMain monitoring script (run via cron):\n\n# Normal run (alerts + saves state)\npython3 scripts/monitor.py\n\n# Dry run (no alerts, shows what would happen)\npython3 scripts/monitor.py --dry-run\n\n# Force check specific topic\npython3 scripts/monitor.py --topic eth-price\n\n# Verbose logging\npython3 scripts/monitor.py --verbose\n\n\nHow it works:\n\nReads topics due for checking (based on frequency)\nSearches using web-search-plus or built-in web_search\nScores each result with AI importance scorer\nHigh-importance → immediate alert\nMedium-importance → saved for digest\nLow-importance → ignored\nUpdates state to prevent duplicate alerts\ndigest.py\n\nGenerate weekly digest:\n\n# Generate digest for current week\npython3 scripts/digest.py\n\n# Generate and send\npython3 scripts/digest.py --send\n\n# Preview without sending\npython3 scripts/digest.py --preview\n\n\nOutput format:\n\n# Weekly Research Digest - [Date Range]\n\n## 🔥 Highlights\n\n- **AI Models**: Claude 4.5 released with improved reasoning\n- **Security**: Critical CVE patched in popular framework\n\n## 📊 By Topic\n\n### AI Model Releases\n- [3 findings this week]\n\n### Security Vulnerabilities\n- [1 finding this week]\n\n## 💡 Recommendations\n\nBased on your interests, you might want to monitor:\n- \"Kubernetes security\" (mentioned 3x this week)\n\nsetup_cron.py\n\nConfigure automated monitoring:\n\n# Interactive setup\npython3 scripts/setup_cron.py\n\n# Auto-setup with defaults\npython3 scripts/setup_cron.py --auto\n\n# Remove cron jobs\npython3 scripts/setup_cron.py --remove\n\n\nCreates cron entries:\n\n# Topic Monitor - Hourly topics\n0 * * * * cd /path/to/skills/topic-monitor && python3 scripts/monitor.py --frequency hourly\n\n# Topic Monitor - Daily topics  \n0 9 * * * cd /path/to/skills/topic-monitor && python3 scripts/monitor.py --frequency daily\n\n# Topic Monitor - Weekly digest\n0 18 * * 0 cd /path/to/skills/topic-monitor && python3 scripts/digest.py --send\n\nAI Importance Scoring\n\nThe scorer uses multiple signals to decide alert priority:\n\nScoring Signals\n\nHIGH priority (immediate alert):\n\nMajor breaking news (detected via freshness + keyword density)\nPrice changes >10% (for finance topics)\nProduct releases matching your exact keywords\nSecurity vulnerabilities in tools you use\nDirect answers to specific questions you asked\n\nMEDIUM priority (digest-worthy):\n\nRelated news but not urgent\nMinor updates to tracked products\nInteresting developments in your topics\nTutorial/guide releases\nCommunity discussions with high engagement\n\nLOW priority (ignore):\n\nDuplicate news (already alerted)\nTangentially related content\nLow-quality sources\nOutdated information\nSpam/promotional content\nLearning Mode\n\nWhen enabled (learning_enabled: true), the system:\n\nTracks which alerts you interact with\nAdjusts scoring weights based on your behavior\nSuggests topic refinements\nAuto-adjusts importance thresholds\n\nLearning data stored in .learning_data.json (privacy-safe, never shared).\n\nMemory Integration\n\nTopic Monitor connects to your conversation history:\n\nExample alert:\n\n🔔 Dirac Live Update\n\nVersion 3.8 released with the room correction improvements you asked about last week.\n\nContext: You mentioned struggling with bass response in your studio. This update includes new low-frequency optimization.\n\n[Link] | [Full details]\n\nHow it works:\n\nReads references/memory_hints.md (create this file)\nScans recent conversation logs (if available)\nMatches findings to past context\nGenerates personalized summaries\nmemory_hints.md (optional)\n\nHelp the AI connect dots:\n\n# Memory Hints for Topic Monitor\n\n## AI Models\n- Using Claude for coding assistance\n- Interested in reasoning improvements\n- Comparing models for different use cases\n\n## Security\n- Running production Kubernetes clusters\n- Need to patch critical CVEs quickly\n- Interested in zero-day disclosures\n\n## Tech News\n- Following startup ecosystem\n- Interested in developer tools space\n- Tracking potential acquisition targets\n\nAlert Channels\nTelegram\n\nRequires OpenClaw message tool:\n\n{\n  \"channels\": [\"telegram\"],\n  \"telegram_config\": {\n    \"chat_id\": \"@your_username\",\n    \"silent\": false,\n    \"effects\": {\n      \"high_importance\": \"🔥\",\n      \"medium_importance\": \"📌\"\n    }\n  }\n}\n\nDiscord\n\nAgent-delivered (no webhook in skill config):\n\nmonitor.py emits DISCORD_ALERT JSON payloads, and OpenClaw sends them via the message tool. This matches the Telegram alert flow (structured output, no direct HTTP in skill code).\n\n{\n  \"channels\": [\"discord\"]\n}\n\nEmail\n\nSMTP or API:\n\n{\n  \"channels\": [\"email\"],\n  \"email_config\": {\n    \"to\": \"you@example.com\",\n    \"from\": \"research@yourdomain.com\",\n    \"smtp_server\": \"smtp.gmail.com\",\n    \"smtp_port\": 587\n  }\n}\n\nAdvanced Features\nAlert Conditions\n\nFine-tune when to alert:\n\n{\n  \"alert_on\": [\n    \"price_change_10pct\",\n    \"keyword_exact_match\",\n    \"source_tier_1\",\n    \"high_engagement\"\n  ],\n  \"ignore_sources\": [\n    \"spam-site.com\",\n    \"clickbait-news.io\"\n  ],\n  \"boost_sources\": [\n    \"github.com\",\n    \"arxiv.org\",\n    \"official-site.com\"\n  ]\n}\n\nRegex Patterns\n\nMatch specific patterns:\n\n{\n  \"patterns\": [\n    \"version \\\\d+\\\\.\\\\d+\\\\.\\\\d+\",\n    \"\\\\$\\\\d{1,3}(,\\\\d{3})*\",\n    \"CVE-\\\\d{4}-\\\\d+\"\n  ]\n}\n\nRate Limiting\n\nPrevent alert fatigue:\n\n{\n  \"settings\": {\n    \"max_alerts_per_day\": 5,\n    \"max_alerts_per_topic_per_day\": 2,\n    \"quiet_hours\": {\n      \"start\": \"22:00\",\n      \"end\": \"08:00\"\n    }\n  }\n}\n\nEnvironment Variables\n\nConfigure these environment variables to customize topic-monitor:\n\nVariable\tDefault\tDescription\nTOPIC_MONITOR_TELEGRAM_ID\t—\tYour Telegram chat ID for receiving alerts\nTOPIC_MONITOR_DATA_DIR\t.data/ in skill dir\tWhere to store state and findings\nWEB_SEARCH_PLUS_PATH\tRelative to skill\tPath to web-search-plus search.py\nSERPER_API_KEY / TAVILY_API_KEY / EXA_API_KEY / YOU_API_KEY / SEARXNG_INSTANCE_URL / WSP_CACHE_DIR\t—\tOptional search-provider vars passed via subprocess env allowlist\n\nExample setup:\n\n# Add to ~/.bashrc or .env\nexport TOPIC_MONITOR_TELEGRAM_ID=\"123456789\"\nexport TOPIC_MONITOR_DATA_DIR=\"/home/user/topic-monitor-data\"\nexport WEB_SEARCH_PLUS_PATH=\"/path/to/skills/web-search-plus/scripts/search.py\"\n\nState Management\n.research_state.json\n\nStored in TOPIC_MONITOR_DATA_DIR (default: .data/ in skill directory).\n\nTracks:\n\nLast check time per topic\nAlerted URLs (deduplication)\nImportance scores history\nLearning data (if enabled)\n\nExample:\n\n{\n  \"topics\": {\n    \"eth-price\": {\n      \"last_check\": \"2026-01-28T22:00:00Z\",\n      \"last_alert\": \"2026-01-28T15:30:00Z\",\n      \"alerted_urls\": [\n        \"https://example.com/eth-news-1\"\n      ],\n      \"findings_count\": 3,\n      \"alerts_today\": 1\n    }\n  },\n  \"deduplication\": {\n    \"url_hash_map\": {\n      \"abc123\": \"2026-01-28T15:30:00Z\"\n    }\n  }\n}\n\n.findings/ directory\n\nStores digest-worthy findings:\n\n.findings/\n├── 2026-01-22_eth-price.json\n├── 2026-01-24_fm26-patches.json\n└── 2026-01-27_ai-breakthroughs.json\n\nBest Practices\nStart conservative - Set importance_threshold: medium initially, adjust based on alert quality\nUse context field - Helps AI generate better summaries\nRefine keywords - Add negative keywords to filter noise: \"keywords\": [\"AI\", \"-clickbait\", \"-spam\"]\nEnable learning - Improves over time based on your behavior\nReview digest weekly - Don't ignore the digest—it surfaces patterns\nCombine with personal-analytics - Get topic recommendations based on your chat patterns\nIntegration with Other Skills\nweb-search-plus\n\nAutomatically uses intelligent routing:\n\nProduct/price topics → Serper\nResearch topics → Tavily\nCompany/startup discovery → Exa\npersonal-analytics\n\nSuggests topics based on conversation patterns:\n\n\"You've asked about Rust 12 times this month. Want me to monitor 'Rust language updates'?\"\n\nPrivacy & Security\nAll data local - No external services except search APIs\nState files gitignored - Safe to use in version-controlled workspace\nMemory hints optional - You control what context is shared\nLearning data stays local - Never sent to APIs\nSubprocess env allowlist - monitor forwards only PATH/HOME/LANG/TERM and search-provider keys\nNo direct HTTP in skill code - alerts are emitted as JSON for OpenClaw delivery\nTroubleshooting\n\nNo alerts being sent:\n\nCheck cron is running: crontab -l\nVerify channel config (Telegram chat ID, topic channel list for Discord/email)\nRun with --dry-run --verbose to see scoring\n\nToo many alerts:\n\nIncrease importance_threshold\nAdd rate limiting\nRefine keywords (add negative filters)\nEnable learning mode\n\nMissing important news:\n\nDecrease importance_threshold\nIncrease check frequency\nBroaden keywords\nCheck .research_state.json for deduplication issues\n\nDigest not generating:\n\nVerify .findings/ directory exists and has content\nCheck digest cron schedule\nRun manually: python3 scripts/digest.py --preview\nExample Workflows\nTrack Product Release\npython3 scripts/manage_topics.py add \"iPhone 17 Release\" \\\n  --query \"iPhone 17 announcement release date\" \\\n  --keywords \"iPhone 17,Apple event,September\" \\\n  --frequency daily \\\n  --importance high \\\n  --channels telegram \\\n  --context \"Planning to upgrade from iPhone 13\"\n\nMonitor Competitor\npython3 scripts/manage_topics.py add \"Competitor Analysis\" \\\n  --query \"CompetitorCo product launch funding\" \\\n  --keywords \"CompetitorCo,product,launch,Series,funding\" \\\n  --frequency weekly \\\n  --importance medium \\\n  --channels discord,email\n\nResearch Topic\npython3 scripts/manage_topics.py add \"Quantum Computing Papers\" \\\n  --query \"quantum computing arxiv\" \\\n  --keywords \"quantum,qubit,arxiv\" \\\n  --frequency weekly \\\n  --importance low \\\n  --channels email\n\nCredits\n\nBuilt for ClawHub. Uses web-search-plus skill for intelligent search routing."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/robbyczgw-cla/topic-monitor",
    "publisherUrl": "https://clawhub.ai/robbyczgw-cla/topic-monitor",
    "owner": "robbyczgw-cla",
    "version": "1.3.5",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/topic-monitor",
    "downloadUrl": "https://openagent3.xyz/downloads/topic-monitor",
    "agentUrl": "https://openagent3.xyz/skills/topic-monitor/agent",
    "manifestUrl": "https://openagent3.xyz/skills/topic-monitor/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/topic-monitor/agent.md"
  }
}