Pnant
ca29c4fee5
release: v1.3.0 ( #70 )
...
New:
- WeChat Official Account channel (search + read)
- Search via miku_ai (Sogou WeChat search)
- Read via Camoufox (stealth Firefox, bypasses anti-bot)
- 13 channels total
Fixed:
- Windows encoding: text=True → encoding='utf-8' in all subprocess calls (#64 )
- Windows .cmd resolution: use shutil.which() paths (#64 )
Docs:
- Clarified agent-reach has no read/search commands (#58 , #59 )
- Fixed xiaohongshu API function names in SKILL.md (#65 )
- Added CONTRIBUTING.md (#62 )
- Updated README (zh + en) with WeChat channel
Version bumps: pyproject.toml, __init__.py, test_cli.py
Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-03-04 18:18:18 +08:00
Pnant
49d05b7023
docs: add WeChat channel to README (zh + en) ( #69 )
...
Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-03-04 18:06:47 +08:00
Pnant
476935be92
feat: add WeChat search via miku_ai (sogou) ( #68 )
...
- wechat channel now supports both search and read
- Search: miku_ai (sogou weixin search) → article list with URLs
- Read: camoufox (stealth Firefox) → full Markdown content
- Doctor shows granular status (search only / read only / both)
- SKILL.md updated with search + read workflow examples
Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-03-04 18:02:05 +08:00
Pnant
4f4ad99d49
feat: add WeChat Official Account channel ( #54 ) ( #67 )
...
New channel: wechat (微信公众号文章)
- Backend: wechat-article-for-ai (Camoufox stealth browser)
- Can read mp.weixin.qq.com article URLs → clean Markdown
- Bypasses WeChat anti-bot detection via stealth Firefox
- Doctor checks for camoufox package availability
- SKILL.md updated with usage examples
Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-03-04 17:53:39 +08:00
Sense_wang
561b248a2b
docs: add CONTRIBUTING.md with development guidelines ( #62 )
...
Add contribution guidelines including:
- Development setup instructions
- Code style guidelines (ruff, mypy, pytest)
- Channel development guide
- PR guidelines
- Issue reporting template
- Bilingual (EN/CN) documentation
Co-authored-by: haosenwang1018 <haosenwang1018@users.noreply.github.com>
2026-03-04 17:30:15 +08:00
Pnant
a91a74d880
fix: Windows encoding + .cmd subprocess resolution ( #64 ) ( #66 )
...
- Replace text=True with encoding='utf-8', errors='replace' in all
subprocess.run calls (channels + cli.py) to fix GBK decode errors
on Chinese Windows systems
- Use shutil.which() resolved paths in channel subprocess calls to
handle Windows .cmd wrappers (npm global installs)
Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-03-04 17:30:11 +08:00
Yves
7434c3cb9f
docs: fix xiaohongshu API in SKILL.md — replace non-existent functions with correct ones ( #65 )
2026-03-04 17:18:13 +08:00
Pnant
1a61a2cc81
docs: clarify agent-reach has no read/search commands ( #59 )
...
- Remove dead '# ── read ──' placeholder comment in cli.py
- Reword SKILL.md to make it explicit that agent-reach is an
installer/config tool, not a content fetcher
- Addresses confusion from issue #58
Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-03-04 14:33:38 +08:00
Pnant
932837ff9a
Merge pull request #52 from Panniantong/fix/twitter-cookie-sync-issue50
...
fix: sync Twitter cookies to xreach session.json on configure
2026-02-28 20:29:38 +08:00
Panniantong
4f52942260
improve: add chmod 0o600 for session.json (from PR #51 suggestion)
2026-02-28 13:28:14 +01:00
Panniantong
3c1a04a587
fix: sync Twitter cookies to xreach session.json on configure
...
When running 'agent-reach configure twitter-cookies', credentials are now
automatically written to ~/.config/xfetch/session.json so that 'xreach auth
check' works without manual intervention.
Preserves existing session.json fields if the file already exists.
Falls back gracefully if the sync fails (still saves to agent-reach config).
Fixes #50
2026-02-28 11:11:55 +01:00
Pnant
6a28b215af
Merge pull request #49 from Panniantong/fix/ci-test-github-check
...
fix: CI 测试修复 — gh CLI 在 CI 环境不存在
2026-02-27 20:41:30 +08:00
Panniantong
a881db4261
fix: CI test — allow github channel 'warn' when gh CLI not installed
...
GitHub Actions runners don't have gh CLI pre-installed, so the doctor
check returns 'warn' instead of 'ok'. Allow both in the test assertion.
2026-02-27 13:39:34 +01:00
Pnant
875f0987a6
Merge pull request #48 from Panniantong/fix/yt-bilibili-cookie-docs
...
fix: YouTube 需要 JS runtime — install 自动配置 Node.js
2026-02-27 18:46:32 +08:00
Panniantong
0d1a33236e
fix: YouTube requires JS runtime — auto-configure Node.js in install
...
yt-dlp now requires an external JS runtime (deno or Node.js) for YouTube.
Since agent-reach already installs Node.js, we configure yt-dlp to use it:
1. cli.py: install writes '--js-runtimes node' to ~/.config/yt-dlp/config
2. youtube.py: doctor checks JS runtime availability and config
3. SKILL.md: updated YouTube section with accurate troubleshooting
Bilibili note: 412 errors are IP-based (needs proxy), not cookie-related.
Fixes #47
2026-02-27 11:45:39 +01:00
Panniantong
e620a1db8f
docs: add cookie/proxy warnings for YouTube and Bilibili in SKILL.md
...
YouTube may trigger 'Sign in to confirm you're not a bot' on server IPs.
Bilibili may return 412 on non-residential IPs.
Added --cookies-from-browser fallback examples for both channels.
Fixes #47
2026-02-27 11:25:29 +01:00
Pnant
15a2961dfa
Merge pull request #46 from Panniantong/migrate-bird-to-xreach
...
feat: 迁移 Twitter 后端 bird → xreach CLI
2026-02-27 15:21:25 +08:00
Pnant
4bc860c74d
Merge pull request #45 from Panniantong/fix/xiaohongshu-arm64-support
...
fix: ARM64/Apple Silicon support for xiaohongshu-mcp Docker setup
2026-02-27 15:21:21 +08:00
Panniantong
62aacf38b5
feat: migrate Twitter backend from bird CLI to xreach CLI
...
bird CLI (@steipete/bird) is deprecated and no longer maintained.
xreach CLI (xreach-cli on npm) is our maintained fork with:
- Fixed SearchTimeline (POST + updated query ID)
- Built-in proxy rotation support
- Additional features (DMs, notifications, lists)
Changes across 11 files:
- channels/twitter.py: detect xreach instead of bird/birdx
- cli.py: install/doctor/uninstall all reference xreach-cli
- SKILL.md: updated command examples (bird read → xreach tweet)
- guides/setup-twitter.md: rewritten for xreach
- docs/troubleshooting.md: updated proxy guidance
- README.md + README_en.md: all references updated
- config.py: twitter_bird → twitter_xreach
- core.py, mcp_server.py: comment updates
npm package: https://www.npmjs.com/package/xreach-cli
Source: https://github.com/Panniantong/xfetch
2026-02-27 08:17:51 +01:00
Panniantong
d4e437bf2c
fix: add ARM64/Apple Silicon support for xiaohongshu-mcp Docker setup
...
- Detect ARM64 architecture and auto-add --platform linux/amd64 to
docker run hints in doctor/check output
- Add ARM64 FAQ section to setup guide with two options:
Rosetta emulation (--platform linux/amd64) or build from source
- Closes #44
2026-02-27 08:06:06 +01:00
Pnant
dbcc668f47
Merge pull request #40 from peter941221/fix/security-hardening-split-v2
...
fix: split security hardening and setup mcporter config checks
2026-02-27 13:30:52 +08:00
Pnant
40f833d0d1
Merge pull request #41 from peter941221/chore/quality-infra-split-v3
...
chore: split quality infrastructure into focused PR
2026-02-27 13:26:49 +08:00
Pnant
dc4d7cd7a5
Merge pull request #24 from Daiyimo/main
...
feat: add uninstall command; fix utf-8 encoding and minor cleanups
2026-02-27 13:24:21 +08:00
Pnant
60f5ddf4f0
Merge pull request #35 from Panniantong/fix/mcporter-list-hang
...
fix: replace 'mcporter list' with 'mcporter config list' to prevent hangs
2026-02-27 12:56:40 +08:00
Your Name
a726aa7fe1
chore: add quality infra matrix, constraints, and test baseline fixes
2026-02-27 12:27:07 +08:00
Your Name
4b2e6f2ffb
fix: split security hardening and setup mcporter config checks
2026-02-27 12:16:00 +08:00
Panniantong
39f76ee4dc
fix: replace 'mcporter list' with 'mcporter config list' to prevent hangs
...
mcporter list probes all configured servers sequentially, which can hang
indefinitely when servers are slow/offline. mcporter config list reads
config without probing — sufficient for checking if a server is configured.
Affected: doctor checks (4 channels) and install command (2 calls).
Fixes #34
2026-02-27 03:06:27 +01:00
Pnant
a5682716ec
Merge pull request #31 from Panniantong/docs/cookie-ban-warning
...
docs: 添加 Cookie 登录封号风险提醒
2026-02-26 22:41:53 +08:00
Panniantong
f269667a34
docs: 添加 Cookie 登录封号风险提醒,强调使用小号
...
- README: Cookie 安全建议新增封号风险说明
- install.md: Security tip 补充 account ban 风险
- SKILL.md: Cookie 导入段落加封号提醒
2026-02-26 15:13:25 +01:00
Pnant
090b01c909
Merge pull request #30 from Panniantong/fix/sync-version-string
...
fix: sync __version__ with pyproject.toml (1.0.0 → 1.2.0)
2026-02-26 22:08:35 +08:00
Panniantong
58b3a4dcb3
fix: sync __version__ with pyproject.toml (1.0.0 → 1.2.0)
...
Fixes #29 — __version__ in __init__.py was still '1.0.0' while pyproject.toml
had already been bumped to '1.2.0'. This caused misleading output in
'agent-reach --version' and 'agent-reach doctor'.
2026-02-26 15:07:24 +01:00
Panniantong
37b4cdeddc
bump: v1.2.0
2026-02-26 13:34:41 +01:00
Pnant
bf6dc7084b
Merge pull request #28 from Panniantong/feat/douyin-channel
...
feat: 新增抖音(Douyin)渠道
2026-02-26 20:34:17 +08:00
Panniantong
50f2181fcc
feat: 新增抖音(Douyin)渠道 - 基于 douyin-mcp-server
...
- 新增 agent_reach/channels/douyin.py
- 更新 doctor 检测逻辑
- 更新 install.md/SKILL.md/README 文档
- 通过 mcporter 调用 douyin-mcp-server
- 支持视频解析、下载链接获取
- 无需登录即可使用
2026-02-26 13:25:57 +01:00
Pnant
b387a67b51
Merge pull request #27 from Panniantong/docs/cookie-editor-first
...
docs: Cookie-Editor 作为所有 cookie 平台的首选登录方式
2026-02-26 19:17:35 +08:00
Panniantong
a96c5cda14
docs: Cookie-Editor 作为首选登录方式,统一所有 cookie 平台
...
- install.md: 新增通用 Cookie 导入说明,所有平台统一流程
- install.md: 小红书登录方式改为 Cookie-Editor 优先,扫码降级为备选
- SKILL.md: Cookie 导入独立成段,明确优先级
- README.md: 更新 Cookie 说明,强调 Cookie-Editor 比扫码更简单可靠
2026-02-26 12:16:34 +01:00
Daiyimo
9c6c04c800
feat: add uninstall command; fix utf-8 encoding and minor cleanups
2026-02-26 16:01:22 +08:00
Pnant
cf70302e92
Merge pull request #23 from Panniantong/refactor/simplify-to-installer
...
refactor: 回归安装器+文档定位,砍掉 read/search 包装层
2026-02-26 15:29:44 +08:00
Panniantong
80a08c8c10
docs: update all remaining references to use upstream tools directly
...
- docs/README_en.md: update FAQ, Works Out of the Box, Design Philosophy
- docs/troubleshooting.md: Exa fallback uses mcporter directly
- agent_reach/guides/setup-exa.md: test with mcporter call
- agent_reach/guides/setup-wechat.md: test with Jina Reader
2026-02-26 08:25:06 +01:00
Panniantong
606e8900ce
docs: update install.md — remove read/search references, add upstream tools table
2026-02-26 08:20:20 +01:00
Panniantong
a37e9aa190
refactor: strip to installer + doctor + docs, remove read/search wrapper layer
...
BREAKING CHANGE: Remove all `agent-reach read` and `agent-reach search-*` commands.
Agent Reach is now an installer, configuration tool, and doctor —
not a wrapper layer. After installation, agents call upstream tools
directly (bird CLI, yt-dlp, mcporter, gh CLI, Jina Reader, etc.).
What's kept:
- agent-reach install: one-shot installer
- agent-reach doctor: channel status overview
- agent-reach configure: cookies, proxy, credentials
- agent-reach setup: interactive wizard
- SKILL.md: complete guide for agents to use upstream tools directly
What's removed:
- agent-reach read URL (and all channel read() methods)
- agent-reach search-* commands (and all channel search() methods)
- ReadResult / SearchResult data classes
- URL routing system (get_channel_for_url)
- All parsing/conversion logic (VTT, Reddit JSON, bird text parser, etc.)
- MCP server read/search tools (kept only get_status)
Net change: -1790 lines. Less code = fewer bugs.
2026-02-26 08:15:56 +01:00
Pnant
1cbf6a7b9c
fix(xiaohongshu): 修复 xsec_token 丢失导致无法读取笔记详情 ( #17 )
...
问题:搜索结果包含 xsecToken 但被丢弃,read() 只从首页 feed
查找 token,几乎不可能匹配到目标笔记。
修复:
1. search() 返回的 URL 携带 xsec_token 查询参数
2. read() 三级 token 查找:URL 参数 → 首页 feed → 搜索反查
3. 全部失败时回退到 Jina Reader
Fixes #15
Co-authored-by: Panniantong <panniantong@users.noreply.github.com>
2026-02-26 14:36:36 +08:00
Pnant
68319ec683
Merge pull request #16 from Panniantong/remove/instagram
...
remove(instagram): 移除 Instagram 渠道(上游反爬封杀)
2026-02-26 14:23:26 +08:00
Panniantong
f70711e75e
remove(instagram): 移除 Instagram 渠道
...
Instagram 反爬封杀导致所有开源工具(instaloader 等)失效,
无论有无 cookies 都无法正常使用。
- 删除 instagram.py 渠道文件
- 移除 CLI 中 search-instagram、configure instagram-cookies 等命令
- 移除 setup/doctor 中 instaloader 依赖检查
- 更新 README、docs、SKILL.md、pyproject.toml
上游 issue: instaloader#2585, instaloader#2648
Relates to: #13
2026-02-26 07:20:13 +01:00
Panniantong
c3a9813b1c
seo: GitHub SEO + GEO 优化,提升项目可发现性
...
1. 新增 llms.txt — 让 AI 搜索引擎(ChatGPT/Claude/Perplexity)理解项目
2. README 中英文加 FAQ 区块 — AI 搜索友好的常见问题解答
3. pyproject.toml keywords 扩展到 21 个 — 覆盖更多搜索词
2026-02-25 22:32:22 +01:00
Panniantong
d291d27664
docs: install.md 和 SKILL.md 补充 Twitter 代理方案说明
...
让 Agent 在配置 Twitter 时知道:
- undici 需要安装(npm install -g undici)
- 代理注入是自动的,不需要用户额外操作
- fetch failed 的排查步骤
2026-02-25 21:45:40 +01:00
Pnant
0be4f097d0
Merge pull request #10 from Panniantong/fix/twitter-fetch-failed
...
fix: Twitter bird CLI fetch failed — 自动 fallback + 连通性检测
2026-02-26 04:44:39 +08:00
Panniantong
12bd727e30
fix: Twitter bird CLI fetch failed — 自动代理注入 + 连通性检测 + Exa fallback
...
问题:bird CLI 用 Node.js 原生 fetch(),不走 HTTP_PROXY,
导致需要代理的用户(如 Windows + 本地代理)完全无法使用。
修复:
1. 自动代理注入:检测到 HTTP_PROXY/HTTPS_PROXY 时,通过 undici 的
EnvHttpProxyAgent 让 Node.js fetch 自动走代理,用户无需任何额外配置
2. doctor 检测:实际跑 bird whoami 测连通性,失败时给出具体原因
3. search fallback:bird 搜索失败时自动 fallback 到 Exa
4. install:自动安装 undici(npm install -g undici)
5. 新增 troubleshooting.md:常见问题解决方案
Fixes #9
2026-02-25 21:35:21 +01:00
Panniantong
b6d135c977
docs: 小红书配置方式统一为「告诉 Agent 帮我配」
2026-02-25 16:03:50 +01:00
Pnant
291d073223
Merge pull request #8 from Panniantong/refactor/skill-consolidate
...
refactor: 合并 SKILL.md 为单一来源,更新为 12 渠道
2026-02-25 22:32:31 +08:00