AIニュース自動収集・分析・Slack配信ツール
Go to file
2026-04-17 21:58:37 +09:00
.github/workflows feat: AIニュース自動収集・分析ツールを追加 2026-04-17 21:58:37 +09:00
docs feat: AIニュース自動収集・分析ツールを追加 2026-04-17 21:58:37 +09:00
fixtures feat: AIニュース自動収集・分析ツールを追加 2026-04-17 21:58:37 +09:00
src feat: AIニュース自動収集・分析ツールを追加 2026-04-17 21:58:37 +09:00
.env.example feat: AIニュース自動収集・分析ツールを追加 2026-04-17 21:58:37 +09:00
.gitignore feat: AIニュース自動収集・分析ツールを追加 2026-04-17 21:58:37 +09:00
.nvmrc feat: AIニュース自動収集・分析ツールを追加 2026-04-17 21:58:37 +09:00
CLAUDE.md feat: AIニュース自動収集・分析ツールを追加 2026-04-17 21:58:37 +09:00
package-lock.json feat: AIニュース自動収集・分析ツールを追加 2026-04-17 21:58:37 +09:00
package.json feat: AIニュース自動収集・分析ツールを追加 2026-04-17 21:58:37 +09:00
README.md feat: AIニュース自動収集・分析ツールを追加 2026-04-17 21:58:37 +09:00
tsconfig.json feat: AIニュース自動収集・分析ツールを追加 2026-04-17 21:58:37 +09:00
vitest.config.ts feat: AIニュース自動収集・分析ツールを追加 2026-04-17 21:58:37 +09:00

AIニュース

Xのタイムラインから24時間以内のAI関連ニュースを自動収集し、Geminiで分析してSlackに投稿するツールです。

┌──────────────────────────────────────────────────────────┐
│  🤖 24時間以内のAIトレンド                                │
│                                                          │
│  🔥 主要なニュース・話題                                  │
│  ──────────────────────────────                          │
│  GPT-5.5が発表、ネイティブtool useに対応                  │
│  - エージェント時代の到来を示す大型アップデート            │
│  - 複数のMCPサーバーを同時接続して自動実行が可能に        │
│                                                          │
│  ⚡️ 注目のアップデート                                    │
│  ──────────────────────────────                          │
│  Cursor Background Agent — 寝ている間にPRを作成           │
│  - コードレビューコメントまで自動付与                     │
│                                                          │
│  💡 技術トレンド                                          │
│  ──────────────────────────────                          │
│  テスト時計算量スケーリングへのパラダイムシフト            │
│  - より大きなモデルからよりスマートな推論へ               │
│                                                          │
│  AIニュースで自動生成                                     │
└──────────────────────────────────────────────────────────┘

Slackにはこのようなニュース分析レポートが毎朝届きます。


全体像

┌─────────────┐
│  トリガー     │  GitHub Actions
│  (いつ動く) │  → 毎朝 07:30 JST定期実行を有効化した場合
└──────┬──────┘
       ▼
┌─────────────┐
│  ソース元    │  X旧Twitter
│  (データ)  │  → ホームタイムラインから24時間以内のツイートを取得
└──────┬──────┘
       ▼
┌─────────────┐
│  処理する場所 │  GitHub Actions 上の Node.js
│  (加工)    │  → Gemini でトレンド分析し、構造化JSONに変換
└──────┬──────┘
       ▼
┌─────────────┐
│  届ける先    │  Slack
│  (配信)    │  → チャンネルにニュース分析レポートを投稿
└─────────────┘

料金について

サービス 料金
GitHub Actions 毎月2,000分無料実行は数分で完了
X APIpay-per-use Post Read $0.005/件。500件/日×30日 = 約$75/月。100件/日なら約$15/月
Jina Reader 無料枠あり1Mトークン、使い切り型
GeminiFlash + Pro 無料枠で完結1日1回の実行なら超過しない
Slack 無料ワークスペースで可

X API 以外は全て無料枠で動きます。X API のコストを抑えたい場合は src/settings.tsmaxTweets を 100〜200 に下げてください。

Jina Reader の無料1Mトークンはアカウントに対する一括付与で、月次リセットされません。枯渇してもツール自体は壊れず、ツイート本文だけで分析を続行します。


セットアップ

準備するもの

  • GitHub アカウント
  • Slack ワークスペース(無料プランで可)
  • Google アカウントGemini API キー取得用)
  • Jina AI アカウント(無料登録)

このツールは GitHub Actions が全自動で実行します。あなたの PC で npm install を実行する必要はありません。

