mcpField
T
twitter-hand-skill

twitter-hand-skill

github.com/rightnow-aiMarketing & growth18.2k93 installsUpdated 24w ago
Repository

About twitter-hand-skill

twitter-hand-skill is a Twitter/X management reference for social media operators, covering API actions, content planning, engagement, and performance measurement. It also addresses brand voice, safety, and pre-publication review.

Key features

  1. 01Twitter API v2 posting and engagement reference
  2. 02Content pillars and calendar planning
  3. 03Tweet and thread writing guidance
  4. 04Engagement and content metric analysis
  5. 05Brand voice and content safety guidance

Use cases

  1. 01Plan a weekly Twitter/X content schedule
  2. 02Write tweets and publish threads
  3. 03Handle mentions and assess engagement data
  4. 04Review risk and compliance before posting

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/rightnow-ai/openfang --skill twitter-hand-skill

After installing, type/twitter-hand-skillin Claude Code to confirm it loaded.

Bundled filesHAND.toml

Details

From the project README

Twitter/X Management Expert Knowledge

Twitter API v2 Reference

Authentication

Twitter API v2 uses OAuth 2.0 Bearer Token for app-level access and OAuth 1.0a for user-level actions.

Bearer Token (read-only access + tweet creation):

Authorization: Bearer $TWITTER_BEARER_TOKEN

Environment variable: TWITTER_BEARER_TOKEN

Core Endpoints

Get authenticated user info:

curl -s -H "Authorization: Bearer $TWITTER_BEARER_TOKEN" \
  "https://api.twitter.com/2/users/me"

Response: {"data": {"id": "123", "name": "User", "username": "user"}}

Post a tweet:

curl -s -X POST "https://api.twitter.com/2/tweets" \
  -H "Authorization: Bearer $TWITTER_BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"text": "Hello world!"}'

Response: {"data": {"id": "tweet_id", "text": "Hello world!"}}

Post a reply:

curl -s -X POST "https://api.twitter.com/2/tweets" \
  -H "Authorization: Bearer $TWITTER_BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"text": "Great point!", "reply": {"in_reply_to_tweet_id": "PARENT_TWEET_ID"}}'

Post a thread (chain of replies to yourself):

  1. Post first tweet → get tweet_id
  2. Post second tweet with reply.in_reply_to_tweet_id = first tweet_id
  3. Repeat for each tweet in thread

Delete a tweet:

curl -s -X DELETE "https://api.twitter.com/2/tweets/TWEET_ID" \
  -H "Authorization: Bearer $TWITTER_BEARER_TOKEN"

Like a tweet:

curl -s -X POST "https://api.twitter.com/2/users/USER_ID/likes" \
  -H "Authorization: Bearer $TWITTER_BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"tweet_id": "TARGET_TWEET_ID"}'

Get mentions:

curl -s -H "Authorization: Bearer $TWITTER_BEARER_TOKEN" \
  "https://api.twitter.com/2/users/USER_ID/mentions?max_results=10&tweet.fields=public_metrics,created_at,author_id"

Search recent tweets:

curl -s -H "Authorization: Bearer $TWITTER_BEARER_TOKEN" \
  "https://api.twitter.com/2/tweets/search/recent?query=QUERY&max_results=10&tweet.fields=public_metrics"

Get tweet metrics:

curl -s -H "Authorization: Bearer $TWITTER_BEARER_TOKEN" \
  "https://api.twitter.com/2/tweets?ids=ID1,ID2,ID3&tweet.fields=public_metrics"

Response includes: retweet_count, reply_count, like_count, quote_count, bookmark_count, impression_count

Rate Limits
EndpointLimitWindow
POST /tweets300 tweets3 hours
DELETE /tweets50 deletes15 minutes
POST /likes50 likes15 minutes
GET /mentions180 requests15 minutes
GET /search/recent180 requests15 minutes

Always check response headers:

  • x-rate-limit-limit: Total requests allowed
  • x-rate-limit-remaining: Requests remaining
  • x-rate-limit-reset: Unix timestamp when limit resets

Content Strategy Framework

Content Pillars

Define 3-5 core topics ("pillars") that all content revolves around:

