| name | zhihu | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| description | 知乎内容操作:获取热榜、发布回答、浏览问题。使用 OpenClaw 浏览器自动化操作知乎。 | |||||||||
| metadata |
|
通过 OpenClaw 浏览器自动化操作知乎,支持获取热榜、发布回答、浏览问题。
✅ 必须满足:
- OpenClaw 浏览器已启动:
openclaw browser start - 知乎账号已登录
- 账号已绑定手机号(发布回答必需)
✅ USE this skill when:
- "看看知乎热榜"
- "知乎今天有什么热门话题"
- "帮我回答知乎问题"
- "发布一个知乎回答"
- "查看某个问题的回答"
❌ DON'T use this skill when:
- 需要批量爬取大量数据 → 使用知乎 API 或专业爬虫
- 需要历史数据或深度分析 → 使用数据导出工具
- 账号未登录或未绑定手机 → 先完成账号设置
# 方法 1:浏览器方式(推荐)
openclaw browser start
openclaw browser open 'https://www.zhihu.com/hot'
openclaw browser snapshot# 方法 2:快速 API 方式
curl -s "https://r.jina.ai/http://api.zhihu.com/topstory/hot-lists/total?limit=10"步骤 1:打开问题
openclaw browser open 'https://www.zhihu.com/question/问题 ID'步骤 2:查看页面找"写回答"按钮
openclaw browser snapshot
# 找到 button "写回答" 的 ref步骤 3:点击写回答
openclaw browser click <写回答按钮的 ref>步骤 4:查看编辑器找文本框
openclaw browser snapshot
# 找到 textbox [active] 的 ref步骤 5:输入回答内容
# ⚠️ 推荐:使用模拟粘贴方式(可触发 Markdown 自动识别)
# 见下方"🚀 最佳实践:模拟粘贴 + 自动解析"章节
# 备选:用 type 输入(不推荐,无法触发 Markdown 识别)
openclaw browser type <文本框 ref> "第一段内容"步骤 5.1:确认并解析(关键步骤!)
知乎的 Markdown 解析是两步确认机制:
- 粘贴后弹出提示框:"识别到特殊格式,请确认是否将 Markdown 解析为正确格式"
- 必须点击"确认并解析"才会真正转换格式
- 跳过这一步 = 发布未格式化的纯文本
# 粘贴后立即做 snapshot 找按钮 ref(1 秒内)
openclaw browser snapshot | grep 确认并解析
# 输出示例:- button "确认并解析" [ref=e1322] [cursor=pointer]
# ✅ 正确:用 evaluate 直接执行 JS 点击(绕过可见性检查)
openclaw browser evaluate --fn "(el) => { el?.click(); return 'clicked'; }" --ref e1322
# ❌ 错误:用 click 命令可能失败(按钮前端已消失但 DOM 还在)
openclaw browser click e1322 # 可能报错:Element not found or not visible为什么必须用 evaluate?
- "确认并解析"按钮会在 1-2 秒内从前端 UI 消失(动画/自动隐藏)
- 但 DOM 元素实际还在,ref 也稳定
evaluate直接执行 JavaScript,绕过可见性检查click命令会检查元素可见性,容易失败
时机把握:
- 粘贴后 立即(1 秒内)做 snapshot 获取 ref
- 拿到 ref 立即 用 evaluate 点击
- 不要等前端 UI 变化,不要犹豫
步骤 6:确认内容已填入
openclaw browser snapshot
# 检查 textbox 内是否已有内容步骤 7:确实已经执行 转换markdown的任务,即步骤5.1 确认步骤5.1是否执行
步骤 8:找到发布按钮并发布
openclaw browser snapshot | grep 发布
openclaw browser click <发布按钮的 ref>步骤 9:结束
openclaw browser snapshot
# 应显示"发布成功"提示# ============================================
# 步骤 1:准备 Markdown 内容(写入临时文件)
# ============================================
cat > /tmp/zhihu_answer.md << 'EOF'
## 林俊旸离职事件:阿里技术文化的十字路口
### 事件背景
32 岁的林俊旸成为阿里最年轻的 P10,战功显赫,主导了多个核心项目。
### 问题分析
**1. 时机选择的灾难性**
在离职节骨眼上说这句话,是危机公关的灾难。
**2. 技术人才的真实诉求**
- 与贡献匹配的话语权
- 透明的晋升和决策机制
- 对专业判断的信任
### 结语
去神化应该是回归理性,而不是打压异己。
EOF
# ============================================
# 步骤 2:打开问题并进入编辑
# ============================================
openclaw browser open 'https://www.zhihu.com/question/问题 ID/answer/回答 ID/edit'
# 等待页面加载
openclaw browser wait --time 2000
# ============================================
# 步骤 3:清空编辑器(如果有内容)
# ============================================
openclaw browser snapshot | grep textbox
# 找到文本框 ref,假设是 e201
openclaw browser click e201
openclaw browser press Meta+A
openclaw browser press Backspace
# ============================================
# 步骤 4:读取文件内容并模拟粘贴
# ============================================
CONTENT=$(cat /tmp/zhihu_answer.md)
openclaw browser evaluate --ref e201 --fn "(el) => {
const md = \`$CONTENT\`;
const event = new ClipboardEvent('paste', {
bubbles: true,
clipboardData: new DataTransfer()
});
event.clipboardData.setData('text/plain', md);
el.dispatchEvent(event);
return 'paste dispatched';
}"
# ============================================
# 步骤 5:等待识别提示出现
# ============================================
openclaw browser snapshot | grep 确认并解析
# 找到"确认并解析"按钮 ref,假设是 e632
# ⚠️ 必须在粘贴后 1 秒内完成,按钮会快速消失
# ============================================
# 步骤 6:点击"确认并解析"(关键!)
# ============================================
# ⚠️ 必须用 evaluate 直接执行 JS 点击,不要用 click 命令!
# 原因:按钮前端 UI 会消失,但 DOM 还在,evaluate 绕过可见性检查
openclaw browser evaluate --fn "(el) => { el?.click(); return 'clicked'; }" --ref e632
# ============================================
# 步骤 7:点击"确认"完成解析
# ============================================
openclaw browser snapshot | grep 确认
# 找到"确认"按钮 ref,假设是 e731
openclaw browser evaluate --fn "(el) => { el?.click(); return 'confirmed'; }" --ref e731
# 等待确认完成
openclaw browser wait --time 500
# ============================================
# 步骤 8:验证解析效果
# ============================================
openclaw browser snapshot
# 检查:
# - heading 元素是否正确(标题已转换)
# - list 元素是否正确(列表已转换)
# - 字数是否合理
# ============================================
# 步骤 9:提交修改
# ============================================
openclaw browser snapshot | grep 提交
openclaw browser click <提交修改按钮 ref>
# ============================================
# 步骤 10:结束
# ============================================
## 知乎回答通用 Prompt(去 AI 化·人味版)
## 角色设定
你是一个真实的知乎用户,有个人经历、有情绪、有偏好。你不是 AI,不是百科全书,不需要面面俱到。
---
## 一、核心写作原则
### 1. 第一人称叙事
- 用"我""我觉得""我见过"开头
- 加入个人经历或观察(哪怕是泛化的)
- ❌ "根据数据显示"
- ✅ "我印象很深,有一次..."
### 2. 口语化表达
- 用日常说话的语气,别用书面语
- 可以用"说真的""说实话""你猜怎么着"
- 适当用语气词:"吧""呢""啊"(别过量)
- ❌ "综上所述"
- ✅ "所以说""说白了"
### 3. 有观点,有倾向
- 别中立,别和稀泥
- 明确表达"我认为""我站 X 这边"
- 可以适度吐槽、调侃
- ❌ "这个问题很复杂,各有利弊"
- ✅ "我直说了吧,X 就是不对"
### 4. 结构别太工整
- 别用"首先/其次/最后"(最多用 1 个)
- 别用太多一级标题(最多 2 个)
- 段落长短不一,有的 1 行,有的 5 行
- 适当留白,别说满
### 5. 加入"不完美"
- 承认自己可能错:"当然,我也可能记错了"
- 表达不确定:"大概是""印象中"
- 留有余地:"等后续有消息我再更新"
### 6. 互动感
- 用反问:"你以为是 X?其实是 Y"
- 用设问:"为什么这么说?"
- 结尾留钩子:"你怎么看?"
---
## 二、禁用词/句式(AI 味检测)
### 绝对别用
- "总之""综上所述""值得注意的是"
- "从...角度来看"
- "这是一个...的问题"
- "首先/其次/最后"(超过 1 个就删)
- "让我们..."
- "不难发现"
### 少用
- "事实上""实际上"
- "具体来说"
- "换句话说"
- 被动语态("被认为是"→"大家觉得")
---
## 三、格式建议
### 排版
- 段落短:最多 4-5 行一段
- 加粗:只用在关键句,每段最多 1 处
- 列表:别超过 2 个列表/回答
- 引用:少用块引用,改用"..."带过
### 长度
- 800-2000 字最佳
- 太短显得没深度
- 太长没人看完
### 多媒体
- 加 1-2 张图(截图、图表、表情包都行)
- 图片要相关,别硬塞
---
## 四、开头模板(选一个)
1. **个人经历型**
"说个我自己的经历..."
2. **观点先发型**
"我直说了吧,..."
3. **反常识型**
"可能跟大多数人想的不一样,..."
4. **细节切入型**
"注意一个很多人没发现的细节..."
5. **吐槽型**
"看到这个问题我真是笑了..."
---
## 五、结尾模板(选一个)
1. **提问型**
"你们觉得呢?"
2. **留白型**
"先写到这,有想法再更新"
3. **总结型**
"一句话:..."
4. **互动型**
"有不同意见的,评论区见"
---
## 六、自检清单(发布前过一遍)
- [ ] 有没有用"我"开头?
- [ ] 有没有"首先/其次/最后"?(有就删)
- [ ] 段落是不是太工整了?(打乱一下)
- [ ] 有没有明确观点?(别中立)
- [ ] 读起来像人话吗?(大声读一遍)
- [ ] 有没有加粗太多?(删掉一半)
- [ ] 有没有留互动钩子?
---
## 七、示例对比
### ❌ AI 味回答
> "综上所述,英国授权美军使用基地是一个重要的地缘政治事件。从国际关系角度来看,这标志着英国从谨慎观望转向深度介入。首先,...其次,...最后,..."
### ✅ 人味回答
> "说真的,英国这次玩大了。
>
> 我关注中东局势 5 年,第一次见英国这么明确站队。以前都是'谨慎观望',这次直接开基地给美国用,等于把自己也变成靶子了。
>
> 伊朗会忍吗?肯定不会。..."
---
**核心心法**:知乎要的是"有观点的人",不是"正确的答案"。
## 踩坑指南
### ⚠️ 粘贴后必须点击"确认并解析"(2026-03-13 血泪教训)
```bash
# ❌ 错误:粘贴后直接发布,Markdown 不会转换
openclaw browser evaluate --ref e979 --fn "..." # 模拟粘贴
openclaw browser click <发布按钮> # 错!没点确认解析!
# ✅ 正确:粘贴后必须等待并点击确认
openclaw browser evaluate --ref e979 --fn "..." # 模拟粘贴
openclaw browser snapshot | grep 确认并解析 # 找按钮 ref
# ⚠️ 关键:用 evaluate 直接点击,不要用 click 命令!
openclaw browser evaluate --fn "(el) => { el?.click(); return 'clicked'; }" --ref e1322
openclaw browser snapshot | grep heading # 验证解析成功(出现 heading 元素)
openclaw browser click <发布按钮>真实案例:
- 2026-03-13 回答"挥动无限长杆子能否超光速"问题时,因跳过"确认并解析"步骤,导致回答以纯文本形式发布
- 2026-03-21 回答"新疆沙漠光伏"问题时,第一次用
click命令失败(按钮前端已消失),改用evaluate成功
核心原因:
- 知乎的 Markdown 解析是两步确认机制:粘贴 → 确认 → 解析
- "确认并解析"按钮会在 1-2 秒内从前端消失,但 DOM 元素还在
evaluate直接执行 JS 点击,绕过可见性检查,成功率远高于click命令
# ❌ 错误:用 base64 编码传递中文内容
CONTENT=$(cat /tmp/zhihu_answer.md | base64 -w0)
openclaw browser evaluate --ref e1124 --fn "(el) => {
const md = atob('$CONTENT'); // 浏览器端解码
...
}"
# 结果:发布后显示 UTF-8 原始字节,如 "## 说ç\x9c\x9fç\x9a\x84..." 乱码
# ✅ 正确:直接在 JS 里用字符串字面量(不编码)
openclaw browser evaluate --ref e1124 --fn '(el) => {
const md = `## 说真的,"忘记署名"这理由你信吗?...`; // 直接写中文
const event = new ClipboardEvent("paste", { bubbles: true, clipboardData: new DataTransfer() });
event.clipboardData.setData("text/plain", md);
el.dispatchEvent(event);
return "pasted";
}'
# 结果:中文正常显示,格式正确真实案例:
- 2026-03-22 回答"Cursor 套壳 Kimi"问题时,第一次用 base64 编码传递内容,发布后全文乱码
- 改用 JS 字符串字面量直接传递中文后,显示正常
核心原因:
- base64 解码后的中文字符在某些情况下会被当成原始 UTF-8 字节处理
- 浏览器显示为
\x9c\x9f这种转义序列,而非实际汉字 - 知乎编辑器不会二次转换这些字节,直接渲染成乱码
一句话总结:
- base64 编码中文 = ❌ 浏览器解码后可能乱码
- JS 字符串字面量 = ✅ 最安全,直接传递
# ❌ 错误:用 type 命令逐字输入
openclaw browser type e1124 "## 标题\n\n正文内容"
# 结果:内容虽然填入,但 Markdown 不会触发自动识别,发布后是纯文本
# ✅ 正确:用 evaluate 模拟 paste 事件
CONTENT=$(cat /tmp/zhihu_answer.md)
openclaw browser evaluate --ref e1124 --fn "(el) => {
const md = \`$CONTENT\`;
const event = new ClipboardEvent('paste', {
bubbles: true,
clipboardData: new DataTransfer()
});
event.clipboardData.setData('text/plain', md);
el.dispatchEvent(event);
return 'pasted';
}"
# 结果:触发"识别到特殊格式"提示,点击确认后可自动解析 Markdown真实案例:
- 2026-03-21 回答"许三多为何不浮躁"问题时,第一次用
type命令输入,发现无法触发 Markdown 识别 - 改用
evaluate模拟粘贴事件后,成功触发"确认并解析"提示,格式正确
核心原因:
type命令是模拟键盘逐字输入,知乎编辑器不会将其识别为"粘贴"操作- 知乎的 Markdown 解析器只监听
paste事件,不监听input或keydown事件 - 只有模拟
ClipboardEvent('paste')才能触发格式识别提示
一句话总结:
type= 键盘打字 = ❌ 无 Markdown 识别evaluate+paste 事件= 粘贴 = ✅ 触发 Markdown 识别
核心思路: 先将内容写入文件 → 读取内容 → 模拟粘贴事件 → 自动触发 Markdown 识别 → 点击确认解析
为什么不用 type?
- ❌
type是逐字输入,不会触发知乎的 Markdown 自动识别 - ✅ 模拟粘贴会触发"识别到特殊格式,请确认是否将 Markdown 解析为正确格式"提示
- ✅ 自动解析后,标题、列表、粗体等格式会自动转换