製品発表 · 小互による解説

X が For You アルゴリズムをオープンソース化:いいね値 0.5 点、リンクコピー共有値 20 点

21 個の重みの実数値、露出を決める 3 つの関門、そしてパラメータから導き出した投稿対応表
1 分でわかる要点
  • このアルゴリズムにおける「いいね」の重みは 0.5。「リンクをコピーして共有」は 20。設定ファイルに明文で書かれており、推測ではありません。
  • レート制限(シャドーバン)の実態が明確になりました。フォロワーにはこれまで通り表示されますが、フォローしていない人のタイムラインには一切表示されません。
  • 文末の対応表では、3 つの関門を具体的な行動に落とし込み、各項目に根拠となる数値を明記しました。
⚑ 情報源は X 自身が公開したコードリポジトリと公式発表です。文中の重みとしきい値はリポジトリ内の本番デフォルト値に基づきます。一部のユーザーは実験グループに振り分けられ、異なる値を受け取る可能性があります。
今回公開されたもの

公開された重みは、本番で使われている数値そのもの

X は For You タイムラインのアルゴリズムのソースコードをオープンソース化し、同時に自分がレート制限(シャドーバン)されているか確認できるページを公開しました。X でフォロワーを増やしたり、誘導したり、案件を受けている人にとって、これは正真正銘の料金表です。1 回のいいねと 1 回の「リンクコピー共有」がプラットフォーム内でそれぞれ何点なのかが、設定ファイルに具体的な数値として書かれており、もう推測する必要はありません。

以前のオープンソース版は構造のみを公開していました。スコアリングの工程があることはわかるものの、各アクションの価値は不明。モデル部分も Grok-1 を流用したサンプルコードのみでした。今回は 3 つの点が追加されました。

追加 01
重みの実数値
各アクションの予測値を混ぜて投稿スコアを算出する重みセットを、全て公開。
追加 02
フィルタ・ラベルシステム
投稿が For You から除外されるかどうかを決定するコード一式。ラベル付与ルールとモデルを含む。
追加 03
実際のトレーニングコード
従来のデモモデルを置き換え、合成データ生成器を同梱。GPU1 枚で完全なトレーニングが 1 回実行可能。公開済みの差異が 1 点あり:オプティマイザは標準の AdamW を使用(本番環境で内部調整されたバージョンではない)。
今回のオープンソース化で追加された 3 点

これらの数値を信頼してよい理由を X は次のように説明します。cron スクリプトを実行し、本番環境の主要な値を定期的にリポジトリのデフォルト値へ同期しています。README には、重みファイルがこの方法で管理されていると明記されています。さらに、2 つの取り組みがあります。10% 以上のトラフィックが流れる実験は、リポジトリで確認できるようにすること。コード公開前には、第三者である推薦システムの専門家によるレビューと負荷テストを実施済みであること。X が今回の公開に掲げた目標はただ 1 つ。「プラットフォームが自分の投稿をレート制限(シャドーバン)しているかどうかを、ユーザー自身が判断できるようにする」ことです。

全体像

投稿が読者の目に触れるまで、3 つの関門を通過する必要がある

プロセス全体は 7 ステップですが、投稿する側にとって重要なのは、最終的に絞り込む 3 つの関門だけです。これらは掛け算の関係にあり、どれか 1 つでも通過できなければ結果はゼロ。後の関門でどれだけ高得点でも無意味です。

全ネットワークの候補投稿 第一関門 · 候補プール入り 第二関門 · スコアリングとソート 第三関門 · 可視性の判定
第一関門候補は 2 系統:フォロー中の人の最近の投稿と、2 つの外部検索。その後、スコアリング前のフィルタ 17 個を通過
第二関門加重合計 → 4 つの調整 → 上位 K 件を取得
第三関門投稿ごと・ユーザーごとに判定:表示 / 警告付き表示 / 非表示
3 つの関門でパイプラインは徐々に絞られる。側面の矢印は各関門で除外された投稿

ソートと可視性は別々のシステムです。前者は順序を決定し、後者は表示の有無を決定します。サービスも入力もルールも異なります。X はこれを単独の設計判断として明記しています。レート制限(シャドーバン)を理解するには、まずこの役割分担を理解する必要があります。

第一関門 · 候補プール入り

あなたの返信は、見知らぬ人のタイムラインには表示されない

スコアリングの前に 17 個のフィルタがあります。ほとんどは常識的なものです。自分の投稿、ブロック・ミュートしている人、既読のもの、ミュートキーワードに該当するものなど。しかし、そのうち 3 つは、あなたの投稿が見知らぬ人に表示されるかどうかを直接左右します。特に最初の 1 つは直感に反するものです。

通過
あなたが投稿したオリジナル投稿
通常通り候補プールに入り、その後のスコアリングに参加。外部(out-of-network)投稿者が、この読者がフォローしていない人であることを指します。For You にはフォロー中の人の投稿とフォロー外の人の投稿が混在しており、後者を外部と呼びます。の読者に見られる唯一の経路です。
除外
あなたの返信 / リポスト
この読者があなたをフォローしていない限り、投稿全体が破棄され、スコアリングの段階にも進みません。
同じアカウントが発信する 2 種類のコンテンツが、第一関門で分岐する

さらに 2 つ。48 時間は絶対的な制限で、これを超えると候補プールから除外されます。これは設定ファイルに書かれた定数であり、調整可能なパラメータではありません。もう 1 つは返信に関するルールです。返信が残るには、返信先の相手もその読者がフォローしている必要があります。ただし、自分自身への返信(スレッド)は影響を受けません。すべての祖先が投稿者本人の場合、このフィルタは通過します。

まとめると、フォローしていない人にあなたを見てもらいたい場合、方法はオリジナル投稿のみです。他人の投稿へのコメントでどれだけ優れた内容でも、あなたのフォロワーだけが For You で見ることができます。
第二関門 · スコアリング

モデルが予測するのは、あなたが取るであろう具体的なアクション

旧世代のレコメンドシステムは、各コンテンツに「関連度」スコアを付けていました。今回の方式は考え方が異なります。モデルは好みを推測するのではなく、あなたがこの投稿に対してどのような具体的なアクションを取るかを個別に予測します。いいねするか? 返信するか? リンクをコピーして共有するか? 報告するか? そして、これらの確率を 1 つの数値に合成する独立したステップがあります。

候補の投稿
リンクコピー P = ?
返信 P = ?
いいね P = ?
作者をフォロー P = ?
報告 P = ?
Σ 重み × 確率投稿のスコア
モデルは確率を出すだけ。「返信 1 回がいいね 1 回よりどれだけ価値があるか」は別のステップが担当

X はこの「1 つの数値に合成する」ステップを単独の設計判断として明記しています。その意味はここにあります。予測はモデル、評価は人間。今回のオープンソース化で公開されたのは、まさに人間が決めた部分です。

ついでに、2 つの詳細が「なぜ一部のアカウントは自然と拡散されやすいのか」を説明します。1 つ目は、投稿のいいね・返信・リポスト・引用・インプレッション数・投稿経過時間が、バケット化された後、モデルへの入力特徴量として直接供給される点です。モデルはこれらの数値を参照できるため、初期の勢いは確かに自己強化されます。2 つ目は、各投稿はセマンティック ID投稿の本文と画像を「この投稿が何についてか」を表すコードに圧縮したもの。6 層あり、各層で 256 個のコードから 1 つ選択。同じテーマの投稿は先頭の層が共通で、図書館の請求記号のようなもの。同じ分野の本は接頭辞が共通。に圧縮され、同じテーマの投稿はコードの接頭辞を共有します。そのため、インタラクションがゼロの新規投稿でも、テーマが読者のよく見るものであれば、検索で見つかります。さらに、本番環境の検索モデルはユーザーごとに専用のベクトルを保持しません。国や言語などの大まかなプロファイルを除けば、読者はシステム上、自分がインタラクションしたものの集合体として認識されます。

第二関門 · 重みテーブル

いいね 0.5 点、リンクコピー共有 20 点

プラスの重み 21 個、マイナスの重み 5 個を以下に示します。

