商略AI

Xの公開コードから考える、閲覧数を増やす投稿の検証順

更新 マーケティング6分

Xで投稿の閲覧数を増やしたいとき、「動画を付ける」「長文にして開かせる」といった形式から試すと、何が効いたか分からなくなります。先に見るべきなのは、その投稿が共有・返信・クリックのどの行動を生む内容かです。

Xが公開した「おすすめ」タイムラインのコードでは、各ユーザーが「いいねする」「返信する」「リンクをコピーして共有する」といった行動を取る確率を予測し、行動ごとの重みを掛けてスコアを作っています。

Final Score = Σ (weight_i × P(action_i))

その既定値では、動画の品質視聴は0.0、リンクのコピー共有は20.0でした。ただし、この数字だけで「共有1件は動画視聴何件分」とは計算できず、本番では実験設定や後段の並べ替えも入ります。この記事の目的は攻略法を断定することではなく、何を先に試し、どの数字で採否を決めるかを作ることです。

先に試す3つ

公開コードから、自分の運用では次の順に検証します。

  1. 新しい読者へ届けたい内容は、返信ではなく通常投稿か引用で出す。 フォロー外アカウントの返信は候補から除く処理があるためです
  2. 誰かへ渡せる情報を1つ入れる。 判定条件、再現手順、出典付きの実測など、リンクをコピーして共有する理由を作ります
  3. 動画は内容上必要なときだけ付ける。 「動画だから伸びる」と仮定せず、同じ論点を静止画やテキストで出した投稿と表示数・共有・返信を比べます

これは公開コードから立てた仮説で、効果はまだ未計測です。表示数だけでなく、共有、返信、投稿クリック、プロフィール遷移、ブログ流入を投稿ごとに同じ時点で記録し、どの行動が増えた投稿だったかを見ます。

個人開発でマーケティング支援SaaS「商略AI」( https://shoryaku.net )を作っていて、その集客のためにXを運用しています。

公開コードを読むときの前提

読んだのは、Xが公開している推薦システムのリポジトリ xai-org/x-algorithm のコミット 6384ca7 です。自分のリポジトリではなく、X社が公開しているコードです。 おすすめタイムラインを組み立てる home-mixer/ のうち、重みの定義(params/param.rs)とスコアの合成(scorers/ranking_scorer.rs)を見ています。

先に、この数値を使うときの制約を3つ書いておきます。ここを飛ばすと、読み違えたまま運用を変えることになります。

  1. 公開されているのはフィーチャースイッチの既定値です。 param.rs の冒頭に「mirrored from config feature-switch defaults」とあり、実際の配信は実験で上書きされ得ます
  2. 最終順序はこの重みだけで決まりません。 重み付き和のあとに、別サービスが並べ替える工程が入ります
  3. 重みは予測確率に掛かります。件数ではありません。 リポジトリのコメントが「報告1件がいいね468件を打ち消す」式の換算を明示的に否定しています。報告の基準発生確率がいいねの1000分の1以下なので、予測が順位に影響できるよう重みが大きい、という説明です

行動ごとの重みの既定値

主なものを抜き出します。

行動 重みの既定値
リンクをコピーして共有 20.0
返信 5.0(相互フォロー相手のオリジナル投稿には +15.0)
引用 / DMで共有 各 5.0
著者をフォロー 4.0
共有(その他) 2.0
リポスト 1.0
いいね 0.5
投稿クリック(開く・続きを読む) 0.4
リンククリック 0.2
動画を開く 0.07
画像の展開 / 滞在 各 0.05
動画の品質視聴 0.0
プロフィールクリック 0.0
報告 / ミュート / 興味なし / ブロック −234.0 / −58.8 / −43.2 / −31.2

スコアの後段には、同じ著者の2件目以降を減衰させる調整(0.5倍ずつ、下限0.25)と、フォロー外を0.75倍にする調整が入ります。フィルタ側では、48時間より古い投稿と、フォロー外アカウントの返信・リポストが候補から落ちます。

数字を投稿設計へどう移すか

動画だけを優先する根拠は弱い。 品質視聴の重みが0.0で、動画を開くが0.07。いいねの0.5より小さい値でした。「動画を付ければ伸びる」という運用を、少なくとも公開されている既定値だけでは支持できません。

タップは半分だけ当たっていました。 投稿クリックは0.4で、いいねの0.5に迫ります。長文にして開かせること自体は確かにスコア源です。ただし、開いたのに反応が無かった場合を減衰させる仕組み(クリック後の滞在をいいね率で割り引く係数、滞在しなかったことへの負の重み)が実装されています。既定では無効になっているものもありますが、その方向の装置が用意されているという事実は残ります。

プロフィールクリックの既定値は0.0でした。 このHome Mixerの重み付き和では直接の加点にならない、という範囲の事実です。プロフィール遷移が別のモデルや後続配信へ影響するかは、この2ファイルから分かりません。事業上は引き続き計測しますが、投稿が表示された理由をこの値だけで説明しません。

先に検証するのは共有と会話です。 リンクのコピー共有が20.0、返信・引用・DM共有が5.0。タップだけを狙うより、後で誰かが誰かに渡せる形を試す優先度が上がりました。ただし、重みは行動の予測確率へ掛かるため、値の大小をそのまま実際の発生件数へ置き換えることはできません。

何が変わったか

読んだ内容を docs/skills/ のX運用スキルに反映しました(コミット 2ccc25f)。運用ルールの差分は次のとおりです。

前 後
動画や長文は「伸びる形式」として検討する 動画は内容上必要なときだけ付ける。冒頭で結論を伏せて開かせる書き方はしない
返信でも新規の読者に届くと考える 調査したHome Mixerの既定フィルタではフォロー外返信が候補外。新規向けの投稿は通常投稿か引用で比較する
スレッドの連投で露出を増やす 会話を畳み込む処理があるため、枠が増えるとは仮定しない。1論点1投稿を維持する
プロフィール遷移を主要な成果として見る 事業KPIとしては測るが、「伸びた理由」の説明には使わない
投稿ごとに反応を狙う 後で参照される形(判定条件・手順・実測値の組)を1つ入れる。ただし「保存してください」とは書かない

長文の本体を自社ブログに置く方針は変えていません。調査したHome Mixerの既定フィルタでは48時間より古い投稿が候補外になるため、継続して参照される内容は自社ブログで更新します。X全体のすべての表示面が48時間で除外するとは断定しません。

ルールは「こう書けば伸びる」という保証ではなく、検証前に前提へ置かないものとして残しました。

効果はまだ測っていません。 アカウントは開設直後で、比較できる投稿数がありません。上の変更は仕様に基づく仮説として運用ファイルに入れてあり、投稿ごとの実績が付いた時点で採用か棄却を判断します。仕様どおりに動かない可能性は、前提の1と2のとおり残ります。

閲覧数を増やすための検証順

  • 調査したHome Mixerではフォロー外返信が候補外だったため、新規向けは通常投稿・引用・返信で実績を分けて比べる
  • 判定条件・手順・実測など、第三者へ共有する理由がある情報を入れる
  • 動画は形式だけで優先せず、内容上必要な投稿でテキスト版と比較する
  • 公開値は本番の確定ルールではない。表示数・共有・返信・ブログ流入の実績で採否を決める
  • 重みは予測確率に掛かるため、20.0や0.0を行動件数の等価交換として読まない