zhihu-mcp
MCP for 知乎/zhihu.com。
让 AI Agent 能够搜索知乎内容、阅读问题和回答、分析评论区、追踪用户动态 — 通过标准 MCP 协议接入任何 AI 客户端。
项目简介
主要功能
<details> <summary><b>1. 搜索知乎内容</b></summary>
按关键词搜索知乎,支持按相关性、时间、热度排序,可过滤内容类型(问题/回答/文章)。
基于知乎内部 API,比 DOM 抓取更稳定可靠。
</details>
<details> <summary><b>2. 获取问题详情</b></summary>
获取知乎问题的完整信息:
- 问题标题、描述、话题标签
- 关注数、浏览数、回答数
- Top 10 高赞回答列表(含作者、摘要、点赞数、链接)
</details>
<details> <summary><b>3. 阅读回答全文</b></summary>
获取指定回答的完整内容:
- 作者名称和简介
- 回答正文(图片替换为
[图片]标记) - 点赞数、评论数
- 发布/编辑时间
</details>
<details> <summary><b>4. 阅读专栏文章</b></summary>
获取知乎专栏(zhuanlan.zhihu.com)文章全文,包括作者、点赞数、评论数。
</details>
<details> <summary><b>5. 获取评论区</b></summary>
获取回答或文章的评论列表,包括评论内容和作者。支持自定义加载数量。
</details>
<details> <summary><b>6. 查看用户资料</b></summary>
获取知乎用户主页信息:昵称、简介、关注数、粉丝数、获赞数、回答数、文章数等。
</details>
<details> <summary><b>7. 追踪用户动态</b></summary>
实时抓取用户最近的活动(回答问题、发表文章、赞同内容等),自动存入本地 SQLite 数据库,支持历史查询。
</details>
风险说明
本项目使用 Playwright 驱动无头浏览器访问知乎,注入 stealth 反检测脚本。正常使用频率下(不频繁大量请求),风险较低。建议:
- 使用已登录的 Cookie,避免频繁登录操作
- 控制调用频率,避免短时间内大量请求
- 本项目基于学习目的,禁止用于违法行为
1. 快速开始
1.1. 安装
需要 Python 3.10+(mcp 包要求)。
# 克隆项目
git clone https://github.com/ay/zhihu-mcp.git
cd zhihu-mcp
# 创建虚拟环境并安装依赖
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
# 安装 Playwright 浏览器
playwright install chromium
1.2. 配置 Cookie
知乎需要登录才能正常使用。将浏览器中的知乎 Cookie 导出为 cookies.json(Playwright 格式),放在项目根目录。
获取方式:
- 使用浏览器扩展(如 EditThisCookie、Cookie-Editor)导出
- 从其他知乎项目(如 zhihu_monitor)复制
- 确保包含
z_c0(认证 token)和d_c0(设备 token)
1.3. 启动 MCP 服务
# 默认:无头模式
python3 mcp_server.py
# 如果需要看到浏览器界面(调试用)
HEADLESS=false python3 mcp_server.py
1.4. 验证
# 运行内置自测
python3 mcp_server.py --test
2. MCP 客户端接入
本服务使用 stdio 传输协议(标准输入/输出),兼容所有支持 stdio MCP 的客户端。
<details> <summary><b>Claude Code CLI</b></summary>
claude mcp add zhihu-mcp -- /path/to/zhihu-mcp/venv/bin/python3 /path/to/zhihu-mcp/mcp_server.py
</details>
<details> <summary><b>Claude Desktop</b></summary>
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"zhihu-mcp": {
"command": "/path/to/zhihu-mcp/venv/bin/python3",
"args": ["/path/to/zhihu-mcp/mcp_server.py"],
"env": {
"HEADLESS": "true"
}
}
}
}
</details>
<details> <summary><b>Cursor</b></summary>
在项目根目录创建 .cursor/mcp.json:
{
"mcpServers": {
"zhihu-mcp": {
"command": "/path/to/zhihu-mcp/venv/bin/python3",
"args": ["/path/to/zhihu-mcp/mcp_server.py"],
"env": {
"HEADLESS": "true"
}
}
}
}
</details>
<details> <summary><b>VSCode</b></summary>
在项目根目录创建 .vscode/mcp.json:
{
"servers": {
"zhihu-mcp": {
"command": "/path/to/zhihu-mcp/venv/bin/python3",
"args": ["/path/to/zhihu-mcp/mcp_server.py"],
"env": {
"HEADLESS": "true"
}
}
}
}
</details>
<details> <summary><b>OpenClaw(通过 MCPorter)</b></summary>
# 安装 MCPorter(如未安装)
npm i -g mcporter
# 添加 zhihu-mcp 到 MCPorter 配置
npx mcporter config add zhihu-mcp /path/to/zhihu-mcp/venv/bin/python3 /path/to/zhihu-mcp/mcp_server.py
# 验证
npx mcporter list zhihu-mcp
或直接编辑 MCPorter 配置文件(通常在 ~/.config/mcporter/config.json 或 OpenClaw 项目的 config/mcporter.json):
{
"mcpServers": {
"zhihu-mcp": {
"command": "/path/to/zhihu-mcp/venv/bin/python3",
"args": ["/path/to/zhihu-mcp/mcp_server.py"],
"env": {
"HEADLESS": "true",
"TMPDIR": "/tmp"
}
}
}
}
</details>
<details> <summary><b>其他 MCP 客户端</b></summary>
任何支持 stdio MCP 协议的客户端都可以接入。核心配置:
- command:
python3(或 venv 中的 python 路径) - args:
["/path/to/zhihu-mcp/mcp_server.py"] - transport:
stdio
</details>
3. 可用 MCP 工具
连接成功后,可使用以下 12 个 MCP 工具:
内容搜索与浏览
| 工具 | 说明 | 关键参数 | |------|------|----------| | search_content | 搜索知乎内容 | keyword(必需), sort(relevance/newest/most_upvoted), content_type(all/question/article/answer), count | | get_question_detail | 获取问题详情 + Top 回答列表 | question_id(必需) | | get_answer_detail | 获取回答完整内容 | question_id(必需), answer_id(必需) | | get_article_detail | 获取专栏文章全文 | article_id(必需) | | get_comments | 获取评论列表 | url(必需,内容页完整 URL), count |
用户相关
| 工具 | 说明 | 关键参数 | |------|------|----------| | user_profile | 获取用户主页信息 | token(必需,URL 中的用户标识,如 jiayaosu) | | get_activities | 实时抓取用户动态(会启动浏览器) | user(必需), count | | get_new_since | 查询本地数据库中的历史动态(不爬取) | hours, user | | get_db_stats | 数据库统计信息 | 无 |
认证管理
| 工具 | 说明 | 关键参数 | |------|------|----------| | check_login_status | 检查登录状态,返回用户名 | 无 | | cookie_status | Cookie 文件状态检查 | 无 | | delete_cookies | 删除 Cookie 文件,重置登录 | 无 |
4. OpenClaw Skills
预置的高级技能,将多个 MCP 工具组合成完整的工作流:
| Skill | 说明 | |-------|------| | research-on-zhihu | 知乎话题研究 — 搜索 + 阅读高赞回答 + 分析评论 → 输出研究报告 | | analyze-zhihu-question | 问题深度分析 — 获取问题详情 + 逐个阅读回答 → 输出观点分布 | | analyze-zhihu-answer | 回答深度分析 — 回答全文 + 评论区讨论 → 输出可信度评估 | | track-zhihu-user | 用户追踪 — 资料 + 动态抓取 → 输出用户画像和活跃领域 |
使用示例
帮我研究一下知乎上关于"大模型Agent"的讨论
分析这个知乎问题:https://www.zhihu.com/question/19550225
看看知乎用户 jiayaosu 最近在做什么
帮我看看这个回答的评论区怎么说:https://www.zhihu.com/question/19550225/answer/1992353258262504861
5. 架构
┌─────────────┐ MCP/stdio ┌──────────────┐ Playwright ┌──────────────┐
│ AI Agent │◄──────────────────►│ mcp_server │◄────────────────►│ Chromium │
│ │ │ │ (headless) │ + stealth │
│ Claude Code │ │ 12 tools │ └──────┬───────┘
│ Cursor │ └──────┬───────┘ │
│ OpenClaw │ │ ▼
│ ... │ ┌──────┴───────┐ ┌──────────────┐
└─────────────┘ │ SQLite DB │ │ zhihu.com │
│ (活动历史) │ └──────────────┘
└──────────────┘
工作原理:
- AI Agent 通过 MCP stdio 协议调用工具
mcp_server.py接收请求,驱动 Playwright 无头浏览器- 浏览器注入 stealth 反检测脚本,访问知乎页面
- 搜索功能使用知乎内部 API(
/api/v4/search_v3),更稳定 - 其他功能通过 DOM 提取页面数据
- 用户动态自动存入 SQLite,支持历史查询
6. 项目结构
zhihu-mcp/
├── mcp_server.py # MCP 服务器入口(12 个工具定义)
├── zhihu_mcp/ # 核心包
│ ├── scraper.py # 知乎页面抓取(DOM 提取 + 内部 API)
│ ├── config.py # 配置管理
│ ├── storage.py # SQLite 数据层
│ ├── errors.py # 自定义异常
│ ├── browser/
│ │ ├── manager.py # 浏览器生命周期管理
│ │ └── stealth.py # 反检测 JS 脚本注入
│ ├── cookies/
│ │ └── manager.py # Cookie 加载与持久化
│ └── backend/
│ └── pinchtab.py # Pinchtab HTTP 后端(备用)
├── skills/ # OpenClaw 高级技能
│ ├── research-on-zhihu/
│ ├── analyze-zhihu-question/
│ ├── analyze-zhihu-answer/
│ └── track-zhihu-user/
├── tests/ # 单元测试
├── config.example.json # 配置文件模板
├── requirements.txt # Python 依赖
└── pyproject.toml # 项目元数据与打包配置
7. 常见问题
Q: Cookie 过期了怎么办?
重新从浏览器导出 Cookie,替换 cookies.json。关键 cookie z_c0 通常有效期约 6 个月。
Q: 搜索结果为空?
搜索功能使用知乎内部 API,需要有效的登录 Cookie。请先用 check_login_status 确认登录状态。
Q: 浏览器启动失败?
确保已运行 playwright install chromium 安装浏览器。macOS 上如果遇到沙箱问题,设置环境变量 TMPDIR=/tmp。
Q: 和 zhihu_monitor 项目的关系?
zhihu-mcp 是 zhihu_monitor 的升级版,增加了搜索、内容详情、评论、用户资料等功能,并以标准 MCP 协议提供服务。
技术栈
- Python 3.10+
- Playwright — 浏览器自动化 + stealth 反检测
- FastMCP (mcp) — MCP 协议服务器框架
- SQLite — 本地数据持久化
致谢
本项目的开发受到以下开源项目的启发:
- xiaohongshu-mcp by @xpzouying — 小红书 MCP 服务器。本项目的架构设计、MCP 工具组织方式和 OpenClaw Skills 格式均参考了该项目。
- zhihu_monitor by @shural — 知乎用户动态监控工具。本项目的知乎 stealth 反检测策略、DOM 选择器和 Cookie 管理逻辑源自该项目。
感谢这两个项目的作者和贡献者们的优秀工作。