プラスの重み合計 43.324
リンクコピー共有
20.0
返信
5.0
引用
5.0
DM 共有
5.0
作者をフォロー
4.0
共有
2.0
リポスト
1.0
いいね
0.5
クリック
0.4
リンクを開く
0.2
画像を展開
0.05
動画を再生
0.05
動画の有効再生
0.05
引用投稿のクリック
0.05
未探索の投稿
0.02
連続滞在時間
0.004
滞在 · プロフィール閲覧 · 他 3 項目
0.0
マイナスの重み別スケール
報告
−234
作者をミュート
−58.8
興味なし
−43.2
作者をブロック
−31.2
スワイプで素通り
−0.02
バーの長さは重みの値そのもの。プラスとマイナスはスケールが異なり、マイナス側の最大は 234、プラス側の最大は 20

一目でわかる事実が 2 つあります。すべてのプラスの重みの合計は 43.324 で、「リンクコピー共有」だけでその約半分を占めます。また、報告 1 回分の絶対値は、プラスの重みの合計の 5 倍以上です。

このテーブルの読み方

これらの数値を単純に割り算してはいけません。これらの値は、「そのアクションがどれだけ価値があるか」と「そのアクションがネットワーク全体でどれだけ稀か」という 2 つの要素が混ざった結果です。ネガティブなフィードバックはそもそも発生頻度が極めて低いため、バランスを取るには十分に大きな重みが必要です。

つまり、「報告 1 回 = いいね 468 回分を台無しにする」という解釈は誤りです。報告はそもそも稀にしか発生せず、モデルが計算する報告確率は極めて小さな数値です。加重和で意味を持つように、重みを −234 に設定しているのです。

正しい読み方は、このテーブルが示すのは、モデルが計算する確率がたとえ極めて低くても、ゼロでなければ、重みを掛けることで総合スコアに増幅されて反映されるということです。体感としては、モデルがあなたの投稿に「報告される可能性がわずかでもある」と判断すれば、そのわずかな可能性だけで投稿は埋もれます。逆に「リンクがコピーされて共有されそうだ」と判断すれば、その兆候だけで投稿は押し上げられます。

動画項目には追加の条件が 2 つあります。動画は 10 秒以上であること。さらに、読者自身のフォロワー数が 1 万人に達すると、この項目の重みはゼロになります。
第二関門 · 4 つの調整

スコアは、さらに 4 回調整されて確定する

加重合計は始まりに過ぎません。スコアが確定するまでに、さらに 4 回の調整が行われます。最初の 1 回は合計の「途中で」発生し、特定の項目の重みを変更します。後の 3 回は総合スコアに掛け算されます。以下の 4 ステップは、クリックして順に確認できます。

① 合計途中で発生 · 重みを変更
相互フォロー加成 +15
返信の重み 5.0 → 20.0
あなたと読者が相互フォローの場合、「返信するだろう」という予測の重みに 15 が加算され、5.0 から 20.0 になります。返信は元々 2 番目に高い重みですが、加成後はリンクコピー共有と同等になります。

3 つの条件をすべて満たす必要があります。1 つでも欠けると加成されません:① 返信ではない ② リポストではない ③ 作者と読者が相互フォロー。つまり、加成はオリジナル投稿のみが対象です。

② 総合スコアに乗算 · 1 つ目
外部ディスカウント ×0.75
トピックページはさらに強力:×0.5
読者があなたをフォローしていない場合、投稿のスコアは 75% になります。トピックページでは 50% になります。

見落としがちな点:読者がフォローしている人による返信とリポストにもこのディスカウントが適用されます。つまり、このディスカウントは「二次コンテンツ」と「未知のコンテンツ」の 2 つのカテゴリに適用され、「フォローしているかどうか」と完全に一致するわけではありません。

③ 総合スコアに乗算 · 2 つ目
同一作者減衰
係数 = 0.75 × 0.5ⁿ + 0.25
1 回のリフレッシュ内で、同じ作者の n 番目の投稿には、徐々に小さくなる係数が掛けられます:1 番目 ×1.0、2 番目 ×0.625、3 番目 ×0.44、4 番目 ×0.34、最低 0.25 まで減少し、それ以上は下がりません。

同じリフレッシュ内で 2 回目に登場すると、自動的に 62% に。3 回目は 40% 台前半になります。

