X impact checker

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.
Install-only

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.

Terminal
$ npx skills add manojbajaj95/claude-gtm-plugin --skill x-impact-checker

Skill instructions

The instruction file for this skill. The skill also includes other files you need to install to use it.

SKILL.md

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)

FactorMaxScoring Guide
Reply Potential2222: Direct question/debatable claim, 12: Invites response, 4: Statement only
Retweet Potential1616: Actionable insight/surprising fact, 8: Interesting but niche, 0: No share value
Favorite Potential1212: Emotionally resonant/personal story, 6: Useful reference, 0: Low appeal
Quote Potential1010: Strong opinion inviting commentary, 5: Thought-provoking, 0: No quote value

Tier 2: Extended Engagement (25 points)

FactorMaxScoring Guide
Dwell Time66: Long-form/detailed content, 3: Medium depth, 0: Skimmable
Continuous Dwell Time44: Thread/story arc requiring sustained attention, 2: Medium complexity, 0: Quick read
Click Potential55: Compelling link with clear CTA, 3: Link with context, 1: Bare URL, 0: No link
Photo Expand Potential44: Multiple images/visual storytelling, 2: Single image reference, 0: No visual content
Video View Potential33: Long-form video with hook (>5s), 2: Short clip, 0: No video
Quoted Click Potential33: Bold claim inviting verification, 2: Interesting claim, 0: Self-contained

Tier 3: Relationship Building (15 points)

FactorMaxScoring Guide
Profile Click55: Creates author curiosity, 3: Shows expertise, 0: Generic voice
Follow Potential44: Demonstrates ongoing value, 2: Shows potential, 0: One-off content
Share Potential22: General sharing value, 1: Limited appeal, 0: No value
Share via DM22: Personal/relatable "send to friend" content, 1: Somewhat relatable, 0: Generic
Share via Copy Link22: Reference/bookmark worthy, 1: Useful but not evergreen, 0: Ephemeral

Penalties (subtract from total)

RiskRangeTrigger
Not Interested-5 to -15Clickbait, irrelevant content
Mute Risk-5 to -15Repetitive, annoying patterns
Block Risk-10 to -25Offensive, aggressive tone
Report Risk-15 to -30Policy violations, spam signals

Grades

ScoreGrade
90-100S (Exceptional)
75-89A (Strong)
60-74B (Good)
45-59C (Average)
30-44D (Below average)
0-29F (Low potential)

Output Format

Progress Tracking

Show analysis progress when the host environment supports task tracking:

  1. Analyzing post content (in_progress → completed)
  2. Calculating scores across all elements (in_progress → completed)
  3. Generating top 5 priority improvements (in_progress → completed)
  4. Creating optimized version (in_progress → completed)

Report Structure

  1. Score: 🎯 XX/100 (Grade: X)

  2. 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** |
  1. 📈 Top 5 Priority Improvements: Specific, actionable suggestions across different categories

  2. ✨ 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

LayerStrategy
Real-graphAsk questions; create debate; post when followers are active
SimClustersOne clear topic; use community language; provide niche value
TwHINLead with domain expertise; stay consistent; build topical authority
TweepcredReply 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

Overview

The X recommendation algorithm uses a two-stage prediction system:

  1. Phoenix ML Model predicts probabilities for 19+ engagement actions
  2. 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 SignalSkill FactorPointsRationale
REPLY_WEIGHT (1.0)Reply Potential22Highest algorithm weight - conversations drive visibility
RETWEET_WEIGHT (0.75)Retweet Potential16Strong amplification signal
FAVORITE_WEIGHT (0.5)Favorite Potential12Most common action, moderate weight
QUOTE_WEIGHT (0.45)Quote Potential10Commentary adds value

Tier 2: Extended Engagement (25 points)

Media interactions and sustained attention metrics.

Algorithm SignalSkill FactorPointsRationale
DWELL_WEIGHT (0.25)Dwell Time6Initial reading/comprehension time
CONTINUOUS_DWELL_WEIGHT (0.18)Continuous Dwell Time4Sustained attention beyond initial read
CLICK_WEIGHT (0.2)Click Potential5External link engagement
PHOTO_EXPAND_WEIGHT (0.18)Photo Expand Potential4Visual content engagement
VQV_WEIGHT (0.15)Video View Potential3Video engagement (conditional on duration)
QUOTED_CLICK_WEIGHT (0.15)Quoted Click Potential3Investigation of quoted source

Tier 3: Relationship Building (15 points)

Author discovery and long-term value signals.

Algorithm SignalSkill FactorPointsRationale
PROFILE_CLICK_WEIGHT (0.2)Profile Click5Author discovery interest
FOLLOW_AUTHOR_WEIGHT (0.18)Follow Potential4Long-term relationship signal
SHARE_WEIGHT (0.1)Share Potential2Generic sharing
SHARE_VIA_DM_WEIGHT (0.1)Share via DM2Personal 1-on-1 sharing
SHARE_VIA_COPY_LINK_WEIGHT (0.1)Share via Copy Link2Reference/bookmark sharing

Negative Signals (Penalties)

Subtract from total score based on risk assessment.

Algorithm SignalSkill FactorRangeRationale
NOT_INTERESTED_WEIGHT (-0.6)Not Interested Risk-5 to -15Mild negative signal
MUTE_AUTHOR_WEIGHT (-0.6)Mute Risk-5 to -15Author-level negative
BLOCK_AUTHOR_WEIGHT (-1.2)Block Risk-10 to -25Strong negative signal
REPORT_WEIGHT (-1.5)Report Risk-15 to -30Severe 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

  1. Conversations Dominate Reply weight (1.0) is 2× retweet (0.75), 4× video view (0.15). Posts that drive replies rank highest.

  2. Share Actions Split Generic share, DM share, and link copy are tracked separately—each indicates different sharing intent and value.

  3. Time-Based Signals Dwell time (initial) and continuous dwell (sustained) are separate signals. Complexity rewards re-reading.

  4. Media Requires Quality Video view scoring is conditional on duration. Low-effort clips don't get full credit.

  5. Negative Weights Matter Block (-1.2) and report (-1.5) have strong negative impact. Content must avoid triggering these.

  6. Author Value Tracked Profile click and follow indicate author-level interest, not just post-level.

  7. 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

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.