Developer Note

取得・集計ロジック

ユーザー向けマニュアルから外した実装寄りのメモです。秘密情報やトークンは記載しません。

X API Full-Archive Search / Counts の取得式

過去ヒット分析では、X API v2 Full-Archive Search と Full-Archive Counts を使います。Bearer TokenはSecret Managerから読み込み、ページやログには出しません。

対象 現在の考え方
テーマ テーマ名、productMatchTerms、tagsを最大5語まで使い、OR条件で広めに取得。日本語投稿に限定し、リポストを除外。 ("カヌレ" OR "半熟カヌレ" OR "生カヌレ") lang:ja -is:retweet
商品 商品名、ブランド名+商品名、メーカー名+商品名、主要語句セットを最大4クエリまで試す。先に投稿数または投稿サンプルが取れた条件を採用。 ("ローソン バスチー" OR "バスチー") lang:ja -is:retweet
長い商品名 完全一致だけでは拾えないため、主要語句を抽出して複数語のAND寄り条件を試す。 ("エゾシカ" "熟成舞茸" "赤ワイン") lang:ja -is:retweet

投稿サンプルの選び方

X API Searchの返却データから public_metrics を読み、反応が大きい投稿だけに偏らないよう複数の観点で混ぜています。

割合 目的
高反応の通常投稿 約35% 生活者に強く反応された投稿を残す。
初期投稿 約25% 流行の立ち上がりを確認する。
最近の通常投稿 約25% 現在も話題が残っているかを見る。
低〜中反応の通常投稿 約10% 反応が強い投稿だけに偏らないようにする。
キャンペーン投稿 約5% 販促反応との比較用に残す。

Rakko Keyword API の取得式

  • Rakko Keyword APIのサジェスト、関連キーワード、Q&A取得を使う。
  • 商品は、ブランド名+商品名、商品名、主要語句セット、テーマ名+主要語句を候補にする。
  • テーマは、テーマ名を中心にサジェスト、関連語、Q&Aを取得する。
  • サジェストモードは現在 google,youtube,amazon,rakuten を使う。
  • 比較・検討ワードは、比較、違い、おすすめ、口コミ、評判、どこで売ってる、価格、使い方、レシピなどの意図語で判定する。
  • 検索ボリュームが0でも、比較・検討ワードが取れた場合は「検討の兆し」として保持する。

Trend Intelligence Metadata MVP

予測ラボ用の成功要因メタデータは、まず既存のトレンドアーカイブを壊さずに別ファイルへ構造化します。X API、Rakko Keyword API、Cloud Scheduler、BigQuery書き込みはこの処理では実行しません。

項目 内容 保存先
実行コマンド npm run archive:build-intelligence -- --fetch-sources=true --theme-limit=5 --product-limit=20 最初は5テーマ・20商品だけURLメタデータをテスト取得する。
全量メタデータ trend_themestrend_productstrend_sourcestrend_metricstrend_scorestrend_evidencetrend_reviews を保存する。 data/generated/trend-intelligence-metadata.json。本番ページには直接読ませない。
表示用サマリー 予測ラボとトレンドアーカイブ画面で使う軽量版。テーマ、上位特徴量、類似候補、レビュー待ちを絞って持つ。 data/generated/trend-intelligence-summary-data.js
レビューキュー 公式情報不足、価格・発売日不明、根拠弱いスコア、外部反応未取得などを人間レビュー待ちとして出す。 data/generated/trend-intelligence-review-queue.csv
収集ログ 参照元URLの取得成功/失敗、HTTPステータス、失敗理由、取得日時を残す。 data/generated/trend-intelligence-collection-log.json
成功済みURL固定キャッシュ 一度取得できた参照元URLのタイトル、説明、画像、抽出フィールドを固定する。再実行時は成功済みURLを再取得せず、失敗・欠損だけを処理する。 data/generated/trend-intelligence-source-cache.json
代替URL 旧URL、移転、404、アクセス遮断で取得できない参照元だけ、公式現行URLや公開リリースなどの代替URLを明示して取得する。代替理由も保存する。 data/generated/trend-intelligence-source-replacements.json
外部補助値 npm run archive:enrich-secondary で、公式・既存メタデータが空欄の項目だけを公開補助ソースから探す。成功済みの値は上書きしない。App Storeの公開検索結果は価格・発売日・販売元の補助候補に使い、EC検索価格は公式価格ではなく external_market_price として分けて保存する。 data/generated/trend-intelligence-secondary-facts.jsontrend-intelligence-secondary-cache.jsontrend-intelligence-secondary-quality-report.json
公開検索ワード計画 node scripts/build-trend-intelligence-search-plan.mjs で、残欠損の商品・サービスごとに完全一致、分解一致、ソース寄せの複数検索語を作る。店舗・時期・サイズ差は caveat に残し、近い商品やシリーズと混同しそうな場合は user_confirmation_required として候補反映前に止める。 data/generated/trend-intelligence-public-search-plan.jsontrend-intelligence-public-search-plan.mdtrend-intelligence-user-confirmation-required-20260626.json
欠損分類 npm run archive:classify-missing で、残っている価格・発売日・ブランド/会社名の欠損を分類する。単純に埋めるべき欠損、サービスやテーマ粒度で項目概念が薄いもの、外部EC価格を参考値として持つものを分ける。 data/generated/trend-intelligence-missing-review-classification.csv.json.md

現在の取得上限

対象 上限 備考
アーカイブ商品 最大500投稿 / 商品 高精度分析用。429が出たら保存済み地点から再開する。
アーカイブテーマ 最大300投稿 / テーマ 大テーマは投稿数が大きく出るため、後から細テーマ化を検討する。
Rakko Keyword API 候補語・関連語・Q&Aを各キーワードで取得 クレジット消費があるため、手動実行はユーザー承認後に行う。

運用注意

  • 開発中にCloud Scheduler、通常市場収集、X API、Rakko Keyword API、YouTube Data API、Social Insight、BigQuery load、メール送信を勝手に実行しない。
  • ユーザーが明示的に承認した場合だけ、有料APIやクレジット消費のある処理を実行する。
  • Secret Managerの値、Bearer Token、APIキーは画面・チャット・ファイルに再掲しない。
  • UIやマニュアルの変更だけなら、収集ジョブは動かさず、生成済みデータと公開ファイルで確認する。