④ 総合スコアに乗算 · 3 つ目
新規作者の支援
15–16 位のスコアに引き上げ
小規模アカウント向けの特別な経路があります。投稿 1 つを 15–16 位の位置に引き上げます。ただし、リクエストごとに 1 件のみ対象で、条件を満たすすべての投稿の中から最もスコアが高い 1 つだけが引き上げられます。

条件:作者のフォロワー数 ≤ 1000、この投稿のインプレッション数 < 1000、オリジナル投稿であること。さらに、有効な候補の上位 85% 以内にランクインしている必要があります。別途「投稿から 24 時間以内」という条件もありますが、これは実験グループのみの要件であり、全員に適用されるわけではありません。フォロワー数の上限が 1000 に設定されているため、ある程度の規模のアカウントではこの経路は利用できません。

調整が完了し、順位が確定した後にもう 1 ステップあります。独立した再ランク付けサービスが、候補投稿のベクトルを計算し、スコアを多少犠牲にして、隣接する投稿同士の類似度を下げます。対象は上位 150 位です。そのため、同じトピックのコンテンツは意図的に分散され、同じ種類の投稿が連続して表示されることはありません。
第三関門 · 可視性

レート制限(シャドーバン)は、フォローしていない人にのみ見えなくなること

スコアリングが完了しても、最後の関門であなたの投稿全体が除外される可能性があります。この関門では、投稿ごと・読者ごとに 3 つのいずれかの判定が下されます:表示、警告の背後に隠す(読者はクリックして表示可能)、非表示。

重要なのは、ルールが 2 セットに分かれていることです。1 セットはすべての人に適用されます。もう 1 セットは 27 のルールからなり、「この投稿が作者をフォローしていない人におすすめされた場合」にのみ実行され、非表示の判定しかできません。同じ投稿でも、フォロワーに対しては表示されます。

同じ投稿 · 同じルール · 読者を変える
第一関門
候補プール入り
✓ 通過
第二関門
スコアリングとソート
✓ スコア十分
第三関門
可視性の判定
✕ 非表示✓ 表示
この投稿は彼の For You には表示されません。そして、あなた自身は異常に気づきません。なぜなら、あなたが見ているのは自分がフォローしている人たちの投稿だからです。 この投稿は彼の For You に正常に表示されます。同じ投稿、同じラベルでも、フォロワーには適用されません。

つまり、X におけるレート制限(シャドーバン)には明確な形態があります。フォロワーには通常通り表示されるが、フォローしていないすべての人のタイムラインからは完全に消える。あなた自身は異常を確認できません。なぜなら、あなたが見ているのは自分がフォローしている人たちの投稿だからです。

ツール · 自分を確認する

12 個のアカウントラベルを確認できるように

ページは x.com/i/under_the_hood にあり、過去 1 か月のアカウントと投稿に付いたラベルを確認でき、データをダウンロードすることもできます。これは段階的なトライアルであり、資格は 3 つの条件をすべて満たす必要があります:アカウント作成から 1 年以上、前月に 10 件以上投稿、テストグループにランダムに選出されること。

これらのラベルは、すべてが人手で判定されているわけではありません。オフラインのバッチ処理タスクが、他の人があなたの投稿にどう反応したかを監視しています。ブロック、報告、スパム報告は、すべて「いいね」数と比較して測定され、アカウントにラベルを付けます。つまり、「何人にブロックまたは報告されたか」はアカウントレベルの判定に直接入力され、単一の投稿の問題ではありません。

アカウントレベルのラベルは全部で 12 個あり、性質に応じて 3 つのカテゴリに分けられます。

アダルトコンテンツ関連 6 個
NsfwHighRecall
自動システムがアダルトコンテンツの可能性があると判定
NsfwHighPrecision
自動システムがアダルトコンテンツの可能性が高いと判定
NsfwNearPerfect
同上、別の判定レベル
NsfwAdmin
報告に基づき、担当者がアダルトまたは暴力的なコンテンツが中心と判定
NsfwAvatarImage
プロフィール画像が不適切と判定。コンテンツが問題なくても対象になる場合があります
NsfwBannerImage
ヘッダー画像が不適切と判定。プロフィール画像とは別にカウントされます
信頼性関連 3 個
SpamHighRecall
スパムコンテンツの可能性があると判定
ImpersonationHighPrecision
他人へのなりすましの可能性が高いと判定
AbusiveHighRecall
該当する場合、追加の安全性確認が必要
投稿内容とは無関係 3 個
Compromised
アカウント乗っ取りと判定され、パスワードリセットが必要
ReadOnly
規約違反の投稿が削除されておらず、アカウントが読み取り専用にロック
DoNotAmplify
利用規約違反の疑いがあり、さらなる審査待ち

