nino

Command Palette

Search for a command to run...

メニュー

ニュース収集&AI要約

 

9分 35秒

このドキュメントでは、技術ニュースの自動収集・要約・配信システムの仕組みを解説します。

システム概要

このシステムは以下の流れで動作します:

  1. Vercel Cron で /api/cron/route.ts を定期実行
  2. RSS取得
  3. DB照合で差分を絞る
    • 最新アイテムの日時をDBから取得
    • その日時より新しいアイテムのみをフィルタ
  4. AI要約
  5. DB保存
  6. Discord通知

各コンポーネントの役割

  • Cronスケジューラー: 定期的なタスク実行を管理
  • RSSフィード取得: 複数の技術サイトから最新情報を収集
  • AI要約生成: 収集した記事を日本語で要約・タグ付け
  • Slack通知: 要約された情報をSlackに配信

Vercel Cron設定

vercel.jsonでのスケジュール定義

Loading...

スケジュール説明:

  • 0 21,1,5,9,15 * * * = UTC時刻で 21:00, 01:00, 05:00, 09:00, 15:00
  • JST時刻では 06:00, 10:00, 14:00, 18:00, 00:00 に実行
  • 毎日実行(* * * の部分)

Cron Playground

CRON_SECRETの設定

Vercel Cronの実行時には認証が必要です。強力なパスワードを生成して環境変数に設定しましょう。

  1. パスワードを生成 を使用して強力なパスワードを生成します:
  2. 生成したパスワードを Vercel プロジェクトの環境変数に CRON_SECRET として設定
Loading...

エンドポイント実装

Loading...

RSSフィード取得

必要な依存関係のインストール

Loading...

フィード設定

Loading...
知っておくと良いこと
  • フィードの取得は 公開されているRSS(またはAtom)フィードのみ を利用しています。
  • サイトによってはRSS/Atomフィードを提供していない場合があります。また、ウェブページのスクレイピングは安定性が低く、サイトの変更による不具合やコンテンツの盗用等の問題に繋がるため、本システムでは採用していません。
  • 利用できるRSSやAtomフィードがある場合のみ、追加・更新情報の自動取得が可能です。
  • RSSHub Radar を使うことで効率的にRSSフィードのURLを特定できます。

RSS解析とサムネイル抽出

Loading...

新規アイテムの判定

Loading...

AI要約生成

必要な依存関係のインストール

Loading...

Vercel AI Gatewayの設定

1. Vercel AI Gatewayに登録

Vercel AI Gateway にアクセスしてアカウントを作成し、プロジェクトを登録します。

2. APIキーの取得

ダッシュボードから AI_GATEWAY_API_KEY を取得します。

3. 環境変数の設定

取得したAPIキーを以下の場所に設定:

ローカル開発環境 (.env)

Loading...

Vercelプロジェクト Vercelダッシュボードのプロジェクト設定 > Environment Variables で AI_GATEWAY_API_KEY を設定

知っておくと良いこと
  • Vercel AI Gatewayは 毎月5ドル分の無料クレジット が提供されます
  • 従量課金を有効にしない限り、自動的に課金が発生することはありません
  • 無料クレジットを超えた場合も、明示的に従量課金を有効化するまでサービスは停止されます

Vercel AI SDKを使用したバッチ要約

アイテムごとに要約するとLLMの制限にひっかかるケースが多いため、記事をまとめて処理し、要約回数を一回にしています。これにより

  • レート制限の回避: API呼び出し回数を大幅に削減
  • コスト効率: 複数記事を一度に処理することでコストを最適化
  • 処理速度: 並列処理にすることで処理速度を向上

を実現しています。

Loading...

バッチ処理による効率化

  • 複数の記事を一度にAIに送信
  • API呼び出し回数を削減
  • コスト効率の向上

データベース保存

Drizzle などを使って DB に取得したフィードを保存してください。

Slack通知

Webhook送信

Loading...

通知フォーマット

Loading...

技術ごとのグループ化

Loading...

実行フロー

  1. Vercel Cronが /api/cron を定期実行

    • vercel.jsonで定義されたスケジュール(6:00, 10:00, 14:00, 18:00, 00:00 JST)
    • UTC時刻で 21:00, 01:00, 05:00, 09:00, 15:00 に実行
  2. 認証チェック

    • 本番環境ではCRON_SECRETによる認証を実行
  3. fetchAndSaveNewFeedItems() 実行

    • 最新日時より新しいアイテムのみを処理
  4. RSSフィード取得

    • 複数の技術サイトから並列で取得
    • サムネイル画像の自動抽出
  5. バッチでAI要約生成

    • Vercel AI Gateway経由でGemini 2.5 Flash Liteを使用
    • 複数記事を一度に処理して効率化
  6. DB保存

    • 新規アイテムの保存
    • 既存データの要約更新
  7. Discord通知

    • 技術ごとにグループ化
    • 開発環境とプロダクション環境で送信先を切り替え
  8. ページrevalidate

    • Next.jsのキャッシュを更新

まとめ

このシステムにより、技術ニュースの自動収集・要約・配信が実現されています。Vercel AI Gatewayを活用することで、AI要約のコスト効率を向上させ、バッチ処理によりAPI呼び出し回数を削減しています。

Discord で質問する
何か気になったこと、分からないことがあれば気軽に質問してください!