Example for a tech founder:
  Pillar 1: AI & Machine Learning (40% of content)
  Pillar 2: Startup Building (30% of content)
  Pillar 3: Engineering Culture (20% of content)
  Pillar 4: Personal Growth (10% of content)
Content Mix (7 types)
TypeFrequencyPurposeTemplate
Hot take2-3/weekEngagement"Unpopular opinion: [contrarian view]"
Thread1-2/weekAuthority"I spent X hours researching Y. Here's what I found:"
Tip/How-to2-3/weekValue"How to [solve problem] in [N] steps:"
Question1-2/weekEngagement"[Interesting question]? I'll go first:"
Curated share1-2/weekCuration"This [article/tool/repo] is a game changer for [audience]:"
Story1/weekConnection"3 years ago I [relatable experience]. Here's what happened:"
Data/Stat1/weekAuthority"[Surprising statistic]. Here's why it matters:"
Optimal Posting Times (UTC-based, adjust to audience timezone)
DayBest TimesWhy
Monday8-10 AMStart of work week, checking feeds
Tuesday10 AM, 1 PMPeak engagement day
Wednesday9 AM, 12 PMMid-week focus
Thursday10 AM, 2 PMSecond-highest engagement day
Friday9-11 AMMorning only, engagement drops PM
Saturday10 AMCasual browsing
Sunday4-6 PMPre-work-week planning

Tweet Writing Best Practices

The Hook (first line is everything)

Hooks that work:

  • Contrarian: "Most people think X. They're wrong."
  • Number: "I analyzed 500 [things]. Here's what I found:"
  • Question: "Why do 90% of [things] fail?"
  • Story: "In 2019, I almost [dramatic thing]."
  • How-to: "How to [desirable outcome] without [common pain]:"
  • List: "5 [things] I wish I knew before [milestone]:"
  • Confession: "I used to believe [common thing]. Then I learned..."
Writing Rules
  1. One idea per tweet — don't try to cover everything
  2. Front-load value — the hook must deliver or promise value
  3. Use line breaks — no wall of text, 1-2 sentences per line
  4. 280 character limit — every word must earn its place
  5. Active voice — "We shipped X" not "X was shipped by us"
  6. Specific > vague — "3x faster" not "much faster"
  7. End with a call to action — "Agree? RT" or "What would you add?"
Thread Structure
Tweet 1 (HOOK): Compelling opening that makes people click "Show this thread"
  - Must stand alone as a great tweet
  - End with "A thread:" or "Here's what I found:"

Tweet 2-N (BODY): One key point per tweet
  - Number them: "1/" or use emoji bullets
  - Each tweet should add value independently
  - Include specific examples, data, or stories

Tweet N+1 (CLOSING): Summary + call to action
  - Restate the key takeaway
  - Ask for engagement: "Which resonated most?"
  - Self-reference: "If this was useful, follow @handle for more"
