双通道架构:HTTP 读(热榜/搜索/用户/问题)+ 浏览器写(发布/互动)。
# 依赖已安装,如首次使用:
cd zhihu-skill
npm install
npx playwright install chromium
export ZHIHU_COOKIE_KEY="$(openssl rand -hex 32)"
# 会自动打开浏览器,手动登录后 Cookie 自动加密保存
node scripts/zhihu-export-cookie.js
# 检查 Cookie 是否有效
node tests/cookie-check.js
在知乎专栏发布 Markdown 文章。
你: 帮我发一篇知乎文章,标题是"xxx",内容是...
AI: 正在生成内容 → 打开编辑器 → 发布 → 返回链接
CLI:
# 直接指定内容
node scripts/zhihu-publish.js article --title "标题" --content "正文"
# 从文件读取内容
node scripts/zhihu-publish.js article --title "标题" --content-file "文章.md"
# 保存为草稿(不发布)
node scripts/zhihu-publish.js article --title "标题" --content "正文" --draft
类似 Twitter 的短内容发布。
你: 发一条知乎想法,内容是xxx
CLI:
node scripts/zhihu-publish.js thought --content "想法内容"
# 带图片
node scripts/zhihu-publish.js thought --content "想法内容" --image "图片路径"
搜索问题并撰写回答。
你: 帮我在知乎搜索关于xxx的问题并回答
AI: 搜索问题 → 列出选项 → 用户选择 → 撰写 → 提交
CLI:
node scripts/zhihu-answer.js --question-id 123456789 --content "回答内容"
在知乎上提出新问题。
你: 帮我在知乎提问:xxx
AI: 打开提问页 → 填写标题 → 补充详情 → 提交
CLI:
node scripts/zhihu-ask.js --title "问题标题" --detail "补充说明"
点赞、评论、关注。
你: 给这篇知乎文章点赞 / 评论 / 关注这个用户
CLI:
# 点赞
node scripts/zhihu-interact.js like --url "https://www.zhihu.com/question/xxx/answer/xxx"
# 取消点赞
node scripts/zhihu-interact.js unlike --url "..."
# 评论
node scripts/zhihu-interact.js comment --url "..." --content "评论内容"
# 关注用户
node scripts/zhihu-interact.js follow --user "用户ID"
从知乎提取结构化数据。
你: 今天知乎热榜是什么?
AI: 返回热榜 Top 20
CLI:
# 热榜
node scripts/zhihu-extract.js --type hot-list [--limit 20]
# 搜索
node scripts/zhihu-extract.js --type search --query "关键词" [--limit 10]
# 文章详情
node scripts/zhihu-extract.js --type article --id "文章ID"
# 用户信息
node scripts/zhihu-extract.js --type user --id "用户ID"
# 问题详情
node scripts/zhihu-extract.js --type question --id "问题ID"
# 回答列表
node scripts/zhihu-extract.js --type answers --id "问题ID" [--limit 10]
AI Agent(用户自然语言触发)
│
┌────────▼────────┐
│ Skill 调度层 │
│ SKILL.md → 路由 │
└────────┬────────┘
│
┌────────▼────────┐
│ 双通道决策 │
│ 读操作→HTTP │
│ 写操作→浏览器 │
└────────┬────────┘
│
┌────────────┼────────────┐
│ │ │
┌─────────▼─────┐ ┌───▼────┐ ┌─────▼─────────┐
│ HTTP 通道 │ │ 浏览器 │ │ Python │
│ zhihu-http.js │ │ 通道 │ │ OpenAPI │
│ zhihu-extract │ │ 自动化 │ │ zhihu_bot.py │
│ zhihu-signature│ │ publish│ │ zhihu-bridge │
└───────────────┘ │ interact│ └───────────────┘
│ answer │
│ ask │
└─────────┘
ZHIHU_COOKIE_KEY 管理加密密钥rotateCookieKey)~/.hermes/credentials/zhihu-cookies.enc
├── [12 bytes: 随机 IV]
├── [16 bytes: GCM 认证标签]
└── [AES-256-GCM 加密的 Cookie 数据]
| 变量 | 必填 | 说明 |
|---|---|---|
| ------ | :----: | ------ |
ZHIHU_COOKIE_KEY | ✅ | Cookie 加密密钥(openssl rand -hex 32 生成) |
ZHIHU_APP_KEY | ❌ | 知乎 OpenAPI app_key(圈子互动) |
ZHIHU_APP_SECRET | ❌ | 知乎 OpenAPI app_secret |
ZHIHU_PROXY | ❌ | 代理地址(反爬场景) |
CAPTCHA_API_KEY | ❌ | 打码平台 Key |
# 选择器冒烟测试
node tests/smoke-test.js
# Cookie 到期检测
node tests/cookie-check.js
# 端到端集成测试(沙箱模式)
ZHIHU_TEST_MODE=sandbox node tests/e2e-test.js
config/selectors.json 可能需更新共 1 个版本