mcpField
T
topic-monitor

topic-monitor

github.com/sundial-org生産性670597 回インストール34 週間前に更新
リポジトリ

topic-monitor について

Topic Monitor は、指定したトピックを継続的に追跡し、通知を選別するスキルです。ニュースや製品動向、研究を追うユーザー向けに、定期検索、AI による重要度評価、通知や週次ダイジェストを提供します。

主な機能

  1. 01トピック・検索語・頻度の設定
  2. 02定期検索と重要度スコアリング
  3. 03優先度別の通知とダイジェスト
  4. 04背景情報を含む結果の要約
  5. 05会話履歴を使った結果の個別化

活用シーン

  1. 01製品リリースや競合の追跡
  2. 02脆弱性や業界ニュースの監視
  3. 03優先度の低い調査結果の集約
  4. 04過去の関心に基づく通知の絞り込み

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sundial-org/awesome-openclaw-skills --skill topic-monitor

インストール後、Claude Code で/topic-monitorを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

config.example.json
README.md
skill.json
scripts/
config.py
digest.py
importance_scorer.py
manage_topics.py
monitor.py
setup_cron.py
setup.py

詳細

トピックモニター

重要なことを監視し、起きたときに通知を受け取りましょう。

トピックモニターは、関心のあるトピックを継続的に監視し、本当に重要なことが起きたときだけインテリジェントに通知することで、アシスタントを受け身から先回り型へと変えます。

主な機能

  1. トピックの設定 - カスタムパラメーターを指定してテーマを定義します
  2. スケジュール監視 - 設定可能な間隔で検索を自動実行します
  3. AI による重要度スコアリング - 即時通知、ダイジェスト、無視をスマートに振り分けます
  4. 文脈に沿った要約 - リンクだけでなく、文脈を含む有意義な要約を提供します
  5. 週次ダイジェスト - 優先度の低い情報を、読みやすいレポートにまとめます
  6. メモリー連携 - 過去の会話や関心事を参照します

初回起動

トピックモニターを初めて使用するときは、対話型セットアップウィザードを実行してください。

python3 scripts/setup.py

ウィザードでは、次の項目を設定します。

  1. トピック - どのテーマを監視しますか?
  2. 検索クエリ - 各トピックをどのように検索しますか?
  3. キーワード - どの用語を関連性の指標にしますか?
  4. 頻度 - どのくらいの頻度で確認しますか(毎時/毎日/毎週)
  5. 重要度のしきい値 - どの段階で通知を送信しますか(低/中/高)
  6. 週次ダイジェスト - 緊急性のない情報を要約にまとめます

ウィザードは設定内容を含む config.json を作成します。後からいつでも編集したり、manage_topics.py を使ってトピックを追加・削除したりできます。

実行例:

🔍 Topic Monitor - Setup Wizard

What topics do you want to monitor?
  > AI Model Releases
  > Security Vulnerabilities
  > 

--- Topic 1/2: AI Model Releases ---
  Search query for 'AI Model Releases' [AI Model Releases news updates]: new AI model release announcement
  Keywords to watch for in 'AI Model Releases'?
  > GPT, Claude, Llama, release

--- Topic 2/2: Security Vulnerabilities ---
  Search query for 'Security Vulnerabilities' [Security Vulnerabilities news updates]: CVE critical vulnerability patch
  Keywords to watch for in 'Security Vulnerabilities'?
  > CVE, vulnerability, critical, patch

How often should I check for updates?
  1. hourly
  2. daily *
  3. weekly

✅ Setup Complete!

クイックスタート

使い方がわかっている場合は、手動で設定する方法を次に示します。

# Initialize config from template
cp config.example.json config.json

# Add a topic
python3 scripts/manage_topics.py add "Product Updates" \
  --keywords "release,update,patch" \
  --frequency daily \
  --importance medium

# Test monitoring (dry run)
python3 scripts/monitor.py --dry-run

# Set up cron for automatic monitoring
python3 scripts/setup_cron.py

トピックの設定

各トピックには次の項目があります。

  • name - 表示名(例:「AI モデルのリリース」)
  • query - 検索クエリ(例:「新しい AI モデルのリリース発表」)
  • keywords - 関連性のフィルター(["GPT", "Claude", "Llama", "release"])
  • frequency - hourly、daily、weekly
  • importance_threshold - high(即時通知)、medium(重要な場合に通知)、low(ダイジェストのみ)
  • channels - 通知の送信先(["telegram", "discord"])
  • context - 関心がある理由(AI による文脈に沿った要約に使用)
