X Content Advisor · git:20260814.c2378ea · 2026-08-14 · sha256 34ee6cda2f73e5d6

X Content Advisor git:20260814.c2378eaA

Immutable. This exact content never changes and is served at /api/v1/blob/34ee6cda2f73e5d6.

---
id: x-content-advisor
name: X Content Advisor
summary: >-
  Audit an X account or draft, separate evidence from algorithm folklore, and turn the
  findings into stronger posts, content ideas, and small measurable experiments. Includes
  a dated Phoenix ranking reference and a worked @copenzafan case study.
type: skill
author: kisa
recommended: true
added: 2026-08-14
tags: [x, twitter, content, analytics, growth, phoenix, social-media]
source: https://x.com/XOpenSource/status/2087951962004230428
description: >-
  Use when a user asks how to grow or make better content on X/Twitter, wants an account
  or post audit, asks why a post underperformed, needs a weekly content plan, or wants a
  draft rewritten, a posting-time experiment, or a recommendation-risk review of sensitive
  media using evidence from their own timeline. Works with public profile/post URLs,
  exported analytics, screenshots, images, or text supplied by the user.
triggers:
  - audit my X account
  - analyze my Twitter posts
  - improve this tweet
  - make an X content plan
  - why did this post underperform
  - find the best time to post on X
  - will this image be restricted on X
---

# X Content Advisor

Give practical content advice from the user's own evidence. Treat the published X
algorithm as a set of constraints and clues, not a recipe that predicts reach.

## Choose the smallest useful mode

- **Draft review:** inspect the hook, promise, proof, media, audience fit, and requested
  action. Return a revised draft plus the few changes that matter.
- **Post diagnosis:** compare the post with the account's normal baseline and nearby posts.
  Explain plausible causes; do not claim causality from one observation.
- **Account audit:** sample recent root posts, identify repeatable winners and leaks, then
  recommend three priorities.
- **Content plan:** turn proven themes into a short schedule of root posts, supporting
  self-replies, and one-variable experiments.

Do not force a full audit when the user only asks to fix one draft.

## Audit workflow

### 1. Establish the evidence boundary

Use live sources when available. Record:

- profile and post URLs;
- capture date and timezone;
- number of root posts actually found;
- whether metrics came from native analytics, public counters, screenshots, or the user;
- posts or metrics that could not be accessed.

Public X pages are often incomplete when logged out. Never call a partial public sample
"the whole account." Public counters also change, so date every numerical claim.

For a useful account sample, prefer 10–30 recent **root posts** plus known top performers.
Keep replies, reposts, and roots separate: they occupy different surfaces and are not fair
one-to-one comparisons.

### 2. Build a compact post map

For each root post, capture only fields that help the decision:

| Field | Examples |
|---|---|
| Format | text, image, demo video, comparison, story, launch |
| Topic and audience | AI builders, artists, NFT community, broad tech |
| Hook | result, tension, novelty, opinion, or no clear hook |
| Proof | working demo, output, numbers, code, personal event |
| Action | reply, open resource, share, follow, or none |
| Public outcomes | views, likes, replies, reposts, quotes, bookmarks if visible |

Use medians for the account baseline because one viral post distorts the mean. Show raw
counts for a small sample. Ratios can describe behavior, but low-view ratios are noisy.

### 3. Diagnose three different outcomes

Do not collapse everything into "engagement":

1. **Reach:** views and out-of-network discovery.
2. **Conversation:** replies, quotes, and whether the author can answer usefully.
3. **Depth/conversion:** follows, profile visits, link actions, bookmarks, or downstream
   outcomes when native analytics or user data exposes them.

A community story can create an excellent conversation without broad reach. A visual demo
can earn views without converting. Name which outcome succeeded.

### 4. Find a repeatable mechanism, not a superficial format

Ask why the post made someone stop and act. "Video worked" is too shallow if another video
failed. Look for the combination:

- a result visible immediately;
- novelty or useful tension in the first two lines;
- credible proof;
- a recognizable audience;
- one natural next action with a real payoff.

Phrase conclusions as evidence levels:

- **Observed:** directly supported by the sample.
- **Likely:** a plausible explanation supported by several posts or product mechanics.
- **Test:** an unproven hypothesis for the next posts.

### 5. Recommend changes the user can execute

Return, in this order:

