Commit graph

35 commits

Author SHA1 Message Date
Panniantong
ebbb69c372 polish: 全面清理旧名引用 + 英文 README 对齐中文版质量
- .gitignore/.env.example: agent-eyes → agent-reach
- README.md: 暂去掉 logo 图片标签(logo 待定)
- docs/README_en.md: 完全重写,对齐中文版的表格/徽章/结构
- SKILL.md: setup → configure
- sync-upstream.sh: 更新路径到 agent_reach/channels
- 提交 3 个 logo 候选文件(最终选定后改名 logo.png)
2026-02-24 12:15:30 +01:00
Panniantong
5c62a21f32 rename: Agent Eyes → Agent Reach
全局重命名:
- 包名: agent_eyes → agent_reach
- CLI: agent-eyes → agent-reach
- 类名: AgentEyes → AgentReach
- 显示名: Agent Eyes → Agent Reach
- GitHub: Panniantong/agent-eyes → Panniantong/Agent-Reach

所有 36 个测试通过,CLI/doctor/read/search 全部正常。
2026-02-24 10:25:46 +01:00
Panniantong
4b0ae20fd7 README: 对标爆火开源项目标准重写
研究了 Daytona(4K星首周)、yt-dlp(148K)、Jina Reader(9.8K)、OpenClaw 等项目的 README 模式。

新增/改进:
1. 居中 Logo + 标题 + 徽章区(License、Python、Stars)
2. 顶部导航链接
3. '为什么需要' → 痛点表格化(Twitter 00/月、Reddit 403...)
4. 安心清单改成表格,更整齐
5. 设计理念里选型理由改成表格
6. 加了 贡献 section(降低参与门槛)
7. 加了 LICENSE 文件
8. logo 占位(待设计)
2026-02-24 10:17:52 +01:00
Panniantong
06a729e5a7 README: 加用户安心清单——免费、安全、持续更新、兼容所有 Agent
在开头加了'你可能关心的几件事':
- 完全免费(唯一可能花钱的是代理,本地不需要)
- Cookie 只存本地,代码开源可审查
- 持续跟进上游工具更新
- 适配所有主流 Agent 平台
- 出问题 doctor 一眼可知
2026-02-24 10:12:10 +01:00
Panniantong
e6f6eff9d4 README: 重写开头和设计理念
开头:从'Agent 是瞎子'改为精确描述真实痛点——Agent 能上网,但社媒和私域平台(信息密度最高的地方)各有门槛,一个个踩坑很烦。

设计理念:从'胶水不是框架'改为'Agent 初始化脚手架'——
帮你做完选型和配置,每个平台选了社区最好的开源工具,
每个文件 ~50 行,后端随时可换。列出每个选型的理由。
2026-02-24 10:09:57 +01:00
Panniantong
3fe0948e6d README: 去掉 CLI/Python/MCP,全部改成用户视角
用户不需要知道命令、API、MCP Server。
整个 README 只讲一件事:复制一句话给 Agent → 装好 → 用自然语言跟 Agent 说话。

删掉:接入方式(CLI/Python/MCP)、速查表(命令列表)
合并:'装好就能用' + '你的 Agent 能做什么' → 统一为场景示例
简化:'按需解锁' 从代码块改为自然语言引导
2026-02-24 10:05:43 +01:00
Panniantong
38bf407c3a 精确描述每个渠道的能力层次
核心修改:
- GitHub: 零配置=公开仓库可读可搜,配置 gh/token 后=Fork、Issue、PR、Review 全部可用
- Reddit: 三层能力——Exa 搜索(免费)→代理读帖子→OAuth Bot 高级操作(发帖等)
- 小红书: 必须配 Cookie,没有降级方案,明确说明
- B站: 本地可用/服务器需代理,区分清楚
- Twitter: 零配置可读推文,birdx+Cookie 解锁搜索发推

每个渠道的 check() 方法都改为自定义逻辑,精确反映当前环境的实际能力。
2026-02-24 09:25:46 +01:00
Panniantong
2098dacd37 全中文输出 + 积极正向的状态提示
所有 doctor 输出和渠道描述改为中文。
状态提示从'不支持/需要配置'的语气改为'配置一下就能用'。

Before:  Reddit posts — Need config: reddit_proxy
After:   Reddit 帖子和评论 — 配个代理就能用

