fetch-tweet — Claude Code skill: what it does, how to install
Extracts post text, media files, and engagement metrics from X without JavaScript rendering. It retrieves structured JSON directly through the fxtwitter API.
npx skills add PlayableIntelligence/game-creator --skill fetch-tweet -a claude-codeWhat fetch-tweet does
Standard WebFetch calls to x.com return an empty shell. The platform relies on JavaScript to render posts. This skill bypasses the limitation. It parses the incoming URL, extracts the username and post ID, then constructs https://api.fxtwitter.com/<user>/status/<id>.
The agent queries the open fxtwitter API without tokens or browser execution. It receives JSON containing the post body, author details, and media links. The output arranges view counts, likes, retweets, and replies in a readable block.
If an author deletes the post or faces suspension, the API returns an error status instead of 200. The parser supports URLs from x.com, twitter.com, fxtwitter.com, and vxtwitter.com. Any other URL pattern causes the agent to prompt for a valid link.
What it helps with
- fetch tweet text from X without rendering JavaScript
- extract media links from photo and video posts
- retrieve view counts, likes, retweets, and replies
- parse links across x.com, twitter.com, and vxtwitter.com
Example prompts for the agent
- Extract post text and engagement counts from
https://x.com/<user>/status/<id> - Show author info and media files for
https://twitter.com/<user>/status/<id> - Fetch tweet details using
https://fxtwitter.com/<user>/status/<id>
How to install fetch-tweet
1Skills CLI (Vercel)
npx skills add PlayableIntelligence/game-creator --skill fetch-tweet -a claude-code2Manually: put the files in place
~/.claude/skills/fetch-tweet/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/fetch-tweet/
1Skills CLI (Vercel)
npx skills add PlayableIntelligence/game-creator --skill fetch-tweet -a codex2Manually: put the files in place
.agents/skills/fetch-tweet/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add PlayableIntelligence/game-creator --skill fetch-tweet -a cursor2Manually: put the files in place
.cursor/skills/fetch-tweet/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install PlayableIntelligence/game-creator fetch-tweet2Manually: put the files in place
.github/skills/fetch-tweet/SKILL.md1Skills CLI (Vercel)
npx skills add PlayableIntelligence/game-creator --skill fetch-tweet -a gemini-cli2Platform CLI
gemini skills install https://github.com/PlayableIntelligence/game-creator --path skills/fetch-tweetManually: put the files in place
.devin/skills/fetch-tweet/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add PlayableIntelligence/game-creator --skill fetch-tweet -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about fetch-tweet
How to install fetch-tweet in Claude Code?
Run npx skills add PlayableIntelligence/game-creator --skill fetch-tweet -a claude-code. It installs the skill file at ~/.claude/skills/fetch-tweet/SKILL.md.
What does fetch-tweet do?
The skill accepts an X link, maps it to the fxtwitter API endpoint, and pulls structured JSON via WebFetch. It returns post copy, author metadata, media attachments, and engagement figures.
Why does the skill query fxtwitter instead of x.com?
Direct requests to x.com fail because the platform requires client-side JavaScript. The api.fxtwitter.com endpoint delivers the identical tweet payload as raw JSON without tokens or scripts.
Source text
SKILL.md · MIT
---
name: fetch-tweet
description: Fetch tweet content directly from fxtwitter API. Use when given a tweet/X URL to extract the tweet text, author, media, and engagement stats without loading x.com.
argument-hint: "[tweet-url]"
license: MIT
metadata:
author: OpusGameLabs
version: 1.3.0
tags: [twitter, tweet, fetch, fxtwitter, social-media]
---
# Fetch Tweet
You fetch tweet content using the fxtwitter API, which returns structured JSON without requiring JavaScript rendering or authentication.
## Why fxtwitter
X/Twitter requires JavaScript to render tweets. `WebFetch` on `x.com` returns an empty shell. The fxtwitter API (`api.fxtwitter.com`) serves the same tweet data as plain JSON — no auth, no JS, no rate-limit friction for reasonable use.
## URL Conversion
Given any tweet URL, convert it to the fxtwitter API endpoint:
| Input URL pattern | API URL |
|---|---|
| `https://x.com/<user>/status/<id>` | `https://api.fxtwitter.com/<user>/status/<id>` |
| `https://twitter.com/<user>/status/<id>` | `https://api.fxtwitter.com/<user>/status/<id>` |
| `https://fxtwitter.com/<user>/status/<id>` | `https://api.fxtwitter.com/<user>/status/<id>` |
| `https://vxtwitter.com/<user>/status/<id>` | `https://api.fxtwitter.com/<user>/status/<id>` |
Extract the `<user>` and `<id>` from the input URL, then construct `https://api.fxtwitter.com/<user>/status/<id>`.
## How to Fetch
Use `WebFetch` with the converted API URL:
```
WebFetch(url: "https://api.fxtwitter.com/<user>/status/<id>", prompt: "Extract the tweet JSON. Return: author name, handle, tweet text, date, media URLs (if any), likes, retweets, replies, views.")
```
## Response Structure
The fxtwitter API returns JSON with this structure:
```json
{
"code": 200,
"message": "OK",
"tweet": {
"url": "https://x.com/user/status/123",
"text": "The tweet content...",
"author": {
"name": "Display Name",
"screen_name": "handle"
},
"created_at": "Thu Jan 30 12:00:00 +0000 2026",
"likes": 1000,
"retweets": 500,
"replies": 200,
"views": 50000,
"media": {
"photos": [...],
"videos": [...]
}
}
}
```
## Usage Pattern
When you receive a tweet URL (x.com, twitter.com, fxtwitter.com, or vxtwitter.com):
1. **Parse** the URL to extract username and tweet ID
2. **Convert** to `https://api.fxtwitter.com/<user>/status/<id>`
3. **Fetch** using `WebFetch` with the API URL
4. **Present** the tweet content in a readable format:
```
**Author Name** (@handle) — Date
"Tweet text here"
Engagement: X views, Y likes, Z retweets, W replies
```
If the tweet contains media (photos/videos), include the URLs.
## Error Handling
- If fxtwitter returns a non-200 status, the tweet may have been deleted or the account suspended
- If the URL doesn't match any known tweet URL pattern, ask the user for a valid tweet link
© OpusGameLabs · MIT · PlayableIntelligence/game-creator