Agent-Reach/agent_reach/channels/wechat.py
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

57 lines
1.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- coding: utf-8 -*-
"""WeChat Official Account articles — read and search.
Read: wechat-article-for-ai (Camoufox stealth browser)
Search: miku_ai (Sogou WeChat search)
"""
import shutil
import subprocess
from .base import Channel
class WeChatChannel(Channel):
name = "wechat"
description = "微信公众号文章"
backends = ["wechat-article-for-ai (Camoufox)", "miku_ai (搜狗搜索)"]
tier = 2
def can_handle(self, url: str) -> bool:
from urllib.parse import urlparse
d = urlparse(url).netloc.lower()
return "mp.weixin.qq.com" in d or "weixin.qq.com" in d
def check(self, config=None):
has_read = False
has_search = False
try:
import camoufox # noqa: F401
has_read = True
except ImportError:
pass
try:
import miku_ai # noqa: F401
has_search = True
except ImportError:
pass
if has_read and has_search:
return "ok", "完整可用(搜索 + 阅读公众号文章)"
elif has_read:
return "ok", "可阅读公众号文章URL → Markdown。安装 miku_ai 可解锁搜索pip install miku_ai"
elif has_search:
return "warn", (
"可搜索公众号文章但无法阅读全文。安装阅读工具:\n"
" pip install camoufox[geoip] markdownify beautifulsoup4 httpx mcp"
)
else:
return "off", (
"需要安装微信公众号工具:\n"
" # 阅读URL → Markdown\n"
" pip install camoufox[geoip] markdownify beautifulsoup4 httpx mcp\n"
" # 搜索(关键词 → 文章列表):\n"
" pip install miku_ai\n"
" 详见 https://github.com/bzd6661/wechat-article-for-ai"
)