·4 min
GeoPulse — AIで地政学ブリーフィングを自動生成するアプリを作った
テックOSINTAIプロジェクト
前回の GeoIntel Dashboard に続く地政学プロジェクト第2弾。今回は GeoPulse — AIが毎週の地政学ニュースを要約して「ブリーフィングカード」として配信するWebアプリを作った。
コンセプト
地政学の情報は散在していて追いづらい。毎週のニュースをAIが自動で集約・分析し、1枚のカードにまとめてXでシェアできたら面白いんじゃないかと思った。
Palantirのような高度な分析プラットフォームを個人レベルで、しかも完全自動で動かすイメージだ。
主な機能
- 自動ニュース収集: NewsAPIから地政学関連ニュースを自動取得・関連度スコアリング
- AI要約: OpenAI GPT-4o-miniが上位20件の記事を分析し、構造化ブリーフィングを生成
- インパクト評価: High / Medium / Low の3段階で地政学的影響度を自動判定
- 不確実性スコア: 情報の確度を0〜100%で数値化
- OGPカード生成: Xでシェアした際に自動でリッチなプレビュー画像を表示
- アーカイブ: 過去のブリーフィングをタグフィルター付きで閲覧可能
技術スタック
- フレームワーク: Next.js 16 (App Router) + TypeScript
- スタイリング: Tailwind CSS v4
- データベース: Supabase (PostgreSQL + RLS)
- AI: OpenAI API (GPT-4o-mini)
- ニュース: NewsAPI
- OGP画像: Next.js ImageResponse (Edge Runtime)
- デプロイ: Vercel
アーキテクチャ
パイプラインはシンプルだ:
- NewsAPI → 過去7日間の地政学ニュースを取得
- 関連度スコアリング → キーワードマッチングで記事をランク付け
- OpenAI → 上位記事をJSON形式のブリーフィングに要約
- Supabase → 生成結果をPostgreSQLに保存
- Next.js SSG → 静的ページとして配信(ISR 1時間)
ソースURLの検証も入れていて、AIが出力したURLが元の記事に含まれているかチェックしている。ハルシネーション対策として地味だけど大事な部分。
工夫したポイント
データ層の設計
Supabaseが接続できない場合はモックデータにフォールバックする統一データ層を実装した。開発時にDBなしでも動くので、フロントエンドの開発がスムーズだった。
OGP画像の動的生成
Edge Runtimeで動くOGP画像生成APIを実装。カードごとにタイトル、インパクトレベル、タグを含むリッチなプレビュー画像を生成する。Xでシェアした際のバイラル性を意識した設計。
ソース表示の工夫
生のURLではなく「Reuters」「BBC News」「AP News」のようにメディア名で表示するようにした。見た目がすっきりして、どのメディアからの情報かが直感的にわかる。
完成したもの
すべてのコードを1セッションで書き上げ、Supabase接続、API統合、Vercelデプロイまで完了した。Vibe Codingの真骨頂だと思う。
GeoPulse → https://geopulse-delta.vercel.app
地政学 × AI × Web の組み合わせには可能性しかない。次はリアルタイム分析やアラート機能も追加していきたい。