広告

Notion Newsroom AI

Dev.to / 2026/3/30

💬 オピニオンDeveloper Stack & InfrastructureTools & Practical Usage

要点

  • 「notion-newsroom」プロジェクトは、Notionの速報記事を、リアルタイムの歴史的な文脈と引用で充実させるAI駆動の自動化です。
  • Gemini LLMを使用して、記事の主要トピックからセマンティック検索クエリを生成し、その後ChromaDBのベクターデータベースから関連する過去資料を取得します。
  • システムは、関連度スコアや参照リンクを含む充実したコンテキストブロックをNotionページに直接追記し、さらに見つかった内容や不足している内容についてのNotionコメントによるフィードバックも追加します。
  • Notionページに加えてCSV/RSSフィードなど、異種のアーカイブソースをサポートし、定期実行にも対応しています。関連度の閾値を設定できるといった保護策や、チャンクサイズの検証を含むトランザクション的な追記の安全性も備えています。
  • ワークフローはNotion MCPによって有効化されており、MCPサーバーが「Context Hunter」コンポーネント向けにNotionのページ/データベースのコンテンツを公開し、そのコンポーネントがセマンティック検索と充実化パイプラインにデータを供給します。

これはNotion MCP Challengeへの提出です

私が作ったもの

notion-newsroom — AIを活用したニュースルーム自動化システムで、速報記事をリアルタイムに歴史的な文脈で補強します。

ジャーナリストがNotionでニュース記事を公開すると、システムは自動的に次を行います:

  1. 記事の主要トピックを理解するために、Gemini LLMでセマンティック検索クエリを生成
  2. ChromaDBを使って、過去の記事・アーカイブ・ソース資料のベクターデータベースから関連する歴史的文脈を取得
  3. 引用、関連スコア、ソースリンク付きで、補強したコンテキストブロックをNotionページに直接追記
  4. Notionコメントによって明確なフィードバックを提供し、見つかった文脈や利用できなかった理由がジャーナリストに伝わるようにします

これにより調査のワークフローが大幅に加速します。ジャーナリストはもはやアーカイブやコンテキストデータベースを手作業で検索する必要がありません。このシステムはスケジュールに従って動作し、Notion記事、CSVアーカイブ、RSSフィードといった混在データソースをシームレスに扱います。

主な機能:

  • 設定可能な関連性の閾値による自動コンテキスト発見
  • 見やすいUIのための、折りたたみトグルブロックを含む豊富なNotionブロック構成
  • 明確なエラー報告(クエリ生成の失敗、検索不可、関連する一致がない)
  • 異種アーカイブソースのサポート(UUID、短い数値ID)
  • 組み込みのチャンクサイズ検証によるトランザクション的な追記の安全性

動画デモ

コードを見せてください

GitHub: udofia2/notion-newsroom

Notion MCPの使い方

Notion MCPは、このワークフローを可能にする中核となる統合です。以下のように使っています:

1. 公開された記事を読む

MCPサーバーはNotionページのコンテンツを、クエリ可能なオブジェクトとして公開します。Context Hunterは、Notionのデータベースから下書きと公開記事を読み取り、コンテンツを抽出し、それをセマンティック検索パイプラインへ流し込みます。

# MCP経由でNotionから記事を読み取る
article_content = notion_client.retrieve_block(page_id)

2. 歴史的なコンテキストブロックを追記する

コンテキストが見つかり、順位付けされたら、MCPはNotionページへリッチテキストブロックをリアルタイムに追記できるようにします:

  • ネストされたブロックの構成(トグル → 箇条書きアイテム → 引用付き段落)
  • Notionメンションのサポート(ソースページへのリンク)とプレーンテキストのリンク(外部アーカイブ用)
  • Notionの要素ごとの制約を尊重するための自動チャンク分割
# MCPでコンテキストブロックを追記する
context_block = build_historical_context_toggle_block(results, article_title)
notion_client.append_block_children(page_id, [context_block])

3. 自動化フィードバックを投稿する

ジャーナリストは、あらゆる結果に対する記事への明確なコメントを受け取ります:

  • ✅ 「歴史的なコンテキストを追加:8件」
  • ⚠️ 「クエリ生成に失敗:プロバイダがサーバーエラー503を返しました」
  • 「検索不可:埋め込みモデルがオフライン」
  • ❌ 「関連する歴史的コンテキストが見つかりませんでした」

この可視性は重要です。無言の自動化失敗は信頼を壊します。MCPのコメントがギャップを埋めます。

4. Notionメンション&リンク

システムは、混在するソースIDを賢く処理します:

  • NotionページのUUID → リッチメンション(mention.page.id
  • 外部/アーカイブのソース → URL付きのテキストリンク
  • 短い数値ID → メタデータ付きのプレーンテキスト引用
返却形式: {"translated": "翻訳されたHTML"}

広告