X Engagement Playbook
Expert at building authority and engagement on X (Twitter) through distribution engineering,
algorithm-aware content design, and conversation tactics — grounded in the xai-org/x-algorithm
codebase at snapshot bc8e5f0 (2026-08-28), which raised reply-spam/ranking eligibility to 120k
followers, re-enabled a small binary-dwell weight, and simplified VMRanker to DPP-only on top of
the 2026-08-21 80k / SID-slate and 2026-08-14 scoring-semantics releases.
Overview
- Two systems, not one — ranking decides your order; visibility filtering decides whether
you're eligible at all. Most reach problems are the second one.
- Published weights — the blend weights are public as of 2026-08-13; the skill cites them with
file:line rather than inferring a hierarchy
- Weights multiply P(action), not counts — upstream (2026-08-14) explicitly rejects
"1 report cancels N likes." Report is rare (>1000× less base rate than like), so its weight is
large so the prediction can move the score. Mass-report brigades are personalized and mostly
affect similar users; only Home-Timeline-served actions count
- Account standing gates everything — spam/slop labels drop every post from out-of-network
for 30 days while followers see you normally. A new
panda_reports_embedding_v10_rough_spam
rule can non-permanently suspend for PlatformManipulation
- Mutuals compound — a mutually-followed author gets +15.0 on reply weight for root posts;
follow-graph bool features are wired into Phoenix candidate/history tensors
- Conversation leverage — replies are Grok-scored 0–3; spam/reply-ranking eligibility now
covers threads where target+root are ≤120k followers (was 80k; was 30k; was 15k). The 60s
scoring rate-limit is gone, and a worse ranking score overwrites a better one
- Dwell is small, not zero —
DwellWeight is 0.05 (was 0.0); Phoenix scoring aggregation
is DENSE_WITH_LONG_DWELL. Still far below reply/quote (5.0). vqv is now 0.0
- VMRanker is DPP-only — ranking_scorer no longer computes SID fields into the reranker
request. SlateContext still carries SID + new Phoenix
recon_* reconstruction-similarity
features from the proto
- Following blocks quotes/RTs — Following timeline hydrates blocked-by on quoted and
retweeted authors and drops those candidates
- Monetization alignment — Original Content Rewards pays on verified impressions on original
posts in the Home Timeline
- Freshness hardens after 14d — stale posts zero engagement-count features in Phoenix when the
flag is on; old viral posts lose raw-count advantage
- Cold start is Home-Timeline impressions —
view_count_on_home replaces raw view_count;
Thompson-sampling TopK (still off by default) is 2, not 5
Core Principles
1. Don't Get Dropped Before You Get Ranked
Visibility filtering runs a set of rules that fire only for out-of-network recommendations —
spam-high-recall, do-not-amplify, abusive, NSFW, compromised. Many are account-level. If OON
reach dies while follower engagement holds, that's the cause, not your hooks. Jurisdiction filters
(e.g. Brazil2026ElectionFilter, list updated 2026-08-27) can also remove listed authors from
For You unless the viewer follows them.
2. Negative Signals Matter — But Read the Math
report −234.0, mute_author −58.8, not_interested −43.2 versus a top positive of 20.0. Those
numbers weight predicted probabilities for this viewer, not raw engagement tallies. Do not
say "one report cancels ~47 replies." Still: content that invites mute/block/report is expensive,
and agatha/ scores blocks/reports relative to favorites as a durable account label.
3. Hook → Hold → Earn a Real Action
dwell is weighted 0.05 (same tier as photo expand) and cont_dwell_time 0.004;
not_dwelled is −0.02. Attention is still the precondition, not the payoff. Hold the reader
to earn a reply, quote, DM share or follow — those are what score. Do not treat 0.05 as a reason
to write long posts for dwell's sake.
4. Follows Compound, Even Though They Aren't Top-Weighted
follow_author is 4.0 — below reply, quote and DM share. But it's the only action that changes
every future impression, moves you in-network past the 0.75 OON discount, and feeds the PageRank
credibility that buys enforcement leniency. Design for it for those reasons.
5. Post First, Drive Traffic Second
Always post your own content to your profile first, then reply into relevant threads to pull
traffic back. Never let your best content die inside someone else's thread — reply impressions
don't monetize either.
6. Reply Quality Over Volume — This Is The Riskiest Lever
Replies are Grok-scored 0–3, and the scorer now sees follower counts. Below ~1,000 followers spam
scrutiny is elevated, and fast_reply_spam_post carries a 30-day SpamHighRecall label.
bdsm/ reads posting cadence directly. Reply-spam / reply-ranking tasks now cover threads up
to ≤120k followers on target and root. Every reply can be scored immediately (no 60s dedupe),
and a later worse score replaces a better one. Five excellent replies beat fifty mediocre ones
by a wide margin.
7. Volume and Repetition Both Decay
Author diversity: your 2nd post in a feed load keeps 62.5%, your 3rd 43.75%. VMRanker separately
demotes posts similar to their neighbours via a determinantal point process (DPP). Phoenix
reconstruction-similarity (recon_cos_milli, recon_count_above, recon_gap_above) is now an
explicit slate-context feature. Post less, and don't rephrase yourself or flood one topic cluster.
8. Originality Is Attributed, Paid, and Enforced
Original Content Rewards pays on qualified impressions: Premium viewers, Home Timeline,
original posts. Separately, llm_slop_user and llm_slop_post are real enforcement labels
with 30-day TTLs. Generic AI-shaped output is a named, penalized category.
9. Ship While Fresh
Phoenix can mark posts older than ~14 days as stale and zero their engagement-count features
(IS_STALE_POST14D). Design for timely distribution; do not rely on ancient high-count posts to
keep ranking on raw fav/view features alone. Cold-start explore uses Home Timeline impression
counts (view_count_on_home), not global views.
10. Account-level NSFW bleeds into ranking features
Phoenix receives an author-NSFW safety bit (SAFETY_BIT_AUTHOR_NSFW via nsfw_author_phoenix).
Adult-marked accounts are not only a visibility problem — they are a model-input problem on every
non-retweet candidate.
Documentation
- Scoring Weights - The published blend weights with
file:line
citations, correct P(action) semantics, bidirectional-follow boost, OON factors, author
diversity, dwell 0.05 / vqv 0.0, params off by default
- Algorithm Signals - Which signals exist, candidate sources,
network alignment, facepile, stale-post / cold-start notes, how to prioritize
- Visibility Filtering - ALLOW/INTERSTITIAL/DROP, the
out-of-network-only drop rules, Brazil 2026 election filter, muted-keyword Following expansion,
Following blocked-by quote/RT drop
- Account Standing - agatha, user-cred-v2 PageRank, bdsm behaviour
model, the enforcement label chain and its 30-day TTLs
- Content Quality Screening - Banger Screen outputs, reply spam
buckets, 0–3 reply rubric, the ten safety categories
- Content Strategy - Hooks, clusters, attention, diversity decay,
freshness
- Conversation Tactics - Reply scoring, spam risk (≤120k),
thread hijacking, social proof
- Authority Building - Follow triggers, share signals,
network alignment, positioning
- Monetization - Original Content Rewards: eligibility, qualified
impressions, originality rules, payout mechanics (sourced from X help pages, not the codebase)
- Content Ideas - High-performing templates
- x-algorithm README (upstream) - Cached upstream README
- upstream/ - Verbatim cached source files the analysis above is derived from
Quick Workflow
- Check standing first if reach has dropped — Under the Hood shows the labels actually on
your account; don't theorize about hooks until that's clean
- Draft content with a strong hook (controversial truth or myth-busting)
- Ask: could this make someone mute, block or report? Negatives still dominate risk, even
after correcting the weight-ratio myth
- Ask: does this earn a reply, quote, DM share, or follow? Those are what score
- Check it reads as human — not templated, not your last post rephrased, not the same
cluster as the post you just shipped
- Post to your profile first
- Wait 10–30 minutes, then find active threads (20–200 likes, your topic)
- Reply with quality, at human pace — extend the idea, don't self-promote; quality still
matters on mid-tier threads up through ~120k
Content Formula
clean account standing (no OON drop labels)
+ topically legible (VLM can categorize it)
+ nothing that invites mute / block / report
+ a reason to reply, quote, or DM it to one specific person
+ a reason to follow (unique insight + consistent content identity)
+ original and human-sounding (not slop-labelled)
+ timely enough that engagement features still count
+ not a near-duplicate of your last post or the same cluster
= algorithmic reach → qualified impressions → payout
Anti-Patterns
- High-volume or fast-cadence replies (
fast_reply_spam_post, 30-day SpamHighRecall)
- Generic / templated / AI-shaped content (
llm_slop_user, llm_slop_post)
- Rephrasing your own last post (VMRanker DPP demotion,
SpamEmbeddingMajorityPoster)
- Flooding one topic cluster in a short window (Phoenix
recon_* similarity on slate context)
- Burst posting on a mechanical schedule (
bdsm/ reads inter-action timing)
- Deliberate antagonism (agatha scores blocks/reports relative to favorites)
- Posting too frequently (author diversity decay attenuates each successive post)
- Dropping naked links (
MALICIOUS_URL_DROP keys on the link, and it can fire retroactively)
- Risky avatar / banner imagery (
NSFW_AVATAR_IMAGE_USER_DROP costs you all OON reach)
- Adult-labelled account state leaking into Phoenix via
nsfw_author_phoenix
- Posting before building your own content
- Leading with theory instead of concrete examples
- Building a reply-heavy strategy for income (reply impressions don't monetize)
- Aggregating others' content with thin additions (devalued under Original Content Rewards)
- Treating
dwell 0.05 as the payoff (reply/quote still 5.0)
- Chasing
vqv or profile_click (both weighted 0.0)
- Treating weight ratios as raw count equivalences ("1 report = N likes") — wrong since 2026-08-14
- Relying on weeks-old posts to keep ranking on accumulated fav/view counts alone
- Treating mid-size creator threads (80k–120k) as "safe from reply ranking" — they are not
- Spray-and-pray replies now that every reply can be scored immediately and a worse score sticks
Currency
Analytical docs are hand-derived from the source files cached in docs/upstream/, at snapshot
bc8e5f0 (2026-08-28). CI copies those files but cannot regenerate the prose. If a cached
file's diff shows a changed or removed constant, the analysis needs re-deriving by hand — see
sync.json → snapshot_commit.
1---2name: x-engagement3description: Crafts high-engagement X (Twitter) content using the published X recommendation algorithm weights, visibility filtering rules, account standing signals, conversation tactics, and the Original Content Rewards monetization rules. Use when writing tweets, planning X content strategy, building audience, optimizing engagement, diagnosing lost reach, or checking creator payout eligibility. Triggers on mentions of X, Twitter, tweets, threads, engagement, audience growth, content strategy, shadowban, reach drop, creator monetization, Original Content Rewards, revenue sharing, creator payouts.4---56# X Engagement Playbook78Expert at building authority and engagement on X (Twitter) through distribution engineering,9algorithm-aware content design, and conversation tactics — grounded in the `xai-org/x-algorithm`10codebase at snapshot `bc8e5f0` (2026-08-28), which raised reply-spam/ranking eligibility to 120k11followers, re-enabled a small binary-dwell weight, and simplified VMRanker to DPP-only on top of12the 2026-08-21 80k / SID-slate and 2026-08-14 scoring-semantics releases.1314## Overview1516- **Two systems, not one** — ranking decides your *order*; visibility filtering decides whether17 you're *eligible* at all. Most reach problems are the second one.18- **Published weights** — the blend weights are public as of 2026-08-13; the skill cites them with19 `file:line` rather than inferring a hierarchy20- **Weights multiply P(action), not counts** — upstream (2026-08-14) explicitly rejects21 "1 report cancels N likes." Report is rare (>1000× less base rate than like), so its weight is22 large so the *prediction* can move the score. Mass-report brigades are personalized and mostly23 affect similar users; only Home-Timeline-served actions count24- **Account standing gates everything** — spam/slop labels drop *every* post from out-of-network25 for 30 days while followers see you normally. A new `panda_reports_embedding_v10_rough_spam`26 rule can non-permanently suspend for PlatformManipulation27- **Mutuals compound** — a mutually-followed author gets +15.0 on reply weight for root posts;28 follow-graph bool features are wired into Phoenix candidate/history tensors29- **Conversation leverage** — replies are Grok-scored 0–3; spam/reply-ranking eligibility now30 covers threads where target+root are ≤**120k** followers (was 80k; was 30k; was 15k). The 60s31 scoring rate-limit is gone, and a worse ranking score overwrites a better one32- **Dwell is small, not zero** — `DwellWeight` is **0.05** (was 0.0); Phoenix scoring aggregation33 is `DENSE_WITH_LONG_DWELL`. Still far below reply/quote (5.0). `vqv` is now **0.0**34- **VMRanker is DPP-only** — ranking_scorer no longer computes SID fields into the reranker35 request. SlateContext still carries SID + new Phoenix `recon_*` reconstruction-similarity36 features from the proto37- **Following blocks quotes/RTs** — Following timeline hydrates blocked-by on quoted and38 retweeted authors and drops those candidates39- **Monetization alignment** — Original Content Rewards pays on verified impressions on *original*40 posts in the Home Timeline41- **Freshness hardens after 14d** — stale posts zero engagement-count features in Phoenix when the42 flag is on; old viral posts lose raw-count advantage43- **Cold start is Home-Timeline impressions** — `view_count_on_home` replaces raw `view_count`;44 Thompson-sampling TopK (still off by default) is 2, not 54546## Core Principles4748### 1. Don't Get Dropped Before You Get Ranked49Visibility filtering runs a set of rules that fire **only for out-of-network recommendations** —50spam-high-recall, do-not-amplify, abusive, NSFW, compromised. Many are **account-level**. If OON51reach dies while follower engagement holds, that's the cause, not your hooks. Jurisdiction filters52(e.g. `Brazil2026ElectionFilter`, list updated 2026-08-27) can also remove listed authors from53For You unless the viewer follows them.5455### 2. Negative Signals Matter — But Read the Math56`report` −234.0, `mute_author` −58.8, `not_interested` −43.2 versus a top positive of 20.0. Those57numbers weight **predicted probabilities for this viewer**, not raw engagement tallies. Do **not**58say "one report cancels ~47 replies." Still: content that invites mute/block/report is expensive,59and `agatha/` scores blocks/reports *relative to favorites* as a durable account label.6061### 3. Hook → Hold → Earn a Real Action62`dwell` is weighted **0.05** (same tier as photo expand) and `cont_dwell_time` **0.004**;63`not_dwelled` is **−0.02**. Attention is still the precondition, not the payoff. Hold the reader64to earn a reply, quote, DM share or follow — those are what score. Do not treat 0.05 as a reason65to write long posts for dwell's sake.6667### 4. Follows Compound, Even Though They Aren't Top-Weighted68`follow_author` is 4.0 — below reply, quote and DM share. But it's the only action that changes69every *future* impression, moves you in-network past the 0.75 OON discount, and feeds the PageRank70credibility that buys enforcement leniency. Design for it for those reasons.7172### 5. Post First, Drive Traffic Second73Always post your own content to your profile first, then reply into relevant threads to pull74traffic back. Never let your best content die inside someone else's thread — reply impressions75don't monetize either.7677### 6. Reply Quality Over Volume — This Is The Riskiest Lever78Replies are Grok-scored 0–3, and the scorer now sees follower counts. Below ~1,000 followers spam79scrutiny is elevated, and `fast_reply_spam_post` carries a 30-day `SpamHighRecall` label.80`bdsm/` reads posting *cadence* directly. Reply-spam / reply-ranking tasks now cover threads up81to ≤120k followers on target and root. Every reply can be scored immediately (no 60s dedupe),82and a later worse score replaces a better one. Five excellent replies beat fifty mediocre ones83by a wide margin.8485### 7. Volume and Repetition Both Decay86Author diversity: your 2nd post in a feed load keeps 62.5%, your 3rd 43.75%. VMRanker separately87demotes posts similar to their neighbours via a determinantal point process (DPP). Phoenix88reconstruction-similarity (`recon_cos_milli`, `recon_count_above`, `recon_gap_above`) is now an89explicit slate-context feature. Post less, and don't rephrase yourself or flood one topic cluster.9091### 8. Originality Is Attributed, Paid, and Enforced92Original Content Rewards pays on qualified impressions: **Premium viewers**, **Home Timeline**,93**original posts**. Separately, `llm_slop_user` and `llm_slop_post` are real enforcement labels94with 30-day TTLs. Generic AI-shaped output is a named, penalized category.9596### 9. Ship While Fresh97Phoenix can mark posts older than ~14 days as stale and zero their engagement-count features98(`IS_STALE_POST14D`). Design for timely distribution; do not rely on ancient high-count posts to99keep ranking on raw fav/view features alone. Cold-start explore uses **Home Timeline** impression100counts (`view_count_on_home`), not global views.101102### 10. Account-level NSFW bleeds into ranking features103Phoenix receives an author-NSFW safety bit (`SAFETY_BIT_AUTHOR_NSFW` via `nsfw_author_phoenix`).104Adult-marked accounts are not only a visibility problem — they are a model-input problem on every105non-retweet candidate.106107## Documentation108109- **[Scoring Weights](docs/scoring-weights.md)** - The published blend weights with `file:line`110 citations, correct P(action) semantics, bidirectional-follow boost, OON factors, author111 diversity, dwell 0.05 / vqv 0.0, params off by default112- **[Algorithm Signals](docs/algorithm-signals.md)** - Which signals exist, candidate sources,113 network alignment, facepile, stale-post / cold-start notes, how to prioritize114- **[Visibility Filtering](docs/visibility-filtering.md)** - ALLOW/INTERSTITIAL/DROP, the115 out-of-network-only drop rules, Brazil 2026 election filter, muted-keyword Following expansion,116 Following blocked-by quote/RT drop117- **[Account Standing](docs/account-standing.md)** - agatha, user-cred-v2 PageRank, bdsm behaviour118 model, the enforcement label chain and its 30-day TTLs119- **[Content Quality Screening](docs/content-quality.md)** - Banger Screen outputs, reply spam120 buckets, 0–3 reply rubric, the ten safety categories121- **[Content Strategy](docs/content-strategy.md)** - Hooks, clusters, attention, diversity decay,122 freshness123- **[Conversation Tactics](docs/conversation-tactics.md)** - Reply scoring, spam risk (≤120k),124 thread hijacking, social proof125- **[Authority Building](docs/authority-building.md)** - Follow triggers, share signals,126 network alignment, positioning127- **[Monetization](docs/monetization.md)** - Original Content Rewards: eligibility, qualified128 impressions, originality rules, payout mechanics *(sourced from X help pages, not the codebase)*129- **[Content Ideas](docs/content-ideas.md)** - High-performing templates130- **[x-algorithm README (upstream)](docs/x-algorithm-readme.md)** - Cached upstream README131- **[upstream/](docs/upstream/)** - Verbatim cached source files the analysis above is derived from132133## Quick Workflow1341351. **Check standing first** if reach has dropped — Under the Hood shows the labels actually on136 your account; don't theorize about hooks until that's clean1372. **Draft content** with a strong hook (controversial truth or myth-busting)1383. **Ask: could this make someone mute, block or report?** Negatives still dominate risk, even139 after correcting the weight-ratio myth1404. **Ask: does this earn a reply, quote, DM share, or follow?** Those are what score1415. **Check it reads as human** — not templated, not your last post rephrased, not the same142 cluster as the post you just shipped1436. **Post to your profile** first1447. **Wait 10–30 minutes**, then find active threads (20–200 likes, your topic)1458. **Reply with quality, at human pace** — extend the idea, don't self-promote; quality still146 matters on mid-tier threads up through ~120k147148## Content Formula149150```151clean account standing (no OON drop labels)152+ topically legible (VLM can categorize it)153+ nothing that invites mute / block / report154+ a reason to reply, quote, or DM it to one specific person155+ a reason to follow (unique insight + consistent content identity)156+ original and human-sounding (not slop-labelled)157+ timely enough that engagement features still count158+ not a near-duplicate of your last post or the same cluster159= algorithmic reach → qualified impressions → payout160```161162## Anti-Patterns163164- High-volume or fast-cadence replies (`fast_reply_spam_post`, 30-day `SpamHighRecall`)165- Generic / templated / AI-shaped content (`llm_slop_user`, `llm_slop_post`)166- Rephrasing your own last post (VMRanker DPP demotion, `SpamEmbeddingMajorityPoster`)167- Flooding one topic cluster in a short window (Phoenix `recon_*` similarity on slate context)168- Burst posting on a mechanical schedule (`bdsm/` reads inter-action timing)169- Deliberate antagonism (agatha scores blocks/reports relative to favorites)170- Posting too frequently (author diversity decay attenuates each successive post)171- Dropping naked links (`MALICIOUS_URL_DROP` keys on the link, and it can fire retroactively)172- Risky avatar / banner imagery (`NSFW_AVATAR_IMAGE_USER_DROP` costs you *all* OON reach)173- Adult-labelled account state leaking into Phoenix via `nsfw_author_phoenix`174- Posting before building your own content175- Leading with theory instead of concrete examples176- Building a reply-heavy strategy for income (reply impressions don't monetize)177- Aggregating others' content with thin additions (devalued under Original Content Rewards)178- Treating `dwell` 0.05 as the payoff (reply/quote still 5.0)179- Chasing `vqv` or `profile_click` (both weighted 0.0)180- Treating weight ratios as raw count equivalences ("1 report = N likes") — wrong since 2026-08-14181- Relying on weeks-old posts to keep ranking on accumulated fav/view counts alone182- Treating mid-size creator threads (80k–120k) as "safe from reply ranking" — they are not183- Spray-and-pray replies now that every reply can be scored immediately and a worse score sticks184185## Currency186187Analytical docs are hand-derived from the source files cached in `docs/upstream/`, at snapshot188`bc8e5f0` (2026-08-28). CI copies those files but **cannot** regenerate the prose. If a cached189file's diff shows a changed or removed constant, the analysis needs re-deriving by hand — see190`sync.json` → `snapshot_commit`.