最後の 3 つはアカウントの状態を判定するもので、投稿内容とは関係ありません。しかし、効果は前述の 9 つと同じで、フォロー外のユーザーにはおすすめされません。

投稿レベルのラベルの効果は 3 段階あります。最も軽いものはフォロー外のユーザーに非表示になるだけです(スパム高再現率、不審なリンク、アダルトテキストなど)。中間はコンテンツ警告が追加され、未成年・年齢未入力・未ログインユーザーには非表示になります。最も重いものは、X 上で完全に非表示になるか、発見可能性が作者のプロフィールページに限定され、全員に「この投稿はレート制限(シャドーバン)されています」という説明が表示されます。

明確にオープンソース化されていない部分が 2 つあります。コンテンツ分類器で使用される大規模言語モデルのプロンプトと、ラベル付けルールの一部です。その理由は README に書かれており、悪用を防ぐためです。X が提供する代替手段こそ、このページです。ルールは見せないが、結果は見せる。これらのシステムがあなたに対して何を出力したか、手動で追加されたラベルがあるかどうかを確認でき、ラベル名をコードと照合して、それがあなたにどう影響するかを調べることができます。

🧰 スタートアップカード · Under the Hood ラベル確認
料金無料
条件アカウント作成から 1 年以上 + 前月に 10 件以上投稿 + テストグループにランダム選出。3 つすべて満たす場合のみ確認可能
最後に · パラメータは変わる

重みは変わる:相互フォロー加成は 3 週間で 20 から 15 に調整

これらのパラメータを使用する前に、1 つ理解しておく必要があります。それらは不変のものではありません。X は専用のドキュメントを公開し、7 月に話題となった相互フォロー加成を例に、今後のアルゴリズム更新の読み方を説明しています。

0–20
7 / 10
A/B テスト開始、大多数は 0
20
7 / 13
大多数のユーザーに展開
15
7 / 24
フィードバックを受けて調整
相互フォロー加成値の 3 週間の変化。7 月 10 日時点では大多数が 0 で、加成は実質なし

7 月 10 日に A/B テストを開始し、ユーザーは 5、10、15、20 の 4 つのグループにランダムに分けられ、大多数は 0 でした。7 月 13 日、初期結果が良好だったため、多くのユーザーに 20 で展開しました。7 月 24 日、完全な実験結果と X 上の実際のフィードバックを入手。ドキュメントで挙げられている例:ワールドカップ期間中、より多くのサッカー討論を見たいという声があったが、関連投稿のほとんどはフォロー外のアカウントからのものでした。そのため、20 を 15 に戻しました。

この因果関係は明確です。加成が大きすぎると、相互フォロー圏内のコンテンツが外部コンテンツを押しのけてしまいます。ちょうどワールドカップのような、盛り上がりが圏外にあるイベントと重なったため、ユーザーの体感はすぐに悪化し、5 ポイント引き下げられました。

ドキュメントには当時の完全なコード変更も掲載されています。冒頭には、今後のアルゴリズム更新はすべてこのリポジトリに公開され、diff を見れば何が変わったかわかると書かれています。X を活動の場としている人にとって、パラメータが変わったら当日中に確認でき、1 か月後にデータの低下から推測する必要はありません。

持ち帰り · 対応表とクイックリファレンス

3 つの関門に基づく、投稿の調整方法

数値は変わりますが、関門は変わりません。現在のバージョンのパラメータに基づくと、3 つの関門を合わせると次の 1 文になります:

見知らぬ人に見られる
=
候補プール入り
×
スコア十分
×
レート制限(シャドーバン)なし
3 つは掛け算。どれか 1 つがゼロなら、結果はゼロ
この表の性質を明確に

