Browse X
pc-style/x-md
Reads public X (formerly Twitter) posts, threads, X Articles, profiles, followers, following, and search results as Markdown or JSON, with no X account and no API key.
Fetches Twitter/X post and Article content — text, author, engagement metrics and embedded media — downloading images locally and generating complete Markdown with image references.
$ npx skills add daymade/claude-code-skills --skill twitter-reader -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install daymade/claude-code-skills twitter-reader --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/daymade/claude-code-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/twitter-reader .claude/skills/twitter-reader && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "twitter-reader" agent skill from https://github.com/daymade/claude-code-skills/tree/main/twitter-reader into .claude/skills/twitter-reader/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "twitter-reader", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/daymade/claude-code-skills/tree/main/twitter-readerType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add daymade/claude-code-skills --skill twitter-reader -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install daymade/claude-code-skills twitter-reader --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/daymade/claude-code-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/twitter-reader .agents/skills/twitter-reader && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "twitter-reader" agent skill from https://github.com/daymade/claude-code-skills/tree/main/twitter-reader into .agents/skills/twitter-reader/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "twitter-reader", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add daymade/claude-code-skills --skill twitter-reader -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install daymade/claude-code-skills twitter-reader --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/daymade/claude-code-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/twitter-reader .cursor/skills/twitter-reader && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "twitter-reader" agent skill from https://github.com/daymade/claude-code-skills/tree/main/twitter-reader into .cursor/skills/twitter-reader/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "twitter-reader", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/daymade/claude-code-skills.git --path twitter-reader--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add daymade/claude-code-skills --skill twitter-reader -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install daymade/claude-code-skills twitter-reader --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/daymade/claude-code-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/twitter-reader .gemini/skills/twitter-reader && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "twitter-reader" agent skill from https://github.com/daymade/claude-code-skills/tree/main/twitter-reader into .gemini/skills/twitter-reader/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "twitter-reader", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install daymade/claude-code-skills twitter-readerInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add daymade/claude-code-skills --skill twitter-reader -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/daymade/claude-code-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/twitter-reader .github/skills/twitter-reader && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "twitter-reader" agent skill from https://github.com/daymade/claude-code-skills/tree/main/twitter-reader into .github/skills/twitter-reader/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "twitter-reader", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add daymade/claude-code-skills --skill twitter-reader -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install daymade/claude-code-skills twitter-reader --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/daymade/claude-code-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/twitter-reader .opencode/skills/twitter-reader && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "twitter-reader" agent skill from https://github.com/daymade/claude-code-skills/tree/main/twitter-reader into .opencode/skills/twitter-reader/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "twitter-reader", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
twitter-readerFetches Twitter/X post and Article content — text, author, engagement metrics and embedded media — downloading images locally and generating complete Markdown with image references.
Twitter Reader is an agent skill from daymade/claude-code-skills. Fetches Twitter/X post and Article content — text, author, engagement metrics and embedded media — downloading images locally and generating complete Markdown with image references. Use when retrieving a tweet's text or an X Article with images, or pulling post metadata for a Markdown/PKM record. Preferred over Jina alone for X Articles with images.
Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including scripts (for example `scripts/fetch_article.py`, `scripts/fetch_tweet.py` and `scripts/fetch_tweets.sh`).
It sits in Writing & Content, covering Social media posts, Product metrics and Markdown. It works with X (Twitter). The repository describes itself as: Professional Claude Code skills marketplace featuring production-ready skills for enhanced development workflows. The licence is MIT.
Read from SKILL.md and the folder at commit 91bed2b. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 3 files in scripts/ (Python and Shell), which the agent can run.
Shell commands in SKILL.md call:
uvcurlpython3pythonFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
x.comr.jina.aitwitter.comapi.fxtwitter.comjina.aiFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
JINA_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Twitter Reader loads about 1.9k tokens when it runs. Until then it costs about 92 tokens; SKILL.md has 776 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from daymade/claude-code-skills at commit 91bed2b, republished under its MIT licence (© daymade). 776 words, ~1,950 tokens.
.claude/skills/twitter-reader/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.Fetch Twitter/X post and article content with full media support.
For plain post text, prefer the fxtwitter mirror API — login-free, key-free,
works direct, and returns the full note_tweet body in tweet.text (the
full_text key does not exist; a 2,324-char long-form announcement came back
complete):
curl -sS --max-time 20 "https://api.fxtwitter.com/<user>/status/<id>" \
| python3 -c "import json,sys; t=json.load(sys.stdin)['tweet']; print(t['created_at']); print(t['text'])"replies is a count, not the reply thread. For X Articles with images, use
fetch_article.py below — fxtwitter does not carry article bodies.
uv run --with pyyaml python scripts/fetch_article.py <article_url> [output_dir]Example:
uv run --with pyyaml python scripts/fetch_article.py \
https://x.com/HiTw93/status/2040047268221608281 \
./ClippingsThis will:
twitter-cli (likes, retweets, bookmarks)jina.ai APIattachments/YYYY-MM-DD-AUTHOR-TITLE/Metadata and plain article text come from twitter-cli; the image URLs ride in
the markdown Jina's reader returns. When Jina refuses (see the section below),
the script warns on stderr, keeps the twitter-cli text, and reports Images: 0.
The Markdown is still correct; it simply has no pictures. Images: 0 on an
article that visibly contains images is the signature of a Jina refusal.
Fetching: https://x.com/HiTw93/status/2040047268221608281
--------------------------------------------------
Getting metadata...
Title: 你不知道的大模型训练:原理、路径与新实践
Author: Tw93
Likes: 1648
Getting content and images...
Images: 15
Downloading 15 images...
✓ 01-image.jpg
✓ 02-image.jpg
...
✓ Saved: ./Clippings/2026-04-03-文章标题.md
✓ Images: ./Clippings/attachments/2026-04-03-HiTw93-.../ (15 downloaded)Anonymous r.jina.ai access to x.com gets blocked for hours at a time when
third-party callers abuse the domain. The block hits every anonymous caller and
then expires on its own. Both states showed up minutes apart on 2026-09-12.
A refusal does not look like a failure. curl exits 0 and the body is a JSON
envelope:
{"data":null,"code":403,"name":"AbuseAlleviationError","status":40305,
"message":"Anonymous access to domain x.com blocked until <date> ..."}A lapsed or unfunded key returns the same shape with "code":402, "name":"InsufficientBalanceError". curl --fail catches neither: this endpoint
answered HTTP 200 with the envelope in the body. The one signal that holds is
the Markdown Content: marker that Jina's reader puts in front of the article
body: no marker, no article. fetch_article.py tests for that marker before
accepting a response, which keeps a refusal envelope out of the generated
Markdown.
scripts/fetch_tweets.sh and scripts/fetch_tweet.py both require
JINA_API_KEY and have no second source to fall back to, so they stop working
whenever that key lapses. Both check the same marker and fail loudly on a
refusal — the Python one raises without writing the output file, the shell one
reports the URL on stderr and exits non-zero — rather than handing back an
envelope dressed up as a post. No key ships with this repository.
For simple text-only fetching:
# Single tweet
curl "https://r.jina.ai/https://x.com/USER/status/TWEET_ID" \
-H "Authorization: Bearer ${JINA_API_KEY}"
# Batch fetching
scripts/fetch_tweets.sh url1 url2 url3JINA_API_KEY and have no fallbackuv (Python package manager)export JINA_API_KEY="your_api_key_here"
# Get from https://jina.ai/output_dir/
├── YYYY-MM-DD-article-title.md # Main Markdown file
└── attachments/
└── YYYY-MM-DD-author-title/
├── 01-image.jpg
├── 02-image.jpg
└── ...https://x.com/USER/status/ID (posts)https://x.com/USER/article/ID (long-form articles)https://twitter.com/USER/status/ID (legacy)Full-featured article fetcher with image download:
uv run --with pyyaml python scripts/fetch_article.py <url> [output_dir]Simple text-only fetcher using Jina API:
python scripts/fetch_tweet.py <tweet_url> [output_file]Batch fetch multiple tweets (Jina API):
scripts/fetch_tweets.sh <url1> <url2> ...This skill reads metadata through twitter-cli, so the tool's own limits apply.
twitter bookmarks and the other timeline commands stop at 500 items however
the config is written. That ceiling is a module constant in the client:
_ABSOLUTE_MAX_COUNT = 500 in twitter_cli/client.py, applied as
min(maxCount, 500) when the client is constructed. Both lines read from
version 0.8.5. X's own bookmark timeline goes far deeper than that.
Two consequences are easy to get wrong:
maxCount has to sit under the rateLimit: section of the config. Put it
under fetch: and the client ignores it without any message, falling back toGoing deeper means calling the GraphQL endpoint directly: the Bookmarks
operation with the client's own feature flags, parsed by
twitter_cli.parser.parse_timeline_response, paging until the platform stops
returning a cursor or returns the same cursor twice. Stop on the platform's
signal rather than on a count.
Old workflow:
curl "https://r.jina.ai/https://x.com/..."
# Manual image extraction and downloadNew workflow:
uv run --with pyyaml python scripts/fetch_article.py <url>
# Automatic image download, complete Markdown© daymade, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (scripts) in twitter-reader of daymade/claude-code-skills.
Open the folder on GitHubat commit 91bed2b
Twitter Reader next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Twitter Reader this skilldaymade/claude-code-skills | 1.4k | — | ~1.9k | Automated safety check: Pass | MIT | |
| Browse Xpc-style/x-md | 159 | — | ~733 | Automated safety check: Pass | MIT | |
| Adhxmajiayu000/claude-skill-registry | 666 | 3 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Socialcoreyhaines31/marketingskills | 54k | 4 repos | ~4.5k | Automated safety check: Pass | MIT | |
| Social Contentfreekmurze/dotfiles | 1k | 23 repos | ~2.1k | Automated safety check: Pass | None | |
| Typefullyfreekmurze/dotfiles | 1k | 2 repos | ~3.4k | Automated safety check: Notes | None |
pc-style/x-md
Reads public X (formerly Twitter) posts, threads, X Articles, profiles, followers, following, and search results as Markdown or JSON, with no X account and no API key.
majiayu000/claude-skill-registry
Fetch any X/Twitter post as clean LLM-friendly JSON. An agent skill from majiayu000/claude-skill-registry.
coreyhaines31/marketingskills
When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram, TikTok, or Facebook, or wants to do social listening and engagement triage.
freekmurze/dotfiles
When the user wants help creating, scheduling, or optimizing social media content for LinkedIn, Twitter/X, Instagram, TikTok, Facebook, or other platforms.
freekmurze/dotfiles
Create, schedule, and manage social media posts via Typefully.
FlorianBruniaux/claude-code-ultimate-guide
Turns CHANGELOG.md entries for a release or a week into LinkedIn, Twitter/X, newsletter and Slack posts in French and English.
daymade/claude-code-skills
This skill should be used when comparing two videos to analyze compression results or quality differences.
daymade/claude-code-skills
Generates professional animated CLI demos as GIFs using VHS terminal recordings.
daymade/claude-code-skills
Converts DOCX/PDF/PPTX and saved HTML/HTM to high-quality Markdown with automatic post-processing.
daymade/claude-code-skills
Generates several distinct, clickable HTML interaction prototypes for one product surface into a Design Board and collects selection/remix feedback before implementation.
daymade/claude-code-skills
Diagnoses and repairs repository setup and guarded Git workflows for Claude Code or Codex — environment repair, startup sync, hook auditing, collaborator handoff.
daymade/claude-code-skills
Pulls Bigdata.com (RavenPack) financial and news data via the official bigdata-client SDK and /v1/ REST endpoints — structured financials, prices, analyst estimates, entity-sentiment series…
Works with
Categories
Fetches Twitter/X post and Article content — text, author, engagement metrics and embedded media — downloading images locally and generating complete Markdown with image references. Twitter Reader is an agent skill from daymade/claude-code-skills. Fetches Twitter/X post and Article content — text, author, engagement metrics and embedded media — downloading images locally and generating complete Markdown with image references.
Twitter Reader fits situations like: retrieving a tweets text; an X Article with images; pulling post metadata for a Markdown/PKM record.
Run `npx skills add daymade/claude-code-skills --skill twitter-reader -a claude-code`. Or copy the skill folder (twitter-reader in daymade/claude-code-skills) into .claude/skills/twitter-reader in your project. Claude Code loads it when a task matches its description.
Run `npx skills add daymade/claude-code-skills --skill twitter-reader -a codex`. Or copy the skill folder (twitter-reader in daymade/claude-code-skills) into .agents/skills/twitter-reader in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add daymade/claude-code-skills --skill twitter-reader -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/twitter-reader, .gemini/skills/twitter-reader, .github/skills/twitter-reader and .opencode/skills/twitter-reader in your project.
Going by SKILL.md and its folder, Twitter Reader needs Python and a shell for the scripts in its folder, the command-line tools its instructions call (uv, curl, python3 and python) and credentials named JINA_API_KEY. Our summary lists: Python 3; A Bash shell; A credential in JINA_API_KEY.
SKILL.md names 5 domains. In commands or code: x.com, r.jina.ai, twitter.com, api.fxtwitter.com and jina.ai; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Twitter Reader is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Twitter Reader: Browse X (pc-style/x-md, 159 stars), Adhx (majiayu000/claude-skill-registry, 666 stars), Social (coreyhaines31/marketingskills, 54k stars) and Social Content (freekmurze/dotfiles, 1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
daymade (a GitHub user) maintains it in daymade/claude-code-skills, which has 1,444 GitHub stars. The repository holds 103 skills in this directory. The repository was last updated on October 8, 2026.
Source: daymade/claude-code-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.