Commit graph

18 commits

Author SHA1 Message Date
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