メインコンテンツへ移動
AIチュートリアル

new-term-radarで毎日のAIトレンドレーダーを構築

オープンソースのPythonツールnew-term-radarをインストール、設定、自動化する方法を解説します。X、Hugging Face、GitHub、サイトマップ、Search Console、検索データを組み合わせ、新たに登場したAIの名称と関連キーワードに関する日次レポートを作成できます。

new-term-radarで毎日のAIトレンドレーダーを構築

new-term-radarとは

new-term-radarは、AI分野で注目を集め始めている名称を発見するための日次監視ツールです。従来のキーワード調査プラットフォームで見えるようになる前に、新しいモデル、製品、ツール、ウェブサイト、リポジトリを見つけるよう設計されています。

このプロジェクトは、AIツールのページ、ディレクトリ、ニュースレター、記事、製品を作成する人に特に役立ちます。確立されたキーワード検索ボリュームを待つ代わりに、新しい名称が残す初期の公開シグナルを監視します。

  1. 研究機関、開発者、または影響力のあるアカウントがXで名称に言及する、あるいはモデルがHugging Faceのトレンド一覧に入る。
  2. 最近作成されたGitHubリポジトリが、異常に速いペースでスターを集め始める。
  3. ディレクトリや競合サイトが新しいページを公開する、または最近登録されたドメインがランキングに入り始める。
  4. あなたのウェブサイトが、その用語についてSearch Consoleで初めてインプレッションを獲得する。
  5. やがてGoogle Trendsに測定可能な上昇が現れる。

ほとんどのキーワードツールは最終段階付近で動作します。new-term-radarは最初の4段階を毎日読み取り、その後Google Trendsを使って、初期の候補が本当の検索トレンドになったかを確認します。

主な機能とシグナル

Xアカウントの監視

レーダーは、アカウント一覧に設定されたアカウントを読み取り、過去60日間にそれらのアカウントが使用していない名称を特定します。この有料シグナルにはAIsa APIキーが必要です。有用性は、フォローする研究機関、開発者、解説者の質に大きく左右されます。

Hugging Faceのトレンドモデル

Hugging Faceのシグナルは、トレンド上位50件に新たに登場したモデルを検出します。量子化されたコピーは、ベースモデル名の下にまとめられます。このシグナルは無料で、外部認証情報は必要ありません。

GitHubで急成長するリポジトリ

GitHub検出機能は、作成から14日未満で、1日平均200スター以上を獲得している、または前回のスナップショット以降に少なくとも400スターを獲得したリポジトリを探します。また、所有者名とリポジトリ名に基づくniko strataのような検索候補も生成できます。

このシグナルは無料です。GitHubトークンは必須ではありませんが、使用するとGitHub APIのレート制限が引き上げられます。

サイトマップの変化

サイトマップリーダーは、サイトの古いURLでは珍しかった単語が、複数の新しいURLで共通して使われている場合に、その単語を見つけます。サイト独自の基準に対して異なるURLの数を数えるため、1つの長いURLによる誤った急増を抑えられます。

サイトマップを追加する前に、そのサイトのrobots.txtを読み、クロール遅延以上の間隔を設定してください。

新たにランキングに入ったサイト

オプションの新規サイトシグナルは、過去90日以内に登録され、初めてインデックスに登録されたドメインのうち、すでに少なくとも20個のキーワードでランキングに入っているものを検索します。AIsaが必要で、週1回の実行を想定しています。

READMEには、2026年10月12日時点で、上流のAIsa検証問題により、このシグナルがエラーを報告すると記載されています。残りのレポートは引き続き動作します。上流の問題が解決するまで--skip newsitesを使用してください。

Google Search Console

自分のプロパティに接続すると、レーダーはサイトで初めてインプレッションを獲得した検索クエリを検出します。この連携は任意で無料です。マシン上に保存された読み取り専用トークンを使用します。

名称の分類とレビュー

小型言語モデルが、各候補が特定の1つのものの名称なのか、単なる一般語なのかを評価します。採用された名称は目立つ形で表示され、一般語は別に一覧表示されます。14日後、レビュー処理でGoogle Trendsの検索候補を確認し、的中率とシグナルが先行していた日数を記録します。

キーワードテーブルの仕組み

