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>
This commit is contained in:
parent
55efebd395
commit
00d80d2169
8 changed files with 4 additions and 134 deletions
|
|
@ -77,7 +77,6 @@ AI Agent 已经能帮你写代码、改文档、管项目——但你让它去
|
|||
| 📕 **小红书** | — | 阅读、搜索、发帖、评论、点赞 | 告诉 Agent「帮我配小红书」 |
|
||||
| 🎵 **抖音** | — | 视频解析、无水印下载链接获取 | 告诉 Agent「帮我配抖音」 |
|
||||
| 💼 **LinkedIn** | Jina Reader 读公开页面 | Profile 详情、公司页面、职位搜索 | 告诉 Agent「帮我配 LinkedIn」 |
|
||||
| 🏢 **Boss直聘** | Jina Reader 读职位页 | 搜索职位、向 HR 打招呼 | 告诉 Agent「帮我配 Boss直聘」 |
|
||||
| 💬 **微信公众号** | 搜索 + 阅读公众号文章(全文 Markdown) | — | 无需配置 |
|
||||
| 📰 **微博** | 热搜、搜索内容/用户/话题、用户动态、评论 | — | 无需配置 |
|
||||
| 🎙️ **小宇宙播客** | — | 播客音频转文字(Whisper 转录,免费 Key) | 告诉 Agent「帮我配小宇宙播客」 |
|
||||
|
|
@ -176,7 +175,6 @@ channels/
|
|||
├── xiaohongshu.py → mcporter MCP ← 可以换成其他 XHS 工具……
|
||||
├── douyin.py → mcporter MCP ← 可以换成其他抖音工具……
|
||||
├── linkedin.py → linkedin-mcp ← 可以换成 LinkedIn API……
|
||||
├── bosszhipin.py → mcp-bosszp ← 可以换成其他招聘工具……
|
||||
├── wechat.py → camoufox+miku ← 搜索+阅读微信公众号文章
|
||||
├── rss.py → feedparser ← 可以换成 atoma……
|
||||
├── exa_search.py → mcporter MCP ← 可以换成 Tavily、SerpAPI……
|
||||
|
|
@ -198,7 +196,6 @@ channels/
|
|||
| 小红书 | [xiaohongshu-mcp](https://github.com/xpzouying/xiaohongshu-mcp) | ⭐9K+,Go 语言,Docker 一键部署 |
|
||||
| 抖音 | [douyin-mcp-server](https://github.com/yzfly/douyin-mcp-server) | MCP 服务,无需登录,视频解析 + 无水印下载 |
|
||||
| LinkedIn | [linkedin-scraper-mcp](https://github.com/stickerdaniel/linkedin-mcp-server) | ⭐900+,MCP 服务,浏览器自动化 |
|
||||
| Boss直聘 | [mcp-bosszp](https://github.com/mucsbr/mcp-bosszp) | MCP 服务,支持职位搜索和打招呼 |
|
||||
| 微信公众号 | [wechat-article-for-ai](https://github.com/bzd6661/wechat-article-for-ai) + [miku_ai](https://github.com/GobinFan/Miku_Spider) | Camoufox 隐身浏览器读全文 + 搜狗搜索 |
|
||||
|
||||
> 📌 这些都是「当前选型」。不满意?换掉对应文件就行。这正是脚手架的意义。
|
||||
|
|
@ -335,7 +332,7 @@ Yes! Agent Reach is an installer + configuration tool — any AI coding agent th
|
|||
|
||||
## 致谢
|
||||
|
||||
[Jina Reader](https://github.com/jina-ai/reader) · [yt-dlp](https://github.com/yt-dlp/yt-dlp) · [xreach](https://www.npmjs.com/package/xreach-cli) · [Exa](https://exa.ai) · [mcporter](https://github.com/steipete/mcporter) · [feedparser](https://github.com/kurtmckee/feedparser) · [xiaohongshu-mcp](https://github.com/xpzouying/xiaohongshu-mcp) · [douyin-mcp-server](https://github.com/yzfly/douyin-mcp-server) · [linkedin-scraper-mcp](https://github.com/stickerdaniel/linkedin-mcp-server) · [mcp-bosszp](https://github.com/mucsbr/mcp-bosszp)
|
||||
[Jina Reader](https://github.com/jina-ai/reader) · [yt-dlp](https://github.com/yt-dlp/yt-dlp) · [xreach](https://www.npmjs.com/package/xreach-cli) · [Exa](https://exa.ai) · [mcporter](https://github.com/steipete/mcporter) · [feedparser](https://github.com/kurtmckee/feedparser) · [xiaohongshu-mcp](https://github.com/xpzouying/xiaohongshu-mcp) · [douyin-mcp-server](https://github.com/yzfly/douyin-mcp-server) · [linkedin-scraper-mcp](https://github.com/stickerdaniel/linkedin-mcp-server)
|
||||
|
||||
## 联系
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ from .exa_search import ExaSearchChannel
|
|||
from .xiaohongshu import XiaoHongShuChannel
|
||||
from .douyin import DouyinChannel
|
||||
from .linkedin import LinkedInChannel
|
||||
from .bosszhipin import BossZhipinChannel
|
||||
from .wechat import WeChatChannel
|
||||
from .weibo import WeiboChannel
|
||||
from .xiaoyuzhou import XiaoyuzhouChannel
|
||||
|
|
@ -34,7 +33,6 @@ ALL_CHANNELS: List[Channel] = [
|
|||
XiaoHongShuChannel(),
|
||||
DouyinChannel(),
|
||||
LinkedInChannel(),
|
||||
BossZhipinChannel(),
|
||||
WeChatChannel(),
|
||||
WeiboChannel(),
|
||||
XiaoyuzhouChannel(),
|
||||
|
|
|
|||
|
|
@ -1,63 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""Boss直聘 — check if mcp-bosszp is available."""
|
||||
|
||||
import shutil
|
||||
import subprocess
|
||||
from .base import Channel
|
||||
|
||||
|
||||
class BossZhipinChannel(Channel):
|
||||
name = "bosszhipin"
|
||||
description = "Boss直聘职位搜索"
|
||||
backends = ["mcp-bosszp", "Jina Reader"]
|
||||
tier = 2
|
||||
|
||||
def can_handle(self, url: str) -> bool:
|
||||
from urllib.parse import urlparse
|
||||
domain = urlparse(url).netloc.lower()
|
||||
return "zhipin.com" in domain or "boss.com" in domain
|
||||
|
||||
def check(self, config=None):
|
||||
mcporter = shutil.which("mcporter")
|
||||
if not mcporter:
|
||||
return "off", (
|
||||
"可通过 Jina Reader 读取职位页面。完整功能需要:\n"
|
||||
" 1. git clone https://github.com/mucsbr/mcp-bosszp.git\n"
|
||||
" 2. cd mcp-bosszp && pip install -r requirements.txt && playwright install chromium\n"
|
||||
" 3. python boss_zhipin_fastmcp_v2.py(启动后扫码登录)\n"
|
||||
" 4. mcporter config add bosszhipin http://localhost:8000/mcp"
|
||||
)
|
||||
try:
|
||||
r = subprocess.run(
|
||||
[mcporter, "config", "get", "bosszhipin", "--json"],
|
||||
capture_output=True,
|
||||
encoding="utf-8",
|
||||
errors="replace",
|
||||
timeout=5,
|
||||
)
|
||||
if r.returncode != 0 or "bosszhipin" not in r.stdout.lower():
|
||||
return "off", (
|
||||
"mcporter 已装但 Boss直聘 MCP 未配置。\n"
|
||||
" 详见 https://github.com/mucsbr/mcp-bosszp"
|
||||
)
|
||||
except Exception:
|
||||
return "off", "mcporter 连接异常"
|
||||
|
||||
try:
|
||||
r = subprocess.run(
|
||||
[mcporter, "call", "bosszhipin.get_login_info_tool", "--output", "json"],
|
||||
capture_output=True,
|
||||
encoding="utf-8",
|
||||
errors="replace",
|
||||
timeout=10,
|
||||
)
|
||||
out = r.stdout.lower()
|
||||
if r.returncode == 0 and "\"is_logged_in\": true" in out:
|
||||
return "ok", "完整可用(职位搜索、登录态检查、向 HR 打招呼)"
|
||||
if r.returncode == 0:
|
||||
return "ok", "MCP 已连接,可搜索职位;打招呼前可能需要先登录"
|
||||
return "warn", "MCP 已配置,但连接异常;请检查 mcp-bosszp 服务状态"
|
||||
except subprocess.TimeoutExpired:
|
||||
return "warn", "MCP 已配置,但健康检查超时;请检查 mcp-bosszp 服务状态"
|
||||
except Exception:
|
||||
return "warn", "MCP 已配置,但连接异常;请检查 mcp-bosszp 服务状态"
|
||||
|
|
@ -3,7 +3,7 @@ name: agent-reach
|
|||
description: >
|
||||
Use the internet: search, read, and interact with 13+ platforms including
|
||||
Twitter/X, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu (小红书), Douyin (抖音),
|
||||
WeChat Articles (微信公众号), LinkedIn, Boss直聘, RSS, Exa web search, and any web page.
|
||||
WeChat Articles (微信公众号), LinkedIn, RSS, Exa web search, and any web page.
|
||||
Use when: (1) user asks to search or read any of these platforms,
|
||||
(2) user shares a URL from any supported platform,
|
||||
(3) user asks to search the web, find information online, or research a topic,
|
||||
|
|
@ -136,14 +136,7 @@ mcporter call 'linkedin.search_people(keyword: "AI engineer", limit: 10)'
|
|||
|
||||
Fallback: `curl -s "https://r.jina.ai/https://linkedin.com/in/username"`
|
||||
|
||||
## Boss直聘 (mcporter)
|
||||
|
||||
```bash
|
||||
mcporter call 'bosszhipin.get_recommend_jobs_tool(page: 1)'
|
||||
mcporter call 'bosszhipin.search_jobs_tool(keyword: "Python", city: "北京")'
|
||||
```
|
||||
|
||||
Fallback: `curl -s "https://r.jina.ai/https://www.zhipin.com/job_detail/xxx"`
|
||||
## RSS (feedparser)
|
||||
|
||||
## RSS
|
||||
|
||||
|
|
|
|||
|
|
@ -66,7 +66,6 @@ Update Agent Reach: https://raw.githubusercontent.com/Panniantong/agent-reach/ma
|
|||
| 📕 **XiaoHongShu** | Read · Search · **Post · Comment · Like** | mcporter | Via [xiaohongshu-mcp](https://github.com/user/xiaohongshu-mcp) internal API, install and go |
|
||||
| 🎵 **Douyin** | Video parsing · Watermark-free download | mcporter | Via [douyin-mcp-server](https://github.com/yzfly/douyin-mcp-server), no login needed |
|
||||
| 💼 **LinkedIn** | Jina Reader (public pages) | Full profiles, companies, job search | Tell your Agent "help me set up LinkedIn" |
|
||||
| 🏢 **Boss直聘** | Jina Reader (job pages) | Job search, greet recruiters | Tell your Agent "help me set up Boss直聘" |
|
||||
| 💬 **WeChat Articles** | Search + Read | Zero config | Search + read WeChat Official Account articles (full Markdown) ([wechat-article-for-ai](https://github.com/bzd6661/wechat-article-for-ai) + [miku_ai](https://github.com/GobinFan/Miku_Spider)) |
|
||||
| 📰 **Weibo** | Trending · Search · Feeds · Comments | Zero config | Hot search, content/user/topic search, feeds, comments ([mcp-server-weibo](https://github.com/Panniantong/mcp-server-weibo)) |
|
||||
| 🎙️ **Xiaoyuzhou Podcast** | Transcription | Free API key | Podcast audio → full text transcript via Groq Whisper (free) |
|
||||
|
|
@ -203,7 +202,6 @@ channels/
|
|||
├── xiaohongshu.py → mcporter MCP ← swap to other XHS tools…
|
||||
├── douyin.py → mcporter MCP ← swap to other Douyin tools…
|
||||
├── linkedin.py → linkedin-mcp ← swap to LinkedIn API…
|
||||
├── bosszhipin.py → mcp-bosszp ← swap to other job tools…
|
||||
├── rss.py → feedparser ← swap to atoma…
|
||||
├── exa_search.py → mcporter MCP ← swap to Tavily, SerpAPI…
|
||||
└── __init__.py → Channel registry (for doctor checks)
|
||||
|
|
@ -224,7 +222,6 @@ Each channel file only checks whether its upstream tool is installed and working
|
|||
| XiaoHongShu | [xiaohongshu-mcp](https://github.com/user/xiaohongshu-mcp) | Internal API, bypasses anti-bot |
|
||||
| Douyin | [douyin-mcp-server](https://github.com/yzfly/douyin-mcp-server) | MCP server, no login needed, video parsing + watermark-free download |
|
||||
| LinkedIn | [linkedin-scraper-mcp](https://github.com/stickerdaniel/linkedin-mcp-server) | 900+ stars, MCP server, browser automation |
|
||||
| Boss直聘 | [mcp-bosszp](https://github.com/mucsbr/mcp-bosszp) | MCP server, job search + recruiter greeting |
|
||||
| WeChat Articles | [wechat-article-for-ai](https://github.com/bzd6661/wechat-article-for-ai) + [miku_ai](https://github.com/GobinFan/Miku_Spider) | Stealth browser for full article reading + Sogou search |
|
||||
| Weibo | `mcporter` | `mcporter call 'weibo.get_trendings(limit: 10)'` |
|
||||
| Xiaoyuzhou Podcast | `transcribe.sh` | `bash ~/.agent-reach/tools/xiaoyuzhou/transcribe.sh <URL>` |
|
||||
|
|
@ -299,7 +296,7 @@ Install douyin-mcp-server, then your agent can use `mcporter call 'douyin.parse_
|
|||
|
||||
## Credits
|
||||
|
||||
[Jina Reader](https://github.com/jina-ai/reader) · [yt-dlp](https://github.com/yt-dlp/yt-dlp) · [xreach](https://www.npmjs.com/package/xreach-cli) · [Exa](https://exa.ai) · [feedparser](https://github.com/kurtmckee/feedparser) · [douyin-mcp-server](https://github.com/yzfly/douyin-mcp-server) · [linkedin-scraper-mcp](https://github.com/stickerdaniel/linkedin-mcp-server) · [mcp-bosszp](https://github.com/mucsbr/mcp-bosszp)
|
||||
[Jina Reader](https://github.com/jina-ai/reader) · [yt-dlp](https://github.com/yt-dlp/yt-dlp) · [xreach](https://www.npmjs.com/package/xreach-cli) · [Exa](https://exa.ai) · [feedparser](https://github.com/kurtmckee/feedparser) · [douyin-mcp-server](https://github.com/yzfly/douyin-mcp-server) · [linkedin-scraper-mcp](https://github.com/stickerdaniel/linkedin-mcp-server)
|
||||
|
||||
## Contact
|
||||
|
||||
|
|
|
|||
|
|
@ -272,36 +272,6 @@ pip install linkedin-scraper-mcp
|
|||
>
|
||||
> 详见 https://github.com/stickerdaniel/linkedin-mcp-server
|
||||
|
||||
**Boss直聘 (可选 — mcp-bosszp):**
|
||||
> "Boss直聘职位页面可直接读取。完整搜索和打招呼功能需要 mcp-bosszp。"
|
||||
|
||||
```bash
|
||||
mkdir -p ~/.agent-reach/tools && cd ~/.agent-reach/tools
|
||||
git clone https://github.com/mucsbr/mcp-bosszp.git && cd mcp-bosszp
|
||||
pip install -r requirements.txt && playwright install chromium
|
||||
```
|
||||
|
||||
> **登录方式(手机 App 扫码):**
|
||||
>
|
||||
> mcp-bosszp 使用二维码登录,需要 Boss直聘 App 扫码。
|
||||
>
|
||||
> ```bash
|
||||
> # 1. 启动 MCP 服务
|
||||
> python boss_zhipin_fastmcp_v2.py
|
||||
>
|
||||
> # 2. 通过 MCP 触发登录(会生成二维码图片)
|
||||
> mcporter call 'bosszhipin.start_login()'
|
||||
>
|
||||
> # 3. 浏览器打开二维码图片(服务器上用 http://服务器IP:8000/static/qrcode_xxx.png)
|
||||
> # 4. 用 Boss直聘 App 扫码确认
|
||||
> ```
|
||||
>
|
||||
> 扫码成功后 session 自动保存,之后可以搜索职位和自动打招呼。
|
||||
>
|
||||
> 或用 Docker:`docker-compose up -d`
|
||||
>
|
||||
> 详见 https://github.com/mucsbr/mcp-bosszp
|
||||
|
||||
### Step 4: Final check
|
||||
|
||||
Run `agent-reach doctor` one final time and report the results to your user.
|
||||
|
|
@ -355,5 +325,4 @@ After installation, use upstream tools directly. See SKILL.md for the full comma
|
|||
| 小宇宙播客 | `transcribe.sh` | `bash ~/.agent-reach/tools/xiaoyuzhou/transcribe.sh <URL>` |
|
||||
| 抖音 | `mcporter` | `mcporter call 'douyin.parse_douyin_video_info(...)'` |
|
||||
| LinkedIn | `mcporter` | `mcporter call 'linkedin.get_person_profile(...)'` |
|
||||
| Boss直聘 | `mcporter` | `mcporter call 'bosszhipin.search_jobs_tool(...)'` |
|
||||
| RSS | `feedparser` | `python3 -c "import feedparser; ..."` |
|
||||
|
|
|
|||
|
|
@ -115,7 +115,6 @@ def test_channel_can_handle_contract():
|
|||
"xiaohongshu": "https://www.xiaohongshu.com/explore/123",
|
||||
"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",
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ import shutil
|
|||
import subprocess
|
||||
|
||||
from agent_reach.channels import get_all_channels, get_channel
|
||||
from agent_reach.channels.bosszhipin import BossZhipinChannel
|
||||
from agent_reach.channels.xiaohongshu import XiaoHongShuChannel
|
||||
|
||||
|
||||
|
|
@ -26,25 +25,6 @@ class TestChannelRegistry:
|
|||
assert "twitter" in names
|
||||
|
||||
|
||||
class TestBossZhipinChannel:
|
||||
def test_reports_ok_when_configured_and_logged_in(self, monkeypatch):
|
||||
monkeypatch.setattr(shutil, "which", lambda _: "/opt/homebrew/bin/mcporter")
|
||||
|
||||
def fake_run(cmd, **kwargs):
|
||||
if cmd[:4] == ["/opt/homebrew/bin/mcporter", "config", "get", "bosszhipin"]:
|
||||
return subprocess.CompletedProcess(cmd, 0, '{"name":"bosszhipin"}', "")
|
||||
if cmd[:3] == ["/opt/homebrew/bin/mcporter", "call", "bosszhipin.get_login_info_tool"]:
|
||||
return subprocess.CompletedProcess(cmd, 0, '{"is_logged_in": true}', "")
|
||||
raise AssertionError(f"unexpected command: {cmd}")
|
||||
|
||||
monkeypatch.setattr(subprocess, "run", fake_run)
|
||||
|
||||
assert BossZhipinChannel().check() == (
|
||||
"ok",
|
||||
"完整可用(职位搜索、登录态检查、向 HR 打招呼)",
|
||||
)
|
||||
|
||||
|
||||
class TestXiaoHongShuChannel:
|
||||
def test_reports_ok_when_server_health_is_ok(self, monkeypatch):
|
||||
monkeypatch.setattr(shutil, "which", lambda _: "/opt/homebrew/bin/mcporter")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue