| name | agent-reach-internet-access |
| description | Give AI agents eyes to see the internet โ scrape Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu with zero API fees |
| triggers | ["search twitter for mentions","get youtube video transcript","scrape this reddit thread","read this xiaohongshu post","search github repositories","get bilibili video subtitles","read this web page content","search the internet for"] |
Agent Reach โ Internet Access for AI Agents
Skill by ara.so โ AI Agent Skills collection.
Agent Reach is a scaffolding tool that gives AI agents the ability to read and search across Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu, and more โ all without paid APIs. It orchestrates best-in-class upstream tools (yt-dlp, twitter-cli, rdt-cli, gh CLI, etc.) and provides a unified interface for AI agents.
Installation
Agent Reach is installed via pip and automatically sets up dependencies:
pip install agent-reach
After installation, run diagnostics to check what's working:
agent-reach doctor
This shows status for each channel: โ
(works out of box), ๐ง (needs config), or โ (not available).
Core Capabilities
1. Web Page Reading (Jina Reader)
Read any web page as clean markdown:
curl https://r.jina.ai/https://example.com
curl https://r.jina.ai/https://example.com \
-H "Accept: application/json"
curl https://r.jina.ai/https://example.com \
-H "X-With-Images-Summary: true"
Python usage:
import requests
url = "https://example.com"
response = requests.get(f"https://r.jina.ai/{url}")
markdown_content = response.text
headers = {
"X-With-Links-Summary": "true",
"X-With-Images-Summary": "true"
}
response = requests.get(f"https://r.jina.ai/{url}", headers=headers)
2. YouTube & Video (yt-dlp)
Extract subtitles, metadata, and search videos:
yt-dlp --dump-json --write-auto-subs --skip-download \
"https://www.youtube.com/watch?v=VIDEO_ID"
yt-dlp "ytsearch5:AI agents tutorial" --dump-json
yt-dlp --write-subs --sub-lang en --skip-download URL
yt-dlp --dump-json "https://www.bilibili.com/video/BV..."
Python usage:
import subprocess
import json
def get_video_info(url):
result = subprocess.run(
["yt-dlp", "--dump-json", "--write-auto-subs",
"--skip-download", url],
capture_output=True, text=True
)
return json.loads(result.stdout)
def search_youtube(query, max_results=5):
result = subprocess.run(
["yt-dlp", f"ytsearch{max_results}:{query}", "--dump-json"],
capture_output=True, text=True
)
return [json.loads(line) for line in result.stdout.strip().split('\n')]
3. Twitter/X (twitter-cli)
Requires Cookie authentication. Export cookies using Cookie-Editor Chrome extension.
twitter configure
twitter tweet https://twitter.com/user/status/123456789
twitter search "AI agents" --limit 20
twitter timeline @username --limit 50
twitter thread https://twitter.com/user/status/123456789
Configuration file location: ~/.twitter-cli/config.json
4. Reddit (rdt-cli)
Requires Cookie authentication:
rdt login
rdt search "machine learning" --limit 20
rdt post https://reddit.com/r/programming/comments/...
rdt subreddit r/python --limit 30
5. GitHub (gh CLI)
gh auth login
gh repo view owner/repo
gh search repos "LLM framework" --limit 20
gh search issues "bug" --repo owner/repo
gh issue view 123 --repo owner/repo
gh issue create --repo owner/repo \
--title "Bug report" --body "Description"
Python usage:
import subprocess
import json
def search_repos(query, limit=20):
result = subprocess.run(
["gh", "search", "repos", query,
"--limit", str(limit), "--json", "name,description,url"],
capture_output=True, text=True
)
return json.loads(result.stdout)
def get_repo_info(owner_repo):
result = subprocess.run(
["gh", "repo", "view", owner_repo, "--json",
"description,stargazerCount,forkCount,url"],
capture_output=True, text=True
)
return json.loads(result.stdout)
6. XiaoHongShu (xhs-cli via mcporter)
Requires Cookie authentication:
mcporter add xiaohongshu
Configuration stored in: ~/.mcporter/xiaohongshu/config.json
7. Bilibili Enhanced (bili-cli)
bili hot --limit 20
bili search "Python tutorial" --limit 30
bili video BV1xx411c7mD
bili user-dynamic 123456
8. Internet Search (Exa via mcporter)
Semantic search across the web:
mcporter add exa
For advanced features, set API key:
export EXA_API_KEY=your_key_here
9. RSS Feeds
import feedparser
feed = feedparser.parse("https://example.com/feed.xml")
for entry in feed.entries:
print(f"Title: {entry.title}")
print(f"Link: {entry.link}")
print(f"Published: {entry.published}")
print(f"Summary: {entry.summary}")
print("---")
10. WeChat Official Accounts
Search and read WeChat articles via Exa + Camoufox:
11. Weibo (ๅพฎๅ)
agent-reach weibo search "AI" --type content
agent-reach weibo hot
agent-reach weibo user USER_ID
agent-reach weibo comments POST_ID
12. V2EX
agent-reach v2ex hot
agent-reach v2ex node python
agent-reach v2ex topic 123456
Configuration Patterns
Cookie-Based Services
For Twitter, Reddit, XiaoHongShu โ use Cookie-Editor:
- Login to the service in browser
- Install Cookie-Editor
- Click extension โ Export โ Copy
- Paste into CLI config command
Never commit cookies to version control. They're stored in:
- Twitter:
~/.twitter-cli/config.json
- Reddit:
~/.rdt-cli/cookies.json
- XHS:
~/.mcporter/xiaohongshu/config.json
Proxy Configuration (Server Deployments)
For Bilibili access from servers:
export HTTP_PROXY=http://proxy-server:port
export HTTPS_PROXY=http://proxy-server:port
yt-dlp --proxy http://proxy-server:port URL
GitHub Authentication
gh auth login
export GITHUB_TOKEN=ghp_your_token_here
gh auth login --with-token <<< $GITHUB_TOKEN
Common Workflows
Scrape Twitter Thread for Research
import subprocess
import json
def get_twitter_thread(url):
result = subprocess.run(
["twitter", "thread", url],
capture_output=True, text=True
)
return result.stdout
thread_content = get_twitter_thread(
"https://twitter.com/user/status/123456789"
)
Extract YouTube Video Summary
import subprocess
import json
def get_video_transcript(url):
result = subprocess.run(
["yt-dlp", "--dump-json", "--write-auto-subs",
"--skip-download", url],
capture_output=True, text=True
)
data = json.loads(result.stdout)
return {
'title': data.get('title'),
'description': data.get('description'),
'duration': data.get('duration'),
'subtitles': data.get('automatic_captions', {})
}
Search GitHub for Solutions
import subprocess
import json
def search_github_issues(query, repo=None):
cmd = ["gh", "search", "issues", query,
"--limit", "20", "--json",
"title,url,state,body,comments"]
if repo:
cmd.extend(["--repo", repo])
result = subprocess.run(cmd, capture_output=True, text=True)
return json.loads(result.stdout)
issues = search_github_issues("memory leak in agents")
issues = search_github_issues("bug", repo="openai/gpt-4")
Monitor Reddit for Mentions
rdt search "your_product_name" --limit 50 > mentions.txt
rdt subreddit r/artificial --limit 100
Read Web Page Content for Analysis
import requests
def get_clean_content(url):
response = requests.get(
f"https://r.jina.ai/{url}",
headers={
"X-With-Links-Summary": "true",
"X-No-Cache": "true"
}
)
return response.text
content = get_clean_content("https://news.ycombinator.com")
Troubleshooting
Doctor Command Shows โ
Run diagnostics:
agent-reach doctor
Each โ includes a fix suggestion. Common issues:
Twitter/Reddit not working:
- Need Cookie authentication
- Use Cookie-Editor to export cookies
- Run
twitter configure or rdt login
Bilibili 403 on server:
- Need proxy for non-CN IPs
- Set
HTTP_PROXY and HTTPS_PROXY env vars
GitHub rate limited:
- Authenticate:
gh auth login
- Authenticated rate: 5,000/hour vs 60/hour
yt-dlp fails:
- Update to latest:
pip install -U yt-dlp
- Tool is actively maintained, updates frequently
MCP Server Connection Issues
mcporter list
mcporter restart xiaohongshu
mcporter logs exa
Proxy Not Working
curl -x http://proxy:port https://api.bilibili.com
export HTTPS_PROXY=http://proxy:port
yt-dlp URL
Cookie Expired
Re-export fresh cookies:
- Login to service in browser
- Export with Cookie-Editor
- Reconfigure CLI tool
Environment Variables
export HTTP_PROXY=http://proxy:port
export HTTPS_PROXY=http://proxy:port
export GITHUB_TOKEN=ghp_xxxxx
export EXA_API_KEY=your_key_here
export AGENT_REACH_CONFIG_DIR=~/.config/agent-reach
Safety & Privacy
- All cookies stored locally in
~/.twitter-cli/, ~/.rdt-cli/, etc.
- No data uploaded to Agent Reach servers (there are none)
- Code is open source โ audit anytime
- Use
--safe mode during install to review system package installs
Updating
pip install -U agent-reach
pip install -U yt-dlp
gh extension upgrade --all
npm update -g mcporter
Check for breaking changes: https://github.com/Panniantong/agent-reach/blob/main/CHANGELOG.md
Platform Support Matrix
| Platform | Out of Box | After Config | Notes |
|---|
| Web | โ
| โ | Jina Reader, no limits |
| YouTube | โ
| โ | yt-dlp, 1800+ sites |
| RSS | โ
| โ | feedparser |
| GitHub | โ
| ๐ง Auth for private | gh CLI |
| Twitter | ๐ง Cookie | ๐ง Cookie | twitter-cli |
| Reddit | ๐ง Cookie | ๐ง Cookie | rdt-cli |
| Bilibili | โ
Local | ๐ง Proxy (server) | yt-dlp |
| XiaoHongShu | ๐ง Cookie | ๐ง Cookie | xhs-cli via MCP |
| Search | ๐ง MCP | ๐ง API key (optional) | Exa |
| WeChat | โ
| โ | Via Exa search |
| Weibo | โ
| โ | Direct API |
| V2EX | โ
| โ | Direct API |
Legend: โ
Works immediately | ๐ง Needs configuration