Before:  XiaoHongShu — Need config: xhs_cookie
After:   小红书笔记 — 导入浏览器 Cookie 就能用
2026-02-24 09:14:41 +01:00
Panniantong
904f8dfb49 fix: doctor status must be honest — show real capability per channel
Before: everything under tier 0 showed  with vague descriptions
After: each channel shows its actual capability and limitations

Changes:
- GitHub: 'Public repos only. Set github_token for private repos'
- Twitter: shows 'Full access' vs 'Read-only' depending on birdx
- Bilibili: ⚠️ warning on servers about potential IP blocks
- XiaoHongShu: friendly message when no cookie (was showing Jina 451)
- Doctor format: tier 0 items now show detailed status messages, not just 
- README: platform table updated to match reality (removed exaggerated claims)
- README: doctor example updated to show new honest format
2026-02-24 09:00:34 +01:00
Panniantong
07c6efbc7e fix: 4 bugs found in full E2E usage testing
Bug 1: Reddit 403 due to short User-Agent in proxy test
  Root cause: configure proxy test used 'Mozilla/5.0' (too short, Reddit rejects)
  Fix: use full UA string matching the channel implementation

Bug 2: Reddit URL parsing broke on trailing slashes
  Root cause: url.rstrip('/') + '.json' mangled URLs with query params
  Fix: properly parse URL, clean path, reconstruct json URL

Bug 3: Reddit 403 without proxy showed raw HTTP error
  Root cause: no error handling for 403/429 responses
  Fix: friendly message suggesting proxy setup + Exa search alternative

Bug 4: XiaoHongShu without cookie showed Jina Reader 451 error
  Root cause: fallback to Jina Reader which can't access XHS (legal block)
  Fix: show clear message about needing cookies with setup instructions

Bug 5: Empty search query caused raw 422 API error
  Root cause: no input validation before API call
  Fix: check for empty query, show friendly message

All 36 unit tests passing.
2026-02-24 08:52:37 +01:00
Panniantong
afe3aceb61 fix: 2 real-usage bugs found in end-to-end testing
Bug 1: search-github/search-twitter silently returned empty
  Root cause: result printing code was inside except block (never reached on success)
  Fix: moved result display code outside try/except

Bug 2: Bilibili returned empty content when server IP is blocked
  Root cause: API returns code -404 but code treated it as success with empty data
  Fix: check API response code, show friendly message with proxy setup hint

Also: GitHub search results now correctly show stars/forks/language from extra dict

All found through real-usage E2E testing (not just install/config testing).
2026-02-24 08:44:29 +01:00
Panniantong
c851bd64b9 simplify: auto-everything in install command
Changes:
1. browser-cookie3 now in default deps (no separate pip install)
2. install --env=auto now auto-imports cookies on local computers
3. install auto-detects EXA_API_KEY from environment variables
4. install.md cut from 100 lines to 60 lines — two steps not five

Before: pip install → agent-eyes install → 'want search?' → 'want cookies?' → configure each
After: pip install → agent-eyes install (does everything automatically) → only ask about what's missing

Docker clean-room test: all passing, 0 bugs.
2026-02-24 08:37:55 +01:00
Panniantong
cf5b495ebf docs: GitHub full capabilities via gh CLI
GitHub isn't just read+search — gh CLI enables:
create issues/PRs, comment, review, fork, star, manage releases
2026-02-24 07:57:47 +01:00
Panniantong
d588403669 docs: full channel table upfront with capabilities + difficulty
Major change: README now opens with a complete platform table showing:
- ALL 9 supported platforms
- What each can do (read/search/post/reply/like/collect)
- Configuration difficulty (零配置/免费Key/Cookie/代理)
- Which open-source tool powers each one

Key additions:
- Twitter: not just read — can post tweets and reply (via birdx)
- XiaoHongShu: full operations — post, comment, like, collect, search
- Sorted by importance: Web → Twitter → XHS → Search → GitHub → YouTube → Bilibili → RSS → Reddit
2026-02-24 07:52:21 +01:00
Panniantong
a9f5fd93d7 docs: 4 rounds of Steve Jobs polish on Chinese README
Round 1: Problem-solution structure, showcase underlying tools
Round 2: Too verbose - 4 'can't do' examples is repetitive, tightened
Round 3: Compact doctor output, restored quick-reference table,
         cut code examples to essentials
