diff --git a/.env.example b/.env.example index d23fb80..617db77 100644 --- a/.env.example +++ b/.env.example @@ -1,6 +1,6 @@ -# Agent Eyes Configuration +# Agent Reach Configuration # Copy to .env and fill in your values -# Or use: agent-eyes setup +# Or use: agent-reach configure # Exa Search (free 1000/month) โ€” https://exa.ai # EXA_API_KEY=exa-your-key-here diff --git a/.gitignore b/.gitignore index d4e546a..568481d 100644 --- a/.gitignore +++ b/.gitignore @@ -6,5 +6,5 @@ __pycache__/ dist/ build/ .env -.agent-eyes/ +.agent-reach/ *.log diff --git a/README.md b/README.md index 1a3faac..068e23a 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,3 @@ -

- Agent Reach -

-

๐Ÿ‘๏ธ Agent Reach

diff --git a/agent_reach/integrations/skill/SKILL.md b/agent_reach/integrations/skill/SKILL.md index f8cb517..62fa7d5 100644 --- a/agent_reach/integrations/skill/SKILL.md +++ b/agent_reach/integrations/skill/SKILL.md @@ -22,7 +22,7 @@ pip install git+https://github.com/Panniantong/agent-reach.git ## ่งฃ้”ๆ›ดๅคšๅŠŸ่ƒฝ -่ฟ่กŒ `agent-reach setup` ่ฟ›่กŒไบคไบ’ๅผ้…็ฝฎ๏ผŒๆˆ–่€…่ฏปๅ–ไปฅไธ‹ๆŒ‡ๅ—๏ผš +่ฟ่กŒ `agent-reach configure` ่ฟ›่กŒไบคไบ’ๅผ้…็ฝฎ๏ผŒๆˆ–่€…่ฏปๅ–ไปฅไธ‹ๆŒ‡ๅ—๏ผš | ๅŠŸ่ƒฝ | ๆŒ‡ๅ—ๆ–‡ไปถ | |------|---------| diff --git a/docs/README_en.md b/docs/README_en.md index 175ad2a..117b3af 100644 --- a/docs/README_en.md +++ b/docs/README_en.md @@ -1,12 +1,71 @@ -# ๐Ÿ‘๏ธ Agent Reach +

๐Ÿ‘๏ธ Agent Reach

-**Give your AI Agent eyes to see the entire internet.** +

+ Give your AI Agent one-click access to the entire internet +

-Your AI Agent is smart but blind. It can't browse Reddit, search Twitter, or read Bilibili videos. Agent Reach fixes this โ€” once installed, your Agent can search and read content across 10+ platforms. +

+ MIT License + Python 3.10+ + GitHub Stars +

-> Install once. Superpowers unlocked. Most features work with zero config, zero cost. +

+ Quick Start ยท ไธญๆ–‡ ยท Platforms ยท Philosophy +

