Next.jsとValyu APIで構築されたインタラクティブな地政学的イベントマップ
最近、globalthreatmapという興味深いプロジェクトを見つけました。著者は地政学、軍事基地、世界的なインシデントをリアルタイムで監視するインタラクティブなコマンドセンターを構築しました。紛争マップダッシュボードに夢中になった経験があるか、OSINTツールに興味があるなら、このプロジェクトはきっと注目引くでしょう。

なぜ必要なのか
国際的なイベントに関する散らばったニュースを一つのまとまった絵にまとめることは常に困難でした。通常、何十ものTelegramチャンネル、ニュースアグリゲーター、データベースを監視する必要があります。
リポジトリの著者は、この流れを暗いMapboxマップ上に可視化することを決めました。地政学的イベントが座標に紐づけられ、カテゴリ分けされ、各国の歴史的コンテキストでサポートされたダッシュボードが完成しました。

プロジェクトできること
メインページではインタラクティブなマップとイベントフィードが出迎えてくれます。インターフェース内の構造を詳しく見てみましょう:
- クラスタリング機能付きのインタラクティブなマップ。ズームアウトするとインシデントのポイントがグループ化されます。ヒートマップモードと地球上の自動スクロール機能も備えています。
- 軍事基地レイヤー。米軍基地(緑のマーク)とNATO施設(青のマーク)がマップ上にプロットされています。クリックでその施設名、タイプ、所在国を含むカードが開きます。
- 国クリックで歴史的コンテキストを表示。マップ上で国を選択すると、現在の紛争と日付や結果を含む歴史的戦争の2つのリストが表示されます。
- エンティティ dossier。組織、PMC、政治家名を入力すると、構造化されたCSVエクスポートとPowerPointプレゼンテーションを含む深い分析レポートが生成されます。

興味深い詳細として、分析生成時にプロジェクトはWikipediaを検索ソースから意図的に除外し、Valyu Answer APIを通じて外部のニュースサマリーとレポートに依存しています。
アーキテクチャと技術スタック
技術的な観点から、プロジェクトはクリーンでモダンに書かれています。内部的には新しいスタックを使用しています:
- アプリケーション基盤としてNext.js 16(App Router)
- ベクター地図レンダリング用のMapbox GL JSとreact-map-gl
- インターフェーススタイリング用のTailwind CSS v4
- イベント検索、回答生成、深い調査用のValyu API(クライアント
valyu-js) - クライアントサイドのマップ状態管理用のZustand
- 受信データスキーマのバリデーション用のZod
このアプリケーションは2つの動作モードをサポートしています:セルフホスト(自分のAPIキーで完全に自律的なデプロイ)とValyu OAuthによる認証モードです。
ディレクトリ構造は標準的なNext.jsのパターンを採用しています:
globalthreatmap/
├── app/
│ ├── page.tsx # Главный дашборд
│ └── api/ # Роуты для событий, отчетов и баз
├── components/
│ ├── map/ # Компоненты карты и модалок
│ ├── feed/ # Лента событий
│ └── search/ # Поиск по сущностям
├── lib/
│ ├── valyu.ts # Интеграция с Valyu API
│ └── geocoding.ts # Извлечение геокоординат
└── stores/
└── map-store.ts # Стейт карты в Zustand
ローカルへのデプロイ方法
始めるにはNode.js 18以上と、MapboxとValyuサービスのAPIキーが必要です。オプションで、テキストからのより正確なジオロケーション抽出を有効にするためにOpenAIキーを追加できます。
リポジトリをクローンして依存関係をインストールします:
git clone https://github.com/unicodeveloper/globalthreatmap.git
cd globalthreatmap
npm install
プロジェクトルートに .env.local ファイルを作成します:
NEXT_PUBLIC_MAPBOX_TOKEN=your_mapbox_token_here
VALYU_API_KEY=your_valyu_api_key_here
NEXT_PUBLIC_APP_MODE=self-hosted
# Опционально: улучшенный парсинг локаций через OpenAI
OPENAI_API_KEY=your_openai_api_key_here
ローカル開発サーバーを起動します:
npm run dev
その後、インターフェースには http://localhost:3000 でアクセスできます。
所感とまとめ
このプロジェクトは、Reactで構築された複雑な地理インターフェース готовыйの例として興味深いです。独自のイベントトラッカー、インフラ監視ダッシュボード、OSINT分析ツールの開発を計画している場合、Mapbox GLとフロントエンド状態の操作のための有用なパターンが見つかるでしょう。
覚えておいてほしい点として、Deep Researchによる詳細な50ページのdossier生成には5〜10分かかり、APIが数百ものソースにクエリを送信します。しかし、初期の事実収集タスクには完全に実行可能なオプションです。ソースコードはMITライセンスの下で公開されているため、マップとジオコーディングモジュールを自分のペットプロジェクトに自由に使用できます。
関連プロジェクト