TrendRadarは、複数のホットリストプラットフォームとRSSフィードを集約するPythonツールです。キーワードやAIでニュースを絞り込み、Feishu・Telegram・メールなど複数チャネルへ自動通知します。AI分析・翻訳、GitHub ActionsやDockerでの定期実行、MCPサーバーによる自然言語分析にも対応しています。
収集はtrendradar/crawler/fetcher.pyとrss/fetcher.pyが担当します。newsnowプロジェクトのAPIや各種RSSフィードから、ホットリストを取得する仕組みです。ニュースの絞り込みは二段階です。まずcore/frequency.pyが正規表現でキーワードマッチを行います。次にai/filter.pyがLLMで追加判定します。結果はSQLite(ローカル)かS3互換ストレージ(リモート)に保存されます。output/news配下には日付別のdbファイルが残ります。report/generator.pyがHTMLレポートを作成します。notification/dispatcher.pyがFeishu・Telegram・メールなど設定済みのチャネルへ配信します。実行のトリガーは2つです。GitHub Actions(crawler.yml)での定期実行と、Docker内のsupercronicによるcronスケジュールです。加えてmcp_server/がFastMCPでdata_query・analytics・search_toolsなどのツールを公開します。AIクライアントは自然言語で、過去データを問い合わせられます。
- STEP 01
docker/docker-compose.ymlとdocker/.envを配置してdocker composeを起動すると、trendradarコンテナがCRON_SCHEDULE(既定30分おき)で定期実行を始めます。
- STEP 02
初回実行後は、output/news配下に日付別のSQLiteファイル(例 2025-12-21.db)が生成されます。
- STEP 03
config/frequency_words.txtの関注語グループを編集して再起動すると、該当キーワードに合致したニュースだけが通知対象になります。
- STEP 04
FEISHU_WEBHOOK_URLなどの環境変数を未設定のままだと、該当チャネルへの通知はスキップされ、ログにその旨が出力されます。
- STEP 05
trendradar-mcpコンテナを起動すれば、Claude DesktopやCherry Studioなど対応クライアントから、自然言語で過去のトレンドを質問できます。
- STEP 06
docs/index.htmlをブラウザで開くと、config.yamlとfrequency_words.txtを視覚的に編集できる静的ツールが使えます。
実行すると、output/にホットリストとRSSを集約した日付別SQLite DBとHTMLレポートが蓄積されます。設定済みの通知チャネルには、絞り込み済みニュースの要約が定期的に届きます。MCPサーバーを併用すれば、AIクライアントから過去データの検索や感情分析などを呼び出せます。
ホットリストデータはnewsnowプロジェクトのAPIに依存しており、READMEでは過度な頻度での利用を控えるよう注意書きがあります。
AI分析や翻訳機能を使うには、litellm経由で接続する外部LLMのAPIキーと、それに伴う利用料金が別途必要です。
通知や外部ストレージを使うには、docker/.envにWebhook URLやSMTP情報、S3認証情報など多数の値を設定する必要があります。
リポジトリに含まれるoutput/news配下の.dbファイルはサンプルで、実際の運用結果とは限りません。
日々のニュースをキーワードとAIで絞って複数チャネルに届けたい個人や小規模チームに向いています。構成ファイルやソースコードの役割分担が明確で、設定項目や処理の流れが一貫しているため、未実行でも挙動の見立てには十分な根拠があります。ただしAPIキーや通知先の設定次第で実際の体験は変わるため、最終判断は自分の環境で試すのが安全です。