config.json の例
{
  "topics": [
    {
      "id": "ai-models",
      "name": "AI Model Releases",
      "query": "new AI model release GPT Claude Llama",
      "keywords": ["GPT", "Claude", "Llama", "release", "announcement"],
      "frequency": "daily",
      "importance_threshold": "high",
      "channels": ["telegram"],
      "context": "Following AI developments for work",
      "alert_on": ["model_release", "major_update"]
    },
    {
      "id": "tech-news",
      "name": "Tech Industry News",
      "query": "technology startup funding acquisition",
      "keywords": ["startup", "funding", "Series A", "acquisition"],
      "frequency": "daily",
      "importance_threshold": "medium",
      "channels": ["telegram"],
      "context": "Staying informed on tech trends",
      "alert_on": ["major_funding", "acquisition"]
    },
    {
      "id": "security-alerts",
      "name": "Security Vulnerabilities",
      "query": "CVE critical vulnerability security patch",
      "keywords": ["CVE", "vulnerability", "security", "patch", "critical"],
      "frequency": "hourly",
      "importance_threshold": "high",
      "channels": ["telegram", "email"],
      "context": "DevOps security monitoring",
      "alert_on": ["critical_cve", "zero_day"]
    }
  ],
  "settings": {
    "digest_day": "sunday",
    "digest_time": "18:00",
    "max_alerts_per_day": 5,
    "deduplication_window_hours": 72,
    "learning_enabled": true
  }
}

スクリプト

manage_topics.py

調査トピックを管理します。

# Add topic
python3 scripts/manage_topics.py add "Topic Name" \
  --query "search query" \
  --keywords "word1,word2" \
  --frequency daily \
  --importance medium \
  --channels telegram

# List topics
python3 scripts/manage_topics.py list

# Edit topic
python3 scripts/manage_topics.py edit eth-price --frequency hourly

# Remove topic
python3 scripts/manage_topics.py remove eth-price

# Test topic (preview results without saving)
python3 scripts/manage_topics.py test eth-price
monitor.py

監視のメインスクリプトです(cron 経由で実行)。

# Normal run (alerts + saves state)
python3 scripts/monitor.py

# Dry run (no alerts, shows what would happen)
python3 scripts/monitor.py --dry-run

# Force check specific topic
python3 scripts/monitor.py --topic eth-price

# Verbose logging
python3 scripts/monitor.py --verbose

仕組み:

  1. 確認予定のトピックを読み込みます(頻度に基づきます)
  2. web-search-plus または組み込みの web_search を使って検索します
  3. AI 重要度スコアラーで各結果をスコアリングします
  4. 重要度が高い場合 → 即時通知
  5. 重要度が中程度の場合 → ダイジェスト用に保存
  6. 重要度が低い場合 → 無視
  7. 通知の重複を防ぐために状態を更新します
digest.py

週次ダイジェストを生成します。

# Generate digest for current week
python3 scripts/digest.py

# Generate and send
python3 scripts/digest.py --send

# Preview without sending
python3 scripts/digest.py --preview

出力形式:

# Weekly Research Digest - [Date Range]

## 🔥 Highlights

- **AI Models**: Claude 4.5 released with improved reasoning
- **Security**: Critical CVE patched in popular framework

## 📊 By Topic

### AI Model Releases
- [3 findings this week]

### Security Vulnerabilities
- [1 finding this week]

## 💡 Recommendations

Based on your interests, you might want to monitor:
- "Kubernetes security" (mentioned 3x this week)
setup_cron.py

自動監視を設定します。

# Interactive setup
python3 scripts/setup_cron.py

# Auto-setup with defaults
python3 scripts/setup_cron.py --auto

# Remove cron jobs
python3 scripts/setup_cron.py --remove

次の cron エントリーを作成します。

# Topic Monitor - Hourly topics
0 * * * * cd /path/to/skills/topic-monitor && python3 scripts/monitor.py --frequency hourly

# Topic Monitor - Daily topics  
0 9 * * * cd /path/to/skills/topic-monitor && python3 scripts/monitor.py --frequency daily