新しい製品名は、その製品が解決する継続的な課題を表さなくても急速に伸びることがあります。たとえば、検出ツールのブランド名は一時的なものかもしれませんが、ai image detectorのような一般的なフレーズは継続的な需要を表します。オプションのキーワードテーブルは、新しい名称と、その背後にある課題や一般的な検索語を結び付けます。

  1. 根拠を収集: レーダーは、その名称に言及する高評価のX投稿を読み取り、リポジトリについてはREADMEも読み取ります。
  2. フレーズを生成: モデルが、根拠で示された課題に対する通常の検索フレーズを提案し、裏付けとなる引用を含めます。
  3. フレーズを審査: 2回目のモデル呼び出しで、名称に付けられた製品が十分に直接答えられないフレーズを除外します。
  4. 検索ボリュームを推定: Google Adsの月間検索ボリュームを1回のバッチで取得し、min_volume未満のフレーズを除外します。
  5. トレンドを測定: Google Trendsを使い、各用語の推移を1回評価し、さらに基準キーワードとの規模を比較します。基準キーワードの初期値はgptsです。

最終的な判定は、優先、監視、スキップのいずれかです。用語が過去30日以内に上昇し、現在も上昇傾向にあり、設定された1日あたりの検索数の基準を満たす場合は優先されます。規模が小さい初期段階の用語や、安定した需要がある用語は監視されます。下降中または規模が小さく横ばいの用語はスキップされます。

各名称は、初めて登場した時点と、設定された再確認期間の経過後に再度分析されます。再確認期間の初期値は3日です。これは、公開初日の投稿が、実際の製品の使われ方ではなく発表内容を説明していることが多いため重要です。

このプロジェクトの初期観察では、製品名は関連する一般用語より先に上昇していました。キーワードテーブルは主に、新製品が満たす既存需要の地図として扱ってください。すべての一般フレーズが急増し始めている証拠とみなすべきではありません。

要件

  • Python 3.10以降。
  • リポジトリをクローンするためのGit。
  • 有料シグナル、名前の分類、Google Trendsの確認、またはキーワードテーブルを利用する場合は、AIsa APIキー。
  • Search Console、メール配信、高いAPI上限を利用する場合は、Google、Resend、GitHubの認証情報(任意)。

レーダーのコア機能は、Pythonの標準ライブラリだけを使用します。追加パッケージが必要になるのは、任意の連携機能と開発タスクの場合だけです。

レーダーをインストールして設定する

1. リポジトリをクローンする

git clone https://github.com/zhuyansen/new-term-radar
cd new-term-radar

2. 設定を作成する

cp config.example.json config.json

config.jsonを編集し、サイトや出版物に関連するXアカウント、サイトマップ、トピック、既知の用語、ストップワード、しきい値を指定します。

3. 任意のAIsaキーを追加する

export AISA_API_KEY=your_key_here

有料サービスはAIsa経由で利用します。これにはXの投稿、DataForSEOを利用したドメインおよびトレンドデータ、候補名を判定するモデルが含まれます。このキーがなくても、無料のHugging Face、GitHub、サイトマップ、Search Consoleのシグナルは実行できます。ただし、名前判定機能を利用できないため、レポートでは用語が並べ替えられずに一覧表示されます。

4. 日次レポートを実行する

python -m radar daily --out report.md

初回実行時に、Xの語彙、リポジトリのスター数、サイトマップURLのスナップショットが作成されます。比較対象となる前回のスナップショットがないため、初回レポートには通常、前日のデータを必要としないGitHubのブレイクアウトだけが含まれます。2回目以降は、レーダーによって有効化されたすべてのシグナルの変化を報告できます。

重要な設定を構成する

サンプル設定には、サポートされているすべてのフィールドが記載されています。まずは、レーダーが監視する対象と候補をどの程度厳しく絞り込むかを決める設定に注目してください。

  • lang: レポート言語をenまたはzhに設定します。
  • x_accounts: 研究所やブロガーのアカウント名を追加します。研究所は先に名称を発表する傾向があり、選定したブロガーは用語が分野内でどのように広がるかを示します。
  • sitemaps: サイトマップの場所、任意のシャードパターン、リクエスト間隔、ロケール接頭辞の除去を定義します。
  • topics: 名前と正規表現を割り当て、トピック別のレポートセクションを作成します。
  • known_terms: すでに扱っている用語や、確認したくない用語を追加します。一致した候補はマークされ、以降の確認から除外されます。
  • stop_words: 分野内でよく使われる単語を追加します。組み込みリストはAIモデルとエージェントツール向けに調整されています。
  • judge: AIsaのチャットモデルを選択し、名前スコアの最低値を設定します。デフォルトは0.5です。
  • breakout: リポジトリの経過期間、最低スター数、1日あたりのスター増加数、前日からの変化を制御します。
  • review: 確認まで待機する日数と、1日に処理する候補数を設定します。
  • usecases: キーワードテーブル、モデル、ベンチマーク、検索ボリュームのしきい値、日次検索のしきい値、再確認間隔を設定します。
  • gsc: Search Consoleのプロパティとトークンファイルを設定します。連携を無効にする場合は、このオブジェクトを空のままにします。

