ハクソク

世界を動かす技術を、日本語で。

HNに表示: 15のライブグローバルフィードを取得するリアルタイムOSINTダッシュボードを作成しました

概要

ShadowBrokerは、リアルタイム地政学・地理情報を統合表示するダッシュボード
航空機・船舶・衛星・地震・紛争・CCTV等を一画面で可視化
Next.js・MapLibre GL・FastAPI・Pythonで構築
Docker・ZIP版・ソースからの起動が可能
分析・研究・趣味用途に最適なグローバル監視ツール

ShadowBroker — リアルタイム地政学インテリジェンスダッシュボード

  • 複数のOSINTフィードを統合し、ダークオプス風マップUIで可視化
  • 航空機・船舶・衛星・地震・紛争・CCTV・GPS妨害・金融指標をリアルタイム追跡
  • 分析者・研究者・愛好者向けの「シングルペイン」世界監視環境

主なユースケース

  • 億万長者のプライベートジェット追跡
  • 上空を通過する衛星の監視
  • 世界中の海上交通の把握
  • GPSジャミング発生エリアの検出
  • 地震・災害の即時追跡

クイックスタート(Docker)

  • リポジトリのクローン
    git clone https://github.com/BigBodyCobain/Shadowbroker.git
  • ディレクトリ移動
    cd Shadowbroker
  • Docker Composeで起動
    docker-compose up -d
  • http://localhost:3000 でダッシュボード閲覧(Docker必須)

主な機能一覧

🛩️ 航空機トラッキング

  • 商用・プライベート・軍用機のリアルタイム追跡
    • OpenSky Network(5,000+機)・adsb.lol(軍用機)利用
  • 航空機分類・SVGアイコン表示
  • ホールディングパターン自動検出
  • 飛行経路トレイル・地上判定

🚢 海上トラッキング

  • **AIS WebSocket(aisstream.io)**で25,000+隻をリアルタイム追跡
  • 船種分類・色分けアイコン
  • 米海軍空母打撃群のOSINT推定位置自動追跡
  • クラスター表示・地域別マッピング

🛰️ 衛星トラッキング

  • CelesTrak TLE・SGP4による2,000+衛星の位置推定
  • 任務タイプ別カラー分類(偵察・SAR・SIGINT・航法・早期警戒・商用・宇宙ステーション)

🌍 地政学・紛争

  • GDELTによる世界の紛争・事件速報(直近8時間・約1,000件)
  • ウクライナ戦線(DeepState Map連携)
  • SIGINT/RISINTニュースフィード(複数RSS集約)
  • 地域ドシエ:地図右クリックで国情報・首脳・Wikipedia要約

📷 監視カメラネットワーク

  • 2,000+台のライブCCTV(ロンドン・オースティン・NYC・シンガポール等)
  • 自動フィード検出・動画/画像/タイル対応
  • クラスター表示

📡 シグナルインテリジェンス

  • GPSジャミング検出:航空機NAC-P値のリアルタイム分析
  • グリッド集約・ジャミング強度表示
  • ラジオインターセプトパネル:通信傍受UI

🌐 追加レイヤー

  • 地震情報(USGS)
  • 昼夜サイクル表示
  • グローバル金融指標ティッカー
  • 距離・方位測定ツール

システムアーキテクチャ

  • フロントエンド:Next.js + MapLibre GL(2Dマップ描画・パネル・フィルタ)
  • バックエンド:FastAPI(データ取得・スケジューリング・API提供)
  • 主要データソース:OpenSky・adsb.lol・aisstream.io・CelesTrak・USGS・GDELT・DeepState Map・各種CCTV API
  • キャッシュ・自動更新:各種データは適宜キャッシュ&定期更新

