Xのアルゴリズムを
徹底解析する
xAI は、X(旧 Twitter)の「For You」フィードを動かす推薦アルゴリズムを、オープンソースのリポジトリ xai-org/x-algorithmとして公開しています。X の Engineering アカウントは公開時に「xAI の Grok と同じ Transformer アーキテクチャで動く、新しい X のアルゴリズムをオープンソースにした」と説明しました(@XEng の告知)。本記事では、この一次情報であるコードと README を読み解き、フィードがどう組み立てられているかを整理します。
新しい For You アルゴリズムは、フォロー中アカウントの投稿(Thunder)と、機械学習で見つけたフォロー外の投稿(Phoenix Retrieval)を集め、Grok と同じ Transformer をベースにしたモデル(Phoenix Ranking)で並べ替えます。リポジトリには「手作りの特徴量を1つ残らず、そしてほとんどのヒューリスティクス(経験則)を排除した」と明記されており、何を優先するかは人手のルールではなく、利用者の行動から学習したモデルが決めます。本記事では5つのコンポーネントの役割、候補生成とランキングの仕組み、スコアの組み立て方、そして2023年版との違いを一次情報から解析します。
- 参照する一次情報は、公開リポジトリ xai-org/x-algorithm(ライセンスは Apache License 2.0)の README とコードです。
- リポジトリの コミット履歴で確認できるとおり、2026年1月に公開され、2026年5月15日に大きなアップデートが入っています。本記事はこの2026年5月15日時点の内容を基準にしています。仕様は更新で変わるため、最新の挙動は必ず公式リポジトリで確認してください。
- 公開されているのはコードと小規模な事前学習済みモデルで、実際の運用で使われている重みやモデルそのものではありません。重みの具体的な数値より、システムの構造に注目して読み解きます。
01.Xで発信する人が押さえるポイント
X を伸ばしたい人向けに、このアルゴリズムから導ける実用的なポイントを先にまとめます。仕組みの詳しい解説はこのあとの章で扱います。ただし、これはアルゴリズムを操作する近道ではなく、システムの構造から自然に導ける範囲の話です。
X が採点に使う行動は、公開されているコード(weighted_scorer.rs)では次の19項目です。プラスはスコアを上げ、マイナスは下げる方向に働きます。重みの具体的な数値は非公開で、ここで分かるのは「何が採点に使われるか」です。
| 行動 | スコアへの向き | コード上の重み名 |
|---|---|---|
| いいね | プラス | FAVORITE_WEIGHT |
| 返信 | プラス | REPLY_WEIGHT |
| リポスト | プラス | RETWEET_WEIGHT |
| 引用ポスト | プラス | QUOTE_WEIGHT |
| 引用ポストのクリック | プラス | QUOTED_CLICK_WEIGHT |
| 投稿・リンクのクリック | プラス | CLICK_WEIGHT |
| プロフィールへの遷移 | プラス | PROFILE_CLICK_WEIGHT |
| 画像の拡大表示 | プラス | PHOTO_EXPAND_WEIGHT |
| 動画の視聴(一定時間以上) | プラス | VQV_WEIGHT |
| 投稿の滞在時間 | プラス | DWELL_WEIGHT |
| 継続した滞在時間 | プラス | CONT_DWELL_TIME_WEIGHT |
| 共有 | プラス | SHARE_WEIGHT |
| DMで共有 | プラス | SHARE_VIA_DM_WEIGHT |
| リンクをコピーして共有 | プラス | SHARE_VIA_COPY_LINK_WEIGHT |
| 著者をフォロー | プラス | FOLLOW_AUTHOR_WEIGHT |
| 「興味がない」 | マイナス | NOT_INTERESTED_WEIGHT |
| 著者をブロック | マイナス | BLOCK_AUTHOR_WEIGHT |
| 著者をミュート | マイナス | MUTE_AUTHOR_WEIGHT |
| 報告(通報) | マイナス | REPORT_WEIGHT |
15項目がプラス、4項目がマイナスです。ここから、X を伸ばすうえで押さえておきたいポイントを整理します。
新しいアルゴリズムは判断の多くを学習モデルに任せていますが、学習に置き換わっていない過去からの人手のルールも、いまも home-mixer に残っています。主なものは次のとおりで、これらは上の19項目の採点とは別に効いてきます。
- ミュートした語を含む投稿は出さない
- 古すぎる投稿や、同じ内容の重複(リポスト・同じ会話)は除外する
- 同じ著者の投稿ばかりが続かないよう、多様性を調整する
- 短すぎる動画は、動画視聴(VQV)の重みを0にする
- ネガティブな反応は順位を直接下げ得ます。ブロック・報告・「興味がない」が予測対象に入っているため、見た人が嫌がりやすい投稿は、いいねが多少ついても評価が下がる方向に働きます。
- いいね以外の行動も見られています。返信・リポスト・滞在時間・プロフィールへの遷移など、複数の行動が同時に予測されます。1種類の反応だけを狙うより、読んで反応したくなる中身かどうかが効いてきます。
- フォロー外にも届く設計です。フォロー外の投稿も機械学習で見つけて混ぜるため、関心の近い層に届く可能性があります。一方で、同じ著者ばかりが並ばないよう多様性の調整も入ります。
- 短い動画で視聴数だけを稼ぐのは効きにくいです。採点のコードでは、動画が最低再生時間を超えないと、動画視聴の重み(コード上の変数名は
VQV)が0になります。数秒の動画を貼って視聴の信号を稼ぐ、といった操作への備えになっています。 - 課金・認証は公開コードでは加点要因に出てきません。採点に使われる重みはすべてエンゲージメント系の行動で、認証(verified)や Premium を直接ブーストする項目は公開スコアリングコードに見当たりません。ただし重みの数値とモデルが使う入力すべては非公開のため、本番での扱いまでは断定できません。
記事(長文)や画像・動画といった投稿機能についても、同じ見方が当てはまります。「その機能を使うと加点」ではなく、機能が滞在時間・クリック・返信・共有などの行動を実際に引き出した分だけスコアに乗る、という間接的な経路です。採点では滞在時間やクリックも見られているため、読みごたえのある記事がよく読まれれば、こうした反応を経由して評価につながり得ます。
裏を返せば、形式そのものは前提条件にすぎません。誰も読まない長文を置いても滞在やクリックが発生しなければ評価には結びつかず、「続きを読む」のクリックが要る形式は、ひと手間が増えてかえって読まれにくくなることもあります。加えて、X がリーダー表示の滞在をどう計測するかは公開コードからは読み取れません。動画の最低再生時間ゲートのようなゲーミング対策の前例もあるため、滞在やクリックの水増しが素直に効くとは限らない、と見ておくのが安全です。
「この行動の重みはいくつ」という具体的な数値が独り歩きしがちですが、後述のとおり実運用の重みは非公開で、更新でも変わります。特定の数値を前提に投稿の型を最適化するより、ネガティブな反応を招かない、読んだ人が反応したくなる発信を続けるほうが、構造の変化に強い向き合い方です。なぜこう言えるのかは、このあとアルゴリズムの仕組みを読み解きながら説明します。
02.結論:For Youは「Grok系Transformer」へ作り替えられた
2023年に公開された旧来のアルゴリズム(twitter/the-algorithm)は、人手で設計した多数の特徴量とルールを組み合わせる作りでした。これに対し、新しい xai-org/x-algorithm は、何を見せるかの判断を Grok 由来の Transformer モデルに委ねています。X の Engineering アカウントが述べたとおり、ランキングの中核は Grok と同じ Transformer アーキテクチャです(@XEng)。
文章や行動の並びを読み取って「次に何が来そうか・どう反応しそうか」を予測するのが得意な AI の仕組みです。ChatGPT や Grok のような生成 AI の土台にもなっています。X のランキングでは、あなたのこれまでの行動の並びを手がかりに、ある投稿に「いいね・返信・ブロック」などをしそうかを予測するのに使われます。
全体の流れは大きく2段階です。まず膨大な投稿の中から関連しそうな候補を集める「候補生成(リトリーバル)」があり、次にその候補を1つずつ採点して並べる「ランキング」があります。フォロー中の投稿は Thunder が、フォロー外の投稿は Phoenix のリトリーバルが受け持ち、集まった候補を Phoenix のランキングモデルが採点します。
図:For Youフィードが組み立てられる流れ
home-mixer が司令塔となり、候補生成 → 加工 → 絞り込み → スコアリング → 選択の順に処理します。
Thunder(フォロー内)
フォロー中アカウントの最新投稿をインメモリから取り出す
Phoenix Retrieval(フォロー外)
2タワーモデルで膨大な投稿から関連候補を引く
↓ 候補を集約
加工(Hydrate)・絞り込み(Filter)
特徴量の付与、重複・年齢・ミュート語などの除外
↓
Phoenix Ranking(Transformerランカー)
候補ごとに行動の起こりやすさを予測し、重み付き和でスコア化
↓
選択(Select)・広告ブレンド
最終的な並び順を決め、広告を差し込んで返す
03.リポジトリの全体像:5つのコンポーネント
リポジトリは、役割ごとに5つの主要なディレクトリ(コンポーネント)に分かれています。それぞれが「候補を集める」「採点する」「組み立てる」のどこを担うかを押さえると、全体像がつかみやすくなります。
| コンポーネント | 役割 | 担当する工程 |
|---|---|---|
| home-mixer | フィード全体を組み立てる司令塔。候補生成・加工・絞り込み・採点・選択の各段階をつなぐ | オーケストレーション |
| thunder | 最近の投稿をメモリ上に保持し、フォロー中アカウントの投稿を高速に返すストア | フォロー内の候補生成 |
| phoenix | 機械学習の中核。2タワーのリトリーバルと、Transformer のランキングモデルを持つ | フォロー外の候補生成・ランキング |
| grox | 投稿の中身を理解する処理。分類器と埋め込みで、スパム検知・カテゴリ判定・ポリシー適用を行う | コンテンツ理解 |
| candidate-pipeline | 候補処理を組み立てる共通の枠組み。Source・Hydrator・Filter・Scorer・Selector などの部品をそろえる | パイプラインの土台 |
これらの部品は役割ごとに分かれていますが、home-mixer がそれらをつなぎ、1リクエストごとにフィードを組み立てて返します。
04.候補生成:フォロー内(Thunder)とフォロー外(Phoenix)
For You フィードは、フォロー中アカウントの投稿(イン・ネットワーク)と、フォローしていないアカウントの投稿(アウト・オブ・ネットワーク)を混ぜて作られます。前者を Thunder が、後者を Phoenix のリトリーバルが担当します。
Thunder:フォロー中の投稿をインメモリで配る
Thunder は、最近の投稿をメモリ上に保持する投稿ストアです。データベースに毎回問い合わせる代わりにメモリから引くことで、フォロー中アカウントの新しい投稿を素早く取り出せます。投稿の作成・削除はイベントとして流れてきて、ストアの内容が随時更新されます。フォローしている相手の発信を取りこぼさず、できたてを届けるための土台です。
Phoenix Retrieval:2タワーでフォロー外から探す
フォロー外からの発見を担うのが Phoenix のリトリーバルです。ここでは「2タワー(two-tower)」と呼ばれる構造を使います。ユーザー側の情報と行動履歴を Transformer で1本のベクトル(埋め込み)にまとめ、投稿側も同じ空間のベクトルに変換しておきます。そのうえで、2つのベクトルの類似度(内積、または正規化したコサイン類似度)が大きい投稿を上位から取り出します。内積はベクトルの大きさにも左右されるため、厳密な「近さ」を測るときは正規化したコサイン類似度を使います。膨大な投稿の全部を1件ずつ採点するのは現実的でないため、まず近いものだけを数百件規模に絞り込む役割です。
図:Phoenix Retrieval の2タワー構造
ユーザー側と投稿側を別々にベクトル化し、類似度(内積/コサイン類似度)で候補を引きます。
ユーザータワー
ユーザーの特徴と行動履歴を Transformer で1本のベクトル(埋め込み)にまとめる
投稿(候補)タワー
各投稿を同じ空間のベクトルに変換し、あらかじめ索引にしておく
↓ 2つのベクトルの類似度(内積/コサイン類似度)が大きいものを上位から取り出す
近傍探索でフォロー外の候補を数百件まで絞る
ベクトルの「近さ」で関連度を測る考え方は、推薦や検索で広く使われています。内積やコサイン類似度といった距離の指標そのものは、別記事で基礎から整理しています。
類似度・距離の指標と使い分け|コサイン類似度・ユークリッド距離・ジャッカード係数
Phoenix のリトリーバルが使う「ベクトルの近さ」を、コサイン類似度や内積などの指標から基礎的に解説しています。
05.ランキング:Transformerと「候補同士を見ない」設計
候補が集まったら、Phoenix のランキングモデルが1件ずつ採点します。このモデルは Grok と同じ Transformer をベースにしており、ユーザーの行動履歴を手がかりに「この人はこの投稿に対してどんな反応をしそうか」を予測します。
マルチアクション予測:好意的な行動とネガティブな行動
ランキングモデルは、1つの投稿に対して複数の行動の起こりやすさを同時に予測します。好意的な行動だけでなく、見たくないという意思表示までを含めて予測するのが特徴です。公開されているミニモデルでは、こうした行動が19種類に分かれています。
| 分類 | 予測する行動の例 |
|---|---|
| 好意的な行動 | いいね、返信、リポスト、引用、クリック、プロフィールへの遷移、動画視聴、フォロー、共有 など |
| 滞在の質 | 投稿に留まって読む時間(ドウェル)、動画を一定時間見るか など |
| ネガティブな行動 | 「興味がない」、ミュート、ブロック、報告 など |
ネガティブな行動を予測対象に含めている点が重要です。短期的にクリックされやすいかだけでなく、その投稿を見せると「ブロックされそう」「報告されそう」かまで見積もり、後段のスコアでそれを差し引けるようにしています。
スコア式:予測確率の重み付き和
予測した行動それぞれの確率に重みを掛けて足し合わせ、1つのスコアにまとめます。考え方は 最終スコア = Σ ( weight_i × P(action_i) ) で、実際の計算は home-mixer のスコアラー(home-mixer/scorers/weighted_scorer.rs)にあります。コードでは、行動ごとの予測スコアに名前付きの重みを掛けて足し上げます。
// home-mixer/scorers/weighted_scorer.rs の考え方
最終スコア =
apply(favorite_score, FAVORITE_WEIGHT)
+ apply(reply_score, REPLY_WEIGHT)
+ apply(retweet_score, RETWEET_WEIGHT)
+ ... // 好意的な行動(全19信号)
+ apply(not_interested_score, NOT_INTERESTED_WEIGHT) // 負の重み
+ apply(block_score, BLOCK_AUTHOR_WEIGHT) // 負の重み
+ apply(report_score, REPORT_WEIGHT) // 負の重み
// 各 *_WEIGHT の数値は params モジュールにあり、公開対象から外れている好意的な行動には正の重み、ネガティブな行動には負の重みが置かれます。これにより、反応されやすい投稿は上がり、嫌われそうな投稿は下がります。ここで押さえたいのは、個々の数値より「複数の行動予測を重み付きで足し合わせて1つの順位に落とす」という構造です。各行動の予測確率を評価する考え方は、予測モデルの評価指標の記事でも扱っています。
スコアを計算する weighted_scorer.rs には、FAVORITE_WEIGHT・REPLY_WEIGHT・BLOCK_AUTHOR_WEIGHT・REPORT_WEIGHT など19種類の重みの名前と、それらを掛けて足し合わせる構造が書かれています(xai-org/x-algorithm: weighted_scorer.rs)。ただし、重みの数値そのものを定義する params モジュールは公開対象から外れています。「いいねは何点、ブロックは何点」といった具体的な数値は公開されていないため、本記事でも数値は断定しません。
予測モデル評価の指標と使い分け|分類のF1・回帰のRMSE・相関のPearson
ランキングモデルが出す「行動が起こる確率」の良し悪しを、どんな指標で測るかを基礎から整理しています。
候補の独立性と著者の多様性
Phoenix のランカーには、特徴的なアテンションの制約があります。各候補は、ユーザーの情報と行動履歴、そして自分自身の特徴量は参照できますが、同時に並んでいるほかの候補へのアテンションはマスクされています。Phoenix の README でも、候補同士はお互いを参照できないと説明されています(phoenix/README.md)。
図:候補同士を見せないアテンション設計
各候補はユーザーと履歴は参照できますが、ほかの候補は参照できません。
↓ すべての候補がここを参照できる
候補 A・B・C はお互いを参照しない(各候補が見るのはユーザー文脈と自分の特徴量だけ)
この制約により、同じユーザー・同じ投稿なら、ほかにどんな候補が並んでいてもスコアが変わりません。結果を使い回せるため、計算量を抑えやすくなります。
この制約には実利があります。同じユーザー・同じ投稿であれば、ほかにどんな候補が並んでいてもスコアが変わらないため、採点結果を使い回せます。バッチの組み方でスコアがぶれない、一貫した採点になるわけです。
一方で、同じ著者の投稿ばかりが上位を占めると、フィードが単調になります。そこで home-mixer には、同じ著者の投稿が繰り返し現れたときにスコアを弱める「著者の多様性」の処理が入っています。1人の発信に偏らせず、フィードに幅を持たせるための仕組みです。
06.フィルタリング・選択・広告ブレンド
候補は採点の前後で絞り込まれます。採点前のフィルタには、重複の除去、古すぎる投稿の除外、自分の投稿の除外、同じ内容のリポストの統合、ミュートしたキーワードを含む投稿の除外などがあります。採点後にも、表示してよいかの確認や、同じ会話の重複をまとめる処理が入ります。
- 採点前のフィルタ:重複・年齢(古さ)・自分の投稿・リポスト重複・ミュート語などで、採点する前に候補を減らします。
- 採点後のフィルタ:表示可否の確認や、同じ会話の重複統合など、最終的な並びを整えます。
絞り込みを終えた候補から、最終的に表示するものを選ぶのが「選択(Select)」です。home-mixer には広告をブレンドする仕組みと、ブランドの安全性を追跡する処理も含まれ、通常の投稿に広告を差し込んでフィードを返します。
07.Grox:コンテンツ理解(スパム検知・分類・ポリシー)
grox は、投稿そのものの中身を理解するためのコンポーネントです。分類器と埋め込みを使い、スパムの検知、投稿のカテゴリ分け、ポリシー(運用ルール)の適用を担います。ランキングが「誰がどう反応しそうか」を見るのに対し、grox は「この投稿は何で、安全か」を見る役割です。スパムや規約に触れる投稿を見分け、フィードに出す前の判断材料を提供します。
公開リポジトリの2026年5月15日アップデートの記録によると、このコンテンツ理解(content understanding)の部品は、広告のブレンドなどと合わせてこのときに加わったとされています(コミット履歴)。フィードの安全性や品質を支える層として位置づけられています。
08.2023年版との違い:手作りの特徴量から学習へ
新旧の最大の違いは、何が順位を決めるかという考え方です。2023年に公開された twitter/the-algorithmは、コミュニティを見つける SimClusters、リアルタイムの関係グラフをたどる GraphJet、検索インデックスの Light Ranker、そして候補を採点する Heavy Ranker(ニューラルネットワーク)といった、役割の違う部品の組み合わせでした(X Engineering: Twitter's Recommendation Algorithm(2023))。
当時の twitter/the-algorithmのコードには、行動ごとの重みが定数として書き込まれていました。返信は「いいね」よりはるかに大きく重みづけされ、ブロックや報告のようなネガティブな行動には大きな負の重みが置かれる、といった具合です。何を重視するかを人手のルールと数値で決めていたわけです。SimClusters のように、似た関心を持つ人の集まり(コミュニティ)を見つける発想は、教師なしのクラスタリングと地続きです。
ここで挙げた「返信が重い」「報告は大きく下げる」といった具体的な重みは、2023年の旧コード(twitter/the-algorithm)に書かれていた数値です。新しい xai-org/x-algorithm では重みの数値は非公開で、しかも何を重視するかは固定の定数ではなく、利用者の行動から学習して決まります。旧コードの数値をそのまま今の X の攻略法として持ち込まないでください。本記事でも、新コードの解析(コンポーネント・候補生成・ランキング・発信者向けのポイント)と、本章で比較のために触れる旧コードの話は、別のものとして読んでください。
クラスタリング・顧客セグメンテーションの基礎|k-means・階層クラスタリング・RFM分析
2023年版が使っていた SimClusters のような「似た者どうしの集まりを見つける」考え方を、クラスタリングの基礎から整理しています。
新しい xai-org/x-algorithm は、この作りを大きく変えました。リポジトリには「手作りの特徴量を1つ残らず、そしてほとんどのヒューリスティクスを排除した」と書かれています。何を見せるかは、人手で組んだ特徴量やルールではなく、利用者の行動の並びから Transformer が学習して決めます。重みは依然としてスコアの調整に使われますが、入力となる特徴量を人が設計する部分が大幅に減ったのが本質的な変化です。
2023年版(twitter/the-algorithm)
- SimClusters・GraphJet・Light/Heavy Ranker の組み合わせ
- 人手で設計した特徴量とルールが多い
- 行動ごとの重みを定数で持つ
新版(xai-org/x-algorithm)
- Phoenix の2タワー+Transformerランカーに集約
- 手作りの特徴量を全廃し、行動の並びから学習
- 候補同士を見ないアテンションで採点を安定化
どちらが優れているかという話ではなく、設計思想が違います。2023年版は部品ごとに役割が見え、ルールを追いやすい一方で、調整が人手に依存しました。新版はモデルに判断を寄せることで運用を単純にしましたが、なぜその順位になったかは重みの一覧だけでは読み切れません。透明性の意味合いも変わっています。
原文は「手作りの特徴量を1つ残らず、そしてほとんどのヒューリスティクスを排除した」です。特徴量は全廃ですが、ルール(ヒューリスティクス)は「ほとんど」であって、すべてではありません。実際、ミュート語・古さ・重複などのフィルタ、著者の多様性の調整、動画が短すぎると視聴の重みを0にする処理といったルールは、いまも home-mixer に残っています。判断の大半をモデルに寄せつつ、安全装置やゲーミング対策は人手のルールで残す、という設計です。
旧来の部品という観点では、2023年版を構成していた SimClusters・GraphJet・Light/Heavy Ranker は新版のリポジトリに含まれておらず、候補生成は Thunder と Phoenix のリトリーバルに、ランキングは Phoenix の Transformer に置き換わりました。ただし、公開されているのは本番システムの代表的な実装で、重みの数値(params)や一部の処理は含まれていません。X は Grok ベースへの全面的な置き換えと説明していますが、公開コードだけから本番の隅々まで確認できるわけではない点には注意が必要です。
09.コードを動かす:パイプラインと事前学習ミニモデル
このリポジトリは、読むだけでなく実際に動かせるように作られています。公開リポジトリの記録によると、2026年5月15日のアップデートで、リトリーバルからランキングまでを一気に通す入口 phoenix/run_pipeline.py が加わりました(コミット履歴)。それまで別々だったリトリーバルとランキングの実行を、1つの入口にまとめたものです。
あわせて、小規模な事前学習済みの Phoenix モデル(ミニモデル)が配布されています。Phoenix の README によると、このミニモデルは約3GB のアーカイブとして Git LFS で配布され、埋め込みの次元やレイヤー数を抑えた小さな構成です(phoenix/README.md)。同じく README によると、デモ用には約6時間ぶんのスポーツ関連の投稿 ID(約53.7万件)が同梱されており、パイプラインがどう候補を引いて並べるかを手元で試せます。
手元で動かせるのは「仕組みを再現して理解するため」で、自分のツイートが伸びるかを投稿前にシミュレーションする用途には使えません。配布されているのは小さなミニモデルとデモ用のデータで、実運用のモデル・本番の重み・実際の投稿データのいずれもそろわないからです。さらにランキングは見る人それぞれの行動履歴や、その時の候補の顔ぶれに左右されるため、特定の投稿の表示順を手元で再現することはできません。あくまでパイプラインの流れを追うための教材で、メソッド名や構成も更新で変わります。手元で動かすときは参照しているコミットの README に従ってください。
Transformer やトークン、埋め込みといった、モデルの土台になる用語そのものに不安がある場合は、基礎を別記事で整理しています。
LLM(大規模言語モデル)とは|学習・トークン・コンテキストウィンドウ・推論の仕組み
Phoenix の中核である Transformer や埋め込み・推論といった用語を、基礎から押さえられます。
10.よくある質問(FAQ)
xai-org/x-algorithm とは何ですか?
X(旧 Twitter)の「For You」フィードを動かす推薦アルゴリズムを、xAI がオープンソースとして公開した リポジトリです。フォロー中の投稿(Thunder)とフォロー外の投稿(Phoenix のリトリーバル)を集め、Grok と同じ Transformer をベースにしたランキングモデルで並べ替える構成です。
2023年に公開された twitter/the-algorithm と何が違いますか?
最大の違いは、何が順位を決めるかです。2023年版は SimClusters・GraphJet・Light/Heavy Ranker といった部品の組み合わせと、人手で設計した特徴量・ルールに依存していました。新版は Phoenix の2タワーと Transformer ランカーに集約されています。リポジトリには「手作りの特徴量を1つ残らず、ほとんどのヒューリスティクスを排除した」と明記され、判断を学習モデルに寄せています。
ブロックや報告は順位に影響しますか?
影響します。ランキングモデルは、いいね・返信・リポストのような好意的な行動だけでなく、ブロック・報告・「興味がない」といったネガティブな行動の起こりやすさも同時に予測します。スコアは予測確率の重み付き和で、好意的な行動には正の重み、ネガティブな行動には負の重みが置かれるため、見た人が嫌がりやすい投稿は順位が下がる方向に働きます。
公開されている重みの数値を信じてよいですか?
そのまま実運用の値と考えないほうが安全です。公開されているのは小規模な事前学習済みミニモデルとデモ用データで、実際に運用されているモデルや本番の重みではありません。重みは調整の対象で、更新でも変わります。特定の数値を前提に投稿を最適化するより、システムの構造(複数の行動を重み付きで足し合わせて並べる、ネガティブな反応は下げる)を理解するほうが役立ちます。
手元でコードを動かせますか?
動かせます。2026年5月15日のアップデートで、リトリーバルからランキングまでを通す入口 phoenix/run_pipeline.py が加わりました。Phoenix の READMEによると、約3GB の事前学習済みミニモデルが Git LFS で配布され、約6時間ぶんのスポーツ関連投稿(約53.7万件)のデモデータで挙動を試せます。ただし、これは仕組みを理解するための教材で、自分のツイートが伸びるかを事前に判定するシミュレーターではありません。本番のモデル・重み・実データがそろわず、ランキングは見る人ごとの行動履歴やその時の候補の顔ぶれにも左右されるためです。構成やメソッド名も更新で変わるため、参照しているコミットの README に従ってください。
X Premium(課金)や認証だと表示されやすくなりますか?
公開されているスコアリングコードを見るかぎり、課金や認証を直接の加点要因にする記述は見当たりません。採点に使われる19の重みは、いいね・返信・リポスト・滞在時間・ブロック・報告などのエンゲージメント系の行動で、認証や Premium をブーストする項目はそこに含まれていません。ただし重みの数値(params)やモデルが使う入力すべては非公開のため、本番でまったく使われていないとまでは断定できません。なお、課金者限定の投稿を見られるかという「アクセス可否」は、順位のブーストとは別の話です。
旧アルゴリズムは完全になくなったのですか?
リポジトリには「手作りの特徴量を1つ残らず、ほとんどのヒューリスティクスを排除した」とあります。特徴量は全廃ですが、ルール(ヒューリスティクス)は「ほとんど」であって、すべてではありません。ミュート語・古さ・重複のフィルタ、著者の多様性、動画の最低再生時間ゲートなどのルールは今も残っています。2023年版を構成していた SimClusters・GraphJet・Light/Heavy Ranker は新版のリポジトリには含まれず、候補生成と採点は Thunder と Phoenix に置き換わりました。ただし公開コードは本番システムの代表的な実装で、その全部ではない点には注意してください。
11.まとめ
xai-org/x-algorithm は、X の For You フィードを動かす推薦システムを、Grok と同じ Transformer をベースにした作りへ書き換えたものです。フォロー中の投稿は Thunder、フォロー外は Phoenix のリトリーバルが集め、Phoenix のランキングモデルが複数の行動予測を重み付きで足し合わせて並べます。候補同士を見ないアテンションで採点を安定させ、著者の多様性やフィルタ、grox によるコンテンツ理解で品質を整える構成です。
2023年版との一番の違いは、手作りの特徴量とルールを排し、判断を学習モデルに寄せたことです。重みの数値そのものより、この構造の変化を押さえることが、X のフィードを理解する出発点になります。仕様は更新され続けるため、最新の挙動は必ず公式リポジトリで確認してください。
推薦・ランキングの仕組みを自社のデータ活用にどう取り込むか、一緒に整理しませんか
モデルに任せる範囲と人が決める範囲の線引き、評価指標の置き方、検証の土台づくりまで、Cryptul が現場で使える型に落とし込みます。
メディア運用・コンテンツ制作 基礎知識集
一覧に戻る →戦略・全体設計
CMS選定
外注・制作体制
LPO・コンバージョン改善
法務・コンプライアンス
SNS運用の基礎知識
- ›Xのアルゴリズムを徹底解析する(この記事)

