About DeepReader
DeepReader is a web-content reading skill for OpenClaw agents. It detects URLs in messages, extracts content using source-specific parsers, and saves clean Markdown with YAML frontmatter to agent memory.
Key features
- 01Automatic URL detection in messages
- 02Extraction of X posts, threads, and profiles
- 03Reddit posts and top-comment retrieval
- 04YouTube video transcript retrieval
- 05Markdown output with YAML metadata
Use cases
- 01Read a shared article or documentation page
- 02Retrieve content from an X post or profile
- 03Review a Reddit discussion and top comments
- 04Process multiple URLs from one message
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ astonysh/ openclaw-deepreeder --skill deepreaderAfter installing, type/deepreaderin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
__init__.pymanifest.jsonrequirements.txtcore/storage.py__init__.pyrouter.pyutils.pyintegrations/__init__.pynotebooklm.pyparsers/base.py__init__.pygeneric.pyyoutube.pyreddit.pytwitter.pyDetails
From the project READMEDeepReader
The default web content reader for OpenClaw agents. Automatically detects URLs in messages, fetches content using specialized parsers, and saves clean Markdown with YAML frontmatter to agent memory.
Use when
- A user shares a tweet, thread, X article, or X profile and you need to read its content
- A user shares a Reddit post and you need the discussion + top comments
- A user shares a YouTube video and you need the transcript
- A user shares any blog, article, or documentation URL and you need the text
- You need to batch-read multiple URLs from a single message
Supported sources
| Source | Method | API Key? |
|---|---|---|
| Twitter / X (tweets + profiles) | FxTwitter API + Nitter fallback | None |
| .json suffix API | None | |
| YouTube | youtube-transcript-api | None |
| Any URL | Trafilatura + BeautifulSoup | None |
Usage
from deepreader_skill import run
# Automatic — triggered when message contains URLs
result = run("Check this out: https://x.com/user/status/123456")
# X profile snapshot
result = run("https://x.com/thdxr")
# Reddit post with comments
result = run("https://www.reddit.com/r/python/comments/abc123/my_post/")
# YouTube transcript
result = run("https://youtube.com/watch?v=dQw4w9WgXcQ")
# Any webpage
result = run("https://example.com/blog/interesting-article")
# Multiple URLs at once
result = run("""
https://x.com/user/status/123456
https://www.reddit.com/r/MachineLearning/comments/xyz789/
https://example.com/article
""")
Output
Content is saved as .md files with structured YAML frontmatter:
---
title: "Tweet by @user"
source_url: "https://x.com/user/status/123456"
domain: "x.com"
parser: "twitter"
ingested_at: "2026-02-16T12:00:00Z"
content_hash: "sha256:..."
word_count: 350
---
Configuration
| Variable | Default | Description |
|---|---|---|
DEEPREEDER_MEMORY_PATH | ../../memory/inbox/ | Where to save ingested content (absolute path, or relative to repo root) |
DEEPREEDER_LOG_LEVEL | INFO | Logging verbosity (DEBUG, INFO, WARNING, ERROR) |
How it works
URL detected → is Twitter/X? → FxTwitter API → Nitter fallback
→ is Reddit? → .json suffix API
→ is YouTube? → youtube-transcript-api
→ otherwise → Trafilatura (generic)
Triggers automatically when any message contains https:// or http://.
Comments
Markdown supported