Commit Graph

219 Commits

Author SHA1 Message Date
Pnant 9a8b245e39 Merge pull request #227 from Panniantong/fix/reddit-exa-only
fix(reddit): switch to Exa-only, remove proxy dependency
2026-03-31 14:22:03 +08:00
Pnant 5d046ecb61 fix(reddit): switch to Exa-only for search and read, remove proxy dependency
Reddit blocks nearly all non-browser access at IP level (including ISP proxies).
Switch Reddit channel to use Exa exclusively:
- Search: web_search_exa with includeDomains: ["reddit.com"]
- Read: crawling_exa for full post + comments
- check() now verifies Exa availability instead of probing Reddit API
- tier changed from 1 (needs config) to 0 (zero config)
- Removed reddit_proxy from config, CLI, and setup guide
- Updated all docs (README, README_en, install.md, SKILL.md, references)
- Fixed xreach→bird references in references/social.md

Fixes #218, Fixes #222, Fixes #221

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 14:21:31 +08:00
Pnant b4ed28e48f Merge pull request #226 from Panniantong/merge/skill-router-system
feat(skill): refactor skill system with router + references (#192)
2026-03-31 11:22:00 +08:00
Pnant f9b7241d47 feat(skill): refactor skill system with router + references structure (#192)
Refactors SKILL.md into a router + reference documentation system:
- Main SKILL.md now contains routing table and quick commands
- Detailed docs split into references/ (search, social, career, dev, web, video)
- CLI skill install copies entire directory including references/
- Resolves conflicts with recent merges (#210, #213)
- Fixes xreach→bird in quick commands

Original PR by @Citrus086, merged with conflict resolution.

Co-Authored-By: Citrus086 <Citrus086@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 11:21:33 +08:00
Pnant 526616e13f Merge pull request #210 from MatrixA/fix/xueqiu-cookie-auth
Tests passed locally (75/75). Fixes xueqiu 400 errors with browser cookie auth, correct UA/Referer, and updated hot posts endpoint.
2026-03-31 11:15:17 +08:00
Pnant e51bd91e82 Merge pull request #213 from Panniantong/fix/skill-install-error-message
Tests passed locally. Clean fix for skill install error messaging.
2026-03-31 11:14:14 +08:00
Panniantong e575ddbcd1 fix(skill): show real error and helpful tip when skill install fails 2026-03-27 11:47:46 +01:00
fernando_jacob d793afaba6 fix(xueqiu): fix 400 errors by using browser cookies and correct headers
The Xueqiu stock API requires a login session token (xq_a_token) that
is generated by Xueqiu's frontend JavaScript and cannot be obtained by
simply visiting the homepage. This caused persistent HTTP 400 (error
code 400016) for all users.

Changes:
- _ensure_cookies(): add three-level priority — config file (saved by
  --from-browser) → live Chrome cookies via browser_cookie3 → homepage
  fallback. The homepage-only approach only ever got acw_tc (anti-DDoS
  token), never xq_a_token.
- _get_json(): switch User-Agent from "agent-reach/1.0" to a real Chrome
  UA, and add Referer: https://xueqiu.com/ to all API requests.
- get_hot_posts(): replace the defunct /statuses/hot/listV3.json endpoint
  (returns empty body) with the v4 public timeline endpoint; correctly
  parse item.data as a JSON string to extract author, text, and likes.
- cookie_extract.py: add Xueqiu to PLATFORM_SPECS and configure_from_browser
  so that `agent-reach configure --from-browser chrome` now also saves
  Xueqiu cookies (only when xq_a_token is present).
- check(): improve error message to direct users to --from-browser instead
  of suggesting a proxy.
- Fix urllib.parse.quote usage (was using urllib.request.quote).
- Update tier and backends description to reflect cookie requirement.
- Add 2 new tests: cookie loading from config, Referer/UA header verification.
- Update docs: README, install guide, troubleshooting, SKILL.md, CHANGELOG.
2026-03-27 11:55:14 +08:00
Pnant ca2e85520b docs: add Tencent Cloud OpenClaw to友情链接/Friends section (#209)
Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-03-26 11:15:16 +08:00
Pnant 3be2a64120 fix: auto-register skill on doctor + add XHS output formatter (#154, #134) (#199)
- Add 'agent-reach skill --install/--uninstall' command for explicit skill management
- Make 'agent-reach doctor' auto-install skill if not present (fixes #154)
- Add format_xhs_result() to strip bloated XHS JSON to essential fields (fixes #134)
- Add 'agent-reach format xhs' CLI command (pipe mcporter output to clean it)
- Update SKILL.md with XHS formatter usage tip
- Add tests for both features (11 new tests, 73/73 total pass)

Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-03-23 19:40:57 +08:00
Pnant 470c1288d0 feat: add Xueqiu (雪球) channel (#198)
* feat: add Xueqiu (雪球) channel for stock quotes and community posts

Add a Tier 0 (zero-config) channel for Xueqiu, China's popular stock
market and investment community platform. Uses auto-generated session
cookies via http.cookiejar — no login required.

Supported methods:
- get_stock_quote(symbol) — real-time quotes (A/HK/US markets)
- search_stock(query) — search by name or code
- get_hot_posts(limit) — trending community posts
- get_hot_stocks(limit, stock_type) — popular stocks leaderboard

Inspired by https://github.com/jackwener/opencli xueqiu implementation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: add Xueqiu to README platform tables, remove stale Instagram ref

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: fernando_jacob <f.jacob1996@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-23 18:44:13 +08:00
Pnant 881d9b96e2 fix(test): update doctor test assertions for Rich markup (#197)
PR #170 added Rich markup tags to doctor output, but the test
still asserted against plain text. Strip markup before assertion.

Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-03-23 18:42:14 +08:00
Yuki9814 15563051a1 feat: Refactor agent-reach doctor UI with Rich markup for better visualization (#170)
* feat: use rich text formatting for doctor UI

* fix: remove unrelated cli formatting changes

* fix: keep cli diff focused on doctor rich output

---------

Co-authored-by: Yuki9814 <Yuki9814@users.noreply.github.com>
2026-03-23 18:39:00 +08:00
Pnant 0c6c45a010 Fix twitter cookie parsing regression (#196)
Co-authored-by: Yin <mbair@gmail.com>
2026-03-23 18:35:47 +08:00
tobrainto 7e66abe636 feat: Support OPENCLAW_HOME environment variable! (#194)
Author:    tobrainto <tobrainto@qq.com>
2026-03-23 18:32:50 +08:00
Pnant e6406500f3 docs(wechat): use agent-reach interpreter for miku_ai search example (#188)
miku_ai is installed inside the agent-reach Python environment (pipx venv
or user venv). Using bare 'python3' fails when agent-reach was installed
via pipx, because system python3 cannot import miku_ai.

Fix: detect the correct interpreter at runtime via:
  $(python3 -c "import agent_reach, sys; print(sys.executable)")

This resolves the interpreter transparently for pipx, venv, and plain pip
installs without hardcoding paths.

Closes #187

Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-03-23 18:32:40 +08:00
Pnant afc8d0e3ee docs(weibo): add comprehensive usage examples to SKILL.md (#195)
- Add 10 mcporter command examples for Weibo channel
- Cover: trending, search (users/content/topics), profile, feeds, comments, fans/followers
- Note: zero config, no login needed, uses mobile API with auto visitor cookies
- Completes documentation for mcp-server-weibo integration

Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-03-23 17:16:31 +08:00
Pnant 90bb4e0266 Merge pull request #193 from Panniantong/feat/twitter-bird-migration
feat(twitter): migrate from xreach to bird CLI
2026-03-23 15:52:04 +08:00
Panniantong 7ae0cd8c0a feat(twitter): migrate from xreach to bird CLI
- Replace xreach CLI with bird (@steipete/bird) as Twitter/X backend
- bird uses AUTH_TOKEN/CT0 env vars (simpler than xreach's session.json)
- Accept both 'bird' and 'birdx' binary names
- Remove version detection logic (bird v0.8.0 is the baseline)
- Write credentials.env to ~/.config/bird/ for easy sourcing
- Keep xfetch session.json sync for backward compatibility
- Update SKILL.md commands: bird search/read/user-tweets/thread
- Update install/uninstall to use npm @steipete/bird
- All 52 tests pass
2026-03-23 08:51:22 +01:00
Pnant c1af1cad14 fix(bilibili): add /all/v2 search API check to doctor (#182)
Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 00:26:42 +08:00
Pnant ded444000b Merge pull request #176 from Panniantong/fix/xhs-cookies-absolute-path
fix(xhs): use absolute path fallback and restart container after cookie import
2026-03-19 15:05:16 +08:00
Panniantong 5fb0e10167 fix(xhs): use absolute path fallback and restart container after cookie import
- Change fallback cookie path from relative 'cookies.json' to absolute
  '/app/cookies.json' so docker cp works correctly when COOKIES_PATH env
  var is not set in older container images
- Also fix except branch to use the same absolute fallback
- Auto-restart container after writing cookies so the upstream MCP
  reloads them from disk without requiring manual intervention

Fixes #175
2026-03-17 11:15:46 +01:00
Pnant ef8134bba4 Merge pull request #173 from Panniantong/docs/wechat-personal-qr
docs: 微信二维码改为个人号(交流或合作加微信)
2026-03-16 19:09:40 +08:00
Panniantong be9f9ab838 docs: replace WeChat group QR with personal QR, update copy 2026-03-16 12:02:41 +01:00
Pnant 8afd19f473 Merge pull request #169 from Panniantong/fix/reddit-doctor-user-agent
fix(reddit): add User-Agent to doctor health check to avoid false 403
2026-03-15 21:50:43 +08:00
Panniantong 1f4154a897 fix(reddit): add User-Agent to doctor health check to avoid false 403
Reddit API requires a non-empty User-Agent header per its API rules.
Without it, the JSON endpoint returns 403 even when Reddit is reachable,
causing doctor to falsely report the channel as unavailable.

Changes:
- Add _reddit_reachable() helper that probes Reddit JSON API with UA
- doctor check() now distinguishes 'actually unreachable' from 'no proxy'
- Users on home IPs get 'ok' when Reddit is reachable; warn only on real failure

Fixes #168
2026-03-15 11:12:25 +01:00
Pnant 1442852471 Merge pull request #166 from voidborne-d/fix/skill-description-length
fix: shorten SKILL.md description to stay under 1024-char limit
2026-03-14 00:35:02 +08:00
Pnant 5461ca4030 Merge pull request #161 from Panniantong/fix/xiaohongshu-doctor-windows-compat
fix(xiaohongshu): robust JSON parsing + Windows timeouts for doctor check
2026-03-14 00:32:02 +08:00
voidborne-d ab843071ef fix: shorten SKILL.md description to stay under 1024-char limit (fixes #163)
The description field was 1204 characters, exceeding the 1024-character
maximum enforced by Codex and other MCP clients. This caused
'invalid description: exceeds maximum length of 1024 characters'
errors that prevented the skill from loading.

Changes:
- Removed star count (changes frequently, not essential for matching)
- Removed Chinese aliases in parentheses (redundant with trigger list)
- Consolidated 'Use when' into a single concise sentence
- Deduplicated trigger keywords (kept most distinctive ones)

New length: 661 chars (well within 1024 limit).
2026-03-13 09:11:20 +00:00
Pnant 6c5346cfa4 docs: update WeChat group QR code (expires 2026-03-20) (#164)
Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-03-13 16:25:56 +08:00
Panniantong 77c62c76fb fix(xiaohongshu): robust JSON parsing + Windows timeouts for doctor check
- Replace brittle '"status": "ok"' string match with proper JSON parsing
  in _mcporter_status_ok(). Handles Windows BOM, CRLF line endings, and
  whitespace variations that caused false negatives on Windows + mcporter 0.7.3.
- Fallback to normalised string matching for backward compatibility.
- Extend config-get timeout to 15 s and list timeout to 30 s on Windows
  (unchanged on Linux/macOS: 5 s / 10 s).

Fixes #159
2026-03-13 07:13:10 +01:00
Pnant 7c64579318 Merge pull request #157 from kadaliao/docs/add-v2ex-to-readme
docs: add V2EX channel to README and CHANGELOG
2026-03-13 12:10:45 +08:00
Pnant 383004e06a docs(skill): add 小宇宙播客 (Xiaoyuzhou) section to SKILL.md (#158)
The XiaoyuzhouChannel (groq-whisper + ffmpeg transcription) was
implemented in the codebase but missing from SKILL.md entirely,
causing agents to not know it existed.

Changes:
- Add Xiaoyuzhou to platform count (15 → 16) in description
- Add trigger keywords: 小宇宙, xiaoyuzhou, 播客, podcast, 转录, transcribe
- Add ## 小宇宙播客 / Xiaoyuzhou Podcast usage section with
  transcribe.sh invocation, prerequisites, and setup instructions

Closes #156

Co-authored-by: 小白 Bot <bot@agent-reach.dev>
2026-03-13 11:59:54 +08:00
Kada Liao f52fb67232 docs: add V2EX channel to README and CHANGELOG (v1.3.0) 2026-03-12 21:55:26 +08:00
robert.chen 59b594eccc docs: add pipx/venv guidance for Homebrew Python installs 2026-03-12 19:27:09 +08:00
robert.chen 3416c0f6d3 fix: avoid xreach false alarm and xiaoyuzhou install crash 2026-03-12 19:26:58 +08:00
Kada Liao 31f00b8d78 feat(channels): add V2EX support via public API (zero-config, tier=0)
* feat(channels): add V2EX support via public API

V2EX provides a public JSON API that requires no authentication.
This PR adds:
- agent_reach/channels/v2ex.py: V2EXChannel (tier=0, zero-config)
  - can_handle() matches v2ex.com URLs
  - check() verifies API reachability via urllib (no extra deps)
- Register V2EXChannel in channels/__init__.py
- SKILL.md: add V2EX section with curl examples for hot topics,
  node browsing, topic detail, replies, and user info
- tests/test_channels.py: URL matching + mocked ok/warn check tests

V2EX API endpoints used:
  GET /api/v2/topics/hot          — hot topics
  GET /api/topics/show.json       — node topics / topic detail
  GET /api/replies/show.json      — topic replies
  GET /api/members/show.json      — user info

* feat(channels): expand V2EX channel with data-fetching methods

Add get_hot_topics, get_node_topics, get_topic, get_user, and search
methods to V2EXChannel using stdlib urllib only (no new dependencies).
Update unit tests and SKILL.md with Python call examples.

* feat(v2ex): add data fetching methods to V2EXChannel
2026-03-12 14:29:07 +08:00
Pnant ba565bd096 fix: switch wechat-article-for-ai to Panniantong fork (BS4 4.12 fix) (#150)
Upstream bzd6661/wechat-article-for-ai has a bug where Tag.new_tag
is None in BS4 4.12+. Our fork fixes this.

Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-03-11 17:34:20 +08:00
Pnant 7018d77d58 docs: update WeChat group QR code (#149)
Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-03-11 16:05:17 +08:00
Pnant ce9b365491 docs: update SKILL.md metadata (homepage, 14 channels, 7500+ stars) (#143)
Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-03-10 14:41:06 +08:00
Pnant 70a0bb8af8 fix(docs): correct OpenClaw exec permission instructions (#142)
- Replace invalid `/config set exec.allow true` with correct
  `openclaw config set tools.profile "coding"`
- Fix config filename: config.json → openclaw.json
- Update explanation to reference tools.profile system

Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-03-10 14:38:46 +08:00
Pnant 6737ba6dbd fix(groq): use Config class instead of hardcoded config.json (#136)
Config class writes YAML (config.yaml), but xiaoyuzhou.py, cli.py, and
transcribe.sh were hardcoded to read config.json (JSON format). Users who
configured groq-key via 'agent-reach configure' would not have their key
detected because the wrong file was being read.

Fixes #128 (related to config loading)

Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-03-10 14:21:34 +08:00
Pnant f5f4dea075 docs: add OpenClaw for Enterprise to friendly links (#141)
Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-03-10 14:20:31 +08:00
Pnant 233cc6fba8 docs: add friendly links section (FluxNode) (#140)
Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-03-10 14:18:06 +08:00
Pnant ae5812cf7f docs: remove personal WeChat QR, keep group QR only (#138)
Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-03-10 10:42:46 +08:00
Pnant 6af00ce4da Update README.md 2026-03-10 10:41:20 +08:00
Pnant 3321bf7d34 docs: add WeChat community group QR code (#137)
Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-03-10 10:39:40 +08:00
Pnant 00d80d2169 remove: drop Boss直聘 channel (non-functional) (#135)
Boss直聘 channel removed entirely — upstream mcp-bosszp
triggers account-level bans, making it unusable in practice.

Removed from: channel registry, README (CN/EN), install.md,
SKILL.md, tests, credits.

Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-03-10 10:14:59 +08:00
Pnant 55efebd395 fix(twitter): warn when xreach < 0.3.2 (longform tweet support) (#127)
xreach-cli v0.3.2 added:
- extractTweetText() preferring note_tweet.text for long tweets
- X Article URL support (/article/ path)

Previously, doctor reported 'ok' even when the user had v0.3.0/v0.3.1
installed, silently failing to read longform tweets. Now check() reads
`xreach --version` and returns a warn with upgrade instructions if the
version is below 0.3.2.

Closes #126

Co-authored-by: neo_minion1 <minion@openclaw.ai>
2026-03-10 10:08:36 +08:00
Pnant 16733df4fc fix: bust Star History chart cache (v=20260309, 7.5K+ stars) (#131)
Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-03-09 20:29:53 +08:00