知乎命令行工具 — 在终端搜索问题、查看回答、发布提问、发布想法、发布文章(图文混合,富文本支持)、浏览热榜,支持二维码登录与Cookie登录
Project description
zhihu-cli
知乎命令行工具 — 在终端搜索问题、查看回答、发布提问、发布想法、发布文章(图文混合,富文本支持)、浏览热榜
功能
- 认证 — QR码扫描登录(终端二维码渲染),或直接复制 Cookie 登录
- 搜索 — 按关键词搜索问题、回答、文章
- 热榜 — 查看知乎热榜
- 问题 — 查看问题详情及回答
- 回答 — 查看回答详情及评论
- 发布 — 发布提问、发布想法、发布文章(图文混合,富文本支持)
- 用户 — 查看用户资料、回答、文章、关注/粉丝
- 推荐 — 获取首页推荐内容
- 话题 — 查看话题详情及热门问题
- 互动 — 赞同/取消赞同回答,关注/取消关注问题
- 收藏 — 查看收藏夹列表
- 通知 — 查看通知消息
- JSON 输出 — 所有数据命令支持
--json
命令一览
| 分类 | 命令 | 说明 |
|---|---|---|
| Auth | login, logout, status, whoami | 登录、退出、状态检查、查看资料 |
| Read | search, hot, question, answer | 搜索、热榜、问题详情、回答详情 |
| Users | user, user-answers, user-articles | 查看资料、回答列表、文章列表 |
| Social | followers, following | 查看粉丝、关注列表 |
| Feed | feed, topic | 推荐 Feed、话题详情 |
| Interact | vote, follow-question | 赞同回答、关注问题 |
| Create | ask, pin, article | 发布提问、发布想法、发布文章(图文混合,富文本支持) |
| Other | collections, notifications | 收藏夹、通知 |
所有数据命令支持
--json输出。
安装
需要 Python 3.10+。
# 推荐:使用 uv
uv tool install pyzhihu-cli
# 或使用 pipx
pipx install pyzhihu-cli
# 从源码安装(开发用)
pip install -e .
二维码登录使用知乎 API(/api/v3/account/api/login/qrcode),无需安装 Playwright,仅需本工具依赖的 requests 与 qrcode。
AI Agent Skill
本项目提供了 AI Agent Skill,可通过 OpenClaw 下载使用:
clawhub install pyzhihu-cli
安装后,AI Agent 可自动获取 zhihu-cli 的完整使用说明、命令参考、项目架构和开发指南。
使用
登录
# 二维码扫码登录(推荐)
zhihu login --qrcode
# 手动提供 cookie 字符串(至少包含 z_c0)
zhihu login --cookie "z_c0=xxx; _xsrf=yyy; d_c0=zzz"
# 检查登录状态
zhihu status
# 查看个人资料
zhihu whoami
zhihu whoami --json
# 退出登录
zhihu logout
搜索
zhihu search "Python 学习"
zhihu search "机器学习" --type topic
zhihu search "张三" --type people
zhihu search "Python" --json
热榜
zhihu hot
zhihu hot --limit 10
zhihu hot --json
问题
# 查看问题详情
zhihu question <question_id>
# 包含回答
zhihu question <question_id> --answers
# 限制回答数量
zhihu question <question_id> --answers --limit 10
回答
# 查看回答详情
zhihu answer <answer_id>
# 包含评论
zhihu answer <answer_id> --comments
用户
# 查看用户资料(使用 URL Token)
zhihu user <url_token>
# 查看用户回答
zhihu user-answers <url_token>
zhihu user-answers <url_token> --sort voteups
# 查看用户文章
zhihu user-articles <url_token>
# 粉丝 / 关注
zhihu followers <url_token>
zhihu following <url_token>
推荐 & 话题
zhihu feed
zhihu topic <topic_id> --questions
互动
# 赞同 / 取消赞同
zhihu vote <answer_id>
zhihu vote <answer_id> --undo
# 关注 / 取消关注问题
zhihu follow-question <question_id>
zhihu follow-question <question_id> --undo
创作
发布提问、想法、文章时,描述/正文均支持 HTML 富文本(如 <p>、<strong>、<a> 等)。
# 发布提问
zhihu ask "如何学习 Python?"
zhihu ask "什么是机器学习?" -d "请详细解释" -t 19550517 -t 19551275
# 发布想法(标题 + 可选正文,正文可用 HTML)
zhihu pin "今天天气真好!"
zhihu pin "标题" -c "想法正文内容"
# 发布文章
zhihu article "文章标题" "文章内容"
zhihu article "标题" "内容" -t 19550517
# 带图片发布(-i 可重复使用以添加多张图片)
zhihu ask "求推荐" -d "详情" -i photo.jpg
zhihu pin "标题" -c "正文" -i image1.jpg -i image2.jpg
zhihu article "标题" "内容" -i cover.jpg
其他
zhihu collections
zhihu notifications
zhihu --version
zhihu -v search "Python" # 调试日志
zhihu --help
后续开发
- 发布回答
- 发布评论
- 发布视频
架构
CLI (click) → ZhihuClient (requests)
↓ API 请求
Zhihu V4 API → JSON 响应
使用 requests 库通过知乎 V4 API 获取数据。登录认证通过浏览器二维码扫描或手动提供 Cookie 完成。
工作原理
- 认证 — 优先读取
~/.zhihu-cli/cookies.json;未命中时可通过zhihu login --qrcode(调用知乎官方 API 在终端展示二维码)或--cookie直接提供 cookie 字符串完成登录。 - 登录态校验 — 登录后通过
/api/v4/me接口验证会话有效性。 - 数据获取 — 使用 requests 通过知乎 V4 API 获取结构化 JSON 数据。
- CLI 展示 — 使用 Rich 库渲染美观的终端表格输出。
注意事项
- Cookie 存储在
~/.zhihu-cli/cookies.json,权限0600 zhihu status只检查本地已保存的 cookie,不发起网络请求zhihu login --cookie要求 cookie 至少包含z_c0- 用户查询使用 URL Token(即知乎个人主页的路径部分,如
zhihu.com/people/xxx中的xxx) - 二维码登录使用知乎官方 API,无需安装 Playwright
网络安全设计
本工具在设计与实现上遵循以下安全原则,以降低凭证与隐私风险:
-
凭证仅存本地
登录态(Cookie)仅写入用户本机~/.zhihu-cli/cookies.json,文件权限为0600(仅当前用户可读写)。程序不会将 Cookie 或任何登录凭证上传至本工具维护方或第三方服务。 -
全程 HTTPS
所有与知乎的通信均使用 HTTPS,请求仅发往知乎官方域名(如www.zhihu.com、api.zhihu.com),避免凭证或内容在网络上明文传输。 -
无密码落地
支持两种登录方式:二维码扫码(调用知乎官方登录 API,由用户在手机端完成授权)和手动粘贴 Cookie。本工具不收集、不存储账号密码。 -
最小权限与最小请求
仅请求完成当前命令所需的知乎 API,不额外拉取或上报用户数据;Cookie 仅用于向知乎证明身份,不用于其他用途。 -
可审计与可复现
项目开源,依赖列表在pyproject.toml中声明,无混淆或闭源运行时;用户可自行审查代码与依赖,或在隔离环境中安装运行。
建议仅在可信环境中使用本工具,并妥善保管本地 Cookie 文件;通过 zhihu logout 可清除本地保存的登录态。
发布到 PyPI
发布前请确认 pyproject.toml 中 version 已更新(每次发布需递增)。
# 1. 安装构建与上传工具
pip install build twine
# 2. 在项目根目录构建(生成 dist/ 下的 wheel 与 sdist)
python -m build
# 3. 检查打包内容(可选)
twine check dist/*
# 4. 上传到 PyPI(需已配置 PyPI 账号或 token)
twine upload dist/*
- 首次上传需在 PyPI 注册并配置 API Token;使用 token 时用户名填
__token__,密码填 token 值。 - 若使用 TestPyPI 测试:
twine upload --repository testpypi dist/*
License
Apache License 2.0
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyzhihu_cli-0.2.0.tar.gz.
File metadata
- Download URL: pyzhihu_cli-0.2.0.tar.gz
- Upload date:
- Size: 41.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
923e2dbdd4800f6749e59cee0cce81431be1e29f90eebfa036c41969efd7a8a8
|
|
| MD5 |
1cffd78b97101f13683970d55efbadaf
|
|
| BLAKE2b-256 |
71cdabe3f9fdc6b145e246904f3ca83c894cc9fe002596e1e3da61cda4a7ac81
|
File details
Details for the file pyzhihu_cli-0.2.0-py3-none-any.whl.
File metadata
- Download URL: pyzhihu_cli-0.2.0-py3-none-any.whl
- Upload date:
- Size: 31.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e6ec15cbd967c55beb7735d200d0c11a5c1ccfef6df97dbe8488357df6e833c
|
|
| MD5 |
5a0c4bf6ae69324a1786835f37e3ce67
|
|
| BLAKE2b-256 |
458474ff4db7137c59b5fcc874d7c308ab85b397667779c480c7c44bdc647764
|