キーワードテーブルを完全に無効にするには、1日の件数をゼロに設定します。

{
  "usecases": {
    "per_day": 0
  }
}

--skip usecasesを指定すれば、1回のコマンド実行だけで無効にすることもできます。

基本的な使用パターン

すべてを1日1回実行する

スケジュール実行を1つだけ設定する場合は、シグナルをスキップせずにdailyコマンドを使用します。

python -m radar daily --out report.md

このコマンドはMarkdownレポートを書き込み、その横にreport.jsonも作成します。JSONファイルにはレポートの作成に使われる構造化データが含まれており、カスタム公開や後続処理に便利です。

変化の速いソースを1日に数回確認する

このリポジトリでは、変化の速いソースの監視と、より負荷の高い日次処理を分離しています。

python -m radar sources --out sources.md
python -m radar daily --skip x,hf --out report.md

sourcesコマンドはXとHugging Faceだけを確認し、新しい名前が見つかった場合にのみレポートを書き込みます。数時間おきに実行してください。その後、dailyコマンドではこの2つのライブチェックをスキップしつつ、過去24時間にsourcesが保持した名前を含めることができます。

選択したモジュールをスキップする

--skipオプションでは、x、hf、breakout、sitemaps、newsites、gsc、review、judge、usecasesを指定できます。

python -m radar daily --skip x,newsites,usecases --out report.md

週次の新規サイト確認をすぐに実行する

python -m radar daily --new-sites --out report.md

永続状態の保存先を変更する

レーダーは、何が変化したかを判断するために、保存されたスナップショットとデータベースを使用します。これらのファイルを専用ディレクトリに置く場合は、--stateを使用します。

python -m radar daily --state ./radar-state --out report.md

生成されたレポートを理解する

レポートでは、可能性の高い名前を先に配置し、それを裏付けるシグナルを示します。GitHubの候補には、リポジトリ、現在のスター数、1日あたりの平均スター増加数、名前スコア、既知の用語かどうか、検索バリエーション、短い例が含まれる場合があります。一般的な単語と判定された用語は、レポート下部付近に分けて表示されます。

レビューセクションでは、設定された過去の日付に報告された用語を再確認します。検索バリアントが上昇したかどうかと、測定可能なGoogle Trendsの増加が起きる前にレーダーがそのバリアントを検出していた日数を記録します。

バリアントが上昇したとみなされるのは、報告後のピークが過去のベースラインを2倍以上かつ10ポイント以上上回った場合です。このバリアントベースのアプローチは、すでに別の意味を持つ名前に役立ちます。一般的な単語は過去の需要が大きすぎて条件を満たさない場合がありますが、クリエイター名と製品名を組み合わせた具体的な検索クエリなら、新しいトレンドを明らかにできる可能性があります。

Google Search Consoleを追加する

オプションの認証依存関係をインストールし、付属の認証スクリプトを実行します。

pip install google-auth-oauthlib
python scripts/gsc_auth.py gsc_client.json

スクリプトはブラウザを一度開き、gsc_token.jsonを書き込みます。入力ファイルは、Search Console APIが有効になっているGoogle Cloudプロジェクトで作成した、タイプデスクトップアプリのOAuthクライアントである必要があります。

次にプロパティを設定します。

{
  "gsc": {
    "site": "sc-domain:your-site.com"
  }
}

トークンは読み取り専用で、ユーザーのマシン上に保持されます。また、リポジトリの.gitignoreで既に除外されています。

メールでレポートを送信する

--mailオプションを使用すると、Resend経由でレポートを送信できます。必要な環境変数を設定します。

export RESEND_API_KEY=your_resend_key
export EMAIL_FROM=radar@your-verified-domain.com
export RADAR_EMAIL_TO=you@example.com,editor@example.com

HTMLメール版が必要な場合は、Markdownパッケージをインストールします。