Part A: ツール本体を GitHub に置く

  1. https://github.com/new にアクセス
  2. Repository nameai-news と入力
  3. Private を選択APIキーの設定を含むため、必ず Private にしてください)
  4. 「Add a README file」のチェックは外したままにする
  5. 「Create repository」をクリック

Cursor で AI に以下のように依頼してください:

「このコードを GitHub にpushして。リポジトリは あなたのユーザー名/ai-news です」

Part B: Slack App を作成する

  1. https://api.slack.com/apps にアクセスし「Create New App」をクリック
  2. 「From scratch」を選択し、アプリ名例: AIニュースとワークスペースを設定
  3. 左メニュー「OAuth & Permissions」→ Bot Token Scopes に chat:write を追加
  4. 「Install to Workspace」→ 許可する
  5. 表示される Bot User OAuth Tokenxoxb- で始まる)をコピー
  6. レポートを投稿したいチャンネルにボットを追加(チャンネル設定 → インテグレーション → アプリを追加)
  7. チャンネルの チャンネルID を確認(チャンネル名を右クリック → チャンネル詳細 → 最下部に表示)

GitHub Secrets に登録:

  • SLACK_BOT_TOKEN — Bot User OAuth Tokenxoxb-...
  • SLACK_CHANNEL — チャンネルIDC...

Part C: Gemini API キーを取得する

  1. https://aistudio.google.com/apikey にアクセス
  2. 「Create API Key」をクリック
  3. 表示されたキーをコピー

GitHub Secrets に登録:

  • GEMINI_API_KEY — コピーしたキー

無料枠で動きます。クレジットカードの登録は不要です。

Part D: Jina API キーを取得する

  1. https://jina.ai にアクセスし、アカウントを作成(またはログイン)
  2. ダッシュボードで API キーを確認

GitHub Secrets に登録:

  • JINA_API_KEY — コピーしたキー

無料枠1Mトークンで動きます。個人の学習・ニュース収集用途なら問題ありません。業務利用する場合は Paid プランjina.ai/pricingへの移行が必要です。

Part E: モックルートで初回実行

X API の設定なしで動作確認できます。

  1. リポジトリの「Actions」タブを開く
  2. 左サイドバーから「Daily AI News」をクリック
  3. Run workflow」ボタンをクリック
  4. use_sample_data にチェックを入れる
  5. 緑の「Run workflow」ボタンをクリック

数分後、Slack にサンプルデータによる分析レポートが届きます。

ここまでで「Gemini による分析 → Slack 投稿」の流れが確認できました。以降は本番の X 連携に進みます。


Part F: X Developer アプリを作成する

このツールで一番大変なステップです。 ここを越えれば、あとは動かすだけです。

2026年の X API 料金体系

2026年2月以降、X API は pay-per-use(従量課金)型に移行しました。以前の月額 $200 の Basic プランは新規受付を停止しています。

  • 初期費用なし。クレジットカードを登録して、使った分だけ請求される仕組みです
  • Post Readツイート取得は 1件あたり $0.005

手順

  1. console.x.com にアクセスし、自分の X アカウントでログイン
  2. 開発者規約が表示されたら内容を確認して同意
  3. 左メニューの「クレジット」→「クレジットを購入」で最低 $5 をチャージ
  4. プロジェクト名を入力(例: ai-news)し、ユースケースを選択
  5. アプリケーション名を入力(例: ai-news-2026。世界中で一意の名前が必要)

アプリ情報の入力例Use case の Description:

Personal project to collect AI-related tweets from my timeline and summarize them using Gemini API. The summaries are posted to my private Slack workspace for personal news curation. Non-commercial, personal use only.

  1. 左メニュー「アプリ」→ 作成したアプリを開き、User authentication settingsユーザー認証設定 を入力:

    • アプリの権限: 「読む」を選択(タイムライン取得だけなので読み取り専用で十分)
    • アプリの種類: 「ウェブアプリ、自動化アプリまたはボット」を選択
    • コールバックURI / リダイレクトURL必須: https://example.com(このツールでは使わないが空にできない)
    • ウェブサイトURL必須: https://example.com
    • 「変更を保存する」をクリック
  2. キーとトークン」タブを開く。このタブには4つのセクションが並んでいるが、このツールで使うのは2つだけ

    ┌─ 使う2つ─────────────────────────────────────┐
    │ コンシューマーキー                                 │
    │   → API Key / API Key Secret                      │
    │ OAuth 1.0 キー                                    │
    │   → アクセストークン / アクセストークンシークレット  │
    └──────────────────────────────────────────────────┘
    ┌─ 使わない(触らなくてよい)─────────────────────────┐
    │ ベアラートークン                                   │
    │ OAuth 2.0 クライアントID・シークレット              │
    └──────────────────────────────────────────────────┘
    
    • 「コンシューマーキー」 セクションの「再生成」をクリック → API KeyAPI Key Secret を即メモ
    • 「OAuth 1.0 キー」 セクションの「アクセストークン」の「生成する」をクリック → Access TokenAccess Token Secret を即メモ

