Universal content reader - fetch from Twitter, Reddit, YouTube, WeChat, and more
Project description
Riocloud Reader
Universal content reader โ fetch, transcribe, and digest content from 30+ platforms. Combines the best of x-reader and OpenClaw-DeepReeder.
Supported Platforms
| Platform | Text Fetch | Video/Audio Transcript | API Key Required | Notes |
|---|---|---|---|---|
| ๐ฆ Twitter/X | โ | โ | โ | FxTwitter API + Nitter fallback |
| ๐ Reddit | โ | โ | โ | Native .json API |
| ๐ฌ YouTube | โ | โ | โ | transcripts in multiple languages |
| ๐ฐ WeChat (ๅพฎไฟกๅ ฌไผๅท) | โ | โ | โ | Jina + Playwright fallback |
| ๐ Xiaohongshu (ๅฐ็บขไนฆ) | โ | โ | โ | Playwright with session |
| ๐ Bilibili (B็ซ) | โ | โ | โ | Video metadata + subtitles |
| ๐ก RSS/Atom | โ | โ | โ | feedparser |
| ๐ฌ Telegram | โ | โ | โ | Telethon (requires API credentials) |
| ๐ Generic (any URL) | โ | โ | โ | Trafilatura + Jina Reader |
| ๐ NotebookLM | โ | โ | โ | Google authentication |
Platform Details
๐ฆ Twitter/X
- Regular tweets with engagement stats (likes, RTs, views, bookmarks)
- Long tweets (Twitter Blue)
- X Articles (long-form content)
- Quoted tweets (nested content)
- Reply threads (up to 5 via Nitter fallback)
- Profile snapshots
๐ Reddit
- Self posts (full markdown body)
- Link posts (URL + metadata)
- Top comments (up to 15, sorted by score)
- Nested reply threads (up to 3 levels deep)
- Media URLs (images, galleries, videos)
- Post stats (score, comment count, upvote ratio)
- Flair tags
๐ฌ YouTube
- Video transcripts in multiple languages
- Metadata (title, description, channel)
- Support for
youtube.com,youtu.be,youtube.com/embed
๐ฐ WeChat (ๅพฎไฟกๅ ฌไผๅท)
- Articles from official accounts
- Jina Reader as primary fetcher
- Playwright fallback for anti-scraping pages
๐ Xiaohongshu (ๅฐ็บขไนฆ)
- Notes and posts
- Images and media URLs
- Playwright with session for authenticated requests
๐ Bilibili (B็ซ)
- Video metadata
- Subtitles
- Support for
bilibili.comandb23.tvshort links
๐ก RSS/Atom
- Any standard RSS or Atom feed
- Auto-detection of feed URLs
๐ฌ Telegram
- Channel messages
- Requires
TG_API_IDandTG_API_HASHfrom my.telegram.org
๐ Generic (Any URL)
- Any webpage via Trafilatura
- Jina Reader as fallback
- Best effort content extraction
๐ NotebookLM (Integration)
- Upload content as sources
- Generate Audio Overview (podcast-style)
- Requires Google authentication
Installation
Basic Install
pip install git+https://github.com/Riocloud/riocloud-reader.git
With All Dependencies
pip install "riocloud-reader[all] @ git+https://github.com/Riocloud/riocloud-reader.git"
playwright install chromium
Optional Dependencies
# Browser support (WeChat, Xiaohongshu)
pip install "riocloud-reader[browser]"
# YouTube transcripts
pip install "riocloud-reader[youtube]"
# Telegram support
pip install "riocloud-reader[telegram]"
# NotebookLM integration
pip install "riocloud-reader[notebooklm]"
# Generic URL parsing
pip install "riocloud-reader[generic]"
# Development
pip install "riocloud-reader[dev]"
Usage
CLI
# Single URL
riocloud-reader https://twitter.com/user/status/123456
riocloud-reader https://youtube.com/watch?v=dQw4w9WgXcQ
riocloud-reader https://reddit.com/r/python/comments/abc123
# Multiple URLs
riocloud-reader https://url1.com https://url2.com
# Save to file
riocloud-reader https://example.com/article --output article.md
Python Library
import asyncio
from riocloud_reader import Reader
async def main():
reader = Reader()
# Single URL
content = await reader.read("https://twitter.com/user/status/123456")
print(content.title)
print(content.content[:500])
# Batch
results = await reader.read_batch([
"https://twitter.com/user/status/1",
"https://reddit.com/r/python/comments/abc",
])
asyncio.run(main())
OpenClaw Skill
from skills.reader import run
# Read content directly into agent memory
result = run("Check out this: https://x.com/elonmusk/status/123456")
MCP Server
# Start MCP server
python -m riocloud_reader.mcp
# Configure in claude_desktop_config.json
{
"mcpServers": {
"riocloud-reader": {
"command": "python",
"args": ["-m", "riocloud_reader.mcp"]
}
}
}
Configuration
Environment Variables
| Variable | Required | Description |
|---|---|---|
TG_API_ID |
Telegram only | From my.telegram.org |
TG_API_HASH |
Telegram only | From my.telegram.org |
GROQ_API_KEY |
Whisper only | Free from console.groq.com |
FIRECRAWL_API_KEY |
Optional | For paywalled content |
DEEPREEDER_MEMORY_PATH |
Optional | Where to save content |
.env File
cp .env.example .env
# Edit with your credentials
Architecture
riocloud_reader/
โโโ parsers/
โ โโโ base.py # Base parser + ParseResult
โ โโโ twitter.py # Twitter/X (FxTwitter + Nitter)
โ โโโ reddit.py # Reddit (.json API)
โ โโโ youtube.py # YouTube transcripts
โ โโโ wechat.py # WeChat articles
โ โโโ xhs.py # Xiaohongshu
โ โโโ bilibili.py # Bilibili
โ โโโ rss.py # RSS/Atom
โ โโโ telegram.py # Telegram channels
โ โโโ generic.py # Any URL (Trafilatura)
โโโ core/
โ โโโ router.py # URL โ Parser routing
โ โโโ storage.py # File I/O
โ โโโ config.py # Settings
โโโ skills/
โ โโโ reader/ # OpenClaw skill
โโโ integrations/
โ โโโ notebooklm.py # NotebookLM API
โโโ mcp/
โ โโโ server.py # MCP server
โโโ reader.py # Main Reader class
โโโ schema.py # Data models
Development
# Clone and install
git clone https://github.com/Riocloud/riocloud-reader.git
cd riocloud-reader
pip install -e ".[dev]"
# Run tests
pytest
# Format code
black .
ruff check --fix .
License
MIT โ Riocloud
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
riocloud_reader-1.0.0.tar.gz
(22.0 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file riocloud_reader-1.0.0.tar.gz.
File metadata
- Download URL: riocloud_reader-1.0.0.tar.gz
- Upload date:
- Size: 22.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee2c3b943b5101fbe56340b89e13073bb95b0301cc0e40d12e94aca896374f62
|
|
| MD5 |
a1654fffa2cb0e531785386403d270e2
|
|
| BLAKE2b-256 |
d9d0bc2a0c830fff8ca8cd7e03864bfe88e983c6a1e394b9961919983620161d
|
File details
Details for the file riocloud_reader-1.0.0-py3-none-any.whl.
File metadata
- Download URL: riocloud_reader-1.0.0-py3-none-any.whl
- Upload date:
- Size: 24.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5b6a996d98a6e02d512910f879df1d1672f45f5ad6a41df9afcb900f86c331f1
|
|
| MD5 |
3cfdfda0db7bc201fbe21c0ec42d7c32
|
|
| BLAKE2b-256 |
fbd623f4be617f95323e13599d595b27e1a37b1c805d68c1b30ba3702305375f
|