SkillAgentSearch skills...

x-reader

Universal content reader MCP Server for 10+ platforms

Install / Use

claude mcp add runesleo -- npx -y github:runesleo/x-reader

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

84/100

Supported Platforms

Claude Code
Claude Desktop

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.

Substance
29/30
Structure
20/20
Description
8/15
Adoption
13/20
Freshness
15/15

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.

SkillScoreStarsUpdatedFormat
x-reader (this skill)by runesleo849831d agoMCP Server
headroomby headroomlabs-ai10078.0ktodayCLAUDE.md
Agent-Reachby Panniantong100104.6k2d agoMCP Server
Scraplingby D4Vinci10090.0ktodayMCP Server
crawl4aiby unclecode10086.4k1d agoMCP 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.

x-reader

Python 3.10+ License: MIT

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 URL
  • read_batch(urls) — fetch multiple URLs concurrently
  • list_inbox() — view previously fetched content
  • detect_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 twitter

YouTube 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:

  1. X oEmbed for fast public tweet text.
  2. FxTwitter for structured public tweet fallback.
  3. Jina Reader for public Articles and long-form pages.
  4. Generic Jina Reader for profiles and non-status X pages.
  5. 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

Star History Chart

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

View on GitHub
GitHub Stars983
CategoryDevelopment
Updated1d ago
Forks97

Languages

Python

Trust signals

95/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 low