--- name: zhihu-cli description: "知乎 CLI (pyzhihu-cli):搜索、热榜、问题/回答/评论、推荐 Feed、用户资料、发想法/提问/文章、删自己的内容、点赞关注、收藏与通知。Agent 代执行 zhihu 命令,Cookie 仅存本地。" author: BAIGUANGMEI version: "0.2.6" tags: - zhihu - cli - 知乎 - agent --- # zhihu-cli 技能 ## 前提 - **已安装**:`zhihu` 在 PATH 中(`uv tool install pyzhihu-cli` / `pipx install pyzhihu-cli` / `pip install pyzhihu-cli`)。 - **路径**:配置与二维码路径 — **Linux/macOS**:`~/.zhihu-cli/`(如 `~/.zhihu-cli/cookies.json`、`~/.zhihu-cli/login_qrcode.png`);**Windows**:`%USERPROFILE%\.zhihu-cli\`(如 `%USERPROFILE%\.zhihu-cli\cookies.json`、`%USERPROFILE%\.zhihu-cli\login_qrcode.png`)。 - **配置**:登录态存于上述 `cookies.json`;**不得将 Cookie 上传或写入对话/日志**。 - **登录方式**:仅两种 — **扫码** `zhihu login --qrcode`、**粘贴 Cookie** `zhihu login --cookie "z_c0=...; _xsrf=...; d_c0=..."`。 - **扫码时**:二维码会生成到上述路径的 `login_qrcode.png`。若用 OpenClaw 发给用户,须先**复制到 OpenClaw 工作目录的 media 文件夹**再 `openclaw message send --media `。 --- ## Instruction Scope 本技能仅限:在用户本机调用已安装的 `zhihu` 命令,执行搜索、热榜、问题/回答/评论、推荐 Feed、用户资料、发想法/提问/文章、删除自己的内容、点赞关注、收藏与通知等操作;在用户请求扫码登录且已配置 OpenClaw 时,可将二维码图片经 OpenClaw 发送至用户指定渠道。不包含:代用户将 Cookie 上传至任何第三方、访问非知乎域名、或超出上述命令范围的操作。 --- ## Credentials - **知乎登录态**:仅存于用户本机(Linux/macOS:`~/.zhihu-cli/cookies.json`;Windows:`%USERPROFILE%\.zhihu-cli\cookies.json`,权限 0600)。Agent 仅通过执行 `zhihu` 命令间接使用,**不得将 Cookie 内容上传、转发或写入对话/日志**。 - **OpenClaw**:若使用 `openclaw message send` 发送二维码,需用户自行配置 OpenClaw 及渠道凭证;本技能不声明、不持有该部分凭证。 --- ## 安装与更新 - **安装**(任选其一): - `uv tool install pyzhihu-cli` - `pipx install pyzhihu-cli` - `pip install pyzhihu-cli` - **更新**:按安装方式执行 `uv tool upgrade pyzhihu-cli`、`pipx upgrade pyzhihu-cli` 或 `pip install -U pyzhihu-cli`。用户问「升级/更新 zhihu」时提示其执行对应命令;不确定安装方式时可三种都给出。 - **版本**:`zhihu --version` 查看当前版本。 --- ## Agent 规则 1. **诉求 → 命令**:按下表映射。 2. **数据查询优先用 --json**:凡执行**数据查询类**指令(如 `search`、`hot`、`question`、`answers`、`answer`、`user`、`user-answers`、`user-articles`、`followers`、`following`、`feed`、`topic`、`collections`、`notifications`、`whoami` 等),**必须**带 `--json`,以获取 API 返回的完整数据,便于解析、汇总或向用户展示;不得仅依赖终端表格等非结构化输出。例外:`feeds` 当前不支持 `--json`;需要展示回答评论时使用 `answer --comments`(`--json` 只输出回答详情,不输出评论)。 3. **需登录时**:先 `zhihu status`;未登录则 `zhihu login --qrcode` 或引导用户 `zhihu login --cookie "..."`。 4. **扫码登录**:执行 `zhihu login --qrcode` 后,若本轮未发过二维码且用户已配置 OpenClaw → 先将二维码复制到 OpenClaw 工作目录的 `media` 文件夹,再 `openclaw message send --channel <渠道> --target <目标> --media /login_qrcode.png --message "请用知乎 App 扫码并确认登录"`;**保持登录进程不中断**直到成功/失败/超时;用户说「重新登录/换号」则中断当前进程再重新执行登录。**复制步骤**:Linux/macOS:`mkdir -p ~/.openclaw/workspace/media && cp ~/.zhihu-cli/login_qrcode.png ~/.openclaw/workspace/media/`;Windows:`mkdir "%USERPROFILE%\.openclaw\workspace\media" 2>nul & copy "%USERPROFILE%\.zhihu-cli\login_qrcode.png" "%USERPROFILE%\.openclaw\workspace\media\login_qrcode.png"`(若 OpenClaw 工作目录不同则替换为实际路径)。 5. **安全**:Cookie 仅本地;优先扫码,避免在不可信处粘贴 Cookie;可提醒 `zhihu logout` 清空。 6. **升级**:`uv tool upgrade pyzhihu-cli` / `pipx upgrade pyzhihu-cli` / `pip install -U pyzhihu-cli`。 --- ## 诉求 → 命令 速查 | 诉求 | 命令 | |------|------| | 登录 / 扫码登录 | `zhihu login --qrcode` | | Cookie 登录 | `zhihu login --cookie "z_c0=...; _xsrf=...; d_c0=..."` | | 重新登录 / 换号 | 中断当前进程 → `zhihu login --qrcode` | | 检查登录 | `zhihu status`;看资料 `zhihu whoami [--json]` | | 搜索 | `zhihu search "关键词" [--type general/people/topic] [--limit N] [--answers N] [--json]` | | 热榜 | `zhihu hot [--limit N] [--answers N] [--json]` | | 问题 | `zhihu question [--json]`;回答列表 `zhihu answers [--limit N] [--sort default/created] [--json]` | | 回答详情 | `zhihu answer [--comments] [--limit N] [--json]`(评论默认全部,`--limit 0` 为全部) | | 用户 | `zhihu user [--json]`;`user-answers` / `user-articles` / `followers` / `following` 均支持 `--limit N --json` | | 推荐 / 话题 | `zhihu feed [--limit N] [--json]`;`zhihu feeds [--limit N] [--comment-limit N]`;`zhihu topic [--json]` | | 赞同 | `zhihu vote `;取消 `zhihu vote --neutral` | | 关注问题 | `zhihu follow-question `;取消 `zhihu follow-question --unfollow` | | 发提问 | `zhihu ask "标题" [-d "描述"] [-t 话题id ...] [-i 图 ...]` | | 发想法 | `zhihu pin "标题" [-c "正文"] [-i 图 ...]` | | 发文章 | `zhihu article "标题" "正文" [-t 话题id ...] [-i 图 ...]` | | 删提问/想法/文章 | `zhihu delete-question ` / `delete-pin ` / `delete-article ` [-y] | | 收藏 / 通知 | `zhihu collections [--limit N] [--json]`;`zhihu notifications [--limit N] [--offset M] [--json]` | | 退出 | `zhihu logout` | | 版本 / 升级 | `zhihu --version`;升级见上规则 6 | --- ## 执行流程 ``` 用户诉求 → 若「重新登录/换号」:中断当前 → zhihu login --qrcode → [发二维码] → 等完成 → 否则:查上表得命令 → 若该命令需登录:zhihu status → 未登录则 zhihu login --qrcode 或 --cookie → 若扫码且未发过图:复制到 media → openclaw message send --media ... → 保持进程 → 执行 zhihu <子命令>(数据查询类必须带 --json;feeds 和 answer --comments 除外) → 整理结果或报错提示 ``` --- ## 登录方式 | 方式 | 命令 | |------|------| | 扫码 | `zhihu login --qrcode`:终端显示二维码并保存到本地(Linux/macOS:`~/.zhihu-cli/login_qrcode.png`;Windows:`%USERPROFILE%\.zhihu-cli\login_qrcode.png`);可经 OpenClaw 发图给用户。 | | 手动 Cookie | `zhihu login --cookie "z_c0=...; _xsrf=...; d_c0=..."`(浏览器 F12 → Network → 请求头 Cookie 复制)。 | --- ## 常用示例 ```bash zhihu login --qrcode zhihu status zhihu search "Python" --json zhihu hot --limit 10 --json zhihu question 12345678 --json zhihu answers 12345678 --limit 5 --json zhihu answer 87654321 --comments --limit 5 zhihu user someone --json zhihu feed --limit 5 --json zhihu feeds --limit 3 --comment-limit 5 zhihu vote 87654321 zhihu pin "标题" -c "

