Browse Source

docs(xiaohongshu): AGENTS.md 新增评论自动回复工具章节,修正 click 触发方式

Sisyphus Agent 2 months ago
parent
commit
6caef36216
1 changed files with 86 additions and 1 deletions
  1. 86 1
      运营文案/小红书发布/AGENTS.md

+ 86 - 1
运营文案/小红书发布/AGENTS.md

@@ -234,10 +234,95 @@ curl -X POST https://apihub.agnes-ai.com/v1/images/generations \
 ## 10. 发布后复盘
 
 每篇发布后按 `运营文案\发布数据复盘清单.md` 执行:
-- **T+3h**:回复前 5 条评论并点赞(提升互动权重)
+- **T+3h**:回复前5条评论并点赞(提升互动权重)
 - **T+24h**:记录赞藏评数据,赞>20 进投稿池
 - **T+7d**:记录长尾数据,写复盘小结
 
+### 10.1 评论自动回复工具
+
+> 脚本位置:`_过程脚本\comment_reply.py`  
+> 前提:Chrome 已以 `--remote-debugging-port=9222` 启动,且已登录小红书(§3)
+
+**核心功能**:
+- 连接已打开的笔记详情页(通过 WebSocket CDP)
+- 提取所有评论及子回复,识别未被作者回复的评论
+- 自动匹配"引发讨论"风格的回复(以提问结尾,引导用户继续讨论)
+- 使用 CDP `Input.insertText` 模拟真实键盘输入,确保发送按钮可用
+
+**CLI 用法**:
+
+```bash
+# 仅提取评论(查看状态,不回复)
+python _过程脚本\comment_reply.py --ws ws://127.0.0.1:9222/devtools/page/<PAGE_ID> --extract-only
+
+# 自动回复所有未回复评论(按内容自动匹配模板)
+python _过程脚本\comment_reply.py --ws ws://127.0.0.1:9222/devtools/page/<PAGE_ID>
+
+# 自定义回复文本(所有未回复评论用同一文本)
+python _过程脚本\comment_reply.py --ws ws://127.0.0.1:9222/devtools/page/<PAGE_ID> --text "能展开说说你的想法吗?"
+
+# 输出到文件(避免 GBK 编码问题)
+python _过程脚本\comment_reply.py --ws ws://127.0.0.1:9222/devtools/page/<PAGE_ID> --extract-only --output result.txt
+```
+
+**库式调用**:
+
+```python
+from _过程脚本.comment_reply import CommentReplyBot
+import asyncio
+
+async def main():
+    bot = CommentReplyBot("ws://127.0.0.1:9222/devtools/page/<PAGE_ID>")
+    await bot.connect()
+    await bot.scroll_to_comments()
+    
+    # 仅提取
+    comments = await bot.extract_comments()
+    for c in comments:
+        print(f"  {c['author']}: {c['content']} (已回复={c['hasAuthorReply']})")
+    
+    # 回复所有未回复评论
+    result = await bot.reply_all()
+    print(f"Replied: {result}")
+
+asyncio.run(main())
+```
+
+**讨论型回复模板**(按评论关键词自动匹配):
+
+| 评论关键词 | 回复内容 |
+|-----------|---------|
+| 晚一年上学 | 晚一年确实有很多好处,能分享一下你们家是怎么考虑这件事的吗? |
+| 不生二胎 | 是啊,精力集中养一个也挺好的。你们家孩子多大了? |
+| 不把他帶來世上遭罪 | 这个想法很深刻,能多聊聊你是怎么想的吗? |
+| 让他是独生子 | 独生子女也有独生子女的好处,你平时会担心他孤单吗? |
+| 默认 | 说得对,能再展开说说你的想法吗? |
+
+**回复设计原则**:所有回复以**提问结尾**,引导用户继续讨论 → 提升互动权重 → 算法推荐更多曝光。
+
+**关键 DOM 选择器**:
+
+| 元素 | 选择器 | 说明 |
+|------|--------|------|
+| 评论输入框 | `#content-textarea` | contenteditable 的 `<p>` 元素 |
+| 发送按钮 | `.btn.submit` | 文字"发送";disabled 时不可用 |
+| 回复按钮 | `.reply.icon-container` | 文字"回复" |
+| 评论容器 | `.parent-comment` | 每条顶级评论 |
+| 作者回复标识 | `.tag`(文本含"作者") | 子回复中的标识 |
+| 子回复 | `.comment-item-sub` | 展开的回复列表 |
+
+**关键实现细节**:
+- 发送按钮 `.btn.submit` 初始为 `disabled`,必须通过 CDP `Input.insertText` 模拟真实键盘输入才能 enable
+- 用 `contenteditable.innerHTML` 或 `textContent` 赋值不会触发 React 的 enable 逻辑
+- 点击"回复"按钮**必须用原生 `.click()`**,不能用 `dispatchEvent(new MouseEvent('click', {bubbles: true}))`——实测 dispatchEvent 合成事件无法让 Vue 识别回复目标,输入框会回退到全局评论区,导致回复被发送成**独立评论**而非嵌套回复
+
+**典型工作流**:
+1. 从创作者中心笔记列表获取笔记 ID 和评论数(`content-data` 命令)
+2. 构造详情页 URL:`https://www.xiaohongshu.com/explore/{noteId}?xsec_token={token}&xsec_source=pc_creatormng`
+3. 在 Chrome 中打开该 URL(xsec_token 可跨笔记复用)
+4. 运行 `python _过程脚本\comment_reply.py --ws ws://... --extract-only` 查看评论状态
+5. 运行 `python _过程脚本\comment_reply.py --ws ws://...` 自动回复
+
 ---
 
 ## 11. 关键文件索引