以下の内容は、コード内のパラメータから導き出したものであり、X が投稿アドバイスを提供したわけではありません。各項目には根拠となるパラメータと数値を明記しているので、リポジトリで確認できます。パラメータが変われば、この表も更新する必要があります。

第一関門まず投稿を候補プールに入れる
行動根拠影響度
見知らぬ人に届けたいなら、オリジナル投稿のみを当てにするフォロー外のユーザーへの返信・リポストはスコアリング前に破棄される失格ライン
時事性の高い内容は当日中に投稿する48 時間超過で候補プールから即除外。ハードコードされた定数失格ライン
返信する相手は選ぶ返信が残るには、返信先の相手が読者もフォローしている必要がある失格ライン
自分への返信(スレッド)は影響なしすべての祖先が投稿者本人の場合、このフィルタは通過
第二関門次にスコアを高くする
行動根拠影響度
リンクをコピーして共有したくなるような内容を作るこの項目の重みは 20.0。プラスの重み合計 43.324 の約半分単項目最高
主要な読者と相互フォローになる相互フォロー加成 +15、返信の重み 5.0 → 20.04 倍
ただし、加成はオリジナル投稿のみ返信やリポストでは対象外。3 つの条件がコードに明記
返信を誘発する内容を書く返信の重み 5.0。いいね 0.5 の 10 倍いいねの 10 倍
フォローしたくなる理由を作る作者フォローの重み 4.0。いいねの 8 倍いいねの 8 倍
1 回のリフレッシュで連投しない同一作者 2 件目 ×0.625、3 件目 ×0.44、下限 0.252 件目は 62%
フォロワー 1000 未満:オリジナルを投稿新規作者チャネルはフォロワー ≤1000、インプレッション <1000、オリジナル投稿が条件。別途「24 時間以内」は実験グループのみ有効15–16 位に引き上げ
第三関門最後にレート制限(シャドーバン)を避ける
行動根拠影響度
まずラベルがないか確認する27 のルールのいずれかに該当すると、すべての見知らぬ人に完全に非表示前提条件
プロフィール画像とヘッダー画像も個別に判定されるNsfwAvatarImage、NsfwBannerImage は独立したアカウントラベルアカウントレベル
不審なリンクを含む投稿はしない不審なリンクは投稿レベルラベル。フォロー外への非推奨効果投稿レベル
炎上を誘う行為の代償はパラメータ上、最も重い報告 −234、ミュート −58.8、興味なし −43.2、ブロック −31.2。一方プラスの重み合計は 43.324 のみ最も重い
やらないこと労力の無駄になる 3 つのこと
やらないこと根拠
露出アップのために有料会員にならないスコアリングパラメータ・再ランク付けサービス・モデル特徴量の 3 箇所で subscription / premium / verified を検索したがゼロ件。候補投稿のデータ構造にも会員やブルーチェックのフィールドはなく、サブスクリプション限定投稿のアクセス制御フィールドのみ。このソートコードに有料での加成は存在しない。
動画自体に重みがあると期待しない動画の有効再生の重みは 0.05。さらに動画は 10 秒以上であることが条件。読者自身のフォロワー数が 1 万人に達するとこの項目はゼロになる。動画の価値は滞在時間と共有にあり、この項目ではない
滞在時間やプロフィールクリックを水増ししない滞在の重み 0.0、プロフィール閲覧の重み 0.0。スコアに全く影響しない
下のカードは項目ごとにチェックでき、クイックリファレンスとして書き出すこともできます。各項目には根拠となるパラメータが付記されており、パラメータが変わったら自分で照合できます。
✅ パラメータに基づく投稿調整 · 17 項目クイックリファレンス
情報源
X For You Feed Algorithmxai-org·GitHub リポジトリ·2026-08-13
当サイトについて
文中の図表はすべて当サイトが作成しました。重み・しきい値・フィルタルール・ラベル一覧はリポジトリのソースコードと公式発表に基づきます。「3 つの関門に基づく投稿調整」セクションの内容は、これらのパラメータから導き出したものであり、X が投稿アドバイスを提供したわけではありません。