# Agent Reach

> Agent Reach — Internet Capability Layer for Hermes

- Skill: `lucadominguez/agent-reach` (Agent Skill)
- Install (CLI): `npx skillmds@latest add lucadominguez/agent-reach`
- Raw SKILL.md: https://api.skillmd.com/api/skills/lucadominguez/agent-reach/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: lucadominguez (https://skillmd.com/u/lucadominguez)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/lucadominguez/agent-reach

---

# Agent Reach — Internet Capability Layer for Hermes

Agent Reach is installed as a CLI tool (`agent-reach`). It provides **zero-API-fee**
access to web platforms via upstream CLI tools. Use these commands when Hermes
is asked to search or read content from the internet.

## PATH Setup (required before any mcporter command)

```bash
export PATH="$HOME/.hermes/node/bin:$PATH"
```

## Quick Health Check

```bash
agent-reach doctor
```

## Active Channels (7/15 on this system)

### 1. Web Pages — Jina Reader (zero config)

Read any URL as clean markdown:

```bash
curl -s "https://r.jina.ai/URL"
```

Use this by default for any webpage the user wants to read. Returns clean
extracted text, not HTML soup.

### 2. Exa Semantic Search (zero config, via mcporter)

AI-powered web search, excellent for code and technical queries:

```bash
# Web search
mcporter call 'exa.web_search_exa(query: "query", numResults: 5)'

# Code context search
mcporter call 'exa.get_code_context_exa(query: "code question", tokensNum: 3000)'
```

Exa is the go-to for "search the web for X" or "find code examples of Y."

### 3. GitHub — gh CLI (zero config, already authenticated)

```bash
gh search repos "query" --sort stars --limit 10
gh repo view owner/repo
gh search code "query" --language python
gh issue list -R owner/repo --state open
gh pr list -R owner/repo --state open
```

### 4. YouTube — yt-dlp (zero config)

```bash
# Get video metadata
yt-dlp --dump-json "URL"

# Extract subtitles (no video download)
yt-dlp --write-sub --write-auto-sub --sub-lang "en,zh-Hans" \
  --skip-download -o "/tmp/%(id)s" "URL"

# Then read the .vtt file
cat /tmp/VIDEO_ID.*.vtt

# Search YouTube
yt-dlp --dump-json "ytsearch5:query"
```

### 5. Bilibili — search API (zero config, basic)

```bash
# Search (bili-cli preferred if installed)
bili search "query" --type video -n 5   # requires: pipx install bilibili-cli

# API fallback (no bili-cli needed)
UA="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"
curl -s -c /tmp/bili_ck.txt -o /dev/null -A "$UA" "https://www.bilibili.com/"
curl -s -b /tmp/bili_ck.txt -A "$UA" \
  -e "https://www.bilibili.com/" \
  "https://api.bilibili.com/x/web-interface/search/all/v2?keyword=QUERY&page=1"
```

Note: B站 (yt-dlp) is BLOCKED by their anti-bot — use bili-cli or the curl API above.

### 6. V2EX — Public API (zero config)

```bash
# Hot topics
curl -s "https://www.v2ex.com/api/topics/hot.json" -H "User-Agent: agent-reach/1.0"

# Node topics (python, tech, jobs, etc.)
curl -s "https://www.v2ex.com/api/topics/show.json?node_name=python&page=1" \
  -H "User-Agent: agent-reach/1.0"

# Topic detail
curl -s "https://www.v2ex.com/api/topics/show.json?id=TOPIC_ID" \
  -H "User-Agent: agent-reach/1.0"

# Topic replies
curl -s "https://www.v2ex.com/api/replies/show.json?topic_id=TOPIC_ID" \
  -H "User-Agent: agent-reach/1.0"
```

### 7. RSS/Atom Feeds — feedparser (zero config)

```bash
python3 -c "
import feedparser
for e in feedparser.parse('FEED_URL').entries[:10]:
    print(f'{e.title} — {e.link}')
"
```

## Optional Channels (Not Yet Configured)

These channels need login cookies or browser extensions. To unlock, the user runs:
`agent-reach install --channels=CHANNEL_NAME`

Available: `twitter`, `reddit`, `xiaohongshu`, `facebook`, `instagram`, `linkedin`,
`bilibili` (full, with bili-cli), `xueqiu`, `xiaoyuzhou`, `opencli`, `all`

| Channel | What it unlocks | Setup needed |
|---------|----------------|-------------|
| Twitter/X | Search tweets, read timelines | Cookie (Cookie-Editor export) |
| Reddit | Search & read posts/comments | OpenCLI desktop or rdt-cli + cookie |
| Xiaohongshu | Search & read notes | OpenCLI desktop or xiaohongshu-mcp |
| Facebook | Search, profiles, feed, groups | OpenCLI desktop |
| Instagram | User search, profiles, explore | OpenCLI desktop |
| LinkedIn | Profiles, job search | linkedin-mcp or Jina Reader fallback |
| Bilibili (full) | Search, video details, rankings | `pipx install bilibili-cli` |
| Xueqiu | Stock quotes, hot posts | Cookie |
| Xiaoyuzhou | Podcast transcription | Groq API key (free) |

For platform-specific detailed commands (multi-backend, retry chains, login flows),
read the reference files at:
`/home/lenovo/.agents/skills/agent-reach/references/`

## Rules

1. **Use Agent Reach first** — if a search platform is covered, use these commands,
   don't invent scraping approaches.
2. **Exa for web search** — prefer `mcporter call 'exa.web_search_exa(...)` over
   other search methods for general internet queries.
3. **Jina Reader for URLs** — when user shares a link, try `curl -s "https://r.jina.ai/URL"`
   first before browser tools.
4. **PATH before mcporter** — always set `PATH="$HOME/.hermes/node/bin:$PATH"` before
   using mcporter commands.
5. **Check health** — if a channel command fails, run `agent-reach doctor` to diagnose.
6. **Offer optional channels** — if the user keeps asking for Twitter/Reddit/XHS searches
   and the channel isn't configured, tell them which `agent-reach install --channels=X`
   command to run.
7. **Never use yt-dlp for Bilibili** — it's blocked by their anti-bot system.
