Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions agent_reach/channels/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
from .linkedin import LinkedInChannel
from .bosszhipin import BossZhipinChannel
from .wechat import WeChatChannel
from .weibo import WeiboChannel


# Channel registry
Expand All @@ -34,6 +35,7 @@
LinkedInChannel(),
BossZhipinChannel(),
WeChatChannel(),
WeiboChannel(),
RSSChannel(),
ExaSearchChannel(),
WebChannel(),
Expand Down
54 changes: 54 additions & 0 deletions agent_reach/channels/weibo.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# -*- coding: utf-8 -*-
"""Weibo (微博) — check if mcporter + mcp-server-weibo is available."""

import shutil
import subprocess
from .base import Channel


class WeiboChannel(Channel):
name = "weibo"
description = "微博动态与热搜"
backends = ["mcp-server-weibo"]
tier = 1

def can_handle(self, url: str) -> bool:
from urllib.parse import urlparse
d = urlparse(url).netloc.lower()
return "weibo.com" in d or "weibo.cn" in d

def check(self, config=None):
mcporter = shutil.which("mcporter")
if not mcporter:
return "off", (
"需要 mcporter + mcp-server-weibo。安装步骤:\n"
" 1. npm install -g mcporter\n"
" 2. uvx mcp-server-weibo(或 pip install mcp-server-weibo)\n"
" 3. mcporter config add weibo --command 'uvx mcp-server-weibo'\n"
" 详见 https://github.com/qinyuanpei/mcp-server-weibo"
)
try:
r = subprocess.run(
[mcporter, "config", "list"], capture_output=True,
encoding="utf-8", errors="replace", timeout=5
)
if "weibo" not in r.stdout:
return "off", (
"mcporter 已装但微博 MCP 未配置。运行:\n"
" uvx mcp-server-weibo # 或 pip install mcp-server-weibo\n"
" mcporter config add weibo --command 'uvx mcp-server-weibo'\n"
" # 海外服务器需配置 WEIBO_COOKIE 环境变量,\n"
" # 详见 SKILL.md 微博章节"
)
except Exception:
return "off", "mcporter 连接异常"
try:
r = subprocess.run(
[mcporter, "list", "weibo"], capture_output=True,
encoding="utf-8", errors="replace", timeout=15
)
if r.returncode == 0 and "search_users" in r.stdout:
return "ok", "完整可用(热搜、搜索、用户动态、评论)"
return "warn", "MCP 已配置但工具加载失败,检查 mcp-server-weibo 版本"
except Exception:
return "warn", "MCP 连接异常,检查 mcp-server-weibo 是否可用"
1 change: 1 addition & 0 deletions tests/test_channel_contracts.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ def test_channel_can_handle_contract():
"douyin": "https://www.douyin.com/video/123",
"linkedin": "https://www.linkedin.com/in/test",
"bosszhipin": "https://www.zhipin.com/web/geek/job?query=python",
"weibo": "https://weibo.com/u/1749127163",
"rss": "https://example.com/feed.xml",
"exa_search": "https://example.com",
"web": "https://example.com",
Expand Down