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:
@@ -77,7 +77,6 @@ AI Agent 已经能帮你写代码、改文档、管项目——但你让它去
|
|||||||
| 📕 **小红书** | — | 阅读、搜索、发帖、评论、点赞 | 告诉 Agent「帮我配小红书」 |
|
| 📕 **小红书** | — | 阅读、搜索、发帖、评论、点赞 | 告诉 Agent「帮我配小红书」 |
|
||||||
| 🎵 **抖音** | — | 视频解析、无水印下载链接获取 | 告诉 Agent「帮我配抖音」 |
|
| 🎵 **抖音** | — | 视频解析、无水印下载链接获取 | 告诉 Agent「帮我配抖音」 |
|
||||||
| 💼 **LinkedIn** | Jina Reader 读公开页面 | Profile 详情、公司页面、职位搜索 | 告诉 Agent「帮我配 LinkedIn」 |
|
| 💼 **LinkedIn** | Jina Reader 读公开页面 | Profile 详情、公司页面、职位搜索 | 告诉 Agent「帮我配 LinkedIn」 |
|
||||||
| 🏢 **Boss直聘** | Jina Reader 读职位页 | 搜索职位、向 HR 打招呼 | 告诉 Agent「帮我配 Boss直聘」 |
|
|
||||||
| 💬 **微信公众号** | 搜索 + 阅读公众号文章(全文 Markdown) | — | 无需配置 |
|
| 💬 **微信公众号** | 搜索 + 阅读公众号文章(全文 Markdown) | — | 无需配置 |
|
||||||
| 📰 **微博** | 热搜、搜索内容/用户/话题、用户动态、评论 | — | 无需配置 |
|
| 📰 **微博** | 热搜、搜索内容/用户/话题、用户动态、评论 | — | 无需配置 |
|
||||||
| 🎙️ **小宇宙播客** | — | 播客音频转文字(Whisper 转录,免费 Key) | 告诉 Agent「帮我配小宇宙播客」 |
|
| 🎙️ **小宇宙播客** | — | 播客音频转文字(Whisper 转录,免费 Key) | 告诉 Agent「帮我配小宇宙播客」 |
|
||||||
@@ -176,7 +175,6 @@ channels/
|
|||||||
├── xiaohongshu.py → mcporter MCP ← 可以换成其他 XHS 工具……
|
├── xiaohongshu.py → mcporter MCP ← 可以换成其他 XHS 工具……
|
||||||
├── douyin.py → mcporter MCP ← 可以换成其他抖音工具……
|
├── douyin.py → mcporter MCP ← 可以换成其他抖音工具……
|
||||||
├── linkedin.py → linkedin-mcp ← 可以换成 LinkedIn API……
|
├── linkedin.py → linkedin-mcp ← 可以换成 LinkedIn API……
|
||||||
├── bosszhipin.py → mcp-bosszp ← 可以换成其他招聘工具……
|
|
||||||
├── wechat.py → camoufox+miku ← 搜索+阅读微信公众号文章
|
├── wechat.py → camoufox+miku ← 搜索+阅读微信公众号文章
|
||||||
├── rss.py → feedparser ← 可以换成 atoma……
|
├── rss.py → feedparser ← 可以换成 atoma……
|
||||||
├── exa_search.py → mcporter MCP ← 可以换成 Tavily、SerpAPI……
|
├── exa_search.py → mcporter MCP ← 可以换成 Tavily、SerpAPI……
|
||||||
@@ -198,7 +196,6 @@ channels/
|
|||||||
| 小红书 | [xiaohongshu-mcp](https://github.com/xpzouying/xiaohongshu-mcp) | ⭐9K+,Go 语言,Docker 一键部署 |
|
| 小红书 | [xiaohongshu-mcp](https://github.com/xpzouying/xiaohongshu-mcp) | ⭐9K+,Go 语言,Docker 一键部署 |
|
||||||
| 抖音 | [douyin-mcp-server](https://github.com/yzfly/douyin-mcp-server) | MCP 服务,无需登录,视频解析 + 无水印下载 |
|
| 抖音 | [douyin-mcp-server](https://github.com/yzfly/douyin-mcp-server) | MCP 服务,无需登录,视频解析 + 无水印下载 |
|
||||||
| LinkedIn | [linkedin-scraper-mcp](https://github.com/stickerdaniel/linkedin-mcp-server) | ⭐900+,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 隐身浏览器读全文 + 搜狗搜索 |
|
| 微信公众号 | [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 .xiaohongshu import XiaoHongShuChannel
|
||||||
from .douyin import DouyinChannel
|
from .douyin import DouyinChannel
|
||||||
from .linkedin import LinkedInChannel
|
from .linkedin import LinkedInChannel
|
||||||
from .bosszhipin import BossZhipinChannel
|
|
||||||
from .wechat import WeChatChannel
|
from .wechat import WeChatChannel
|
||||||
from .weibo import WeiboChannel
|
from .weibo import WeiboChannel
|
||||||
from .xiaoyuzhou import XiaoyuzhouChannel
|
from .xiaoyuzhou import XiaoyuzhouChannel
|
||||||
@@ -34,7 +33,6 @@ ALL_CHANNELS: List[Channel] = [
|
|||||||
XiaoHongShuChannel(),
|
XiaoHongShuChannel(),
|
||||||
DouyinChannel(),
|
DouyinChannel(),
|
||||||
LinkedInChannel(),
|
LinkedInChannel(),
|
||||||
BossZhipinChannel(),
|
|
||||||
WeChatChannel(),
|
WeChatChannel(),
|
||||||
WeiboChannel(),
|
WeiboChannel(),
|
||||||
XiaoyuzhouChannel(),
|
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: >
|
description: >
|
||||||
Use the internet: search, read, and interact with 13+ platforms including
|
Use the internet: search, read, and interact with 13+ platforms including
|
||||||
Twitter/X, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu (小红书), Douyin (抖音),
|
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,
|
Use when: (1) user asks to search or read any of these platforms,
|
||||||
(2) user shares a URL from any supported platform,
|
(2) user shares a URL from any supported platform,
|
||||||
(3) user asks to search the web, find information online, or research a topic,
|
(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"`
|
Fallback: `curl -s "https://r.jina.ai/https://linkedin.com/in/username"`
|
||||||
|
|
||||||
## Boss直聘 (mcporter)
|
## RSS (feedparser)
|
||||||
|
|
||||||
```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
|
## RSS
|
||||||
|
|
||||||
|
|||||||
+1
-4
@@ -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 |
|
| 📕 **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 |
|
| 🎵 **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" |
|
| 💼 **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)) |
|
| 💬 **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)) |
|
| 📰 **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) |
|
| 🎙️ **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…
|
├── xiaohongshu.py → mcporter MCP ← swap to other XHS tools…
|
||||||
├── douyin.py → mcporter MCP ← swap to other Douyin tools…
|
├── douyin.py → mcporter MCP ← swap to other Douyin tools…
|
||||||
├── linkedin.py → linkedin-mcp ← swap to LinkedIn API…
|
├── linkedin.py → linkedin-mcp ← swap to LinkedIn API…
|
||||||
├── bosszhipin.py → mcp-bosszp ← swap to other job tools…
|
|
||||||
├── rss.py → feedparser ← swap to atoma…
|
├── rss.py → feedparser ← swap to atoma…
|
||||||
├── exa_search.py → mcporter MCP ← swap to Tavily, SerpAPI…
|
├── exa_search.py → mcporter MCP ← swap to Tavily, SerpAPI…
|
||||||
└── __init__.py → Channel registry (for doctor checks)
|
└── __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 |
|
| 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 |
|
| 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 |
|
| 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 |
|
| 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)'` |
|
| Weibo | `mcporter` | `mcporter call 'weibo.get_trendings(limit: 10)'` |
|
||||||
| Xiaoyuzhou Podcast | `transcribe.sh` | `bash ~/.agent-reach/tools/xiaoyuzhou/transcribe.sh <URL>` |
|
| 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
|
## 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
|
## Contact
|
||||||
|
|
||||||
|
|||||||
@@ -272,36 +272,6 @@ pip install linkedin-scraper-mcp
|
|||||||
>
|
>
|
||||||
> 详见 https://github.com/stickerdaniel/linkedin-mcp-server
|
> 详见 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
|
### Step 4: Final check
|
||||||
|
|
||||||
Run `agent-reach doctor` one final time and report the results to your user.
|
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>` |
|
| 小宇宙播客 | `transcribe.sh` | `bash ~/.agent-reach/tools/xiaoyuzhou/transcribe.sh <URL>` |
|
||||||
| 抖音 | `mcporter` | `mcporter call 'douyin.parse_douyin_video_info(...)'` |
|
| 抖音 | `mcporter` | `mcporter call 'douyin.parse_douyin_video_info(...)'` |
|
||||||
| LinkedIn | `mcporter` | `mcporter call 'linkedin.get_person_profile(...)'` |
|
| LinkedIn | `mcporter` | `mcporter call 'linkedin.get_person_profile(...)'` |
|
||||||
| Boss直聘 | `mcporter` | `mcporter call 'bosszhipin.search_jobs_tool(...)'` |
|
|
||||||
| RSS | `feedparser` | `python3 -c "import feedparser; ..."` |
|
| RSS | `feedparser` | `python3 -c "import feedparser; ..."` |
|
||||||
|
|||||||
@@ -115,7 +115,6 @@ def test_channel_can_handle_contract():
|
|||||||
"xiaohongshu": "https://www.xiaohongshu.com/explore/123",
|
"xiaohongshu": "https://www.xiaohongshu.com/explore/123",
|
||||||
"douyin": "https://www.douyin.com/video/123",
|
"douyin": "https://www.douyin.com/video/123",
|
||||||
"linkedin": "https://www.linkedin.com/in/test",
|
"linkedin": "https://www.linkedin.com/in/test",
|
||||||
"bosszhipin": "https://www.zhipin.com/web/geek/job?query=python",
|
|
||||||
"weibo": "https://weibo.com/u/1749127163",
|
"weibo": "https://weibo.com/u/1749127163",
|
||||||
"rss": "https://example.com/feed.xml",
|
"rss": "https://example.com/feed.xml",
|
||||||
"exa_search": "https://example.com",
|
"exa_search": "https://example.com",
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import shutil
|
|||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
from agent_reach.channels import get_all_channels, get_channel
|
from agent_reach.channels import get_all_channels, get_channel
|
||||||
from agent_reach.channels.bosszhipin import BossZhipinChannel
|
|
||||||
from agent_reach.channels.xiaohongshu import XiaoHongShuChannel
|
from agent_reach.channels.xiaohongshu import XiaoHongShuChannel
|
||||||
|
|
||||||
|
|
||||||
@@ -26,25 +25,6 @@ class TestChannelRegistry:
|
|||||||
assert "twitter" in names
|
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:
|
class TestXiaoHongShuChannel:
|
||||||
def test_reports_ok_when_server_health_is_ok(self, monkeypatch):
|
def test_reports_ok_when_server_health_is_ok(self, monkeypatch):
|
||||||
monkeypatch.setattr(shutil, "which", lambda _: "/opt/homebrew/bin/mcporter")
|
monkeypatch.setattr(shutil, "which", lambda _: "/opt/homebrew/bin/mcporter")
|
||||||
|
|||||||
Reference in New Issue
Block a user