x-algo-engagement について
Xのレコメンドアルゴリズムがエンゲージメント信号を使って投稿を評価する仕組みを解説するスキルです。アルゴリズムや関連コードを調べる人向けに、行動の種類、Phoenixの予測スコア、その解釈を説明します。
主な機能
- 01正負のエンゲージメント行動の整理
- 02行動に対応するプロトコル名の一覧
- 03Phoenixの予測スコアの説明
- 04確率とランキング重みの解説
- 05動画品質視聴シグナルの説明
活用シーン
- 01Xが使うエンゲージメント信号の参照
- 02Phoenixスコアの意味の把握
- 03投稿ランキングにおける負の信号の分析
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ cloudai-x/ x-algo-skills --skill x-algo-engagementインストール後、Claude Code で/x-algo-engagementを入力して読み込まれたか確認します。
詳細
X アルゴリズムのエンゲージメントシグナル
X のレコメンデーションアルゴリズムは、18 種類のエンゲージメントアクションと1 つの連続値メトリクスを追跡します。これらは Phoenix ML モデルによって予測され、重み付けスコアの計算に使用されます。
PhoenixScores 構造体
home-mixer/candidate_pipeline/candidate.rs で定義されています。
pub struct PhoenixScores {
// Positive engagement signals
pub favorite_score: Option<f64>,
pub reply_score: Option<f64>,
pub retweet_score: Option<f64>,
pub quote_score: Option<f64>,
pub share_score: Option<f64>,
pub share_via_dm_score: Option<f64>,
pub share_via_copy_link_score: Option<f64>,
pub follow_author_score: Option<f64>,
// Engagement metrics
pub photo_expand_score: Option<f64>,
pub click_score: Option<f64>,
pub profile_click_score: Option<f64>,
pub vqv_score: Option<f64>, // Video Quality View
pub dwell_score: Option<f64>,
pub quoted_click_score: Option<f64>,
// Negative signals
pub not_interested_score: Option<f64>,
pub block_author_score: Option<f64>,
pub mute_author_score: Option<f64>,
pub report_score: Option<f64>,
// Continuous actions
pub dwell_time: Option<f64>,
}
カテゴリ別アクションの種類
ポジティブなエンゲージメント(高価値)
| アクション | Proto 名 | 説明 |
|---|---|---|
| いいね | ServerTweetFav | ユーザーが投稿にいいねします |
| 返信 | ServerTweetReply | ユーザーが投稿に返信します |
| リポスト | ServerTweetRetweet | ユーザーがコメントなしで投稿をリポストします |
| 引用 | ServerTweetQuote | ユーザーが自分のコメントを付けて投稿をリポストします |
| 投稿者をフォロー | ClientTweetFollowAuthor | ユーザーが投稿者をフォローします |
共有アクション
| アクション | Proto 名 | 説明 |
|---|---|---|
| 共有 | ClientTweetShare | 一般的な共有アクション |
| DM で共有 | ClientTweetClickSendViaDirectMessage | ユーザーがダイレクトメッセージで共有します |
| リンクをコピーして共有 | ClientTweetShareViaCopyLink | ユーザーが外部で共有するためにリンクをコピーします |
エンゲージメントメトリクス
| アクション | Proto 名 | 説明 |
|---|---|---|
| 写真を拡大 | ClientTweetPhotoExpand | ユーザーが写真を拡大して表示します |
| クリック | ClientTweetClick | ユーザーが投稿をクリックします |
| プロフィールをクリック | ClientTweetClickProfile | ユーザーが投稿者のプロフィールをクリックします |
| VQV | ClientTweetVideoQualityView | ビデオ品質視聴 — ユーザーが十分な時間動画を視聴します |
| 滞在 | ClientTweetRecapDwelled | ユーザーが投稿を見て、その場に留まります |
| 引用投稿をクリック | ClientQuotedTweetClick | ユーザーが引用投稿をクリックします |
ネガティブシグナル
| アクション | Proto 名 | 説明 |
|---|---|---|
| 興味なし | ClientTweetNotInterestedIn | ユーザーが興味なしとしてマークします |
| 投稿者をブロック | ClientTweetBlockAuthor | ユーザーが投稿者をブロックします |
| 投稿者をミュート | ClientTweetMuteAuthor | ユーザーが投稿者をミュートします |
| 報告 | ClientTweetReport | ユーザーが投稿を報告します |
連続アクション
| アクション | Proto 名 | 説明 |
|---|---|---|
| 滞在時間 | DwellTime | 連続値:投稿の閲覧に費やした秒数 |
スコアの取得方法
PhoenixScorer(home-mixer/scorers/phoenix_scorer.rs)は、Phoenix 予測サービスを呼び出します。
- 入力:ユーザー履歴 + 候補投稿
- 出力:候補ごとの各アクションタイプの対数確率
- 変換:
probability = exp(log_prob)
fn extract_phoenix_scores(&self, p: &ActionPredictions) -> PhoenixScores {
PhoenixScores {
favorite_score: p.get(ActionName::ServerTweetFav),
reply_score: p.get(ActionName::ServerTweetReply),
retweet_score: p.get(ActionName::ServerTweetRetweet),
// ... maps each action to its probability
}
}
シグナルの解釈
- スコアは確率です(0.0〜1.0):P(ユーザーが投稿を見た後にアクションを起こす | ユーザーが投稿を見る)
- 値が高いほど可能性が高くなります:
favorite_scoreが0.15の場合、いいねする確率は15%と予測されます - ネガティブなシグナルには負の重みが設定されます:
report_scoreが高いと、全体的なランキングが下がります - VQVには動画の最低再生時間が必要です:
MIN_VIDEO_DURATION_MSを超える動画にのみ適用されます
関連スキル
/x-algo-scoring- これらのシグナルを加重スコアに統合する方法/x-algo-ml- Phoenixモデルがこれらの確率を予測する方法
コメント
Markdown 対応