Skip to main content

APIでTwitterの競合を分析する

Sorsa APIを使い、X(旧Twitter)の競合を分析する一連の手順を説明します。プロフィール比較、コンテンツ戦略の分類、オーディエンス構成、世間の反応、シェア・オブ・ボイスを扱います。各段階に対応するエンドポイントがあり、まとめて定期実行の週次レポートにできます。 すべての例はPython 3.8以降とrequestsを使います。各コードのYOUR_API_KEYを実際のキーに置き換えてください。すべてのヘルパー関数を含む統合スクリプトはページ下部にあります。
無料で開始: ここで使う全エンドポイントを、最初の無料100リクエストで試せます。付与は1回限り、カード不要、有効期限なしです。取得ページ数を少なくすれば、プランを選ぶ前に全体を試せます。
注: 戦略的な背景と実例を含む解説は、ブログのTwitterの競合分析:開発者向けガイドを参照してください。
コードなしで比較: プロフィール比較ツールでは、任意の2アカウントのフォロワー数、エンゲージメント率、1投稿あたりの平均「いいね」・リツイート数、投稿頻度、アカウント年齢を比較できます。エンゲージメント計算ツールでは、1アカウントの投稿ごとのエンゲージメント率を計算できます。

準備

すべてのリクエストはApiKeyヘッダーで認証します。詳細は認証を参照してください。

段階1:プロフィールの比較

エンドポイント: GET /v3/infoGET /v3/info-batch フォロワー数、投稿数、アカウント年齢、自己紹介、認証状態の基準値を取得します。/info-batchなら、割り当て量1リクエストで最大100プロフィールを取得できます。

スナップショットの取得

時間の経過に伴う成長を追跡する

1回の記録は基準値になりますが、成長の測定には少なくとも2回の日付付きの記録が必要です。cronやGitHub Actionsなどで毎日・毎週記録し、差分を計算します。
このヘルパーは、最新の記録と、指定した基準日時以前で最も新しい記録を比較します。不定期の記録では実際の間隔がdaysより長くなる場合があるため、正確に合わせたい場合は毎日記録します。本番の履歴にはユーザー名とともにIDも保存し、名前の変更で同一アカウントの記録が分かれないようにしてください。 成長率の計算式:

自己紹介と訴求内容の変化

/infodescriptionlocationbio_urlscreated_atを返します。記録間の差分を取ると、追加コストなしで自己紹介やリンク先の変更など、訴求内容の変化を検出できます。

段階2:コンテンツ戦略

エンドポイント: POST /v3/user-tweetsPOST /v3/search-tweets 競合の最近の投稿を取得し、オリジナル、返信、引用、リツイートの構成、平均エンゲージメント、反応の良い投稿を分析します。

最近のツイートを取得する

/user-tweetsは1ページ最大20ツイートです。公式X APIのタイムラインと異なり、3,200件の固定上限がないため、さらに古い履歴までページをたどれます。大きくさかのぼる場合は、後述の/search-tweetssince:until:の組み合わせがより確実です。

投稿内容の構成を分類する

カテゴリーは重なります(メディア付き投稿はオリジナル投稿でもあるなど)。割合はそれぞれ独立しており、合計100%になる内訳ではありません。

過去の期間を比較する

同じアカウントの第1四半期と第4四半期などを比較するには、/user-tweetsから/search-tweetsへ切り替え、since:until:を使います。構文は検索演算子、過去の補完方法は過去のデータを参照してください。

段階3:オーディエンス構成

エンドポイント: GET /v3/followersGET /v3/verified-followersGET /v3/followers-stats フォロワー一覧から競合のオーディエンスを把握します。主に2つの方法があり、費用が異なります。

認証済みフォロワー(低コスト)

/verified-followersは、対象をフォローする認証済みアカウントだけを返します。注目度の高い層を抽出でき、全フォロワーを取得するより大幅に低コストです。
記録間の差分を取り、各競合の新しい有力フォロワーを検出します。ジャーナリストによるフォローが記事掲載の2〜4週間前に起きることもよくあります。

全フォロワーの取得(高コスト)

/followersは1ページ最大200プロフィールです。100万フォロワーなら全件取得は約5,000リクエストになります。料金の上限と、API利用の最適化のバッチ・予算設計を参考に計画してください。

オーディエンスの重複

2アカウントのフォロワーを取得したら、ユーザーIDの集合の積で重複を求めます。
取得パターンの詳細はフォロワーとフォロー中ユーザーを参照してください。

暗号資産・Web3のフォロワー内訳

Sorsaの暗号資産データベースにあるアカウントでは、/followers-statsがインフルエンサー、プロジェクト、VCの分類を返します。詳細はSorsa Scoreと暗号資産分析を参照してください。
件数には、すでにSorsaの暗号資産データベースで追跡しているアカウントのみが含まれます。

段階4:世間の反応とメンション

エンドポイント: POST /v3/mentions /mentionsは、「いいね」、リツイート、返信の最小数と期間で絞り込めます。min_likesで、ボットの返信や自動タグなどのノイズを減らせます。全フィルターはメンションの追跡を参照してください。

反応の多いメンションを取得する

VADERで感情を分類する

VADERはソーシャルメディアの文章向けに調整されたオープンソースの感情分析ライブラリです。ローカルで動き、呼び出しごとの料金はなく、否定、強調、絵文字にも比較的よく対応します。
皮肉、技術的な不満、複雑な感情をより正確に扱うには、full_textをOpenAIやAnthropicなどのLLM APIに渡します。VADERで絞り、要確認または反応の多い投稿だけをLLMへ送る方法なら、費用を予測しやすくできます。

段階5:シェア・オブ・ボイス

シェア・オブ・ボイス(SOV)は、カテゴリー全体の言及数に対する1ブランドの割合です。計算式:
実装:
注意点:
  • 最低エンゲージメント(min_likes=5など)で絞り、ボットやスパムのノイズを減らします。
  • 絶対値のスナップショットより前週比を追ってください。カテゴリー全体の出来事で絶対値が変動し、自社の変化が見えにくくなるためです。
  • 件数はmax_pagesで制限され、取得した標本の値です。比較には同じ期間と条件を使い、全ブランドで最後のページまで取得できたか確認します。そうでなければ、標本によるレポートと明記してください。
  • ブランドへの言及ではなく「embedded finance」などカテゴリーキーワードのSOVを求めるには、/mentions/search-tweetsに替え、分母の検索条件にキーワードを使います。

統合した週次レポートのスクリプト

5段階を組み合わせたスクリプトです。cron、GitHub Actionsのスケジュール、任意のタスク実行基盤で使えます。
デフォルトのページ数では、競合3社の全体実行でおよそ100リクエストです。メンションの多いブランドで先のページまで進むと少し増え、そうでなければ少なくなります。毎週実行しても月間数百件で、Starter(月間10,000件)に十分収まります。無料100リクエストでは、1〜2社を少ないページ数で試してからプランを選べます。詳細は料金を参照してください。

次のステップ