pip install markdown
python -m radar daily --out report.md --mail

GitHub Actionsで自動化する

付属の.github/workflows/radar.ymlワークフローは、8時間ごとにsourcesを実行し、1日1回dailyを実行します。状態はActionsのキャッシュに保存され、レポートはワークフロー実行の概要に書き込まれます。明示的にオプトインするまで、ワークフローは無効のままです。

  1. リポジトリをフォークします。プライベートフォークでも構いません。
  2. .gitignoreからconfig.jsonを削除し、設定をコミットします。このファイルにシークレットを含めないでください。
  3. AISA_API_KEYリポジトリシークレットを追加します。
  4. 必要に応じて、RESEND_API_KEY、EMAIL_FROM、RADAR_EMAIL_TO、GSC_TOKEN_JSONを追加します。
  5. リポジトリ変数RADAR_ENABLEDを作成し、trueに設定します。

状態キャッシュを保持することは重要です。比較は過去のスナップショットに依存するためです。状態を永続化しない場合、繰り返し実行しても初回実行に近い動作になります。

高度な調整のヒント

Xアカウントを意図的に選ぶ

X検出器は、設定したアカウントのいずれも言及していない用語を発見できません。製品を発表する組織や、重要な用語が広まる経路となる信頼できる論評者を含めてください。監視するアカウント数を減らしたり、実行頻度を下げたりすると、有料APIの使用量も比例して減少します。

AIツール以外の分野に合わせてストップワードを調整する

組み込みのクリーニングとストップワードの動作は、AIモデルとエージェント向けに調整されています。レーダーを別の分野に適用する場合は、その分野で一般的な語彙をstop_wordsに追加し、ありふれた用語がレポートを圧倒しないようにします。

ニッチに合わせてブレイクアウトのしきい値を調整する

デフォルト値は、GitHubで異常に速く成長する対象を想定しています。より小規模なエコシステムでは、min_stars、velocity_min、またはdelta_minの値を下げる必要があるかもしれません。非常に活発なエコシステムでは、レポートの焦点を保つために、より高いしきい値が必要になる場合があります。

既知の用語を使って繰り返し作業を減らす

すでにページがある用語と、今後取り上げる予定のない用語をknown_termsに追加します。これらのエントリのいずれかを含む候補、またはいずれかに含まれる候補にはマークが付けられ、今後のレビューから除外されます。

最新のTrendsポイントをそのまま信用しない

直近2日間のGoogle Trendsデータは安定しておらず、誤った急上昇を生む可能性があります。実装ではこの2日間を除外し、上昇が少なくとも2日間続くことを要求しています。不完全なデータを処理する別の方法がない限り、この動作を変更しないでください。

公開前に需要を検証する

レーダーは早期警戒システムであり、完全なキーワード調査の代替ではありません。Google Adsの検索ボリュームはおよそ2か月遅れることがあり、月間検索数が数百件しかない用語ではTrendsの信頼性が低くなります。オプションのキーワードテーブルに推定値がある場合は、方向性を示す参考値として扱ってください。ページを作成する前に、現在の検索結果、関連性、権利上のリスク、需要を確認します。

独自のシグナル品質を測定する

このプロジェクトは、すべての情報源について確立された的中率を主張していません。レビューシステムでは、各リードが成熟するまで少なくとも14日必要です。すべての候補がトレンドになると仮定せず、蓄積されたレビューセクションを使って、自分のアカウントリスト、テーマ、市場にどのシグナルが有効かを判断してください。

テストスイートを実行する

開発時には、テストとMarkdownの依存関係をインストールしてから、テストを実行します。

pip install pytest markdown
python -m pytest -q tests

テストでは、ネットワーク要求を行わずに、名前の抽出、スコアリング、保存、レポート生成を検証します。

まとめ

new-term-radarは、初期の公開活動を再現可能な日次の発見ワークフローに変換します。無料のシグナルでHugging Face、GitHub、サイトマップ、Search Consoleのデータを監視でき、AIsaによってXの監視、名前の分類、トレンドレビュー、ドメイン調査、キーワードテーブルが利用可能になります。

厳選したソースリストから始め、スナップショットを作成できる十分な時間ツールを実行し、14日後に結果を確認します。最も価値のある成果は、単なる流行の名前のリストではなく、従来のキーワードツールより先に、どのソースが関連性の高い用語を一貫して特定しているかを示す証拠です。