Round 4: Opening paragraph tighter - one sentence for all pain points

Key: README doesn't say 'we can read URLs' (every tool does that).
It says 'here are the best open-source tools for each platform,
we glued them together so you install once and get everything.'
2026-02-24 07:37:16 +01:00
Panniantong
f8234e3b96 docs: rewrite README — showcase underlying tools, not generic capabilities
Core insight from Neo: 'reading a URL is not a feature — every AI tool does that'

New approach: introduce each underlying project and what makes it special:
- Jina Reader (9.8K): any URL → clean Markdown, handles JS rendering
- yt-dlp (148K): subtitles from 1800+ video sites, not just YouTube
- Exa: neural semantic search, not keyword matching
- birdx: Twitter without expensive API Key, just browser cookies
- feedparser (2.3K): universal RSS/Atom parser

Framing: 'We find the best wheel for each job, then attach them all to your Agent'
2026-02-24 07:30:04 +01:00
Panniantong
e96ebdec88 docs: Chinese README as default, English in docs/
Chinese README polished 3 rounds:
- Round 1: direct translation
- Round 2: too dry, too many tables, too technical
- Round 3: conversational tone, scenario-driven, collapsible details

Key improvements:
- Opens with WHY not WHAT ('你的Agent很聪明,但是看不见')
- Install section explains WHERE to paste for newbies
- Features shown as bullet list not tables (better visual scan)
- Architecture hidden in collapsible section (most users don't care)
- 'Why Agent Eyes' section explains positioning clearly
- English version at docs/README_en.md
2026-02-24 07:22:35 +01:00
Panniantong
c40ffbd5ed fix: 3 bugs found in Docker clean-room test
1. Install command: git+... requires git (many envs don't have it)
   → Changed to zip URL: pip install .../archive/main.zip

2. yt-dlp not in dependencies (shows warning in doctor)
   → Added yt-dlp to required dependencies

3. search-twitter/reddit shows raw 401 error without Exa key
   → Now shows friendly 'Exa API key not configured' message
2026-02-24 07:11:22 +01:00
Panniantong
deec966228 polish: reorder steps — search first (highest value), cookies second
Search (Exa) is more valuable to most users than cookie-based channels.
New order: install → search key → cookies → proxy → done
2026-02-24 07:03:12 +01:00
Panniantong
89b3eaf5da polish: cookie header string parsing + Cookie-Editor guide + server user path
Key improvements:
- twitter-cookies now accepts BOTH formats:
  1. Full cookie header string from Cookie-Editor export
  2. Two separate values (auth_token ct0)
  Automatically detects which format was pasted.

- New docs/cookie-export.md guide for server users
  Recommends Cookie-Editor Chrome extension (one-click export)
  Fallback: manual F12 → Network → Cookie header

- Install guide now has two clear paths:
  Path A (local): --from-browser chrome (one command, all cookies)
  Path B (server): Cookie-Editor extension export (30 sec per site)

- Better error messages with accepted format examples
2026-02-24 07:02:44 +01:00
Panniantong
b264070a8d feat: one-click cookie import from browser
New: agent-eyes configure --from-browser chrome
- Extracts Twitter, XiaoHongShu, Bilibili cookies in ONE command
- No F12, no manual copying, no extension needed
- Supports: chrome, firefox, edge, brave, opera
- Uses browser-cookie3 (optional dependency: pip install agent-eyes[cookies])

Install guide now 3x shorter:
1. pip install + agent-eyes install (auto-detect env)
2. agent-eyes configure --from-browser chrome (one-click all cookies)
3. agent-eyes configure exa-key KEY (one API key)
4. Done

User actions reduced from 4 trips to 2:
- Before: go to exa.ai + F12 Twitter + F12 XHS + go to webshare.io
- After: go to exa.ai + say 'yes' to auto-import cookies
2026-02-24 06:55:08 +01:00
Panniantong
f98fc991bc polish round 2: Cookie-Editor shortcut + single-question flow
- Recommend Cookie-Editor browser extension as easiest cookie export method
- Step 1 is now literally ONE command (install + auto-detect combined)
- Only ONE question after install: 'want search? here's a free key'
- Additional channels are 'just ask anytime', not a menu to read through
- YouTube cookies only mentioned if user actually needs age-restricted content
- Cut guide from 100 lines to ~90 lines, much more scannable
2026-02-24 06:44:22 +01:00
Panniantong
1d1484fc16 polish: Steve Jobs pass — simplify install to near-zero friction
Key changes:
1. Auto-detect local vs server (SSH/Docker/cloud/headless detection)
   - User no longer needs to answer 'local or server?'
2. Only ask for ONE thing: Exa API key (the highest-value unlock)
3. Everything else is 'ask later' — user says 'set up Twitter' anytime
4. Install guide cut from 200 lines to 100 lines
5. No more overwhelming channel menu — just show what works + one recommendation

Philosophy: default to everything working, only stop when user action is truly needed.
The lazy user path: paste one line → Agent installs → 'want search? get free key at exa.ai' → done.
2026-02-24 06:43:34 +01:00
Panniantong
1b8b202e1e feat: complete channel menu install flow + XiaoHongShu channel
Major install flow polish:
- Channels organized by setup difficulty:
  🟢 Zero-config (Web, GitHub, RSS) — works immediately
  🔵 Cookie-based (Twitter, YouTube, Bilibili, XiaoHongShu) — free, ~2min
  🟡 Free API key (Exa Search) — one key, 30 seconds
  🟠 Proxy-based (Reddit, Bilibili on server) — $1/month
- Every channel explains: what it does, what's needed, what you miss without it
- Server vs local affects which channels need proxy

New: XiaoHongShu channel (cookie-based, falls back to Jina Reader)
New configure commands: twitter-cookies, xhs-cookie, youtube-cookies
Each command auto-tests after saving.
2026-02-24 06:31:48 +01:00
Panniantong
6b023b6607 polish: rewrite install guide as clear channel menu + decision tree
Installation flow now:
1. pip install (one command)
2. Ask: local or server?
3. Show FULL channel menu with clear explanations:
   - What each channel does
   - What's needed to set it up
   - What you miss without it
   - Pre-selected: zero-config channels
   - Recommended: Exa Search (free)
   - Optional: Reddit/Bilibili proxy, Twitter Advanced, WeChat, XHS
4. Configure selected channels (one command each, auto-tested)
5. Final health check

Key improvements:
- User sees ALL options at once with tradeoffs
- 'Without it' explanations help users decide
- Server users get clear proxy guidance (Reddit + Bilibili share same proxy)
- Reddit clarified: search works FREE via Exa, only full reader needs proxy
2026-02-24 06:24:08 +01:00
Panniantong
62b82c5a52 feat: deterministic install & configure commands
New commands:
- agent-eyes install --env=<local|server> --search=<yes|no> [--proxy=URL] [--exa-key=KEY]
  One-shot installer with explicit flags. No ambiguity.

- agent-eyes configure <key> <value>
  Set exa-key/proxy/github-token/groq-key with auto-testing.
  e.g. 'agent-eyes configure exa-key xxx' → saves + tests API

Rewrote install.md as strict decision tree:
1. Ask 3 questions → get flags
2. pip install
3. Run ONE install command with flags
4. Configure keys with configure command (auto-tests each)
5. Verify with doctor

Inspired by oh-my-opencode's deterministic installer pattern.
2026-02-24 06:16:52 +01:00
Panniantong
83622965d2 feat: add environment detection (local vs server) + Bilibili proxy support
Install guide now asks: local computer or server?
- Server users get proactive guidance on Reddit/Bilibili proxy (/mo Webshare)
- Bilibili channel now supports proxy config (bilibili_proxy)
- Updated step numbering in install guide
2026-02-24 06:12:03 +01:00
Panniantong
33c7b773e0 feat: add Agent-readable install guide (one URL to rule them all)
Users just paste one line to their AI Agent:
'Install Agent Eyes: https://raw.githubusercontent.com/Panniantong/agent-eyes/main/docs/install.md'

The Agent reads the guide, installs, configures, and reports back.
Inspired by oh-my-opencode's installation flow.

Also updated README: new tagline, architecture diagram reflects
pure-glue design, updated credits.
2026-02-24 05:46:03 +01:00
Panniantong
74c3df5c3d v2.0.0 — Pure glue architecture: zero copied code, pluggable channels
BREAKING: Complete architectural rewrite.

Before: Copied x-reader's fetcher code into readers/ (1205 lines of borrowed code)
After: Pluggable channel system where each channel is a thin wrapper (~50 lines)
       around the best external tool for that platform. Zero copied code.

Architecture:
- channels/base.py — Universal Channel interface (read, search, check)
- channels/web.py — Jina Reader API (swappable)
- channels/github.py — GitHub API (swappable)
- channels/twitter.py — birdx + Jina fallback (swappable)
- channels/youtube.py — yt-dlp (swappable)
- channels/reddit.py — Reddit JSON API + proxy (swappable)
- channels/rss.py — feedparser (swappable)
- channels/bilibili.py — Bilibili API (swappable)
- channels/exa_search.py — Exa semantic search (swappable)

Key design: every backend can be swapped by changing ONE file.
YouTube dies? Change youtube.py. Exa sucks? Swap exa_search.py for Tavily.
Nothing else changes.

Removed: reader.py, schema.py, readers/, search/, utils/ (all x-reader code)
Tests: 36/36 passing
2026-02-24 05:38:21 +01:00
Panniantong
7e4cd961ee feat: add upstream sync script for x-reader updates
scripts/sync-upstream.sh checks for changes in x-reader's fetchers/
and shows which reader files have upstream updates. Handles import
path differences (x_reader.fetchers → agent_eyes.readers) automatically.
2026-02-24 05:22:48 +01:00
Panniantong
e7cd04655e fix: suppress loguru noise in CLI, fix birdx text parser
- CLI now suppresses loguru INFO logs by default (use -v/--verbose to show)
- Fixed birdx output parser to correctly extract author, url, date, text
- birdx search now uses plain text output (--json returns empty arrays)
2026-02-24 05:21:57 +01:00
Panniantong
d891af5b7d fix: import paths (fetchers→readers), schema field mismatch, RSS detection
Bugs found during fresh pip install testing:
- readers/*.py still referenced agent_eyes.fetchers → fixed to agent_eyes.readers
- reader.py passed 'author'/'metadata' to UnifiedContent which doesn't have those → use 'extra' field
- RSS URL detection missed domains containing 'rss' (e.g. hnrss.org)
2026-02-24 05:13:52 +01:00
Panniantong
8eab038cb9 v1.0.0 — Agent Eyes: search + read the entire internet
Major restructure from x-reader fork to independent project:

Architecture:
- readers/ — content extraction from 10+ platforms (based on x-reader, MIT)
- search/ — semantic search via Exa, GitHub API, birdx (NEW)
- config.py — configuration management (~/.agent-eyes/config.yaml) (NEW)
- doctor.py — environment health checker (NEW)
- core.py — AgentEyes unified entry point (NEW)
- cli.py — full CLI: read, search, setup, doctor (NEW)
- integrations/mcp_server.py — 8 MCP tools (NEW)
- guides/ — 6 Agent-readable setup guides (NEW)
- integrations/skill/ — OpenClaw Skill package (NEW)

Platforms (zero config):
- Web pages, GitHub, Bilibili, YouTube, RSS, single tweets

Platforms (one free API key):
- Web search, Reddit search, Twitter search (via Exa)

Platforms (optional setup):
- Reddit full reader, Twitter advanced, WeChat, XiaoHongShu

Tests: 34/34 passing

Credits: Built on x-reader by @runes_leo (MIT License)
2026-02-24 04:00:47 +01:00
Panniantong
3a3a0101cf Agent Eyes v1.0.0 — search + read the entire internet
Based on x-reader by @runes_leo (MIT License). Extended with:
- Reddit support (posts + comments, proxy support)
- GitHub support (repos, issues, PRs)
- Web search via Exa semantic search
- Reddit search (bypasses IP blocks via Exa)
- GitHub search (repos by stars)
- Renamed package: x_reader → agent_eyes
- New MCP tools: search, search_reddit, search_github
- Agent-first positioning and documentation
2026-02-24 03:07:50 +01:00
Panniantong
ee2ad83b12 Initial: forked from runesleo/x-reader (MIT License) - thank you @runes_leo! 2026-02-24 03:00:05 +01:00