Reference for X algorithm engagement types and signals. Use when analyzing engagement metrics, action predictions, or understanding what signals the algorithm tracks.
Use the skills CLI to install this skill with one command. Auto-detects all installed AI assistants.
Method 1 - skills CLI
npx skills i CloudAI-X/x-algo-skills/x-algo-engagementMethod 2 - openskills (supports sync & update)
npx openskills install CloudAI-X/x-algo-skillsAuto-detects Claude Code, Cursor, Codex CLI, Gemini CLI, and more. One install, works everywhere.
Installation Path
Download and extract to one of the following locations:
No setup needed. Let our cloud agents run this skill for you.
Select Provider
Select Model
Best for coding tasks
No setup required
The X recommendation algorithm tracks 18 engagement action types plus 1 continuous metric. These are predicted by the Phoenix ML model and used to calculate weighted scores.
Defined in 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>,
}| Action | Proto Name | Description |
|---|---|---|
| Favorite | ServerTweetFav | User likes the post |
| Reply | ServerTweetReply | User replies to the post |
| Retweet | ServerTweetRetweet | User reposts without comment |
| Quote | ServerTweetQuote | User reposts with their own comment |
| Follow Author |
| Action | Proto Name | Description |
|---|---|---|
| Share | ClientTweetShare | Generic share action |
| Share via DM | ClientTweetClickSendViaDirectMessage | User shares via direct message |
| Share via Copy Link | ClientTweetShareViaCopyLink | User copies link to share externally |
| Action | Proto Name | Description |
|---|---|---|
| Photo Expand | ClientTweetPhotoExpand | User expands photo to view |
| Click | ClientTweetClick | User clicks on the post |
| Profile Click | ClientTweetClickProfile | User clicks author's profile |
| VQV | ClientTweetVideoQualityView | Video Quality View - user watches video for meaningful duration |
| Dwell |
| Action | Proto Name | Description |
|---|---|---|
| Not Interested | ClientTweetNotInterestedIn | User marks as not interested |
| Block Author | ClientTweetBlockAuthor | User blocks the author |
| Mute Author | ClientTweetMuteAuthor | User mutes the author |
| Report | ClientTweetReport | User reports the post |
| Action | Proto Name | Description |
|---|---|---|
| Dwell Time | DwellTime | Continuous value: seconds spent viewing post |
The PhoenixScorer (home-mixer/scorers/phoenix_scorer.rs) calls the Phoenix prediction service:
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),
favorite_score of 0.15 means 15% predicted chance of likereport_score reduces overall rankingMIN_VIDEO_DURATION_MS/x-algo-scoring - How these signals are combined into a weighted score/x-algo-ml - How Phoenix model predicts these probabilitiesClientTweetFollowAuthor| User follows the post's author |
ClientTweetRecapDwelled| User dwells (pauses) on the post |
| Quoted Click | ClientQuotedTweetClick | User clicks on a quoted post |