コンテンツにスキップ
Documents for MorningStatusApp
Esc
移動開く⌘Jプレビュー
このページの内容

調査レポート: X投稿からモーニング女学院放送データを取得する方法 (#918)

概要

X(旧Twitter)アカウント @morning1422 の投稿から、モーニング女学院の放送データ(放送日・出演者・オンエア楽曲)を収集するための方法を調査した。


調査結果

1. X API v2 の利用可否

項目 内容
Free tier 廃止(2026年2月以降、新規開発者向け)
Pay-per-use 投稿読み取り $0.005/件、月間200万件上限
Basic $200/月(過去7日間の検索が可能)
Pro $5,000/月(全過去データの検索が可能)

結論: X公式APIはコスト面で非推奨。

過去放送回データの遡及取得には Pro プランが必要であり、月$5,000は過大投資となる。

2. RapidAPI 等サードパーティ経由の代替手段

RapidAPI に複数の X/Twitter スクレイパーが存在する。既存の TikTok 収集(tiktok-scraper7.p.rapidapi.com)と同一の実装パターンで利用可能。

サービス 特徴
twitter-scraper2 (microworlds) 無料プランあり、最も汎用的
twitter-crawler (theleaks) 別の選択肢
Old Bird V2 月100万ツイートで$179.99、旧Twitter APIを模倣

推奨: twitter-scraper2 を RapidAPI 経由で利用する(無料プランで検証後に判断)。

TikTok収集スクリプト(scripts/collect-tiktok-posts.ts)との共通化が可能。 RAPIDAPI_KEY は既存のSecret(RAPIDAPI_KEY)を流用できる。

3. @morning1422 のツイートフォーマット

X APIが402 Payment Requiredを返すため、直接ツイート全文を確認できなかった。 検索スニペットから確認できたフォーマット:

  • メンバー告知ツイート(放送前):
    🔔今夜のメンバー告知🔔
    #ラジオ日本「モーニング娘。'24のモーニング女学院」土曜深夜0時‼️
    12月21日(土)は #牧野真莉愛 さん #北川莉央 さん #山﨑愛生 さんの3人出席
    (日直は牧野さん)
    #morning1422 #morningmusume24 #モーニング娘24
  • エンディングツイート(放送後):
    🔔ラジオ日本「モーニング娘。'26のモーニング女学院」今週の放送も、あっという間にエンディングのお時間です🔔☆
    #morning1422 #morningmusume26 #うちでモー女 #モーニング娘26 #野中美希 #井上春華

楽曲情報を含む投稿パターン(「今週の1曲目:〇〇」など)は検索スニペットでは確認できなかった。 まず RapidAPI で実際のツイート一覧を取得し、楽曲投稿のフォーマットを確認することが必要。

4. 投稿テキストの解析方法

楽曲告知ツイートのフォーマット確認後に設計するが、以下のパターンが想定される:

  • 正規表現: 今週の(\d+)曲目:(.+?)/(.+?)(?:\n|$) のような形式
  • ハッシュタグからメンバー特定: #メンバー名memberId に変換
  • 日直: 「日直は〇〇さん」→ RadioMember.isDayDuty = true にマッピング

フォーマットの一貫性が低い場合は LLM(Claude API)による構造化抽出も検討する。

5. 既存スキーマとの整合性

スキーマ 対応 備考
RadioEpisode ✅ 対応可能 showId に morning1422 を使用
RadioMember (isDayDuty) ✅ 対応可能 日直情報を格納
RadioOnairSong ✅ 対応可能 songTitle, trackOrder で管理

現行スキーマの拡張は不要と判断。楽曲のアーティスト名はモーニング娘。楽曲であれば trackId での紐付けが可能。


推奨収集手法

RapidAPI の Twitter スクレイパー(twitter-scraper2)を使用する。

選定理由

  1. 既存の TikTok 収集(scripts/collect-tiktok-posts.ts)と同一のパターンで実装可能
  2. 既存の RAPIDAPI_KEY Secret を共有できる
  3. 無料プランで検証から開始できる
  4. X公式APIと比較してコストが大幅に低い

実装方針

collect-onair-data-morning.ts
  → RapidAPI でアカウントの最新ツイートを取得
  → ツイートテキストを正規表現でパース
  → RadioEpisode / RadioMember / RadioOnairSong に格納
  → GitHub Actions で毎週土曜深夜に実行

制約・リスク

  • RapidAPI のサービス変更・廃止リスクあり(TikTok収集と同様)
  • ツイートフォーマットが変更された場合にパース処理の修正が必要
  • 楽曲情報がツイートに含まれていない場合は別途収集手段を検討

後続Issueの進め方

  1. まずRapidAPIで実際のツイートを取得し、楽曲投稿フォーマットを確認する
    • twitter-scraper2 の無料プランで @morning1422 の投稿を取得
    • 楽曲告知ツイートの形式を把握する
  2. #920 データ設計書: 取得可能なフィールドとスキーママッピングを文書化
  3. #921 実装: スクリプト + GitHub Actions ワークフロー作成

このページは役に立ちましたか?