zy
Committed by GitHub

chore: 精简 CLAUDE.md,遵循官方最佳实践 (#17)

- 从 153 行精简到 72 行
- 删除逐文件项目结构树(Claude 可自行读取)
- 删除标准 Python 命名约定和 PEP 8(默认已知)
- 删除技术栈列表(可从 pyproject.toml 推断)
- 删除已移除的 PROMPT.md 引用
- 新增 Git 工作流规范(禁止直接推送 main)

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Showing 1 changed file with 17 additions and 93 deletions
1 # xiaohongshu-skills 1 # xiaohongshu-skills
2 2
3 小红书自动化 Claude Code Skills,基于 Python CDP 浏览器自动化引擎。 3 小红书自动化 Claude Code Skills,基于 Python CDP 浏览器自动化引擎。
4 -为 OpenClaw 生态提供小红书操作能力,同时支持 Claude Code skills 格式。  
5 4
6 -## 项目结构 5 +## Git 工作流
7 6
8 -```  
9 -xiaohongshu-skills/  
10 -├── scripts/ # Python CDP 自动化引擎  
11 -│ ├── xhs/ # 核心 XHS 自动化包  
12 -│ │ ├── __init__.py  
13 -│ │ ├── cdp.py # CDP WebSocket 客户端(Browser, Page, Element)  
14 -│ │ ├── stealth.py # 反检测 JS 注入 + Chrome 启动参数  
15 -│ │ ├── cookies.py # Cookie 文件持久化  
16 -│ │ ├── types.py # 数据类型(dataclass)  
17 -│ │ ├── errors.py # 异常体系  
18 -│ │ ├── selectors.py # CSS 选择器常量  
19 -│ │ ├── urls.py # URL 常量和构建函数  
20 -│ │ ├── human.py # 人类行为模拟(延迟、滚动)  
21 -│ │ ├── login.py # 登录检查、二维码登录  
22 -│ │ ├── feeds.py # 首页 Feed 列表  
23 -│ │ ├── search.py # 搜索 + 筛选  
24 -│ │ ├── feed_detail.py # 笔记详情 + 评论加载  
25 -│ │ ├── user_profile.py # 用户主页  
26 -│ │ ├── comment.py # 评论、回复  
27 -│ │ ├── like_favorite.py # 点赞、收藏  
28 -│ │ ├── publish.py # 图文发布(fill + click 分步支持)  
29 -│ │ ├── publish_video.py # 视频发布(fill + click 分步支持)  
30 -│ │ └── publish_long_article.py # 长文发布(模板选择 + 排版)  
31 -│ ├── cli.py # 统一 CLI 入口(19 个子命令)  
32 -│ ├── chrome_launcher.py # Chrome 进程管理(含 restart 降级)  
33 -│ ├── account_manager.py # 多账号管理  
34 -│ ├── image_downloader.py # 媒体下载(SHA256 缓存)  
35 -│ ├── title_utils.py # UTF-16 标题长度计算  
36 -│ ├── run_lock.py # 单实例锁  
37 -│ └── publish_pipeline.py # 发布编排器  
38 -├── skills/ # Claude Code Skills 定义  
39 -│ ├── xhs-auth/SKILL.md # 认证管理  
40 -│ ├── xhs-publish/SKILL.md # 内容发布(图文+视频)  
41 -│ ├── xhs-explore/SKILL.md # 内容发现与分析  
42 -│ ├── xhs-interact/SKILL.md # 社交互动(评论/点赞/收藏)  
43 -│ └── xhs-content-ops/SKILL.md # 复合内容运营工作流  
44 -├── pyproject.toml # uv 项目配置  
45 -├── SKILL.md # 统一入口(路由到子技能)  
46 -├── CLAUDE.md # 本文件  
47 -├── PROMPT.md # Ralph Loop 驱动文件  
48 -└── README.md  
49 -```  
50 -  
51 -## 技术栈  
52 -  
53 -- **Python**: >=3.11  
54 -- **包管理**: uv  
55 -- **依赖**: requests + websockets(直接 CDP WebSocket 通信)  
56 -- **浏览器**: Chrome(通过 CDP 远程调试协议控制)  
57 -- **代码规范**: ruff(lint + format)  
58 -- **数据提取**: `window.__INITIAL_STATE__`(与 Go 源码一致) 7 +- 所有代码修改必须在分支上进行,禁止直接推送 main 分支
  8 +- 分支开发完成后通过 PR 合入 main
59 9
60 ## 开发命令 10 ## 开发命令
61 11
@@ -66,73 +16,47 @@ uv run ruff format . # 代码格式化 @@ -66,73 +16,47 @@ uv run ruff format . # 代码格式化
66 uv run pytest # 运行测试 16 uv run pytest # 运行测试
67 ``` 17 ```
68 18
69 -## 架构设计  
70 -  
71 -### 双层结构 19 +## 架构
72 20
73 -1. **scripts/ — Python CDP 引擎**  
74 - - 基于 xiaohongshu-mcp Go 源码从零重写  
75 - - `xhs/` 包:模块化的核心自动化库  
76 - - `cli.py`:统一 CLI 入口,19 个子命令(13 个 MCP + 6 个增强)  
77 - - JSON 结构化输出,便于 agent 解析  
78 - - 多账号支持,独立 Chrome Profile 隔离  
79 - - 反检测保护(stealth flags + JS 注入) 21 +双层结构:`scripts/` 是 Python CDP 自动化引擎,`skills/` 是 Claude Code Skills 定义(SKILL.md 格式)。
80 22
81 -2. **skills/ — Claude Code Skills 定义**  
82 - - SKILL.md 格式,指导 Claude 如何调用 scripts/  
83 - - 包含输入判断、约束规则、工作流程、失败处理 23 +- `scripts/xhs/` — 核心自动化库(模块化,每个功能一个文件)
  24 +- `scripts/cli.py` — 统一 CLI 入口,19 个子命令,JSON 结构化输出
  25 +- `scripts/publish_pipeline.py` — 发布编排器(含图片下载和登录检查)
  26 +- `skills/*/SKILL.md` — 指导 Claude 如何调用 scripts/
84 27
85 ### 调用方式 28 ### 调用方式
86 29
87 ```bash 30 ```bash
88 -# 统一 CLI 入口  
89 python scripts/cli.py check-login 31 python scripts/cli.py check-login
90 python scripts/cli.py search-feeds --keyword "关键词" 32 python scripts/cli.py search-feeds --keyword "关键词"
91 python scripts/cli.py publish --title-file t.txt --content-file c.txt --images pic.jpg 33 python scripts/cli.py publish --title-file t.txt --content-file c.txt --images pic.jpg
92 -  
93 -# 发布流水线(含图片下载和登录检查)  
94 python scripts/publish_pipeline.py --title-file t.txt --content-file c.txt --images URL1 34 python scripts/publish_pipeline.py --title-file t.txt --content-file c.txt --images URL1
95 ``` 35 ```
96 36
97 ## 代码规范 37 ## 代码规范
98 38
99 -### Python 风格  
100 -- 遵循 PEP 8,使用 ruff 强制执行  
101 -- 完整的 type hints(PEP 484),使用 `str | None` 语法  
102 -- 公共函数和类必须有 docstring  
103 - 行长度上限 100 字符 39 - 行长度上限 100 字符
104 -- 使用 `from __future__ import annotations` 启用延迟注解  
105 -  
106 -### 命名约定  
107 -- 文件名:snake_case  
108 -- 类名:PascalCase  
109 -- 函数/变量:snake_case  
110 -- 常量:UPPER_SNAKE_CASE  
111 -  
112 -### 错误处理  
113 -- 自定义异常类继承自 `XHSError` 基类(`xhs/errors.py`  
114 -- CLI 命令使用结构化 exit code:0=成功,1=未登录,2=错误  
115 -- 所有用户可见的错误信息使用中文 40 +- 完整 type hints,使用 `from __future__ import annotations`
  41 +- 异常继承 `XHSError`(`xhs/errors.py`
  42 +- CLI exit code:0=成功,1=未登录,2=错误
  43 +- 用户可见错误信息使用中文
  44 +- JSON 输出 `ensure_ascii=False`
116 45
117 ### 安全约束 46 ### 安全约束
  47 +
118 - 发布类操作必须有用户确认机制 48 - 发布类操作必须有用户确认机制
119 - 文件路径必须使用绝对路径 49 - 文件路径必须使用绝对路径
120 -- 不在命令行参数中内联敏感内容(使用文件传递) 50 +- 敏感内容通过文件传递,不内联到命令行参数
121 - Chrome Profile 目录隔离账号 cookies 51 - Chrome Profile 目录隔离账号 cookies
122 52
123 -## 参考资源  
124 -  
125 -- **xiaohongshu-mcp Go 源码**: /Users/zy/src/zy/xiaohongshu-mcp/  
126 -  
127 ## CLI 子命令对照表 53 ## CLI 子命令对照表
128 54
129 -scripts/cli.py 的 19 个子命令:  
130 -  
131 | CLI 子命令 | 对应 MCP 工具 | 分类 | 55 | CLI 子命令 | 对应 MCP 工具 | 分类 |
132 |--|--|--| 56 |--|--|--|
133 | `check-login` | check_login_status | 认证 | 57 | `check-login` | check_login_status | 认证 |
134 | `login` | get_login_qrcode | 认证 | 58 | `login` | get_login_qrcode | 认证 |
135 -| `phone-login` | — | 认证(手机号+验证码,无界面服务器适用) | 59 +| `phone-login` | — | 认证 |
136 | `delete-cookies` | delete_cookies | 认证 | 60 | `delete-cookies` | delete_cookies | 认证 |
137 | `list-feeds` | list_feeds | 浏览 | 61 | `list-feeds` | list_feeds | 浏览 |
138 | `search-feeds` | search_feeds | 浏览 | 62 | `search-feeds` | search_feeds | 浏览 |