# Topic Monitor - Weekly digest
0 18 * * 0 cd /path/to/skills/topic-monitor && python3 scripts/digest.py --send

AI 重要度スコアリング

スコアラーは複数の指標を使って、通知の優先度を判断します。

スコアリング指標

優先度:高(即時通知):

  • 重大な速報(新しさとキーワード密度で検出)
  • 10% を超える価格変動(金融関連トピックの場合)
  • 指定したキーワードに完全一致する製品リリース
  • 使用しているツールのセキュリティ脆弱性
  • 質問した具体的な内容への直接的な回答

優先度:中(ダイジェスト向け):

  • 緊急性はないものの関連するニュース
  • 追跡中の製品に関する小規模な更新
  • トピックに関する興味深い進展
  • チュートリアルやガイドの公開
  • エンゲージメントの高いコミュニティの議論

優先度:低(無視):

  • 重複するニュース(すでに通知済み)
  • 関連性が間接的なコンテンツ
  • 品質の低い情報源
  • 古い情報
  • スパムや宣伝コンテンツ
学習モード

有効にすると(learning_enabled: true)、システムは次の処理を行います。

  1. ユーザーが操作した通知を追跡します
  2. ユーザーの行動に基づいてスコアリングの重みを調整します
  3. トピックの改善案を提案します
  4. 重要度のしきい値を自動調整します

学習データは .learning_data.json に保存されます(プライバシーに配慮しており、共有されることはありません)。

メモリの統合

Topic Monitor は会話履歴と連携します。

アラートの例:

🔔 Dirac Live Update

先週お問い合わせいただいたルーム補正の改善を含むバージョン 3.8 がリリースされました。

コンテキスト: スタジオの低音域の応答に苦労しているとおっしゃっていました。このアップデートには、新しい低周波数最適化機能が含まれています。

[リンク] | [詳細全文]

仕組み:

  1. references/memory_hints.md を読み込みます(このファイルを作成してください)
  2. 最近の会話ログをスキャンします(利用可能な場合)
  3. 検出結果と過去のコンテキストを照合します
  4. パーソナライズされた要約を生成します
memory_hints.md(任意)

AI が関連性を見つけやすくするための情報を記載します。

# Memory Hints for Topic Monitor

## AI Models
- Using Claude for coding assistance
- Interested in reasoning improvements
- Comparing models for different use cases

## Security
- Running production Kubernetes clusters
- Need to patch critical CVEs quickly
- Interested in zero-day disclosures

## Tech News
- Following startup ecosystem
- Interested in developer tools space
- Tracking potential acquisition targets

アラートの送信先

Telegram

OpenClaw のメッセージツールが必要です。

{
  "channels": ["telegram"],
  "telegram_config": {
    "chat_id": "@your_username",
    "silent": false,
    "effects": {
      "high_importance": "🔥",
      "medium_importance": "📌"
    }
  }
}
Discord

Webhook を使用します。

{
  "channels": ["discord"],
  "discord_config": {
    "webhook_url": "https://discord.com/api/webhooks/...",
    "username": "Research Bot",
    "avatar_url": "https://..."
  }
}
Email

SMTP または API を使用します。

{
  "channels": ["email"],
  "email_config": {
    "to": "[email protected]",
    "from": "[email protected]",
    "smtp_server": "smtp.gmail.com",
    "smtp_port": 587
  }
}

高度な機能

アラート条件

アラートを送信する条件を細かく調整します。

{
  "alert_on": [
    "price_change_10pct",
    "keyword_exact_match",
    "source_tier_1",
    "high_engagement"
  ],
  "ignore_sources": [
    "spam-site.com",
    "clickbait-news.io"
  ],
  "boost_sources": [
    "github.com",
    "arxiv.org",
    "official-site.com"
  ]
}
正規表現パターン

特定のパターンに一致させます。

{
  "patterns": [
    "version \\d+\\.\\d+\\.\\d+",
    "\\$\\d{1,3}(,\\d{3})*",
    "CVE-\\d{4}-\\d+"
  ]
}
レート制限

アラート疲れを防ぎます。

{
  "settings": {
    "max_alerts_per_day": 5,
    "max_alerts_per_topic_per_day": 2,
    "quiet_hours": {
      "start": "22:00",
      "end": "08:00"
    }
  }
}