どちらも画面を閉じるとキーは二度と表示されません。必ず全4つをコピーしてから次に進んでください。

GitHub Secrets に登録:

  • X_CONSUMER_KEY — 「コンシューマーキー」の API Key
  • X_CONSUMER_SECRET — 「コンシューマーキー」の API Key Secret
  • X_ACCESS_TOKEN — 「OAuth 1.0 キー」のアクセストークン
  • X_ACCESS_TOKEN_SECRET — 「OAuth 1.0 キー」のアクセストークンシークレット

申請が通らない場合や時間がかかる場合は、Part E のモックルートで開発・カスタマイズを進めてください。X 連携は後からいつでも有効にできます。

Part G: 本番ルートで実行

  1. リポジトリの「Actions」タブを開く
  2. Daily AI News」→「Run workflow
  3. use_sample_data のチェックは外したまま実行
  4. Slack に自分のタイムラインからの本物のニュース分析が届く

チェックポイント

  • Slack に AI トレンド分析レポートが届いた
  • レポートに自分がフォローしているアカウントの情報が含まれている

定期実行を有効にする

.github/workflows/daily-news.ymlschedule ブロック2行のコメントを外す:

変更前:

  # schedule:
  #   - cron: '30 22 * * *'  # 毎日 07:30 JST

変更後:

  schedule:
    - cron: '30 22 * * *'  # 毎日 07:30 JST

先頭のスペース(インデント)はそのまま残してください。時刻は UTC で指定します。


テストで動作確認

ツールの核心ロジックが正しく動いているか、テストで確認できます。

npm test

全てのテストが通れば、ツールのロジックは正常です。

設定を変更した後(src/settings.tssrc/analysis/prompts.ts を編集した後)は、npm test を走らせて変更が壊れていないことを確認してください。


カスタマイズ

設定は src/settings.ts に集約されています。

レシピ 1: 分析カテゴリを変える

src/analysis/schema.tstech_trendsdesign_trends にリネームし、src/analysis/prompts.ts のプロンプトも合わせて変更すると、デザイン系トレンドの分析ツールになります。

レシピ 2: 特定キーワードだけ分析する

src/sources/x-timeline.ts の取得後に以下のフィルタを挿入:

const filtered = tweets.filter(t => /GPT|Claude|Gemini/i.test(t.text));

レシピ 3: 複数チャンネルに分けて投稿

src/delivery/slack.tsmain_news#ai-newstech_trends#ai-tech のように section ごとにチャンネルを分けられます。


応用例

4パーツの一部を差し替えると、まったく別のツールになります。

  • ソース元を RSS に差し替える → 毎朝のニュース要約ツール
  • 処理を感情分析に差し替える → 競合の口コミ見張り番
  • 届ける先を Notion に差し替える → 毎朝の社内ニュースDB

セキュリティ

  • リポジトリは Private に: API キーを GitHub Secrets に保存しているため、公開リポジトリにしないでください
  • Slack Bot Token: Bot Token Scopes は chat:write のみに制限してください
  • トークンが漏洩した場合:
    • X: console.x.com → アプリ → キーとトークン → 該当セクションの「再生成」で即時失効
    • Gemini: aistudio.google.com でキーを削除して再発行
    • Slack: api.slack.com でトークンをローテーション

困ったとき

  1. まず AI に聞く: Cursor で「セットアップで〇〇のエラーが出ました」と伝えてください
  2. GitHub Actions のログを確認: Actions タブ → 失敗したジョブ → [USER-FACING] の行を読む
  3. エラー別の対処法: docs/troubleshooting.md に主要なエラーと対処法をまとめています
  4. Slack で相談: ADS Slack の質問チャンネルに投稿してください

技術スタック

項目 選定 理由
実行基盤 GitHub Actions 無料枠で十分、セットアップが簡単
言語 TypeScriptNode.js 22 X API公式SDKがTS対応、型安全
X API twitter-api-v2 OAuth 1.0a対応のデファクト
URL本文取得 Jina Reader LLM最適化されたMarkdown化
AIURL要約 Gemini 2.5 Flash 大量処理に適した軽量モデル
AI最終分析 Gemini 2.5 Pro 高品質な構造化出力
通知 Slack APIBlock Kit 構造化された見やすいレポート