1. one-sentence diagnosis;
2. what already works, with post-level evidence;
3. the three largest leaks;
4. three prioritized changes;
5. requested deliverable: revised draft, post ideas, or a weekly plan;
6. a 2-week test with one changed variable per comparison;
7. evidence limitations.

Do not promise a view or follower range. X's score is personalized, experiments can override
defaults, and public engagement counts do not expose the model probabilities.

## Content rules that survive algorithm changes

### Make the root post complete

Use this shape when it suits the material:

1. **Hook:** state the surprising result, conflict, or payoff in the first 1–2 lines.
2. **Proof:** show the output, demo, comparison, screenshot, or concrete event.
3. **Context:** explain what changed and why it matters to this audience.
4. **Action:** ask for one useful next step only when the user receives something specific.
5. **Self-reply:** place code, workflow, sources, limitations, or a deeper breakdown there
   when the root would otherwise become crowded.

A self-reply improves context and conversion on the conversation page. Do not describe it
as a second independent out-of-network root-post opportunity.

### Prefer a value contract to generic engagement bait

Good actions are specific and fulfillable:

- "Reply `workflow` and I'll post the node graph" — only if the author will actually do it.
- "Which failure should I test next: hands or temporal consistency?"
- "Repo and setup notes are in the first reply."

Avoid interchangeable "like/follow/share" requests. A CTA cannot rescue a weak premise.

### Rotate mechanisms, not just media types

Useful recurring pillars for a technical creator:

- **Build proof:** a working tool or workflow with the result first.
- **Comparison:** side-by-side outputs plus a decisive takeaway and test conditions.
- **Failure analysis:** one artifact, why it happened, and the attempted fix.
- **Personal stakes:** a real event, decision, loss, surprise, or disagreement tied to the
  audience's world.
- **Deep resource:** code, nodes, prompt, checklist, or postmortem delivered in a thread.

Pure text can work, but it needs unusually strong tension or insight. Adding arbitrary media
does not fix an undifferentiated thought.

### Space competing roots deliberately

There is no published "maximum two posts per day" rule. However, same-author candidates in
one feed slate are diversity-decayed, so several similar roots can compete with one another.
Prefer one strong root and its useful thread over several near-duplicate roots. Treat timing
as an experiment, not a universal law.

### Test posting time instead of declaring a universal best hour

The published recommender does not prescribe a best clock time. Use native follower-activity
analytics when available. Otherwise, select two plausible windows for the audience, rotate
comparable root posts between them, and compare medians after at least four posts per window.
Keep topic, format, and day mix as similar as practical.

For a mixed Europe + US East audience, use this only as a starting test grid:

| Goal | Moscow time hypothesis | Days to start with | Approximate overlap |
|---|---|---|---|
| Europe morning | 10:00–12:00 | Tue–Thu | Europe morning; little US overlap |
| Broad overlap | 15:00–18:00 | Tue–Thu | Europe afternoon + US East morning |
| Narrow compromise | 16:00–17:30 | Tue–Thu | A practical subset of the broad-overlap window |
| Later mixed window | 19:00–21:00 | Tue–Fri | Europe evening + US East midday |

Moscow stays on UTC+3 while Europe and the US change daylight-saving offsets. Recalculate
the audience's local time when the clocks change. Never present this grid as an X algorithm
rule or call a slot "best" before the account's own test supports it.

### Treat sensitive media as a distribution constraint

Sensitive visuals may hold attention among people who can see them, but adult/NSFW, gore,
spam, malicious-link, and do-not-amplify labels can interstitial or hard-drop content from
Home Recommendations. Account-level adult labels can also remove out-of-network candidates.

Do not advise classifier evasion or imply that wording such as "AI-generated tech demo"
neutralizes media labels. Follow platform rules and keep the main growth loop suitable for
broad recommendation surfaces.

### Separate content boundaries from classifier claims

The open repository publishes what visibility rules do **after** a safety label or account
flag exists. It does not publish the media classifier's complete feature set, thresholds,
or the frequency with which a visual cue produces `NSFW_HIGH_PRECISION` versus
`NSFW_HIGH_RECALL`. Never convert an aesthetic cue into a guaranteed label.

Use this qualitative review instead:

