SkillJavaScriptv1.0.0
tweet-composer
Score and optimize tweets based on X's real open-source ranking algorithm.
7 downloads
minilozio
Updated Feb 24, 2026Tweet Composer
Score and optimize tweets using rules derived from X's open-source ranking algorithm.
How It Works
X's "For You" feed is ranked by a Grok-based transformer (Phoenix) that predicts 19 engagement actions for every candidate tweet. The final score is a weighted sum of these predictions. This skill encodes the structural rules from that pipeline into a scoring system.
For the full algorithm breakdown, read references/algorithm-rules.md.
Scoring a Draft Tweet
When a user asks to score or optimize a tweet draft:
- Read
references/algorithm-rules.mdfor the complete rules engine - Analyze the draft against all rules
- Output the score card in this format:
š¦ Tweet Composer ā Score: XX/100
[Category scores with ā
ā ļø ā indicators]
š Predicted Action Boost:
āā P(reply): [assessment]
āā P(favorite): [assessment]
āā P(share): [assessment]
āā P(dwell): [assessment]
āā P(not_interested): [assessment]
š” Suggestions:
ā [actionable improvements]
āļø Optimized version:
"[rewritten tweet]"
Scoring Rubric (Quick Reference)
Score 0-100 based on weighted categories:
| Category | Weight | What to check |
|---|---|---|
| Reply potential | 25 | Questions, opinions, CTAs that drive replies |
| Media | 20 | Native image/video attached (not link previews) |
| Shareability | 15 | Would someone DM this or copy the link? |
| Dwell time | 15 | Length that makes people stop scrolling |
| Content quality | 10 | Clear, original, not generic |
| Format | 10 | No links in body, no hashtags, good length |
| Negative signals | 5 | Risk of not_interested/mute/block |
Thread Optimization
When composing threads:
- First tweet = strongest hook (DedupConversationFilter keeps only the best per conversation)
- 3-6 tweets max (short threads > mega-threads)
- Each tweet self-contained (many see only the first)
- Media on tweet 1 or 2 for photo_expand boost
- CTA in last tweet
Quick Rules (No Reference File Needed)
- Links: Always in reply, never in body (learned penalty from lower engagement)
- Hashtags: Zero. The model learns they reduce engagement
- Length: 100-200 chars sweet spot for single tweets
- Media: Native image/video = separate P(photo_expand) and P(video_quality_view) predictions
- Video: Must exceed minimum duration threshold for VQV weight to apply
- Timing: Post when your audience is active ā engagement velocity in first 30 min is critical
- Frequency: AuthorDiversityScorer penalizes exponentially: 2nd post ~55% score, 3rd ~33%. Max 3-4 strong tweets/day
- Quote tweets: P(quote) has dedicated weight ā QTs with added value outperform plain retweets
- Engagement bait: Questions/polls drive P(reply). "What would you add?" > "Like if you agree"