Hashtag Strategy
  • 0-2 hashtags per tweet (more looks spammy)
  • Use hashtags for discovery, not decoration
  • Mix broad (#AI) and specific (#LangChain)
  • Never use hashtags in threads (except maybe tweet 1)
  • Research trending hashtags in your niche before using them

Engagement Playbook

Replying to Mentions

Rules:

  1. Respond within 2 hours during engagement_hours
  2. Add value — don't just say "thanks!" — expand on their point
  3. Ask a follow-up question — drives conversation
  4. Be genuine — match their energy and tone
  5. Never argue — if someone is hostile, ignore or block

Reply templates:

  • Agreement: "Great point! I'd also add [related insight]"
  • Question: "Interesting question. The short answer is [X], but [nuance]"
  • Disagreement: "I see it differently — [respectful counterpoint]. What's your experience?"
  • Gratitude: "Appreciate you sharing this! [Specific thing you liked about their tweet]"
When NOT to Engage
  • Trolls or obviously bad-faith arguments
  • Political flame wars (unless that's your content pillar)
  • Personal attacks (block immediately)
  • Spam or bot accounts
  • Tweets that could create legal liability
Auto-Like Strategy

Like tweets from:

  1. People who regularly engage with your content (reciprocity)
  2. Influencers in your niche (visibility)
  3. Thoughtful content related to your pillars (curation signal)
  4. Replies to your tweets (encourages more replies)

Do NOT auto-like:

  • Controversial or political content
  • Content you haven't actually read
  • Spam or low-quality threads
  • Competitor criticism (looks petty)

Content Calendar Template

WEEK OF [DATE]

Monday:
  - 8 AM: [Tip/How-to] about [Pillar 1]
  - 12 PM: [Curated share] related to [Pillar 2]

Tuesday:
  - 10 AM: [Thread] deep dive on [Pillar 1]
  - 2 PM: [Hot take] about [trending topic]

Wednesday:
  - 9 AM: [Question] to audience about [Pillar 3]
  - 1 PM: [Data/Stat] about [Pillar 2]

Thursday:
  - 10 AM: [Story] about [personal experience in Pillar 3]
  - 3 PM: [Tip/How-to] about [Pillar 1]

Friday:
  - 9 AM: [Hot take] about [week's trending topic]
  - 11 AM: [Curated share] — best thing I read this week

Performance Metrics

Key Metrics
MetricWhat It MeasuresGood Benchmark
ImpressionsHow many people saw the tweetVaries by follower count
Engagement rate(likes+RTs+replies)/impressions>2% is good, >5% is great
Reply ratereplies/impressions>0.5% is good
Retweet rateRTs/impressions>1% is good
Profile visitsPeople checking your profile after tweetTrack trend
Follower growthNet new followers per periodTrack trend
Engagement Rate Formula
engagement_rate = (likes + retweets + replies + quotes) / impressions * 100

Example:
  50 likes + 10 RTs + 5 replies + 2 quotes = 67 engagements
  67 / 2000 impressions = 3.35% engagement rate
Content Performance Analysis

Track which content types and topics perform best:

| Content Type | Avg Impressions | Avg Engagement Rate | Best Performing |
|-------------|-----------------|--------------------|--------------------|
| Hot take | 2500 | 4.2% | "Unpopular opinion: ..." |
| Thread | 5000 | 3.1% | "I analyzed 500 ..." |
| Tip | 1800 | 5.5% | "How to ... in 3 steps" |

Use this data to optimize future content mix.


Brand Voice Guide

Voice Dimensions
DimensionRangeDescription
Formal ↔ Casual1-51=corporate, 5=texting a friend
Serious ↔ Humorous1-51=all business, 5=comedy account
Reserved ↔ Bold1-51=diplomatic, 5=no-filter
General ↔ Technical1-51=anyone can understand, 5=deep expert
Consistency Rules
  • Use the same voice across ALL tweets (hot takes and how-tos)
  • Develop 3-5 "signature phrases" you reuse naturally
  • If the brand voice says "casual," don't suddenly write a formal thread
  • Read tweets aloud — does it sound like the same person?

Safety & Compliance

Content Guidelines

NEVER post:

  • Discriminatory content (race, gender, religion, sexuality, disability)
  • Defamatory claims about real people or companies
  • Private or confidential information
  • Threats, harassment, or incitement to violence
  • Impersonation of other accounts
  • Misleading claims presented as fact
  • Content that violates Twitter Terms of Service
Approval Mode Queue Format
[
  {
    "id": "q_001",
    "content": "Tweet text here",
    "type": "hot_take",
    "pillar": "AI",
    "scheduled_for": "2025-01-15T10:00:00Z",
    "created": "2025-01-14T20:00:00Z",
    "status": "pending",
    "notes": "Based on trending discussion about LLM pricing"
  }
]

Preview file for human review:

# Tweet Queue Preview
Generated: YYYY-MM-DD

## Pending Tweets (N total)

### 1. [Hot Take] — Scheduled: Mon 10 AM
> Tweet text here

**Notes**: Based on trending discussion about LLM pricing
**Pillar**: AI | **Status**: Pending approval

---

### 2. [Thread] — Scheduled: Tue 10 AM
> Tweet 1/5: Hook text here
> Tweet 2/5: Point one
> ...

**Notes**: Deep dive on new benchmark results
**Pillar**: AI | **Status**: Pending approval
Risk Assessment

Before posting, evaluate each tweet:

  • Could this be misinterpreted? → Rephrase for clarity
  • Does this punch down? → Don't post
  • Would you be comfortable seeing this attributed to the user in a news article? → If no, don't post
  • Is this verifiably true? → If not sure, add hedging language or don't post

Comments

Markdown supported