x-reader
Universal content reader MCP Server for 10+ platforms
Install / Use
claude mcp add runesleo -- npx -y github:runesleo/x-readerIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Development & EngineeringSupported Platforms
Our assessment of x-reader
x-reader scores 84/100 on our quality scale, 2745th of 4,657 Development & Engineering skills we index.
Its MCP Server is 8.8 KB long, well organised into 28 sections with 16 code examples: a thorough specification that gives an agent plenty to work with.
It has 983 GitHub stars, a meaningful sign that others use it.
Maintenance, license and trust
- The repository was last updated yesterday, so x-reader is actively maintained.
- Our last check on 2026-08-22 found the source still online.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 95/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
x-reader compared with similar skills
All 4 of these similar skills score higher than x-reader; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| x-reader (this skill)by runesleo | 84 | 983 | 1d ago | MCP Server |
| headroomby headroomlabs-ai | 100 | 78.0k | today | CLAUDE.md |
| Agent-Reachby Panniantong | 100 | 104.6k | 2d ago | MCP Server |
| Scraplingby D4Vinci | 100 | 90.0k | today | MCP Server |
| crawl4aiby unclecode | 100 | 86.4k | 1d ago | MCP Server |
Frequently asked questions
- How do I install x-reader?
- Run
claude mcp add runesleo -- npx -y github:runesleo/x-reader. The install tabs above show the steps for each supported agent. - Which AI agents does x-reader work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is x-reader safe to use?
- It is MIT-licensed and scores 95/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is x-reader still maintained?
- The repository was last updated yesterday, so x-reader is actively maintained.
Skill content
View source on GitHubx-reader
Universal content reader — fetch, transcribe, and digest content from any platform.
Give it a URL (article, video, podcast, tweet), get back structured content. Works as CLI, Python library, MCP server, or Claude Code skills.
简体中文: README.zh.md / README.zh-CN.md
What It Does
Any URL → Platform Detection → Fetch Content → Unified Output
↓ ↓
auto-detect text: Jina Reader
7+ platforms video: yt-dlp subtitles
audio: Whisper transcription
API: Bilibili / RSS / Telegram
The Python layer handles text fetching and YouTube subtitle extraction. The Claude Code skills (optional) add full Whisper transcription for video/podcast and AI-powered content analysis.
Three Layers
x-reader is composable. Use the layers you need:
| Layer | What | Format | Install |
|-------|------|--------|---------|
| Python CLI/Library | Basic content fetching + unified schema | See Install | Required |
| Claude Code Skills | Video transcription + AI analysis | Copy skills/ to your Claude Code skills directory | Optional |
| MCP Server | Expose reading as MCP tools | python mcp_server.py | Optional |
Layer 1: Python CLI
# Fetch any URL
x-reader https://mp.weixin.qq.com/s/abc123
# Fetch a tweet
x-reader https://x.com/elonmusk/status/123456
# Fetch multiple URLs
x-reader https://url1.com https://url2.com
# Login to a platform (one-time, for browser fallback)
x-reader login xhs
# View inbox
x-reader list
Layer 2: Claude Code Skills
Requires cloning the repo (not included in pip install).
For video/podcast transcription and content analysis:
skills/
├── video/ # YouTube/Bilibili/podcast → full transcript via Whisper
└── analyzer/ # Any content → structured analysis report
Install:
export CLAUDE_SKILLS_DIR="/path/to/claude-code-skills"
mkdir -p "$CLAUDE_SKILLS_DIR"
cp -r skills/video "$CLAUDE_SKILLS_DIR/video"
cp -r skills/analyzer "$CLAUDE_SKILLS_DIR/analyzer"
Then in Claude Code, just send a YouTube/Bilibili/podcast link — the video skill auto-triggers and produces a full transcript + summary.
Layer 3: MCP Server
Requires cloning the repo (mcp_server.py is not included in pip install).
git clone https://github.com/runesleo/x-reader.git
cd x-reader
pip install -e ".[mcp]"
python mcp_server.py
Tools exposed:
read_url(url)— fetch any URLread_batch(urls)— fetch multiple URLs concurrentlylist_inbox()— view previously fetched contentdetect_platform(url)— identify platform from URL
Claude Code config (~/.claude/claude_desktop_config.json):
{
"mcpServers": {
"x-reader": {
"command": "python",
"args": ["/path/to/x-reader/mcp_server.py"]
}
}
}
Supported Platforms
| Platform | Text Fetch | Video/Audio Transcript | |----------|-----------|----------------------| | YouTube | ✅ Jina | ✅ yt-dlp subtitles → Groq Whisper fallback | | Bilibili (B站) | ✅ API | ✅ via Claude Code skill | | X / Twitter | ✅ oEmbed → FxTwitter → Article/Jina → Playwright | — | | WeChat (微信公众号) | ✅ Jina → Playwright | — | | Xiaohongshu (小红书) | ✅ Jina → Playwright* | — | | Telegram | ✅ Telethon | — | | RSS | ✅ feedparser | — | | 小宇宙 (Xiaoyuzhou) | — | ✅ via Claude Code skill | | Apple Podcasts | — | ✅ via Claude Code skill | | Any web page | ✅ Jina fallback | — |
*XHS requires a one-time login:
x-reader login xhs(saves session for Playwright fallback)X Articles and login-required X pages can use a saved local browser session:
x-reader login twitterYouTube Whisper transcription requires
GROQ_API_KEY— get a free key from Groq
X / Twitter Reading Path
x-reader uses a lightweight public-first chain for X:
- X oEmbed for fast public tweet text.
- FxTwitter for structured public tweet fallback.
- Jina Reader for public Articles and long-form pages.
- Generic Jina Reader for profiles and non-status X pages.
- Playwright with saved session for login-required content.
For Articles or gated pages, run:
x-reader login twitter
x-reader "https://x.com/user/status/123"
By default, local X cookies stay local. If you explicitly want to let Jina use your saved X session for gated Articles, set:
export X_READER_ALLOW_EXTERNAL_SESSION_COOKIES=1
Install
# From GitHub (recommended)
pip install git+https://github.com/runesleo/x-reader.git
# With Telegram support
pip install "x-reader[telegram] @ git+https://github.com/runesleo/x-reader.git"
# With browser fallback (Playwright — for XHS/WeChat anti-scraping)
pip install "x-reader[browser] @ git+https://github.com/runesleo/x-reader.git"
playwright install chromium
# With all optional dependencies
pip install "x-reader[all] @ git+https://github.com/runesleo/x-reader.git"
playwright install chromium
Or clone and install locally:
git clone https://github.com/runesleo/x-reader.git
cd x-reader
pip install -e ".[all]"
playwright install chromium
Dependencies for video/audio (optional)
# macOS
brew install yt-dlp ffmpeg
# Linux
pip install yt-dlp
apt install ffmpeg
For Whisper transcription, get a free API key from Groq and set:
export GROQ_API_KEY=your_key_here
Use as Library
import asyncio
from x_reader.reader import UniversalReader
async def main():
reader = UniversalReader()
content = await reader.read("https://mp.weixin.qq.com/s/abc123")
print(content.title)
print(content.content[:200])
asyncio.run(main())
Configuration
Copy .env.example to .env:
cp .env.example .env
| Variable | Required | Description |
|----------|----------|-------------|
| TG_API_ID | Telegram only | From https://my.telegram.org |
| TG_API_HASH | Telegram only | From https://my.telegram.org |
| GROQ_API_KEY | Whisper only | From https://console.groq.com/keys (free) |
| INBOX_FILE | No | Path to inbox JSON (default: ./unified_inbox.json) |
| OUTPUT_DIR | No | Directory for Markdown output (default: disabled) |
| OBSIDIAN_VAULT | No | Path to Obsidian vault (writes to 01-收集箱/x-reader-inbox.md) |
Architecture
x-reader/
├── x_reader/ # Python package
│ ├── cli.py # CLI entry point
│ ├── reader.py # URL dispatcher (UniversalReader)
│ ├── schema.py # Unified data model (UnifiedContent + Inbox)
│ ├── login.py # Browser login manager (saves sessions)
│ ├── fetchers/
│ │ ├── jina.py # Jina Reader (universal fallback)
│ │ ├── browser.py # Playwright headless (anti-scraping fallback)
│ │ ├── bilibili.py # Bilibili API
│ │ ├── youtube.py # yt-dlp subtitle extraction
│ │ ├── rss.py # feedparser
│ │ ├── telegram.py # Telethon
│ │ ├── twitter.py # oEmbed → FxTwitter → Article/Jina → Playwright
│ │ ├── wechat.py # Jina → Playwright fallback
│ │ └── xhs.py # Jina → Playwright + session fallback
│ └── utils/
│ └── storage.py # JSON + Markdown dual output
├── skills/ # Claude Code skills
│ ├── video/ # Video/podcast → transcript + summary
│ └── analyzer/ # Content → structured analysis
├── mcp_server.py # MCP server entry point
└── pyproject.toml
How the Layers Work Together
User sends URL
│
├─ Text content (article, tweet, WeChat)
│ └─ Python fetcher → UnifiedContent → inbox
│
├─ Video (YouTube, Bilibili, X video)
│ ├─ Python fetcher → metadata (title, description)
│ └─ Video skill → full transcript via subtitles/Whisper
│
├─ Podcast (小宇宙, Apple Podcasts)
│ └─ Video skill → full transcript via Whisper
│
└─ Analysis requested
└─ Analyzer skill → structured report + action items
Star History
Author
Leo (@runes_leo) — AI × Crypto independent builder. Trading on Polymarket, building data and trading systems with Claude Code and Codex.
leolabs.me — writing · community · open-source tools · indie projects · all platforms.
X Subscription — paid content weekly, or just buy me a coffee 😁
Learn in public, Build in public.
License
MIT
Related Skills
headroom
78.0kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Agent-Reach
104.6kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
Scrapling
90.0k🕷️ The BEST Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
crawl4ai
86.4kOpen-source web crawler and scraper for LLMs and AI agents: any website into clean, LLM-ready Markdown. Run it yourself, or use Crawl4AI Cloud with one key. Join our Discord https://discord.gg/VuxzM8mtf
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
