X impact checker
Quick answer
- 01What is it?
- Analyze and optimize X (Twitter) posts for viral potential and reach using heuristics inspired by X's published open-source recommendation architecture. The value is a focused slice of x impact checker judgment, useful when several similar skills cover the same ground.
- 02Inputs
- Context the agent needs: your goals, audience, constraints, and any source material the skill asks for.
- 03Output
- A ready-to-use result: the analysis, copy, or recommendations the agent produces.
Add this skill
Install as a package
Installs this one skill package for your coding agent, including any supporting files that skill ships with — not every skill in the repository. Read the tutorial.
$ npx skills add manojbajaj95/claude-gtm-plugin --skill x-impact-checkerSkill instructions
The instruction file for this skill. The skill also includes other files you need to install to use it.
X Impact Checker
Workspace Context
Read bootstrap context before asking questions: strategy/brand.md for brand, audience, offer, channels, tools, constraints, and metrics; about/me.md for personal voice; content/ideas.md and content/calendar.md for content planning. Use legacy product-marketing context files only as fallback. Save generated drafts to content/<platform>/drafts/YYYY-MM-DD_short-topic-slug.md, and route durable learnings back to strategy/brand.md, about/me.md, or content/ideas.md.
Operating Contract
This skill is self-contained for its frontmatter scope: use its local instructions, references, scripts, and assets as the playbook; ask only for missing task-specific inputs; hand off to adjacent skills instead of expanding scope; and return an actionable artifact, decision, plan, draft, or diagnostic.
Analyze X posts for viral potential using a 19-element scoring system and heuristics inspired by X's published recommendation architecture.
When to Use
- Score a tweet draft before publishing
- Understand why a tweet underperformed
- Rewrite tweets to align with Twitter's ranking mechanisms
- Build topical authority in a specific niche
- Debug inconsistent engagement rates
Scoring System (100 points)
Tier 1: Core Engagement (60 points)
| Factor | Max | Scoring Guide |
|---|---|---|
| Reply Potential | 22 | 22: Direct question/debatable claim, 12: Invites response, 4: Statement only |
| Retweet Potential | 16 | 16: Actionable insight/surprising fact, 8: Interesting but niche, 0: No share value |
| Favorite Potential | 12 | 12: Emotionally resonant/personal story, 6: Useful reference, 0: Low appeal |
| Quote Potential | 10 | 10: Strong opinion inviting commentary, 5: Thought-provoking, 0: No quote value |
Tier 2: Extended Engagement (25 points)
| Factor | Max | Scoring Guide |
|---|---|---|
| Dwell Time | 6 | 6: Long-form/detailed content, 3: Medium depth, 0: Skimmable |
| Continuous Dwell Time | 4 | 4: Thread/story arc requiring sustained attention, 2: Medium complexity, 0: Quick read |
| Click Potential | 5 | 5: Compelling link with clear CTA, 3: Link with context, 1: Bare URL, 0: No link |
| Photo Expand Potential | 4 | 4: Multiple images/visual storytelling, 2: Single image reference, 0: No visual content |
| Video View Potential | 3 | 3: Long-form video with hook (>5s), 2: Short clip, 0: No video |
| Quoted Click Potential | 3 | 3: Bold claim inviting verification, 2: Interesting claim, 0: Self-contained |
Tier 3: Relationship Building (15 points)
| Factor | Max | Scoring Guide |
|---|---|---|
| Profile Click | 5 | 5: Creates author curiosity, 3: Shows expertise, 0: Generic voice |
| Follow Potential | 4 | 4: Demonstrates ongoing value, 2: Shows potential, 0: One-off content |
| Share Potential | 2 | 2: General sharing value, 1: Limited appeal, 0: No value |
| Share via DM | 2 | 2: Personal/relatable "send to friend" content, 1: Somewhat relatable, 0: Generic |
| Share via Copy Link | 2 | 2: Reference/bookmark worthy, 1: Useful but not evergreen, 0: Ephemeral |
Penalties (subtract from total)
| Risk | Range | Trigger |
|---|---|---|
| Not Interested | -5 to -15 | Clickbait, irrelevant content |
| Mute Risk | -5 to -15 | Repetitive, annoying patterns |
| Block Risk | -10 to -25 | Offensive, aggressive tone |
| Report Risk | -15 to -30 | Policy violations, spam signals |
Grades
| Score | Grade |
|---|---|
| 90-100 | S (Exceptional) |
| 75-89 | A (Strong) |
| 60-74 | B (Good) |
| 45-59 | C (Average) |
| 30-44 | D (Below average) |
| 0-29 | F (Low potential) |
Output Format
Progress Tracking
Show analysis progress when the host environment supports task tracking:
- Analyzing post content (in_progress → completed)
- Calculating scores across all elements (in_progress → completed)
- Generating top 5 priority improvements (in_progress → completed)
- Creating optimized version (in_progress → completed)
Report Structure
-
Score:
🎯 XX/100 (Grade: X) -
Breakdown Table:
| Category | Factor | Score | Max | Assessment |
|----------|--------|-------|-----|------------|
| **💬 Core Engagement** | | | 60 | |
| | 💭 Reply Potential | X/22 | 22 | [reason] |
| | 🔄 Retweet Potential | X/16 | 16 | [reason] |
| | ❤️ Favorite Potential | X/12 | 12 | [reason] |
| | 💬 Quote Potential | X/10 | 10 | [reason] |
| **⏱️ Extended Engagement** | | | 25 | |
| | 👀 Dwell Time | X/6 | 6 | [reason] |
| | ⏳ Continuous Dwell Time | X/4 | 4 | [reason] |
| | 🔗 Click Potential | X/5 | 5 | [reason] |
| | 🖼️ Photo Expand | X/4 | 4 | [reason] |
| | 🎥 Video View | X/3 | 3 | [reason] |
| | 🔍 Quoted Click | X/3 | 3 | [reason] |
| **🤝 Relationship Building** | | | 15 | |
| | 👤 Profile Click | X/5 | 5 | [reason] |
| | ➕ Follow Potential | X/4 | 4 | [reason] |
| | 📤 Share Potential | X/2 | 2 | [reason] |
| | 💌 Share via DM | X/2 | 2 | [reason] |
| | 📋 Share via Link | X/2 | 2 | [reason] |
| **⚠️ Negative Signals** | | | | |
| | 😐 Not Interested Risk | -X | 0 to -15 | [reason] |
| | 🔇 Mute Risk | -X | 0 to -15 | [reason] |
| | 🚫 Block Risk | -X | 0 to -25 | [reason] |
| | 🚨 Report Risk | -X | 0 to -30 | [reason] |
| **🏆 TOTAL** | | **XX/100** | | **Grade: X** |
-
📈 Top 5 Priority Improvements: Specific, actionable suggestions across different categories
-
✨ Optimized Version: Rewritten post with improvements applied (in original language)
Algorithm Architecture
Understanding the underlying models helps explain why the scoring works.
Core Ranking Models
Real-graph — Predicts interaction likelihood between users
- Determines if your followers will engage with your content
- Strategy: Make content your specific follower segment will engage with
SimClusters — Community detection with sparse embeddings
- Identifies communities with similar interests; your tweet resonates within these clusters
- Strategy: Pick ONE clear topic and serve tight communities deeply
TwHIN — Knowledge graph embeddings mapping users and content topics
- Helps Twitter understand if your tweet fits your established identity
- Strategy: Stay in your niche or clearly signal topic shifts
Tweepcred — User reputation/authority scoring
- Your past engagement history affects current tweet reach
- Strategy: Build through consistent quality, not engagement bait
Engagement Signals
Explicit (high weight): Likes, replies, retweets, quote tweets
Implicit (also weighted): Profile visits, link clicks, dwell time, saves/bookmarks
Negative: Block/report (heavily penalized), mute/unfollow, quick scroll-past
Optimization by Algorithm Layer
| Layer | Strategy |
|---|---|
| Real-graph | Ask questions; create debate; post when followers are active |
| SimClusters | One clear topic; use community language; provide niche value |
| TwHIN | Lead with domain expertise; stay consistent; build topical authority |
| Tweepcred | Reply to quality accounts; avoid engagement bait; engage deeply |
Detailed Scoring Criteria
Reply Potential (22 pts)
- Direct questions, debatable claims, opinion invitations
- ❌ "Just shipped a new feature." → ✅ "Should features ship fast but buggy, or slow but stable? We chose speed—was it the right call?"
Retweet Potential (16 pts)
- Actionable insights, surprising facts, numbered lists, data-driven content
- ❌ "I learned something today." → ✅ "🧵 3 React patterns that cut my bundle size by 30%: 1. Lazy loading hooks 2. Code splitting by route 3. Tree-shaking unused exports"
Favorite Potential (12 pts)
- Emotional resonance, personal stories, relatable moments, vulnerability
- ❌ "Debugging is hard." → ✅ "Spent 3 hours debugging a production issue. The fix? A missing semicolon I added during 'quick cleanup' at 2am. Never touching working code past midnight again 😅"
Quote Potential (10 pts)
- Strong opinions, challenges conventional wisdom, clear stances
- ❌ "TypeScript is useful." → ✅ "TypeScript's biggest value isn't catching bugs—it's documentation. The type errors are just a bonus. Fight me."
Dwell Time (6 pts)
- Long-form content requiring reading time; detailed explanations; technical depth
Continuous Dwell Time (4 pts)
- Thread indicators (🧵, "1/"), narrative structure, complexity requiring re-reading
- ❌ "Here's how I built X." → ✅ "🧵 How I went from idea to $10k MRR in 30 days (1/8)\n\nDay 1-7: Validation..."
Profile Click (5 pts)
- Creates author curiosity; demonstrates expertise; credibility signals
- ❌ "I think React is good." → ✅ "After architecting React apps for Airbnb, Netflix, and 50+ startups, here's what I wish I knew on day one:"
Follow Potential (4 pts)
- Demonstrates ongoing value; establishes content cadence
- ❌ "Here's a React tip." → ✅ "React tip #47: [insight]\n\nI break down advanced React patterns every Monday."
Score Normalization
Final Score = Base Score (0-100) + Penalties (-75 to 0)
Normalized Score = max(0, min(100, Final Score))
Penalty capping: total penalties > -20 causes gradual dampening; hard cap at -75.
Text Analysis Limitations
This skill performs heuristic text-based analysis, not ML prediction. It cannot detect actual media presence, real engagement metrics, author follower count, or network graph relationships. Best used for pre-publishing optimization, not post-hoc analytics.
Language Handling
Detect input language. Respond in same language. Keep optimized version in original language.
When input is in Japanese, display Category and Factor names as: 日本語訳(English Original)
Japanese translations:
- 💬 Core Engagement → コアエンゲージメント
- ⏱️ Extended Engagement → 拡張エンゲージメント
- 🤝 Relationship Building → 関係構築
- ⚠️ Negative Signals → ネガティブシグナル
- 💭 Reply Potential → 返信潜在力
- 🔄 Retweet Potential → リツイート潜在力
- ❤️ Favorite Potential → いいね潜在力
- 💬 Quote Potential → 引用潜在力
- 👀 Dwell Time → 滞在時間
- ⏳ Continuous Dwell Time → 継続滞在時間
- 🔗 Click Potential → クリック潜在力
- 🖼️ Photo Expand → 写真展開潜在力
- 🎥 Video View → 動画視聴潜在力
- 🔍 Quoted Click → 引用クリック潜在力
- 👤 Profile Click → プロフィールクリック
- ➕ Follow Potential → フォロー潜在力
- 📤 Share Potential → 共有潜在力
- 💌 Share via DM → DM経由共有
- 📋 Share via Link → リンクコピー共有
- 😐 Not Interested Risk → 興味なしリスク
- 🔇 Mute Risk → ミュートリスク
- 🚫 Block Risk → ブロックリスク
- 🚨 Report Risk → 報告リスク
Algorithm Reference
See references/algorithm-weights.md for complete weight details from X's open-source algorithm (19-element system).
Supporting file: references/algorithm-weights.md
X Algorithm Weight Reference
Complete reference for X's open-source recommendation algorithm (2026 version).
Source
- Repository: https://github.com/xai-org/x-algorithm
- Weighted Scorer:
home-mixer/scorers/weighted_scorer.rs - ML Model: Phoenix (Grok-based transformer)
- Last Updated: January 2026
Overview
The X recommendation algorithm uses a two-stage prediction system:
- Phoenix ML Model predicts probabilities for 19+ engagement actions
- Weighted Scorer combines these predictions with algorithm-defined weights to compute final ranking scores
This skill implements the scoring logic in text-based heuristic form for pre-publishing optimization.
Phoenix Engagement Predictions (19 Signals)
Phoenix predicts probabilities for these user actions:
Positive Engagement Signals (15)
P(favorite) // Like button
P(reply) // Reply to post
P(retweet) // Retweet/share
P(quote) // Quote tweet
P(click) // Click on any link
P(profile_click) // Click on author profile
P(video_view) // Video playback (VQV: Video Quality View)
P(photo_expand) // Expand photo/media
P(share) // Generic share action
P(share_via_dm) // Share via Direct Message
P(share_via_copy_link) // Copy link to share elsewhere
P(dwell) // Initial reading time
P(continuous_dwell) // Sustained attention time
P(quoted_click) // Click on quoted tweet
P(follow_author) // Follow the author
Negative Engagement Signals (4)
P(not_interested) // "Not interested in this tweet"
P(block) // Block author
P(mute) // Mute author
P(report) // Report tweet/author
Complete Score Calculation (19 Elements)
From weighted_scorer.rs:
combined_score =
favorite_score * FAVORITE_WEIGHT // ~0.5
+ reply_score * REPLY_WEIGHT // ~1.0 (highest)
+ retweet_score * RETWEET_WEIGHT // ~0.75
+ quote_score * QUOTE_WEIGHT // ~0.45
+ click_score * CLICK_WEIGHT // ~0.2
+ profile_click_score * PROFILE_CLICK_WEIGHT // ~0.2
+ video_view_score * vqv_weight(video) // ~0.15 (conditional)
+ photo_expand_score * PHOTO_EXPAND_WEIGHT // ~0.18
+ share_score * SHARE_WEIGHT // ~0.1
+ share_dm_score * SHARE_VIA_DM_WEIGHT // ~0.1
+ share_link_score * SHARE_VIA_COPY_LINK_WEIGHT // ~0.1
+ dwell_score * DWELL_WEIGHT // ~0.25
+ continuous_dwell_score * CONTINUOUS_DWELL_WEIGHT // ~0.18
+ quoted_click_score * QUOTED_CLICK_WEIGHT // ~0.15
+ follow_author_score * FOLLOW_AUTHOR_WEIGHT // ~0.18
+ not_interested_score * NOT_INTERESTED_WEIGHT // ~-0.6 (negative)
+ block_author_score * BLOCK_AUTHOR_WEIGHT // ~-1.2 (negative)
+ mute_author_score * MUTE_AUTHOR_WEIGHT // ~-0.6 (negative)
+ report_score * REPORT_WEIGHT // ~-1.5 (negative)
Then apply normalization:
final_score = normalize_score(offset_score(combined_score))
Skill Weight Mapping (100-Point System)
The skill redistributes algorithm weights proportionally to create a user-friendly 100-point scale:
Tier 1: Core Engagement (60 points)
Conversation drivers and strong sharing signals.
| Algorithm Signal | Skill Factor | Points | Rationale |
|---|---|---|---|
| REPLY_WEIGHT (1.0) | Reply Potential | 22 | Highest algorithm weight - conversations drive visibility |
| RETWEET_WEIGHT (0.75) | Retweet Potential | 16 | Strong amplification signal |
| FAVORITE_WEIGHT (0.5) | Favorite Potential | 12 | Most common action, moderate weight |
| QUOTE_WEIGHT (0.45) | Quote Potential | 10 | Commentary adds value |
Tier 2: Extended Engagement (25 points)
Media interactions and sustained attention metrics.
| Algorithm Signal | Skill Factor | Points | Rationale |
|---|---|---|---|
| DWELL_WEIGHT (0.25) | Dwell Time | 6 | Initial reading/comprehension time |
| CONTINUOUS_DWELL_WEIGHT (0.18) | Continuous Dwell Time | 4 | Sustained attention beyond initial read |
| CLICK_WEIGHT (0.2) | Click Potential | 5 | External link engagement |
| PHOTO_EXPAND_WEIGHT (0.18) | Photo Expand Potential | 4 | Visual content engagement |
| VQV_WEIGHT (0.15) | Video View Potential | 3 | Video engagement (conditional on duration) |
| QUOTED_CLICK_WEIGHT (0.15) | Quoted Click Potential | 3 | Investigation of quoted source |
Tier 3: Relationship Building (15 points)
Author discovery and long-term value signals.
| Algorithm Signal | Skill Factor | Points | Rationale |
|---|---|---|---|
| PROFILE_CLICK_WEIGHT (0.2) | Profile Click | 5 | Author discovery interest |
| FOLLOW_AUTHOR_WEIGHT (0.18) | Follow Potential | 4 | Long-term relationship signal |
| SHARE_WEIGHT (0.1) | Share Potential | 2 | Generic sharing |
| SHARE_VIA_DM_WEIGHT (0.1) | Share via DM | 2 | Personal 1-on-1 sharing |
| SHARE_VIA_COPY_LINK_WEIGHT (0.1) | Share via Copy Link | 2 | Reference/bookmark sharing |
Negative Signals (Penalties)
Subtract from total score based on risk assessment.
| Algorithm Signal | Skill Factor | Range | Rationale |
|---|---|---|---|
| NOT_INTERESTED_WEIGHT (-0.6) | Not Interested Risk | -5 to -15 | Mild negative signal |
| MUTE_AUTHOR_WEIGHT (-0.6) | Mute Risk | -5 to -15 | Author-level negative |
| BLOCK_AUTHOR_WEIGHT (-1.2) | Block Risk | -10 to -25 | Strong negative signal |
| REPORT_WEIGHT (-1.5) | Report Risk | -15 to -30 | Severe policy violation |
Conditional Logic
VQV Weight Eligibility (Video Quality View)
From weighted_scorer.rs:
fn vqv_weight_eligibility(video_duration_ms: Option<u64>) -> f64 {
video_duration_ms
.is_some_and(|dur| dur > MIN_VIDEO_DURATION_MS)
.then_some(VQV_WEIGHT)
.unwrap_or(0.0)
}
Logic:
- VQV weight (0.15) only applies if video duration > ~5000ms (5 seconds)
- Short clips don't receive full video engagement credit
- Encourages long-form, high-quality video content
Skill Implementation: Since text analysis cannot detect actual video duration, the skill infers from language:
- "Full tutorial", "in-depth", "complete guide" → assumes >5s (full 3 points)
- "Quick clip", "snippet", "short demo" → assumes <5s (reduced scoring)
- No video markers → 0 points
Score Normalization
Offset Score Function
Balances positive and negative signals differently:
fn offset_score(raw_score: f64) -> f64 {
if raw_score < 0.0 {
raw_score * NEGATIVE_OFFSET_MULTIPLIER // ~0.3
} else {
raw_score + POSITIVE_OFFSET
}
}
Purpose:
- Dampens negative signals to prevent single bad signals from dominating
- Adds baseline boost to positive scores
- Creates more balanced final rankings
Normalize Score Function
Maps to final range:
fn normalize_score(score: f64) -> f64 {
score.max(MIN_SCORE).min(MAX_SCORE)
}
Skill Implementation:
Final Score = Base Score (0-100) + Penalties (-75 to 0)
Normalized = max(0, min(100, Final Score))
Penalty Capping:
- Total penalties ≤ -20: Applied at full weight
- Total penalties > -20: Gradual dampening
- Total penalties > -75: Hard cap at -75
Prevents over-penalization while maintaining signal importance.
Key Algorithm Insights
-
Conversations Dominate Reply weight (1.0) is 2× retweet (0.75), 4× video view (0.15). Posts that drive replies rank highest.
-
Share Actions Split Generic share, DM share, and link copy are tracked separately—each indicates different sharing intent and value.
-
Time-Based Signals Dwell time (initial) and continuous dwell (sustained) are separate signals. Complexity rewards re-reading.
-
Media Requires Quality Video view scoring is conditional on duration. Low-effort clips don't get full credit.
-
Negative Weights Matter Block (-1.2) and report (-1.5) have strong negative impact. Content must avoid triggering these.
-
Author Value Tracked Profile click and follow indicate author-level interest, not just post-level.
-
Multi-Action Prediction Algorithm doesn't predict "relevance" but predicts 19 specific action probabilities, each weighted differently.
Text Analysis Limitations
What This Skill Cannot Detect
Since this is heuristic text analysis, not ML prediction:
Missing Metadata:
- Actual media presence (photos, videos)
- Real video duration or quality
- Actual click-through rates
- True engagement history
- Author reputation/follower count
- Tweet timestamps or virality metrics
Cannot Access:
- Phoenix ML model predictions
- User interaction history
- Network graph relationships
- Real-time engagement signals
What This Skill Infers From
Text-Based Heuristics:
- Language patterns and structure
- Content formatting (threads, lists, etc.)
- Emotional tone and style
- Visual indicators (emojis, markdown)
- Call-to-action strength
- Question vs. statement structure
Scoring Approach:
- Conservative: Unknown elements get baseline scores
- Pattern-Based: Detects language cues (e.g., 📸 for photos, 🧵 for threads)
- Optimization-Focused: Best used for pre-publishing content improvement
Best Use Case: Pre-publishing optimization to maximize engagement potential, not post-hoc analytics.
Algorithm Version
- Based on: X Algorithm open-source release (xai-org/x-algorithm)
- Reference Date: January 2026
- Implementation: Heuristic skill (not direct code port)
- Weights: Approximated from
weighted_scorer.rs
Note: Actual X algorithm may evolve. This skill reflects the publicly documented version as of 2026.
References
- X Algorithm Repository: https://github.com/xai-org/x-algorithm
- Weighted Scorer Implementation:
home-mixer/scorers/weighted_scorer.rs - Phoenix ML Model: Grok-based transformer (not publicly released)
- Skill Implementation: SKILL.md (../SKILL.md)
Common questions
How do I install X impact checker in Cursor, Claude Code, or Codex?
Run npx skills add manojbajaj95/claude-gtm-plugin --skill x-impact-checker in the project where you want it, then ask your agent for the skill by name. The --skill flag installs only X impact checker, not every skill in the repository.
Where does X impact checker come from and what license is it under?
X impact checker comes from the manojbajaj95/claude-gtm-plugin repository on GitHub. That repository has 74 GitHub stars. The skill is published under the MIT license.
Prefer plain text? Read the X impact checker guide as markdown.
Related skills
More from manojbajaj95