状態管理

.research_state.json

次の情報を記録します。

  • トピックごとの最終確認時刻
  • アラート済み URL(重複排除)
  • 重要度スコアの履歴
  • 学習データ(有効な場合)

例:

{
  "topics": {
    "eth-price": {
      "last_check": "2026-01-28T22:00:00Z",
      "last_alert": "2026-01-28T15:30:00Z",
      "alerted_urls": [
        "https://example.com/eth-news-1"
      ],
      "findings_count": 3,
      "alerts_today": 1
    }
  },
  "deduplication": {
    "url_hash_map": {
      "abc123": "2026-01-28T15:30:00Z"
    }
  }
}
.findings/ ディレクトリ

ダイジェストに適した検出結果を保存します。

.findings/
├── 2026-01-22_eth-price.json
├── 2026-01-24_fm26-patches.json
└── 2026-01-27_ai-breakthroughs.json

ベストプラクティス

  1. 控えめに始める - 最初は importance_threshold: medium に設定し、アラートの品質に応じて調整します
  2. コンテキストフィールドを使う - AI がより良い要約を生成するのに役立ちます
  3. キーワードを調整する - ノイズを除去するため、除外キーワードを追加します:"keywords": ["AI", "-clickbait", "-spam"]
  4. 学習を有効にする - 利用状況に基づいて、時間とともに改善されます
  5. ダイジェストを毎週確認する - ダイジェストを見逃さないでください。パターンを見つけるのに役立ちます
  6. personal-analytics と組み合わせる - チャットのパターンに基づいたトピックの提案を受け取れます

他のスキルとの連携

web-search-plus

インテリジェントなルーティングを自動的に使用します。

  • 製品/価格に関するトピック → Serper
  • 調査に関するトピック → Tavily
  • 企業/スタートアップの発見 → Exa
personal-analytics

会話のパターンに基づいてトピックを提案します。

「今月、Rust について 12 回質問しています。「Rust 言語のアップデート」を監視しますか?」

プライバシーとセキュリティ

  • すべてのデータはローカルに保存 - 検索 API を除き、外部サービスは使用しません
  • 状態ファイルは gitignore 対象 - バージョン管理されたワークスペースでも安全に使用できます
  • メモリヒントは任意 - 共有するコンテキストを自分で管理できます
  • 学習データはローカルに保存 - API に送信されることはありません

トラブルシューティング

アラートが送信されない場合:

  • cron が実行中か確認します:crontab -l
  • チャネル設定(Telegram のチャット ID、Discord の Webhook)を確認します
  • --dry-run --verbose を指定して実行し、スコアリングを確認します

アラートが多すぎる場合:

  • importance_threshold を上げます
  • レート制限を追加します
  • キーワードを調整します(除外フィルターを追加)
  • 学習モードを有効にします

重要なニュースを見逃す場合:

  • importance_threshold を下げます
  • 確認頻度を上げます
  • キーワードの範囲を広げます
  • .research_state.json を確認し、重複排除に問題がないか調べます

ダイジェストが生成されない場合:

  • .findings/ ディレクトリが存在し、内容があることを確認します
  • ダイジェストの cron スケジュールを確認します
  • 手動で実行します:python3 scripts/digest.py --preview

ワークフローの例

製品リリースを追跡する
python3 scripts/manage_topics.py add "iPhone 17 Release" \
  --query "iPhone 17 announcement release date" \
  --keywords "iPhone 17,Apple event,September" \
  --frequency daily \
  --importance high \
  --channels telegram \
  --context "Planning to upgrade from iPhone 13"
競合他社を監視する
python3 scripts/manage_topics.py add "Competitor Analysis" \
  --query "CompetitorCo product launch funding" \
  --keywords "CompetitorCo,product,launch,Series,funding" \
  --frequency weekly \
  --importance medium \
  --channels discord,email
トピックを調査する
python3 scripts/manage_topics.py add "Quantum Computing Papers" \
  --query "quantum computing arxiv" \
  --keywords "quantum,qubit,arxiv" \
  --frequency weekly \
  --importance low \
  --channels email

クレジット

ClawHub 向けに開発されました。インテリジェントな検索ルーティングには web-search-plus スキルを使用します。

コメント