| Review class | Content description | Recommendation-risk interpretation |
|---|---|---|
| **Explicit** | Visible genitals, explicit sex acts, or full/near-full sexual nudity | Treat as high distribution risk. If an NSFW label/flag is applied, Home can interstitial it and Home Recommendations can drop it OON. Do not claim which classifier label is guaranteed. |
| **Sexually suggestive** | No explicit nudity, but sexualized expression, pose, fluids/wet styling, framing, or fetish-coded context | Treat as uncertain but material label risk. Review the actual media and account context; do not assign a probability without measured examples. |
| **Neutral or ambiguous cosplay** | Portrait/costume presentation without explicit nudity or intentionally sexualized expression/context | Lower apparent risk, not a guarantee of `ALLOW`; other media, text, account, and safety signals still apply. |

When reviewing a sensitive candidate, report four separate facts:

1. **Visible explicitness:** what intimate anatomy or sex act is actually visible.
2. **Presentation:** expression, pose, fluids, crop, clothing, and surrounding context.
3. **Rule evidence:** which published visibility action would follow **if** a known label
   were present.
4. **Uncertainty:** whether the label itself is observed in Under the Hood/native UI or only
   hypothesized from the image.

Example from the @copenzafan case: a face-and-shoulders crop with an ahegao-coded expression,
visible tongue/tears/saliva, wet styling, and a helmet contains no described explicit nudity
beyond bare shoulders, but its presentation is deliberately sexually suggestive. Classify the
content review as **suggestive, non-explicit**. The crop and absence of links do not prove it
will avoid a media label: links/card images are evaluated by separate rules, while the actual
classifier thresholds are not published. Do not recommend tighter cropping as label evasion.

Published consequences that can be stated precisely:

- `NSFW_HIGH_PRECISION` can produce an interstitial in the base Home policy for viewers who
  have not enabled sensitive media.
- `NSFW_HIGH_PRECISION` and `NSFW_HIGH_RECALL` are OON drop rules in Home Recommendations.
- logged-out and underage viewers can be dropped from sensitive media; viewers without a
  stated age can also be dropped in listed age-gating jurisdictions.
- tweet-level flags, author adult flags, NSFW avatar/banner labels, and account-level safety
  labels can independently reduce recommendation eligibility.

## Published X ranking reference — snapshot 2026-08-13

Use this section only as a dated reference. If the user asks about the **current** algorithm
after this snapshot, verify the official repository before quoting exact values.

The published `RankingScorer` combines each viewer's model-predicted probability of an
action with configurable weights. The numbers below are not points awarded for public
action counts and cannot be used to calculate a post's score.

Selected published defaults at commit `a389166`:

| Predicted action | Default weight |
|---|---:|
| Favorite | 0.5 |
| Reply | 5 |
| Retweet | 1 |
| Share | 2 |
| Share via DM | 5 |
| Share via **copying the X post link** | 20 |
| Follow author | 4 |
| Open external link | 0.2 |
| Video open / quality video view | 0.05 / 0.05 |
| Continuous dwell time | 0.004 |
| Not interested | -43.2 |
| Block author | -31.2 |
| Mute author | -58.8 |
| Report | -234 |

Critical interpretations:

- A GitHub click is `open_link`, not `share_via_copy_link`. Do not tell users that adding a
  repository URL earns the copy-link weight.
- The published scorer shows no hard external-link penalty. It gives `open_link` a small
  positive weight, but an outbound click can still reduce opportunities for later on-platform
  actions. Present that as an indirect behavioral hypothesis, not a coded penalty.
- The published bidirectional-follow reply boost applies to eligible original posts from
  mutually followed authors. It does not mean that a back-and-forth reply chain receives a
  special "bidirectional conversation" multiplier.
- Default out-of-network factors are `0.75` generally and `0.5` for topic OON candidates;
  these are configurable and not a ban on OON content.
- Author diversity is applied within the candidate slate. With the published defaults,
  successive same-author candidates are approximately multiplied by `1`, `0.625`, `0.4375`,
  `0.34375`, approaching a `0.25` floor. It is not a strike after the third daily post.
- The Home filter removes replies and reposts from accounts the viewer does not follow.
  Threads still help existing readers, notifications, profile conversion, and conversation.
- Bookmarks appear in engagement history and retrieval features, but this published weighted
  scorer has no separate bookmark head. Do not invent a direct bookmark coefficient.
- Likes have a smaller coefficient than replies, but are more common. Calling them worthless
  ignores both propensity and the rest of the model.