正文

" zhihu delete-pin 98765432 -y zhihu notifications -l 10 --json zhihu logout ``` 正文支持 HTML 富文本(`ask` 的 `-d`、`pin` 的 `-c`、`article` 的正文)。 --- ## OpenClaw 发二维码(仅扫码时) 1. 确保二维码已生成(Linux/macOS:`~/.zhihu-cli/login_qrcode.png`;Windows:`%USERPROFILE%\.zhihu-cli\login_qrcode.png`)。 2. 复制到 OpenClaw 工作目录的 `media` 文件夹: - **Linux/macOS**:`mkdir -p ~/.openclaw/workspace/media && cp ~/.zhihu-cli/login_qrcode.png ~/.openclaw/workspace/media/` - **Windows(cmd)**:`mkdir "%USERPROFILE%\.openclaw\workspace\media" 2>nul & copy "%USERPROFILE%\.zhihu-cli\login_qrcode.png" "%USERPROFILE%\.openclaw\workspace\media\login_qrcode.png"` - **Windows(PowerShell)**:`New-Item -ItemType Directory -Force "$env:USERPROFILE\.openclaw\workspace\media" | Out-Null; Copy-Item "$env:USERPROFILE\.zhihu-cli\login_qrcode.png" "$env:USERPROFILE\.openclaw\workspace\media\login_qrcode.png"` (若 OpenClaw 工作目录不是默认的 `~/.openclaw/workspace` 或 `%USERPROFILE%\.openclaw\workspace`,则替换为实际路径。) 3. 发送:`openclaw message send --channel <渠道> --target <目标> --media <工作目录>/media/login_qrcode.png --message "请用知乎 App 扫码并确认登录"`(Linux/macOS 用 `~/.openclaw/workspace/media/login_qrcode.png`,Windows 用 `%USERPROFILE%\.openclaw\workspace\media\login_qrcode.png` 或 PowerShell 中 `$env:USERPROFILE\.openclaw\workspace\media\login_qrcode.png`)。 4. 不中断 `zhihu login --qrcode` 进程,等待用户完成。 --- ## 错误处理 - **未登录 / 401 / 403**:先登录(`zhihu login --qrcode` 或 `--cookie`),再执行原命令。 - **超时 / 网络**:提示重试或检查网络。 - **其他**:根据 CLI 报错给简短原因与建议(如检查 ID、url_token)。