データソースとAPI

  • OpenSky Network:商用・プライベート航空機(60秒更新・匿名利用可)
  • adsb.lol:軍用航空機(60秒・APIキー不要)
  • aisstream.io:AIS船舶位置(リアルタイム・APIキー必須)
  • CelesTrak:衛星軌道(60秒・APIキー不要)
  • USGS:地震(60秒・APIキー不要)
  • GDELT:世界紛争(6時間・APIキー不要)
  • DeepState Map:ウクライナ前線(30分・APIキー不要)
  • 各都市CCTV:5分更新(一部APIキー必要)
  • RestCountries・Wikidata・Wikipedia:国情報・画像(オンデマンド)

起動方法

🐳 Docker利用(推奨)

  • docker-compose.yml作成(公式イメージ利用)
  • .envファイルにAPIキー記載
  • docker-compose up -dで起動し、http://localhost:3000へアクセス

📦 クイックスタート(ノーコード)

  • GitHubのReleasesタブからShadowBroker_v0.3.zipダウンロード
  • 解凍後、Windowsはstart.bat、Mac/Linuxはstart.sh実行
  • 自動インストール&ダッシュボード起動

💻 開発者向けセットアップ

  • Node.js 18+・Python 3.10+・npm/pip必須
  • **aisstream.io(必須)・opensky-network.org(任意)・lta.gov.sg(任意)**APIキー取得
  • リポジトリクローン・backend/frontendセットアップ
  • npm run devでフロント・バックエンド同時起動
    • Next.js(http://localhost:3000)
    • FastAPI(http://localhost:8000)

データレイヤー(左パネルでON/OFF可)

  • 商用・プライベート・軍用機・高額ジェット・特定航空機
  • 衛星・空母/軍用/貨物船・民間船舶・クルーズ/旅客船
  • 地震・CCTV・ウクライナ前線・世界紛争・GPSジャミング・昼夜サイクル

パフォーマンス最適化

  • Gzip圧縮:APIペイロード約92%圧縮
  • ETagキャッシュ:304レスポンスでJSONパース回避
  • ビューポートカリング:表示範囲+20%のみ描画
  • クラスター描画:船舶・CCTV・地震で機能
  • デバウンス更新:300ms遅延でGeoJSON再構築抑制
  • 位置補間:10秒アニメーションでスムーズ表示
  • React.memo:不要な再レンダリング防止
  • 座標精度:小数点5桁(約1m)でJSONサイズ削減

プロジェクト構成

  • backend/:FastAPI本体・データ取得・API管理
  • services/:各種データ取得・キャッシュ・解析モジュール
  • frontend/src/:Next.jsアプリ・MapLibre・各種パネル・UIコンポーネント
  • .env:APIキー管理

環境変数例(backend/.env)

  • AIS_API_KEY=your_aisstream_key
  • OPENSKY_CLIENT_ID=your_opensky_client_id
  • OPENSKY_CLIENT_SECRET=your_opensky_secret

補足・開発裏話

  • Flightradar・MarineTraffic・Twitter等を横断しなくて済む統合ダッシュボードとして開発
  • 映画ハッカー風UIだが、実際のOSINTパイプラインを構築
  • GeoJSON大量描画によるブラウザ負荷対策(カリング・圧縮・デバウンス等)
  • リアルタイムGPSジャミング検出は特にユニークな機能
  • 最適化・MapLibre改善案歓迎

まとめ

  • ShadowBrokerはグローバルなリアルタイム地政学・地理情報を一元集約
  • 自己ホスト・カスタマイズ・拡張性に優れたオープンソースOSINTプラットフォーム
  • 分析・研究・危機管理・趣味など多様な用途に活用可能

Hackerたちの意見

リアルタイムタイルにそのgeojsonを最適化するのは、すごく楽しいプロジェクトだよね。これらのプロジェクト見たことある? https://github.com/protomaps/PMTiles https://github.com/maplibre/martin
確実に近づいてるよ!その2つのプロジェクトの大ファンだから、アーキテクチャのロードマップに入ってるのは間違いない... 今は、ShadowBrokerが「点滅するブリップ」リアルタイムレーダー追跡に最適化されてるから、60秒ごとにFastAPIバックエンドからMapLibreに生のGeoJSONペイロードをストリーミングして、地図上でスムーズな60fpsのエンティティアニメーションが実現できてる。もし歴史的なフライトデータやAISデータを適切なPostGISデータベースにアーカイブし始めたら、Martinみたいなものに移行するのは素晴らしいけど、ライブで動くターゲットのために数秒ごとにベクタタイルキャッシュを無効にしなきゃいけないのが、今はちょっとオーバーキルだね…。
Windows 11のPCで試したけど、データが表示されなかった。依存関係は全部インストールされたみたいだけど、フロントエンドは表示されるのに、ダッシュボードには「Intel unavailable」って出てる。飛行機とかも見えないし、コマンドウィンドウにも役立つ出力がない。楽しそうなのに、動いてないみたい。
マックでも同じだよ。
うん、マックでも動かないね。完全に壊れてるし、機能してない。
あ、UIでエラーハンドリングをもっとわかりやすくしなかったのが悪かったね。地図が真っ白だったら、だいたいバックエンドに無料APIキー(AISSTREAM_API_KEYとN2YO_API_KEY)が入った.envファイルがないから、ストリームを取得できてないってことなんだ。ターミナルでPython FastAPIのエラーが出た?それともNext.jsのフロントエンドだけが表示された?今日は「バックエンドが切断されました / APIキーがありません」って警告をUIに表示するアップデートを出す予定だから、死んでるように見えないようにするよ。テストしてくれてありがとう!
バックエンドのrequirements.txtを以下のように変更してね。fastapi==0.103.1 uvicorn==0.23.2 yfinance>=0.2.40 feedparser==6.0.10 legacy-cgi==2.6.1 requests==2.31.0 apscheduler==3.10.3 pydantic==2.11.0 pydantic-settings==2.8.0 playwright>=1.58.0 beautifulsoup4>=4.12.0 sgp4>=2.22 cachetools>=5.3.0 cloudscraper>=1.2.71 reverse_geocoder>=1.5.1 lxml>=5.0 python-dotenv>=1.0 それと、Pythonは3.13にしておけば、すぐに動くはずだよ。
すごくクールだね、シェアしてくれてありがとう。これを1日数時間、1ヶ月続けたらAPIのコストはどんな感じになるの?手が届く範囲かな?
ぜんぶ無料だよ、笑
最初のコミットで `ShadowBroker_v0.1.zip` 内に `./frontend/.env.local` と `./backend/.env` を漏らしちゃったね。
本当のOSINTはいつもコメントの中にある。
だからOSINTって呼ばれてるんだよ、全部オープンソースだから。
これいいね。これを思い出すわ。https://curves-voluntary-livecam-sandra.trycloudflare.com/
リスキーなクリックだね。(大丈夫だけど。)
こんなの作ってたんだよね。https://github.com/blue-monads/potato-apps/tree/master/cimpl... まだ完成してないけど、時間がなくてさ。
データレイヤーが抽出できるといいな。ちょっと調べてみるよ。(フロントエンドも楽しいけどね!)
誰かこれをどこかにデプロイしてくれたら、最初から作らなくても試せるのに。
UIに「映画のハッカー」っぽい感じをめっちゃ取り入れちゃったのは認めるよ。別に悪くないけど、退屈な企業のダッシュボードよりは全然いいよね。ゲームや似たようなインターフェースが人気なのも理由があるし。
これ、どこかにホストされてるの?
これ、https://www.worldmonitor.app/ を試してみて。別の開発者が作ったけど、すごく近いホスト版だよ。
超クール!ただ、コンセプトやフィード、デザインとか全部が https://www.worldmonitor.app/ を思い出させるなぁ。ちなみに、あれもライブでデプロイされてるから、インターフェース見てみたいならチェックしてみて。