-[ไธญๆ–‡ๆ–‡ๆกฃ](../README.md) +--- + +## Why Agent Reach? + +AI Agents can already access the internet โ€” but "can go online" is barely the start. + +The most valuable information lives across social and niche platforms: Twitter discussions, Reddit feedback, XiaoHongShu reviews, Bilibili videos, GitHub activityโ€ฆ **These are where information density is highest**, but each platform has its own barriers: + +| Pain Point | Reality | +|------------|---------| +| Twitter API | Starts at $100/month | +| Reddit | Server IPs get 403'd | +| XiaoHongShu | Login required to browse | +| Bilibili | Blocks overseas/server IPs | + +To connect your Agent to these platforms, you'd have to find tools, install dependencies, and debug configs โ€” one by one. + +**Agent Reach turns this into one command:** + +``` +Install Agent Reach: https://raw.githubusercontent.com/Panniantong/agent-reach/main/docs/install.md +``` + +Copy that to your Agent. 30 seconds later, it can read tweets, search Reddit, and watch Bilibili. + +### โœ… Before you start, you might want to know + +| | | +|---|---| +| ๐Ÿ’ฐ **Completely free** | All tools are open source, all APIs are free. The only possible cost is a server proxy ($1/month) โ€” local computers don't need one | +| ๐Ÿ”’ **Privacy safe** | Cookies stay local. Never uploaded. Fully open source โ€” audit anytime | +| ๐Ÿ”„ **Kept up to date** | Upstream tools (yt-dlp, birdx, Jina Reader, etc.) are tracked and updated regularly | +| ๐Ÿค– **Works with any Agent** | Claude Code, OpenClaw, Cursor, Windsurfโ€ฆ any Agent that can run commands | +| ๐Ÿฉบ **Built-in diagnostics** | `agent-reach doctor` โ€” one command shows what works, what doesn't, and how to fix it | + +--- + +## Supported Platforms + +| Platform | Capabilities | Setup | Notes | +|----------|-------------|:-----:|-------| +| ๐ŸŒ **Web** | Read | Zero config | Any URL โ†’ clean Markdown ([Jina Reader](https://github.com/jina-ai/reader) โญ9.8K) | +| ๐Ÿฆ **Twitter/X** | Read ยท Search | Zero config / Cookie | Single tweets readable out of the box. Cookie unlocks search, timeline, posting ([birdx](https://github.com/runesleo/birdx)) | +| ๐Ÿ“• **XiaoHongShu** | Read ยท Search ยท **Post ยท Comment ยท Like** | Cookie | Full functionality with browser cookie | +| ๐Ÿ” **Web Search** | Search | Free key | One key unlocks web + Reddit + Twitter search ([Exa](https://exa.ai), free 1000/month) | +| ๐Ÿ“ฆ **GitHub** | Read ยท Search | Zero config | Public repos work immediately. `gh` CLI or token unlocks Fork, Issue, PR | +| ๐Ÿ“บ **YouTube** | Read | Zero config | Subtitles from 1800+ video sites ([yt-dlp](https://github.com/yt-dlp/yt-dlp) โญ148K) | +| ๐Ÿ“บ **Bilibili** | Read | Zero config / Proxy | Video info + subtitles. Local works directly, servers need a proxy | +| ๐Ÿ“ก **RSS** | Read | Zero config | Any RSS/Atom feed ([feedparser](https://github.com/kurtmckee/feedparser) โญ2.3K) | +| ๐Ÿ“– **Reddit** | Search ยท Read | Free / Proxy | Search via Exa (free). Reading posts needs a proxy on servers. OAuth bot unlocks posting | + +> **Setup levels:** Zero config = install and go ยท Free key = 30-second signup ยท Cookie = export from browser ยท Proxy = $1/month --- @@ -18,7 +77,7 @@ Copy this to your AI Agent (Claude Code, OpenClaw, Cursor, etc.): Install Agent Reach: https://raw.githubusercontent.com/Panniantong/agent-reach/main/docs/install.md ``` -Your Agent handles everything. You answer 1-2 questions at most. +The Agent auto-installs, detects your environment, and tells you what's ready.
Manual install @@ -26,7 +85,6 @@ Your Agent handles everything. You answer 1-2 questions at most. ```bash pip install https://github.com/Panniantong/agent-reach/archive/main.zip agent-reach install --env=auto -agent-reach doctor ```
@@ -34,97 +92,114 @@ agent-reach doctor ## Works Out of the Box -No configuration needed: +No configuration needed โ€” just tell your Agent: -- ๐ŸŒ **Web pages** โ€” read any URL -- ๐Ÿ“ฆ **GitHub** โ€” repos, issues, PRs, code search -- ๐Ÿ“บ **YouTube** โ€” video transcripts -- ๐Ÿ“บ **Bilibili** โ€” video info + subtitles -- ๐Ÿ“ก **RSS** โ€” any feed -- ๐Ÿฆ **Twitter** โ€” read individual tweets +- "Read this link" โ†’ any web page +- "What's this GitHub repo about?" โ†’ repos, issues, code +- "What does this video cover?" โ†’ YouTube / Bilibili subtitles +- "Read this tweet" โ†’ Twitter posts +- "Subscribe to this RSS" โ†’ RSS / Atom feeds +- "Search GitHub for LLM frameworks" โ†’ GitHub search -```bash -agent-reach read "https://github.com/openai/gpt-4" -agent-reach search-github "LLM framework" +**No commands to remember.** The Agent knows what to call. + +--- + +## Unlock on Demand + +Don't use it? Don't configure it. Every step is optional. + +### ๐Ÿ” Search โ€” Free, 30 seconds + +Go to [exa.ai](https://exa.ai), sign up for a free key (1000 searches/month), and send it to your Agent. One key unlocks web search + Reddit search + Twitter search. + +### ๐Ÿช Cookies โ€” Free, 2 minutes + +Tell your Agent "help me configure Twitter cookies" or "set up XiaoHongShu" โ€” it'll guide you through exporting from your browser. Local computers can auto-import. + +### ๐ŸŒ Proxy โ€” $1/month, servers only + +Reddit and Bilibili block server IPs. Get a proxy ([Webshare](https://webshare.io) recommended, $1/month) and send the address to your Agent. + +> Local computers don't need a proxy. Reddit search works free via Exa even without one. + +--- + +## Status at a Glance + +``` +$ agent-reach doctor + +๐Ÿ‘๏ธ Agent Reach Status +======================================== + +โœ… Ready to use: + โœ… GitHub repos and code โ€” public repos readable and searchable + โœ… Twitter/X tweets โ€” readable. Cookie unlocks search and posting + โœ… YouTube video subtitles โ€” yt-dlp + โš ๏ธ Bilibili video info โ€” server IPs may be blocked, configure proxy + โœ… RSS/Atom feeds โ€” feedparser + โœ… Web pages (any URL) โ€” Jina Reader API + +๐Ÿ” Search (free Exa key to unlock): + โฌœ Web semantic search โ€” sign up at exa.ai for free key + +๐Ÿ”ง Configurable: + โฌœ Reddit posts and comments โ€” search via Exa (free). Reading needs proxy + โฌœ XiaoHongShu notes โ€” needs cookie. Export from browser + +Status: 6/9 channels available ``` --- -## One Key Unlocks Search +## Design Philosophy -Sign up at [Exa](https://exa.ai) (free, 1000 searches/month). One key unlocks **web + Reddit + Twitter search**: +**Agent Reach is a setup scaffold, not a framework.** + +Every time you spin up a new Agent, you spend time finding tools, installing deps, and debugging configs โ€” what reads Twitter? How do you bypass Reddit blocks? How do you extract YouTube subtitles? Every time, you re-do the same work. + +Agent Reach does one simple thing: **it makes those tool selection and configuration decisions for you.** + +| Scenario | Tool | Why | +|----------|------|-----| +| Read web pages | [Jina Reader](https://github.com/jina-ai/reader) | 9.8K stars, free, no API key needed | +| Read tweets | [birdx](https://github.com/runesleo/birdx) | Cookie auth, no $100/month official API | +| Extract subtitles | [yt-dlp](https://github.com/yt-dlp/yt-dlp) | 148K stars, 1800+ video sites | +| Search the web | [Exa](https://exa.ai) | AI semantic search, 1000 free/month | +| Read RSS | [feedparser](https://github.com/kurtmckee/feedparser) | Python ecosystem standard, 2.3K stars | + +One file per platform, ~50 lines each. Swap any backend by editing one file โ€” everything else stays untouched. + +
+Project structure -```bash -agent-reach configure exa-key YOUR_KEY -agent-reach search "best open source LLM 2025" -agent-reach search-reddit "self-hosted LLM" --sub LocalLLaMA -agent-reach search-twitter "AI agent" ``` +agent_reach/channels/ +โ”œโ”€โ”€ web.py โ†’ Jina Reader +โ”œโ”€โ”€ twitter.py โ†’ birdx +โ”œโ”€โ”€ youtube.py โ†’ yt-dlp +โ”œโ”€โ”€ github.py โ†’ GitHub API +โ”œโ”€โ”€ bilibili.py โ†’ Bilibili API +โ”œโ”€โ”€ reddit.py โ†’ Reddit JSON API +โ”œโ”€โ”€ xiaohongshu.py โ†’ XHS Web API +โ”œโ”€โ”€ rss.py โ†’ feedparser +โ””โ”€โ”€ exa_search.py โ†’ Exa Search API +``` +
--- -## Unlock More +## Contributing -### ๐Ÿช Cookie-based (free, 2 minutes) +[Issues](https://github.com/Panniantong/agent-reach/issues) and [PRs](https://github.com/Panniantong/agent-reach/pulls) welcome. -```bash -# Local: auto-import all cookies -agent-reach configure --from-browser chrome - -# Server: use Cookie-Editor extension, export Header String -agent-reach configure twitter-cookies "cookie_string" -agent-reach configure xhs-cookie "cookie_string" -``` - -Unlocks: Twitter deep search, XiaoHongShu notes - -### ๐ŸŒ Proxy ($1/month, servers only) - -Reddit and Bilibili block server IPs. Local computers are fine. - -```bash -agent-reach configure proxy http://user:pass@ip:port -``` - -Recommend [Webshare](https://webshare.io). One proxy covers both Reddit and Bilibili. - ---- - -## Three Ways to Use - -**CLI** ยท **Python API** ยท **MCP Server** - -```bash -agent-reach read "URL" -agent-reach search "query" -agent-reach doctor -``` - -```python -from agent_reach import AgentReach -eyes = AgentReach() -result = asyncio.run(eyes.read("https://example.com")) -``` - -```json -{"mcpServers": {"agent-reach": {"command": "python", "args": ["-m", "agent_reach.integrations.mcp_server"]}}} -``` - ---- - -## Why Agent Reach? - -Not a framework. Not an SDK. Just glue โ€” beautifully simple glue. - -- Aggregates the best free tools: Jina Reader, birdx, yt-dlp, Exa, feedparser -- Each channel is ~50 lines. Swap any backend by editing one file. -- CLI, MCP Server, Python API -- 99% free. The remaining 1% costs $1/month. +Want to add a new platform? Copy any channel file, tweak it โ€” each one is only ~50 lines. ## Credits -[Jina Reader](https://r.jina.ai) ยท [birdx](https://github.com/runesleo/birdx) ยท [Exa](https://exa.ai) ยท [yt-dlp](https://github.com/yt-dlp/yt-dlp) ยท [feedparser](https://github.com/kurtmckee/feedparser) +[Jina Reader](https://github.com/jina-ai/reader) ยท [yt-dlp](https://github.com/yt-dlp/yt-dlp) ยท [birdx](https://github.com/runesleo/birdx) ยท [Exa](https://exa.ai) ยท [feedparser](https://github.com/kurtmckee/feedparser) ## License -MIT +[MIT](../LICENSE) diff --git a/docs/assets/logo-1.png b/docs/assets/logo-1.png new file mode 100644 index 0000000..1b251c8 Binary files /dev/null and b/docs/assets/logo-1.png differ diff --git a/docs/assets/logo-1.svg b/docs/assets/logo-1.svg new file mode 100644 index 0000000..dd4fb11 --- /dev/null +++ b/docs/assets/logo-1.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/assets/logo-2.png b/docs/assets/logo-2.png new file mode 100644 index 0000000..bedeb76 Binary files /dev/null and b/docs/assets/logo-2.png differ diff --git a/docs/assets/logo-2.svg b/docs/assets/logo-2.svg new file mode 100644 index 0000000..7fc073f --- /dev/null +++ b/docs/assets/logo-2.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/assets/logo-3.png b/docs/assets/logo-3.png new file mode 100644 index 0000000..be0694e Binary files /dev/null and b/docs/assets/logo-3.png differ diff --git a/docs/assets/logo-3.svg b/docs/assets/logo-3.svg new file mode 100644 index 0000000..dc6c4b5 --- /dev/null +++ b/docs/assets/logo-3.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/scripts/sync-upstream.sh b/scripts/sync-upstream.sh index 1262e87..b5710f3 100755 --- a/scripts/sync-upstream.sh +++ b/scripts/sync-upstream.sh @@ -1,5 +1,5 @@ #!/bin/bash -# sync-upstream.sh โ€” Sync readers from x-reader upstream +# sync-upstream.sh โ€” Sync channel implementations from upstream tools # # Usage: ./scripts/sync-upstream.sh # @@ -12,9 +12,9 @@ set -e UPSTREAM_REPO="runesleo/x-reader" UPSTREAM_BRANCH="main" UPSTREAM_DIR="x_reader/fetchers" -LOCAL_DIR="agent_eyes/readers" +LOCAL_DIR="agent_reach/channels" -echo "๐Ÿ‘๏ธ Agent Eyes โ€” Upstream Sync" +echo "๐Ÿ‘๏ธ Agent Reach โ€” Upstream Sync" echo "Checking for updates from $UPSTREAM_REPO..." echo "" @@ -48,9 +48,9 @@ for upstream_file in "$TMPDIR/upstream/$UPSTREAM_DIR"/*.py; do fi # Compare (ignoring import path differences) - if ! diff -q <(sed 's/x_reader\.fetchers/agent_eyes.readers/g' "$upstream_file") "$local_file" > /dev/null 2>&1; then + if ! diff -q <(sed 's/x_reader\.fetchers/agent_reach.channels/g' "$upstream_file") "$local_file" > /dev/null 2>&1; then echo "๐Ÿ“ CHANGED: $filename" - diff --color -u <(sed 's/x_reader\.fetchers/agent_eyes.readers/g' "$upstream_file") "$local_file" | head -20 + diff --color -u <(sed 's/x_reader\.fetchers/agent_reach.channels/g' "$upstream_file") "$local_file" | head -20 echo " ..." echo "" CHANGES=$((CHANGES + 1)) @@ -58,7 +58,7 @@ for upstream_file in "$TMPDIR/upstream/$UPSTREAM_DIR"/*.py; do done if [ $CHANGES -eq 0 ]; then - echo "โœ… All readers are up to date with upstream!" + echo "โœ… All channels are up to date with upstream!" else echo "" echo "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”" @@ -66,7 +66,7 @@ else echo "" echo "To merge a specific file:" echo " cp $TMPDIR/upstream/$UPSTREAM_DIR/FILENAME.py $LOCAL_DIR/FILENAME.py" - echo " sed -i 's/x_reader\\.fetchers/agent_eyes.readers/g' $LOCAL_DIR/FILENAME.py" + echo " sed -i 's/x_reader\\.fetchers/agent_reach.channels/g' $LOCAL_DIR/FILENAME.py" echo "" echo "Then review changes, run tests, and commit." fi