図解 · How X scores your post
あなたの投稿は
Xにどう評価されるのか
オープンソース化されたXのアルゴリズムを実コードまで読み、「1つの投稿が『おすすめ』に出るまでに、どんな審査を受けるか」を、エンジニアでなくても読めるように一本道で図解しました。すべて公開コードに忠実です。
大前提
「ルールで並べる」のをやめた機械
最初にここだけ腹落ちさせてください。ここを誤解すると全部ズレます。
昔のTwitterは「いいねが多い投稿を上に」「特定ワードはブースト」みたいな人間が書いたルールで並べていました。新しいXは、その手作りルールを一行残らず捨てたと公式コードに明記しています。
代わりに残ったのは、たった1つの仕事をするAIです。
AIの唯一の仕事:「この投稿を “この人” に見せたら、その人はいいね/返信/RT/引用/DMで友達に送る/最後まで読む/フォローするか?」を一人ひとり別々に確率で予想する。あとはその予想点が高い順に並べるだけ。
つまり評価とは「あなたの投稿を見た一人ひとりが、どう反応するとAIが予想したか」の集計です。これから、その投稿が並ぶまでの4つの大きな工程を順に見ます。
全体図
投稿が「おすすめ」に出るまでの一本道
工場のベルトコンベアだと思ってください。あなたの投稿は他の何万投稿と一緒にこのラインを流れます。
1候補集め
そのユーザーに見せる“候補”を2つの蛇口からかき集める(フォロー中/フォロー外)
▼
+情報の付与
各候補に「誰の投稿か・動画の長さ・言語…」などの付箋を貼る
▼
2足切り(フィルタ)
古い・重複・ブロック相手・ミュート語・既読… を採点前に捨てる
▼
3採点(ここが心臓部)
AIが15個以上の“反応メーター”を予想 → 重みをかけて合計 → 同じ人ペナ → フォロー外減点
▼
4並べて・広告を挟んで・最終チェック
点数順に上位を選抜 → 安全な隙間に広告 → 危険物を最終除去 → 完成
コードでの対応:①=sources / +=hydrators / ②=filters(前段)/ ③=scorers(Phoenix→Weighted→AuthorDiversity→OON)/ ④=selector+ads+filters(後段)。以下、工程ごとに拡大します。
工程①
候補集め:2つの蛇口
たとえ:2本のホースで1つのバケツに水を入れる
誰かが「おすすめ」を開いた瞬間、Xはその人に見せる候補を2か所からかき集めます。
蛇口A:フォロー中(Thunder)
その人がフォローしている人たちの“最近の”投稿。専用の超高速メモリ(Thunder)に貯めてあり一瞬で取り出せる。ただし保持期間があり、古い投稿は消える。著者ごとに保持本数の上限もある。
蛇口B:フォロー外(Phoenix retrieval)
世界中の膨大な投稿から「この人が好きそう」をAIが探し出す。何百万→数百件に一気に絞る。この“探し方”が次のセクションの肝。
2つの蛇口の水(候補)が1つのバケツに合流し、ここから先は一緒に審査されます。あなたの投稿が他人のフォロー外に出るかどうかは、蛇口Bに拾われるかにかかっています。
工程① 拡大
蛇口Bの正体:AIの「お見合い」
たとえ:性格診断で相性の良い相手を探す結婚相談所
フォロー外の候補は、こうやって選ばれます(コードでは “Two-Tower” という仕組み)。
あなたの「興味」と投稿の「特徴」を同じ物差し(ベクトル)に変換し、内積(相性の良さ)が高いものを拾う
ここから分かる超重要なこと:投稿の“ベクトル”は過去に誰がどう反応したかで形作られます。だから ⑴ テーマがブレると物差し上の位置が定まらず誰にも刺さらない ⑵ 狙った層が一度でも反応すると、その人の「興味ベクトル」が書き換わり、以後あなたの投稿が届きやすくなる(複利)。最初の1反応の価値が異常に高い理由はこれです。
工程②
足切り:採点の前に捨てられる
たとえ:書類選考。中身を読む前に弾かれる山がある
AI採点に進む前に、機械的に捨てられる候補があります。あなたの投稿がここで落ちると、どんなに良くてもそもそも採点されません。
古すぎる投稿重複・同内容のセルフRT本人の投稿(自分のFeed)
ブロック/ミュート相手ミュート登録ワードを含むすでに見た投稿
このセッションで配信済み課金限定で権限なし
運用直結の事実(正確版):「古い投稿は候補から除外」=元ツイートが独りでに知らない人のおすすめへジワ伸びすることは起きにくい(カットオフ秒数は非公開)。ただし「後から伸びる」は実際に起きる──誰かの引用/RT・検索・topic面で“再注入”されるとき。だから初速が大事なのは「一発勝負だから」ではなくその再注入の引き金になるから。/「すでに見た投稿は同じ人へ再表示しない」(おすすめ面の話。検索/引用経由は別)。/「ミュート語」=そのジャンルでよくミュートされる単語を含むと、そもそも土俵に乗りにくい。
工程③ ─ 心臓部
採点:15個のメーターを予想して足し算
たとえ:審査員が項目ごとに点をつけ、配点をかけて合計する
足切りを生き残った候補に、いよいよAIが点をつけます。AIは「総合人気度」を当てるのではなく、反応の種類ごとに別々の確率を予想します(ここが新アルゴの本質)。
この15個以上のメーター(緑=プラス、赤=マイナス)にそれぞれの配点(重み)をかけて合計したのが、その投稿のその人に対する点数です。
投稿の点 = Σ(良い反応の確率 × 配点) − Σ(悪い反応の確率 × 配点)
重要な線引き:コードにはアクションごとに専用の重みスロットが個別に実在(いいね/返信/DM共有/引用/プロフ→フォロー…が各々独立した加点ルート=これは確定)。だが重みの実数値は外部設定で注入されリポジトリに無い(=「いいねの何倍効くか」は非公開)。唯一読める具体数字は公開デモの「いいね1.0/返信0.5/RT0.3/滞在0.2」だけ(本番値ではない)。確定しているのは“どの反応が独立に効くか”という構造で、正確な倍率ではない。
赤メーターの怖さ=先回り抑制:AIは「実際に通報されたか」ではなく「この人は通報/ミュートしそうか」を予想して誰も行動する前から減点します。つまり“炎上っぽい見た目”というだけで沈む。さらに悪い反応の合計が良い反応を上回ると、点数が大きく下方修正されて埋もれます(コードのoffset_score)。
緑メーターの盲点:「いいね」だけ見るのは一番弱い戦い方。DMで送る・引用する・プロフ→フォローは別メーターで独立に加点される。いいねが地味でも、これらを生む投稿は別ルートで強く伸びます。
工程③ 補足1
採点は「カンニング禁止の試験」
たとえ:他の受験者の答案を見ずに、自分だけで採点される
1つの細かいけれど重要な設計(“Candidate Isolation”)。採点中、各投稿は他の候補投稿を一切参照できません。見ていいのは「そのユーザー本人」と「その人の履歴」だけ。
あなたの投稿の点数は、競合の顔ぶれに左右されない。純粋に「あなた × その人」だけで決まる
意味:強い投稿が同時間に他にあっても、あなたの投稿の点が下がるわけではない。勝負は常に「あなたの投稿 vs その視聴者の心」だけ。言い訳がきかない設計です。
工程③ 補足2
同じ人の連続投稿は、2枚目から小さくなる
たとえ:同じ歌手の曲ばかり続かないようDJが音量を絞る
点数がついた後、1回のフィードの中で同じ著者が複数回出る場合、2回目以降を指数関数的に小さくします(多様性のため)。
倍率 =(1−下限)× 減衰率^(出現位置) + 下限。2枚目以降は急速に小さくなる
運用直結:短時間に連投すると、1回のフィード内であなたの2投稿目・3投稿目が自分の1投稿目に潰される。さらに工程①のThunderは著者あたり保持本数に上限があるため、連投は過去の良い投稿まで押し出す。=間隔を空けて1発を強くが構造的に正解。
工程③ 補足3
フォロー外に出す時、点数は縮められる
たとえ:アウェー戦は得点が0.x倍に換算される
最後の調整。その投稿が見る人のフォロー外なら、点数に1未満の係数をかけて意図的に下げます(身内びいき)。フォロー外リーチは構造的にハンデがあるということ。
フォロー外は減点。ただし新規ユーザーとtopic面は別係数で“緩い”(コードに明示の分岐あり)
コードから発見した金脈:「アカウント開設が新しい+一定数フォロー済み」のユーザーには、フォロー外減点が緩い別係数が適用される。=Xを始めたばかりの人ほど、フォロー外の良コンテンツが届きやすい。大型イベント(W杯6/13)で新規流入が増える瞬間は、この“届きやすい層”が一斉に増える=構造的に最大の突破窓。
工程④
並べる → 広告を挟む → 最終チェック
たとえ:成績順に整列 → 間にスポンサー → 危険物の最終没収
A点数順に上位を選抜
全候補を最終スコアで降順ソートし、上位K件だけ採用
▼
B広告を“安全な隙間”に挿入
フィードが5件未満なら広告なし。広告間隔は理想3・最低2。センシティブ投稿の隣は避ける
▼
C最終チェック(出してはいけない物の没収)
削除済み・スパム・暴力/グロ等を除去。同じ会話の枝が複数あれば1本に間引く
▼
完成 → その人の「おすすめ」に表示
あなたの投稿が残っていれば、ここで初めて1人の画面に出る
そして見られた結果(いいね/返信/スルー…)が記録され、次回の採点とお見合いの材料に戻る。アルゴは回り続けるループです。
まとめ
結局あなたの投稿は、こう評価される
1投稿が受ける審査・要点だけ
- 拾われる:フォロー中なら自動で。フォロー外は「あなたに似た人が反応したか」のお見合いで拾われる(だからテーマ一貫+初回反応が複利)
- 足切り:古い/既読/ミュート語/重複は採点前に消滅。初速が、後の引用/RT・検索での“再注入”の引き金(元ツイートが独りで遅れて伸びるのではない)
- 採点:15個以上の反応をAIが個別予想して重み合計。いいね偏重は弱手、返信/DM/フォローが別ルート。“炎上っぽい”だけで先回り減点
- 同じ人ペナ:連投は2発目から自分で減衰。間隔を空けて1発を強く
- フォロー外減点:身内以外は点を縮められる。例外=新規ユーザー/topic面は緩い(W杯が突破窓)
- 選抜→広告→最終没収:点順に並び、危険物は最後に除去。結果が次のループの燃料に
「アルゴをどう騙すか」という問いが原理的に無効なのが分かったと思います。残るのは「実際に反応される投稿をどう設計するか」だけ。その具体的な打ち手はこちら:
→ 運用プレイブック(ミライマ公式の具体施策)を開く