- Ranking experiments can override production defaults for traffic. Quote the commit and date.

## Worked case: @copenzafan

This is a teaching snapshot captured on **2026-08-14**, not live account analytics. The
logged-out timeline was incomplete; 16 identifiable recent root posts were used.

Baseline for the found sample:

- median: 4 likes and about 254 views;
- excluding the two clearest standouts: about 4 likes and 240 views on average;
- the observed ordinary range broadly matched 1–9 likes and 50–300 views.

Selected posts:

| Post | Public snapshot | What it actually shows |
|---|---|---|
| [CanvasTTY demo](https://x.com/copenzafan/status/2084896539512635750) | 43 likes, 8 replies, 7 reposts, 8 bookmarks, 2.2k views | An original product concept, visible proof, and a useful audience problem worked together. The GitHub URL was in a self-reply, so the win cannot be credited to an external link in the root. |
| [Second CanvasTTY video](https://x.com/copenzafan/status/2085066251043258590) | 5 likes, 0 replies, 274 views | A long product video by itself was not sufficient; novelty and framing mattered. Posting another root on the same product the same day likely made it compete for attention. |
| [Cool Cat story](https://x.com/copenzafan/status/2085349228755210519) | 22 likes, 10 replies, 4 reposts, 453 views | Strong community conversation and personal stakes, but not broad reach. Call it a conversation winner, not a reach winner. |
| [Choirboy prompt post](https://x.com/copenzafan/status/2087224574568280296) | 9 likes, 0 replies, 2 bookmarks, 256 views | A niche "secret/deep-tech" angle reached the normal range but did not create discussion. It needs a sharper demonstrated outcome or a question experts can answer. |
| [Short AI lesson](https://x.com/copenzafan/status/2087567420709871758) | 1 like, 51 views | The thought had no visible proof, specificity, or tension. This supports improving the premise, not a blanket ban on text posts. |
| Sensitive Minimax H3/Krea cosplay experiment (URL not supplied) | User-provided snapshot: 6,374 views and 35 bookmarks | A major reach/depth outlier relative to the account baseline. It supports testing strong visual technical demos; it does not prove that NSFW receives a ranking boost. Bookmark count is observed, while dwell and the exact distribution path were not measured. |

Preserve the sensitive post as a **user-provided** result until its URL or native analytics
screenshot is available. Do not silently promote it to independently verified public data.

The account had about 1,294 followers at capture time. The published new-author cold-start
boost used a default follower cap of 1,000, so the account did not qualify under that snapshot.
The post may have been published at a different follower count, but do not attribute its reach
to cold-start without follower count and eligibility evidence from the publication date.

### Advice derived from the case

1. Lead with original visual build proof; do not reduce the lesson to "post more video."
2. Give each root a distinct promise. Put repository, nodes, caveats, and deeper proof in a
   self-reply when that keeps the root focused.
3. Use personal stories when there is a real stake and recognizable community, while judging
   them by conversation rather than raw reach.
4. Turn technical comparisons into a decision: show test conditions, winner, failure, and
   what the reader should do differently.
5. Replace generic engagement CTAs with a concrete value exchange.
6. Do not make sensitive content the account's main discovery engine: labels can erase its
   out-of-network advantage even when visible viewers watch for longer.

## Official sources for the snapshot

- [X Open Source announcement](https://x.com/XOpenSource/status/2087951962004230428)
- [xai-org/x-algorithm repository](https://github.com/xai-org/x-algorithm)
- [Referenced source commit](https://github.com/xai-org/x-algorithm/commit/a389166f6cf5da70a286b568c87695d4dcdce3a1)
- [Published parameters](https://github.com/xai-org/x-algorithm/blob/a389166f6cf5da70a286b568c87695d4dcdce3a1/home-mixer/params/param.rs)
- [Ranking scorer](https://github.com/xai-org/x-algorithm/blob/a389166f6cf5da70a286b568c87695d4dcdce3a1/home-mixer/scorers/ranking_scorer.rs)
- [Visibility rules](https://github.com/xai-org/x-algorithm/blob/a389166f6cf5da70a286b568c87695d4dcdce3a1/visibility-filtering/rules/registry.rs)
- [OON reply/repost filter](https://github.com/xai-org/x-algorithm/blob/a389166f6cf5da70a286b568c87695d4dcdce3a1/home-mixer/filters/oon_reply_retweet_filter.rs)