·4 min

GeoPulse — AIで地政学ブリーフィングを自動生成するアプリを作った

テックOSINTAIプロジェクト

前回の GeoIntel Dashboard に続く地政学プロジェクト第2弾。今回は GeoPulse — AIが毎週の地政学ニュースを要約して「ブリーフィングカード」として配信するWebアプリを作った。

GeoPulse を見る →

コンセプト

地政学の情報は散在していて追いづらい。毎週のニュースを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

アーキテクチャ

パイプラインはシンプルだ:

  1. NewsAPI → 過去7日間の地政学ニュースを取得
  2. 関連度スコアリング → キーワードマッチングで記事をランク付け
  3. OpenAI → 上位記事をJSON形式のブリーフィングに要約
  4. Supabase → 生成結果をPostgreSQLに保存
  5. 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 の組み合わせには可能性しかない。次はリアルタイム分析やアラート機能も追加していきたい。