Xアルゴリズムの仕組み:公開ソースコードの重みを全部読んでみた(10月27日の変更まで)
:::note info
本記事には筆者が開発に関わっているサービス(GetXAPI)の紹介を含みます。重みと設定値はすべて、2026年10月28日(UTC)に xai-org/x-algorithm リポジトリを筆者が直接読んで確認したものです。
:::
「いいねは0.5点」「通報1件でいいね355件分のマイナス」「プロフィールクリックは12点」。Xのアルゴリズムについて、日本語の解説記事やAIの回答にはこうした数字が並んでいます。ところが、いま公開されているコードを読むと、いくつかは2023年の旧Twitterのコードの数字で、いくつかは10月13日より前の古い値です。この記事では、Xのアルゴリズムの仕組みを公開ソースコードから行番号つきで整理し、重みがいつ変わったかも全コミットから洗い出しました。
2026年10月28日更新。重みは commit 2f25214(10月27日 01:28 UTC)の home-mixer/params/param.rs から引用し、翌日の commit 5ed7963 でも重みに変更がないことを確認しています。
Xのアルゴリズムはどういう仕組みですか?
リクエストのたびに候補の投稿を集め、各投稿に対してあなたが取りそうな行動の確率を予測し、重みをかけて足し合わせた点数で並べます。 候補はフォロー中のアカウント(Thunder)と、フォロー外のアカウント(Phoenixの検索、SimClusters、人気投稿)から集まります。点数は Σ(重み × その行動の予測確率) で、READMEにもこの式が書かれています。投稿から48時間を過ぎた投稿はスコア計算の前に除外されます。
いいねの重みは0.5ですか?
10月13日までは0.5でした。 commit e1a0375 で0.6に、翌日の 17c96bf で 0.66 に上がりました。0.5という数字は、いまも vm-ranker/params.rs の3行目にフォールバック(既定値)として残っています。本番の設定から同期されているのは home-mixer 側のファイル(1行目に「mirrored from config feature-switch defaults」とある)なので、引用するならこちらです。
通報1件はいいね何件分ですか?
そういう換算はできません。 重みは「回数」ではなく「予測確率」にかかります。param.rs の319〜346行目のコメントでは、X自身が「通報1件でいいね468件が帳消し」という読み方を誤りと書き、通報はいいねより1,000倍以上起きにくいと説明しています。
「Heavy Ranker」「プロフィールクリック12点」は今も正しいですか?
いいえ、2023年の旧Twitterのリポジトリ(twitter/the-algorithm)の話です。 現在のおすすめはPhoenixモデルで順位付けされ、プロフィールクリックの重みは 0、作者のリプライ返し(+75)という項目も今の重み一覧にはありません。「候補を約1,500件抽出」という数字も、現在のコードでは確認できませんでした。
Xアルゴリズムの重み一覧(commit 2f25214)
home-mixer/params/param.rs の348行目(FavoriteWeight)から460行目(ReportWeight)までの値です。
| 予測する行動 | 重み |
|---|---|
| リンクをコピーして共有 | 20.0 |
| リプライ | 5.0(相互フォロー同士なら +15.0) |
| 引用 | 5.0 |
| DMで共有 | 5.0 |
| 作者をフォロー | 4.0 |
| 共有 | 2.0 |
| リポスト | 1.0 |
| いいね | 0.66 |
| クリック後の滞在時間(連続値) | 0.4 |
| クリック | 0.3 |
| リンクを開く | 0.2 |
| 画像の拡大、滞在 | 各0.05 |
| 動画を開く | 0.02 |
| 滞在時間(連続値) | 0.006 |
| プロフィールクリック、動画の視聴品質 | 0 |
| 滞在しない | −0.02 |
| ブロック | −31.2 |
| 興味がない | −52.272 |
| ミュート | −58.8 |
| 通報 | −234 |
ブックマークには重みがありません。ただし viewer_history.rs の30行目で ClientTweetBookmark は「ポジティブな行動」に入っていて、モデルが読む行動履歴には使われます。
重みはいつ変わった?(8月13日以降の全変更)
param.rs に触れた48コミットをすべて再生し、重みが変わったものだけを抜き出しました。
| 日付 | コミット | 変更 |
|---|---|---|
| 8月25日 | 0d3cdd8 | 滞在 0→0.05、動画を開く 0.05→0.07、動画の視聴品質 0.05→0 |
| 9月29日 | a707cc2 | クリック 0.4→0.3、クリック後の滞在時間 0→0.4、興味がない −43.2→−47.52 |
| 10月7日 | 78460ca | 未探索の投稿 0.02→0.015 |
| 10月13日 | e1a0375 | いいね 0.5→0.6、動画を開く 0.07→0.02、滞在時間 0.004→0.006 |
| 10月14日 | 17c96bf | いいね 0.6→0.66、興味がない −47.52→−52.272 |
相互フォローのリプライ加点は同期ファイルができる前の変更で、リポジトリ内の docs/BIDIRECTIONAL_BOOST_CHANGE.md によると7月13日に20で導入され、7月24日に15へ下げられています。
10月27日の変更で何が変わった?
重みは変わっていません。 変わったのは VMRankerSendDebiasInputs が false から true になったこと(param.rs 508行目)で、投稿ごとに7つの特徴量(動画の有無、最長動画の長さ、画像の有無、メディア数、文字量、改行数、URLの有無)が再ランキングのサービスに送られるようになりました。ただし、それを使う側の UserDebiasEnabled は vm-ranker/params.rs で false のままで、オフのときは処理がそのまま返ります。「リンク付き投稿は減点される」という説明も見かけますが、重みの上ではリンクを開く行動は +0.2 で、マイナスの項目はありません。
自分のアカウントに影響があったか測る
コードからわかるのは「何が変わったか」までです。自分の投稿に効いたかは、変更日の前後で数字を比べるしかありません。GetXAPIのユーザー投稿取得エンドポイントは、最新投稿約20件の表示回数・いいね・リプライ・リポスト・引用・ブックマークを 1回0.001ドル で返します。
import csv
import os
from datetime import datetime, timezone
import requests
API_KEY = os.environ["GETXAPI_KEY"]
FIELDS = ["viewCount", "likeCount", "replyCount", "retweetCount", "quoteCount", "bookmarkCount"]
def snapshot(username, out="post_metrics.csv"):
r = requests.get(
"https://api.getxapi.com/twitter/user/tweets",
params={"userName": username},
headers={"Authorization": f"Bearer {API_KEY}"},
timeout=30,
)
r.raise_for_status()
taken = datetime.now(timezone.utc).isoformat(timespec="seconds")
new_file = not os.path.exists(out)
with open(out, "a", newline="", encoding="utf-8") as f:
w = csv.writer(f)
if new_file:
w.writerow(["taken_at", "post_id", "created_at"] + FIELDS)
for p in r.json()["tweets"]:
w.writerow([taken, p["id"], p["createdAt"]] + [p.get(k) for k in FIELDS])
snapshot("your_handle")
検証結果: 2026年10月28日に公開アカウント(@nikitabier)で実行し、1回の呼び出しで 22件 の投稿と6つの指標がCSVに書き込まれました。cronで毎日動かし、リポジトリのコミット履歴と見比べてください。
このコードからわからないこと
- 返信欄の並び順。 XのヘルプセンターによるとX Premium(有料)の加入有無は返信の並びに考慮されますが、おすすめの順位付けコードにはPremiumや認証の項目はありませんでした。
- 非公開の部分。 一部のルールファイルとGroxという分類器のプロンプトは公開されていません。
- 一人ひとりの順位。 予測確率は人によって違うので、同じ投稿でも点数は人ごとに変わります。
よくある質問
Xのアルゴリズムはオープンソースですか?
はい。github.com/xai-org/x-algorithm に、おすすめタイムラインのパイプライン、重み、フィルター、Phoenixモデルのコードが公開されています。一部のルールファイルと分類器のプロンプトは非公開です。
おすすめに表示させない・おすすめを変えるには?
見たくない投稿には「興味がない」(重み −52.272)を使い、アカウントのミュートやブロック、ミュートワードを設定すると、その投稿はスコア計算の前に除外されます。フォロー中のアカウントだけを見たいときは「フォロー中」タブに切り替えます。
Xのアルゴリズムはどのくらいの頻度で変わりますか?
リポジトリにはほぼ毎日コミットがありますが、重みが変わったのは8月13日から10月28日までで5回です。多くのコミットは同期時刻の更新や、オフの新しい設定の追加です。
参考
- xai-org/x-algorithm README(commit 2f25214): github.com/xai-org/x-algorithm/blob/2f252142b9284…
- home-mixer/params/param.rs(重み、commit 2f25214): github.com/xai-org/x-algorithm/blob/2f252142b9284…
- vm-ranker/params.rs(フォールバック値、UserDebiasEnabled): github.com/xai-org/x-algorithm/blob/2f252142b9284…
- param.rs のコミット履歴: github.com/xai-org/x-algorithm/commits/main/home-…
- 10月27日の差分: github.com/xai-org/x-algorithm/compare/6258a15...…
- X ヘルプセンター「おすすめタイムラインについて」: help.x.com
- twitter/the-algorithm(2023年の旧Twitter版): twitter/the-algorithm
- GetXAPI docs「User Tweets」: docs.getxapi.com
- 英語版の詳しい解説: getxapi.com
1 like
Mentions
پروژه این هفته من: ۳۰ تا ایجنت Claude، پنج روز بیوقفه موازی کار کردن و بالاخره الگوریتم X رو ریورسانجینیر کردم 🤯 کامل، رایگان و Open Source گذاشتمش اینجا 👇 حالشو ببرین: twitter/the-algorithm
Xのおすすめアルゴリズム(公開リポジトリの解説・コード) twitter/the-algorithm
Xアルゴリズムの仕組み:公開ソースコードの重みを全部読んでみた(10月27日の変更まで) :::note info 本記事には筆者が開発に関わっているサービス(GetXAPI)の紹介を含みます。重みと設定値はすべて、2026年10月28日(UTC)に xai-org/x-algorithm リポジトリを筆者が直接読んで確認したものです。 ::: 「いいねは0.5点」「通報1件でいいね355件分のマイナス」「プロフィールクリックは12点」。Xのアルゴリズムについて、日本語の解説記事やAIの回答にはこうした数字が並んでいます。ところが、いま公開されているコードを読むと、いくつかは2023年の旧Twitterのコードの数字で、いくつかは10月13日より前の古い値です。この記事では、Xのアルゴリズムの仕組みを公開ソースコードから行番号つきで整理し、重みがいつ変わったかも全コミットから洗い出しました。 2026年10月28日更新。重みは commit 2f25214(10月27日 01:28 UTC)の home-mixer/params/param.rs から引用し、翌日の commit 5ed7963 でも重みに変更がないことを確認しています。 Xのアルゴリズムはどういう仕組みですか? リクエストのたびに候補の投稿を集め、各投稿に対してあなたが取りそうな行動の確率を予測し、重みをかけて足し合わせた点数で並べます。 候補はフォロー中のアカウント(Thunder)と、フォロー外のアカウント(Phoenixの検索、SimClusters、人気投稿)から集まります。点数は Σ(重み × その行動の予測確率) で、READMEにもこの式が書かれています。投稿から48時間を過ぎた投稿はスコア計算の前に除外されます。 いいねの重みは0.5ですか? 10月13日までは0.5でした。 commit e1a0375 で0.6に、翌日の 17c96bf で 0.66 に上がりました。0.5という数字は、いまも vm-ranker/params.rs の3行目にフォールバック(既定値)として残っています。本番の設定から同期されているのは home-mixer 側のファイル(1行目に「mirrored from config feature-switch defaults」とある)なので、引用するならこちらです。 通報1件はいいね何件分ですか? そういう換算はできません。 重みは「回数」ではなく「予測確率」にかかります。param.rs の319〜346行目のコメントでは、X自身が「通報1件でいいね468件が帳消し」という読み方を誤りと書き、通報はいいねより1,000倍以上起きにくいと説明しています。 「Heavy Ranker」「プロフィールクリック12点」は今も正しいですか? いいえ、2023年の旧Twitterのリポジトリ(twitter/the-algorithm)の話です。 現在のおすすめはPhoenixモデルで順位付けされ、プロフィールクリックの重みは 0、作者のリプライ返し(+75)という項目も今の重み一覧にはありません。「候補を約1,500件抽出」という数字も、現在のコードでは確認できませんでした。 Xアルゴリズムの重み一覧(commit 2f25214) home-mixer/params/param.rs の348行目(FavoriteWeight)から460行目(ReportWeight)までの値です。 | 予測する行動 | 重み | |---|---| | リンクをコピーして共有 | 20.0 | | リプライ | 5.0(相互フォロー同士なら +15.0) | | 引用 | 5.0 | | DMで共有 | 5.0 | | 作者をフォロー | 4.0 | | 共有 | 2.0 | | リポスト | 1.0 | | いいね | 0.66 | | クリック後の滞在時間(連続値) | 0.4 | | クリック | 0.3 | | リンクを開く | 0.2 | | 画像の拡大、滞在 | 各0.05 | | 動画を開く | 0.02 | | 滞在時間(連続値) | 0.006 | | プロフィールクリック、動画の視聴品質 | 0 | | 滞在しない | −0.02 | | ブロック | −31.2 | | 興味がない | −52.272 | | ミュート | −58.8 | | 通報 | −234 | ブックマークには重みがありません。ただし viewer_history.rs の30行目で ClientTweetBookmark は「ポジティブな行動」に入っていて、モデルが読む行動履歴には使われます。 重みはいつ変わった?(8月13日以降の全変更) param.rs に触れた48コミットをすべて再生し、重みが変わったものだけを抜き出しました。 | 日付 | コミット | 変更 | |---|---|---| | 8月25日 | 0d3cdd8 | 滞在 0→0.05、動画を開く 0.05→0.07、動画の視聴品質 0.05→0 | | 9月29日 | a707cc2 | クリック 0.4→0.3、クリック後の滞在時間 0→0.4、興味がない −43.2→−47.52 | | 10月7日 | 78460ca | 未探索の投稿 0.02→0.015 | | 10月13日 | e1a0375 | いいね 0.5→0.6、動画を開く 0.07→0.02、滞在時間 0.004→0.006 | | 10月14日 | 17c96bf | いいね 0.6→0.66、興味がない −47.52→−52.272 | 相互フォローのリプライ加点は同期ファイルができる前の変更で、リポジトリ内の docs/BIDIRECTIONAL_BOOST_CHANGE.md によると7月13日に20で導入され、7月24日に15へ下げられています。 10月27日の変更で何が変わった? 重みは変わっていません。 変わったのは VMRankerSendDebiasInputs が false から true になったこと(param.rs 508行目)で、投稿ごとに7つの特徴量(動画の有無、最長動画の長さ、画像の有無、メディア数、文字量、改行数、URLの有無)が再ランキングのサービスに送られるようになりました。ただし、それを使う側の UserDebiasEnabled は vm-ranker/params.rs で false のままで、オフのときは処理がそのまま返ります。「リンク付き投稿は減点される」という説明も見かけますが、重みの上ではリンクを開く行動は +0.2 で、マイナスの項目はありません。 自分のアカウントに影響があったか測る コードからわかるのは「何が変わったか」までです。自分の投稿に効いたかは、変更日の前後で数字を比べるしかありません。GetXAPIのユーザー投稿取得エンドポイントは、最新投稿約20件の表示回数・いいね・リプライ・リポスト・引用・ブックマークを 1回0.001ドル で返します。 import csv import os from datetime import datetime, timezone import requests API_KEY = os.environ["GETXAPI_KEY"] FIELDS = ["viewCount", "likeCount", "replyCount", "retweetCount", "quoteCount", "bookmarkCount"] def snapshot(username, out="post_metrics.csv"): r = requests.get( "https://api.getxapi.com/twitter/user/tweets", params={"userName": username}, headers={"Authorization": f"Bearer {API_KEY}"}, timeout=30, ) r.raise_for_status() taken = datetime.now(timezone.utc).isoformat(timespec="seconds") new_file = not os.path.exists(out) with open(out, "a", newline="", encoding="utf-8") as f: w = csv.writer(f) if new_file: w.writerow(["taken_at", "post_id", "created_at"] + FIELDS) for p in r.json()["tweets"]: w.writerow([taken, p["id"], p["createdAt"]] + [p.get(k) for k in FIELDS]) snapshot("your_handle") 検証結果: 2026年10月28日に公開アカウント(@nikitabier)で実行し、1回の呼び出しで 22件 の投稿と6つの指標がCSVに書き込まれました。cronで毎日動かし、リポジトリのコミット履歴と見比べてください。 このコードからわからないこと - 返信欄の並び順。 XのヘルプセンターによるとX Premium(有料)の加入有無は返信の並びに考慮されますが、おすすめの順位付けコードにはPremiumや認証の項目はありませんでした。 - 非公開の部分。 一部のルールファイルとGroxという分類器のプロンプトは公開されていません。 - 一人ひとりの順位。 予測確率は人によって違うので、同じ投稿でも点数は人ごとに変わります。 よくある質問 Xのアルゴリズムはオープンソースですか? はい。github.com/xai-org/x-algorithm に、おすすめタイムラインのパイプライン、重み、フィルター、Phoenixモデルのコードが公開されています。一部のルールファイルと分類器のプロンプトは非公開です。 おすすめに表示させない・おすすめを変えるには? 見たくない投稿には「興味がない」(重み −52.272)を使い、アカウントのミュートやブロック、ミュートワードを設定すると、その投稿はスコア計算の前に除外されます。フォロー中のアカウントだけを見たいときは「フォロー中」タブに切り替えます。 Xのアルゴリズムはどのくらいの頻度で変わりますか? リポジトリにはほぼ毎日コミットがありますが、重みが変わったのは8月13日から10月28日までで5回です。多くのコミットは同期時刻の更新や、オフの新しい設定の追加です。 参考 - xai-org/x-algorithm README(commit 2f25214): github.com/xai-org/x-algorithm/blob/2f252142b9284… - home-mixer/params/param.rs(重み、commit 2f25214): github.com/xai-org/x-algorithm/blob/2f252142b9284… - vm-ranker/params.rs(フォールバック値、UserDebiasEnabled): github.com/xai-org/x-algorithm/blob/2f252142b9284… - param.rs のコミット履歴: github.com/xai-org/x-algorithm/commits/main/home-… - 10月27日の差分: github.com/xai-org/x-algorithm/compare/6258a15...… - X ヘルプセンター「おすすめタイムラインについて」: help.x.com - twitter/the-algorithm(2023年の旧Twitter版): twitter/the-algorithm - GetXAPI docs「User Tweets」: docs.getxapi.com - 英語版の詳しい解説: getxapi.com
@rdcocoo twitter/the-algorithm El algoritmo de Twitter es open source justamente gracias a Elon Musk.
You missed this internet classic the-algorithm#1999
@AmericaIsRigh @KappoGroyper ask trouble AI to read this retard twitter/the-algorithm No excuse for ignorance
A feed ranker cannot score a post it never retrieves. Home Mixer separates candidate retrieval, ranking, and filtering. Map the stages before assigning a cause to low reach. Code: twitter/the-algorithm