{"id":"c711afba-9eba-4a94-b378-482bd8c129ac","entityType":"agent","slug":"clawhub-timqin-m-zion-xhs-catch-skill","name":"zion-xhs-catch-skill","canonicalUrl":"https://www.xpersona.co/agent/clawhub-timqin-m-zion-xhs-catch-skill","canonicalPath":"/agent/clawhub-timqin-m-zion-xhs-catch-skill","generatedAt":"2026-10-11T14:16:21.332Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T10:39:39.898Z","emptyReason":null},"description":"小红书笔记采集工具。当用户需要从小红书按关键词搜索并批量采集笔记数据时，使用此 skill。 触发关键词：采集小红书、抓小红书、小红书搜索、小红书笔记、小红书数据、小红书竞品、小红书调研、小红书内容、小红书痛点、小红书用户反馈。 功能：基于 WebBridge 控制浏览器，采集笔记标题、正文、作者、点赞/收藏/评... Skill: zion-xhs-catch-skill Owner: timqin-m Summary: 小红书笔记采集工具。当用户需要从小红书按关键词搜索并批量采集笔记数据时，使用此 skill。 触发关键词：采集小红书、抓小红书、小红书搜索、小红书笔记、小红书数据、小红书竞品、小红书调研、小红书内容、小红书痛点、小红书用户反馈。 功能：基于 WebBridge 控制浏览器，采集笔记标题、正文、作者、点赞/收藏/评... Tags: latest:1.0.6 Version history: v1.0.6 | 2026-06-01T07:44:44.910Z | user zihon-xhs-catch-skill v1.0.6 Changelog - 说明文档（SKILL.md）全面升级，突出一站式工作流与详细环境准备指南，优化新手引导。 - 补充了 Kimi WebBridge 安装和浏览器插件安装的详细步骤。 - 移除旧","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17arkb0bqe5mts9h543n7qa918440tv:zion-xhs-catch-skill","sourceUrl":"https://clawhub.ai/timqin-m/zion-xhs-catch-skill","homepage":"https://clawhub.ai/timqin-m/skills/zion-xhs-catch-skill","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/timqin-m/zion-xhs-catch-skill","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/timqin-m/skills/zion-xhs-catch-skill","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":61,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"小红书笔记采集工具。当用户需要从小红书按关键词搜索并批量采集笔记数据时，使用此 skill。 触发关键词：采集小红书、抓小红书、小红书搜索、小红书笔记、小红书数据、小红书竞品、小红书调研、小红书内容、小红书痛点、小红书用户反馈。 功能：基于 WebBridge 控制浏览器，采集笔记标题、正文、作者、点赞/收藏/评..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T10:39:39.898Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T10:39:39.898Z","emptyReason":null},"stars":null,"forks":null,"downloads":1085,"packageName":null,"latestVersion":"1.0.6","tractionLabel":"1.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T10:39:39.829Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T10:39:39.898Z","lastCrawledAt":"2026-10-11T10:39:39.829Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T10:39:39.829Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.6","createdAt":"2026-06-01T07:44:44.910Z","changelog":"zihon-xhs-catch-skill v1.0.6 Changelog - 说明文档（SKILL.md）全面升级，突出一站式工作流与详细环境准备指南，优化新手引导。 - 补充了 Kimi WebBridge 安装和浏览器插件安装的详细步骤。 - 移除旧 skill-card.md，新增 scripts/package-lock.json 以锁定依赖版本，提升安装稳定性。 - 增强安全与风控提示，强调账号和采集频率安全须知。 - 明确输出格式与数据同步功能，整体文档表现更清晰、可用性提升。","fileCount":11,"zipByteSize":27194},{"version":"1.0.5","createdAt":"2026-05-31T17:03:58.377Z","changelog":"Changelog for version 1.0.5: - Removed the file skill-card.md from the skill package. - Updated documentation in SKILL.md to clarify that「好痛 Howtone」同步 now requires a manually obtained Token, replacing the previous username/password registration and login process. - Adjusted step descriptions and command examples in SKILL.md related to「好痛 Howtone」同步流程, aligning them with the new Token-based workflow. - No functional or code-level changes outside of documentation and file cleanup.","fileCount":10,"zipByteSize":20811},{"version":"1.0.4","createdAt":"2026-05-29T08:01:18.664Z","changelog":"**重大更新：提升风控安全性，新增防封禁风险提示。** - 新增安全风险与风控防封指南，强烈建议使用小号登录采集，禁止用主力/商业号，避免账号被封禁。 - 明确建议单次采集数量控制在 10–20 条，并警示高频采集行为风险。 - 说明内置真人模拟（随机延时、滚动），但无法保证零封禁风险。 - 其他功能、参数、执行方式和数据结构未变。","fileCount":10,"zipByteSize":21250},{"version":"1.0.3","createdAt":"2026-05-27T03:33:52.110Z","changelog":"- 移除 Playwright 相关采集模式，简化为仅支持 WebBridge 方式。 - 删除 `crawl.ts` 和 `mcp-crawl.ts` 两个脚本文件。 - 更新文档，明确仅保留 WebBridge 采集方案，调整描述和操作指引。 - 增加详细的关键词设计说明，强调引导用户优化采集关键词。 - 将同步目标项目名称调整为「好痛 Howtone」，统一文案。 - 精简部分说明，聚焦结构化数据抓取及同步要点。","fileCount":10,"zipByteSize":20423},{"version":"1.0.2","createdAt":"2026-05-24T17:56:04.735Z","changelog":"Version 1.0.2 - 新增 Playwright 直接模式与 MCP Extension 采集模式，支持三种采集方式。 - 增加同步采集数据至弦外 Overtone Zion 项目的能力，以及图片上传支持。 - 增加 generate-report.ts 脚本，可生成静态 HTML 报告。 - 登录流程说明补全，支持小红书扫码登录和 Zion 项目账号管理。 - 输出结果新增 JSON 格式，优化多模式参数说明及异常处理指引。","fileCount":11,"zipByteSize":31559},{"version":"1.0.1","createdAt":"2026-05-24T17:49:44.126Z","changelog":"- Moved all TypeScript scripts to the new scripts/ directory for better organization. - Adjusted project setup: run npm install and scripts from the scripts/ directory instead of the root. - Cleaned up repository by removing legacy files from the root and updating usage instructions. - No functional changes to the skill itself; usage and outputs remain the same.","fileCount":11,"zipByteSize":30782},{"version":"1.0.0","createdAt":"2026-05-17T17:03:58.210Z","changelog":"xhs-catch v1.0.0 初始版本发布 - 支持按关键词批量采集小红书笔记，包括标题、正文、作者、数据指标、图片和一级评论。 - 通过 Kimi WebBridge 控制已登录浏览器自动执行采集任务。 - 输出结构化 Markdown 文件和可选可视化报告。 - 灵活参数选择：采集条数、是否采集评论、限定评论数量等。 - 文档提供前置检查、常见故障处理和完整用法说明。","fileCount":12,"zipByteSize":34757}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17arkb0bqe5mts9h543n7qa918440tv:zion-xhs-catch-skill","setupComplexity":"low","setupSteps":["Node.js workspace detected. Install dependencies securely: run `npm ci --ignore-scripts` to prevent post-install lifecycle triggers from running arbitrary code, then selectively audit the dependency tree.","Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-timqin-m-zion-xhs-catch-skill/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-timqin-m-zion-xhs-catch-skill/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-timqin-m-zion-xhs-catch-skill/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-timqin-m-zion-xhs-catch-skill/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-timqin-m-zion-xhs-catch-skill/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-timqin-m-zion-xhs-catch-skill/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T14:16:21.330Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-timqin-m-zion-xhs-catch-skill/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-timqin-m-zion-xhs-catch-skill/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-timqin-m-zion-xhs-catch-skill/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-timqin-m-zion-xhs-catch-skill/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-11T10:39:39.898Z","emptyReason":null},"readme":"Skill: zion-xhs-catch-skill\n\nOwner: timqin-m\n\nSummary: 小红书笔记采集工具。当用户需要从小红书按关键词搜索并批量采集笔记数据时，使用此 skill。 触发关键词：采集小红书、抓小红书、小红书搜索、小红书笔记、小红书数据、小红书竞品、小红书调研、小红书内容、小红书痛点、小红书用户反馈。 功能：基于 WebBridge 控制浏览器，采集笔记标题、正文、作者、点赞/收藏/评...\n\nTags: latest:1.0.6\n\nVersion history:\n\nv1.0.6 | 2026-06-01T07:44:44.910Z | user\n\nzihon-xhs-catch-skill v1.0.6 Changelog\n\n- 说明文档（SKILL.md）全面升级，突出一站式工作流与详细环境准备指南，优化新手引导。\n- 补充了 Kimi WebBridge 安装和浏览器插件安装的详细步骤。\n- 移除旧 skill-card.md，新增 scripts/package-lock.json 以锁定依赖版本，提升安装稳定性。\n- 增强安全与风控提示，强调账号和采集频率安全须知。\n- 明确输出格式与数据同步功能，整体文档表现更清晰、可用性提升。\n\nv1.0.5 | 2026-05-31T17:03:58.377Z | user\n\nChangelog for version 1.0.5:\n\n- Removed the file skill-card.md from the skill package.\n- Updated documentation in SKILL.md to clarify that「好痛 Howtone」同步 now requires a manually obtained Token, replacing the previous username/password registration and login process.\n- Adjusted step descriptions and command examples in SKILL.md related to「好痛 Howtone」同步流程, aligning them with the new Token-based workflow.\n- No functional or code-level changes outside of documentation and file cleanup.\n\nv1.0.4 | 2026-05-29T08:01:18.664Z | user\n\n**重大更新：提升风控安全性，新增防封禁风险提示。**\n\n- 新增安全风险与风控防封指南，强烈建议使用小号登录采集，禁止用主力/商业号，避免账号被封禁。\n- 明确建议单次采集数量控制在 10–20 条，并警示高频采集行为风险。\n- 说明内置真人模拟（随机延时、滚动），但无法保证零封禁风险。\n- 其他功能、参数、执行方式和数据结构未变。\n\nv1.0.3 | 2026-05-27T03:33:52.110Z | user\n\n- 移除 Playwright 相关采集模式，简化为仅支持 WebBridge 方式。\n- 删除 `crawl.ts` 和 `mcp-crawl.ts` 两个脚本文件。\n- 更新文档，明确仅保留 WebBridge 采集方案，调整描述和操作指引。\n- 增加详细的关键词设计说明，强调引导用户优化采集关键词。\n- 将同步目标项目名称调整为「好痛 Howtone」，统一文案。\n- 精简部分说明，聚焦结构化数据抓取及同步要点。\n\nv1.0.2 | 2026-05-24T17:56:04.735Z | user\n\nVersion 1.0.2\n\n- 新增 Playwright 直接模式与 MCP Extension 采集模式，支持三种采集方式。\n- 增加同步采集数据至弦外 Overtone Zion 项目的能力，以及图片上传支持。\n- 增加 generate-report.ts 脚本，可生成静态 HTML 报告。\n- 登录流程说明补全，支持小红书扫码登录和 Zion 项目账号管理。\n- 输出结果新增 JSON 格式，优化多模式参数说明及异常处理指引。\n\nv1.0.1 | 2026-05-24T17:49:44.126Z | user\n\n- Moved all TypeScript scripts to the new scripts/ directory for better organization.\n- Adjusted project setup: run npm install and scripts from the scripts/ directory instead of the root.\n- Cleaned up repository by removing legacy files from the root and updating usage instructions.\n- No functional changes to the skill itself; usage and outputs remain the same.\n\nv1.0.0 | 2026-05-17T17:03:58.210Z | user\n\nxhs-catch v1.0.0 初始版本发布\n\n- 支持按关键词批量采集小红书笔记，包括标题、正文、作者、数据指标、图片和一级评论。\n- 通过 Kimi WebBridge 控制已登录浏览器自动执行采集任务。\n- 输出结构化 Markdown 文件和可选可视化报告。\n- 灵活参数选择：采集条数、是否采集评论、限定评论数量等。\n- 文档提供前置检查、常见故障处理和完整用法说明。\n\nArchive index:\n\nArchive v1.0.6: 11 files, 27194 bytes\n\nFiles: scripts/generate-report.ts (14688b), scripts/login.ts (2473b), scripts/package-lock.json (11414b), scripts/package.json (405b), scripts/sync.ts (8242b), scripts/tsconfig.json (266b), scripts/webbridge-crawl.ts (17676b), scripts/zion-login.ts (2371b), skill-card.md (2793b), SKILL.md (7790b), _meta.json (139b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: xhs-catch\ndescription: |\n  小红书笔记采集工具。当用户需要从小红书按关键词搜索并批量采集笔记数据时，使用此 skill。\n\n  触发关键词：采集小红书、抓小红书、小红书搜索、小红书笔记、小红书数据、小红书竞品、小红书调研、小红书内容、小红书痛点、小红书用户反馈。\n\n  功能：基于 WebBridge 控制浏览器，采集笔记标题、正文、作者、点赞/收藏/评论数、图片 URL、一级评论。输出 JSON 原始数据 + HTML 可视化报告。可同步到「好痛 Howtone」做进一步分析。\n---\n\n# 📕 小红书笔记采集与痛点分析工具 (XHS Catch)\n\n> **欢迎使用「小红书采集与痛点分析」工具！**\n> 本工具基于 Kimi WebBridge，能模拟真人操作帮您批量抓取小红书相关关键词下的笔记数据（标题、正文、作者、图片、点赞/收藏及高赞评论等），并生成漂亮的 HTML 离线分析报告。您还可以一键上报数据到「好痛 Howtone」平台，享受 AI 自动分析、商机提炼与文案生成服务！\n\n---\n\n## 🚀 核心工作流\n```\n1. 关键词设计（精准提炼） ──> 2. WebBridge 自动环境就绪 ──> 3. 浏览器模拟真人采集\n                                                                       │\n5. 「好痛 Howtone」AI 洞察分析 ◀── 4. 自动生成 HTML 报告 & 一键同步 ◀──┘\n```\n\n---\n\n## 🛠️ 第一步：前置环境准备（只需一次）\n\n本工具依赖 Kimi WebBridge 操控浏览器。请按以下指南准备环境：\n\n### 1. 安装 Kimi WebBridge 后台服务\n- **Mac / Linux 用户**：\n  直接在终端运行以下命令：\n  ```bash\n  curl -fsSL https://cdn.kimi.com/webbridge/install.sh | bash\n  ```\n- **Windows 用户**：\n  在 PowerShell 中运行以下命令：\n  ```powershell\n  irm https://cdn.kimi.com/webbridge/install.ps1 | iex\n  ```\n\n### 2. 安装 Chrome 浏览器插件\n为了让服务操控您的真实浏览器，请务必安装以下插件：\n👉 [Chrome Web Store: Kimi WebBridge 插件下载](https://chromewebstore.google.com/detail/kimi-webbridge/fldmhceldgbpfpkbgopacenieobmligc)\n\n> 💡 **如何确认就绪？**\n> 1. 打开您的 Chrome 浏览器。\n> 2. 点击右上角的 Kimi WebBridge 插件图标，若显示 `已连接` (Connected) 即表示成功！\n> 3. 在浏览器中访问 [小红书官网](https://www.xiaohongshu.com) 并确认已登录您的账号（建议使用小号）。\n\n---\n\n## ⚠️ 重要安全提示（风控防封指南）\n1. **强烈建议使用小号！** 小红书具有极其严格的反爬虫与异常行为检测机制。高频、批量或自动化的采集行为极易触发风控，导致账号被**永久封禁**。**请务必使用不重要的测试账号（小号）进行登录与采集，切勿使用主力账号或商业账号！**\n2. **控制单次采集数量：** 单次采集建议限制在 10-20 条以内（`--limit=10` 或 `20`）。请勿高频连续运行脚本。\n3. **内置真人模拟：** 本工具虽然已内置了随机延时、真人上下滚动等反爬优化，但依然无法 100% 规避账号风险。\n\n---\n\n## 📦 项目依赖安装\n在首次使用前，进入 `scripts` 目录安装 Node.js 依赖：\n```bash\ncd scripts && npm install\n```\n   必须 `running: true` 且 `extension_connected: true`。\n\n2. **浏览器已登录小红书**\n   - 在 Chrome/Edge 访问 https://www.xiaohongshu.com 并登录\n\n3. **项目依赖**\n   ```bash\n   cd scripts && npm install\n   ```\n\n## 脚本说明\n\n| 脚本 | 说明 |\n|------|------|\n| `webbridge-crawl.ts` | 通过 WebBridge 控制用户真实浏览器采集 |\n| `login.ts` | 小红书扫码登录，保存 cookies.json |\n| `zion-login.ts` | 保存「好痛 Howtone」项目同步 Token |\n| `sync.ts` | 将采集数据同步到「好痛 Howtone」项目（含图片上传） |\n| `generate-report.ts` | 读取 output/*.json 生成静态 HTML 报告 |\n\n## 关键词设计（关键！先想清楚再采集）\n\n> ⚠️ **不要直接执行用户给的关键词。** 普通用户的关键词往往过于笼统（如\"护肤\"\"旅游\"），采集回来的数据噪音大、难以分析。AI 必须先引导用户把搜索意图转化为**具体、可采集、可分析**的关键词。\n\n### 引导用户明确采集目标\n\n通过 1-3 轮对话，帮用户把模糊需求转化为精准关键词：\n\n| 用户原始需求 | ❌ 直接执行 | ✅ 引导后关键词 |\n|-------------|-----------|---------------|\n| \"帮我看看护肤\" | `护肤`（太泛，结果杂乱） | `早C晚A 翻车` `油痘肌 烂脸修复` `A醇 脱皮` |\n| \"调研一下旅游\" | `旅游`（太泛） | `日本自由行 踩坑` `新疆自驾 避雷` `三亚 被坑` |\n| \"看看竞品\" | `竞品名`（可能搜不到） | `品牌名 吐槽` `品牌名 缺点` `品牌名 后悔` |\n| \"了解用户痛点\" | `产品名 痛点`（生硬） | `产品名 不好用` `产品名 避雷` `买了产品名 后悔` |\n\n### 关键词设计原则\n\n1. **具体场景 > 笼统品类**\n   - ❌ `护肤` → ✅ `油痘肌 刷酸 烂脸`\n   - ❌ `美食` → ✅ `北京 探店 踩雷`\n\n2. **情绪/结果词提高信息密度**\n   - 加 `翻车` `踩坑` `避雷` `后悔` `吐槽` `难用` `失败` 等词，更容易抓到真实用户反馈\n\n3. **多组关键词分别采集**\n   - 不要试图用一个词覆盖所有，分 2-3 组关键词采集，每组 10-20 条，质量远好于一组 50 条\n\n4. **先小规模验证**\n   - 先用 `--limit=5` 跑一组看看结果质量，确认关键词有效后再加大采集量\n\n### 执行采集\n\n```bash\ncd scripts\n\n# 基础用法\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=20\n\n# 不采评论\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=20 --no-comments\n\n# 限制评论数\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=20 --max-comments=10\n\n# 小规模验证关键词有效性\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=5\n```\n\n## 参数说明\n\n| 参数 | 说明 | 默认 |\n|------|------|------|\n| `--keyword` | 搜索关键词（必填） | - |\n| `--limit` | 采集数量上限，建议 ≤20 | 20 |\n| `--no-comments` | 不采集评论区 | 默认采集 |\n| `--max-comments` | 每篇最多评论数 | 20 |\n\n## 登录\n\n```bash\n# 小红书登录（扫码）\nnpx ts-node login.ts\n```\n\n## 输出\n\n- `output/关键词_YYYYMMDD.json` — JSON 格式原始数据（用于同步、二次分析）\n- `output/index.html` — 可视化报告（运行 `generate-report.ts` 生成，带筛选/搜索/导出）\n\n## 同步到「好痛 Howtone」（可选）\n\n> 如果用户需要**痛点分析、文案生成、数据洞察**等进阶功能，需要把数据同步到「好痛 Howtone」。\n\n**前提**：先在「好痛 Howtone」用户中心获取同步 Token\n\n```bash\n# 保存同步 Token\nnpx ts-node zion-login.ts --token=\"你的同步Token\"\n\n# 同步数据\nnpx ts-node sync.ts --file=output/关键词_YYYYMMDD.json\n```\n\n同步后，用户可在好痛 Howtone 中：\n- 自动提取痛点标签\n- 生成营销文案\n- 做竞品对比分析\n\n## 数据结构\n\n```typescript\ninterface XHSNote {\n  xhs_note_id: string;\n  title: string;\n  content: string;\n  author_name: string;\n  images: string[];\n  likes: number;\n  collects: number;\n  comments_count: number;\n  comments: { author: string; content: string; likes: number }[];\n  comments_extracted: number;\n  keyword: string;\n  source_url: string;\n  crawl_time: string;\n}\n```\n\n## 故障处理\n\n- **WebBridge 未运行**：`~/.kimi-webbridge/bin/kimi-webbridge start`\n- **数据为空**：检查浏览器登录状态，或减少 limit\n- **弹窗未弹出**：笔记未加载完，增大 limit 让预加载更充分\n- **Cookie 不存在**：先运行 `npx ts-node login.ts` 登录\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn712shh4h51zq0gs31jjeeqdn845kz6\",\n  \"slug\": \"zion-xhs-catch-skill\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1780299884910\n}\n\nFile v1.0.6:scripts/package-lock.json\n\n{\n  \"name\": \"zion-xhs-catch-skill\",\n  \"version\": \"1.0.0\",\n  \"lockfileVersion\": 3,\n  \"requires\": true,\n  \"packages\": {\n    \"\": {\n      \"name\": \"zion-xhs-catch-skill\",\n      \"version\": \"1.0.0\",\n      \"license\": \"ISC\",\n      \"dependencies\": {\n        \"@playwright/mcp\": \"^0.0.75\",\n        \"@types/node\": \"^25.7.0\",\n        \"playwright\": \"^1.60.0\",\n        \"ts-node\": \"^10.9.2\",\n        \"typescript\": \"^6.0.3\"\n      }\n    },\n    \"node_modules/@cspotcode/source-map-support\": {\n      \"version\": \"0.8.1\",\n      \"resolved\": \"https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz\",\n      \"integrity\": \"sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@jridgewell/trace-mapping\": \"0.3.9\"\n      },\n      \"engines\": {\n        \"node\": \">=12\"\n      }\n    },\n    \"node_modules/@jridgewell/resolve-uri\": {\n      \"version\": \"3.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz\",\n      \"integrity\": \"sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=6.0.0\"\n      }\n    },\n    \"node_modules/@jridgewell/sourcemap-codec\": {\n      \"version\": \"1.5.5\",\n      \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz\",\n      \"integrity\": \"sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@jridgewell/trace-mapping\": {\n      \"version\": \"0.3.9\",\n      \"resolved\": \"https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz\",\n      \"integrity\": \"sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@jridgewell/resolve-uri\": \"^3.0.3\",\n        \"@jridgewell/sourcemap-codec\": \"^1.4.10\"\n      }\n    },\n    \"node_modules/@playwright/mcp\": {\n      \"version\": \"0.0.75\",\n      \"resolved\": \"https://registry.npmjs.org/@playwright/mcp/-/mcp-0.0.75.tgz\",\n      \"integrity\": \"sha512-oBjzVXfEGZ9Ev45tKKQULNDVdF83B82lg0uPejEK3xsp/zWmdNdNVnPi032fmd/o20ZZXs+LX7cr77qRNbV4VA==\",\n      \"license\": \"Apache-2.0\",\n      \"dependencies\": {\n        \"playwright\": \"1.61.0-alpha-1778188671000\",\n        \"playwright-core\": \"1.61.0-alpha-1778188671000\"\n      },\n      \"bin\": {\n        \"playwright-mcp\": \"cli.js\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@playwright/mcp/node_modules/playwright\": {\n      \"version\": \"1.61.0-alpha-1778188671000\",\n      \"resolved\": \"https://registry.npmjs.org/playwright/-/playwright-1.61.0-alpha-1778188671000.tgz\",\n      \"integrity\": \"sha512-A6fFc7ExLRmvm0ZHqCyY2uHXSvEdpb8W+/HyIPK4ecRqNil8Mc1Vig1WFYoqk82x3+U9Qb571fQE95wgKqIQ1g==\",\n      \"license\": \"Apache-2.0\",\n      \"dependencies\": {\n        \"playwright-core\": \"1.61.0-alpha-1778188671000\"\n      },\n      \"bin\": {\n        \"playwright\": \"cli.js\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"optionalDependencies\": {\n        \"fsevents\": \"2.3.2\"\n      }\n    },\n    \"node_modules/@tsconfig/node10\": {\n      \"version\": \"1.0.12\",\n      \"resolved\": \"https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz\",\n      \"integrity\": \"sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@tsconfig/node12\": {\n      \"version\": \"1.0.11\",\n      \"resolved\": \"https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz\",\n      \"integrity\": \"sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@tsconfig/node14\": {\n      \"version\": \"1.0.3\",\n      \"resolved\": \"https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz\",\n      \"integrity\": \"sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@tsconfig/node16\": {\n      \"version\": \"1.0.4\",\n      \"resolved\": \"https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz\",\n      \"integrity\": \"sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@types/node\": {\n      \"version\": \"25.9.1\",\n      \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-25.9.1.tgz\",\n      \"integrity\": \"sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"undici-types\": \">=7.24.0 <7.24.7\"\n      }\n    },\n    \"node_modules/acorn\": {\n      \"version\": \"8.16.0\",\n      \"resolved\": \"https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz\",\n      \"integrity\": \"sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==\",\n      \"license\": \"MIT\",\n      \"bin\": {\n        \"acorn\": \"bin/acorn\"\n      },\n      \"engines\": {\n        \"node\": \">=0.4.0\"\n      }\n    },\n    \"node_modules/acorn-walk\": {\n      \"version\": \"8.3.5\",\n      \"resolved\": \"https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz\",\n      \"integrity\": \"sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"acorn\": \"^8.11.0\"\n      },\n      \"engines\": {\n        \"node\": \">=0.4.0\"\n      }\n    },\n    \"node_modules/arg\": {\n      \"version\": \"4.1.3\",\n      \"resolved\": \"https://registry.npmjs.org/arg/-/arg-4.1.3.tgz\",\n      \"integrity\": \"sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/create-require\": {\n      \"version\": \"1.1.1\",\n      \"resolved\": \"https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz\",\n      \"integrity\": \"sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/diff\": {\n      \"version\": \"4.0.4\",\n      \"resolved\": \"https://registry.npmjs.org/diff/-/diff-4.0.4.tgz\",\n      \"integrity\": \"sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==\",\n      \"license\": \"BSD-3-Clause\",\n      \"engines\": {\n        \"node\": \">=0.3.1\"\n      }\n    },\n    \"node_modules/fsevents\": {\n      \"version\": \"2.3.2\",\n      \"resolved\": \"https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz\",\n      \"integrity\": \"sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==\",\n      \"hasInstallScript\": true,\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"os\": [\n        \"darwin\"\n      ],\n      \"engines\": {\n        \"node\": \"^8.16.0 || ^10.6.0 || >=11.0.0\"\n      }\n    },\n    \"node_modules/make-error\": {\n      \"version\": \"1.3.6\",\n      \"resolved\": \"https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz\",\n      \"integrity\": \"sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==\",\n      \"license\": \"ISC\"\n    },\n    \"node_modules/playwright\": {\n      \"version\": \"1.60.0\",\n      \"resolved\": \"https://registry.npmjs.org/playwright/-/playwright-1.60.0.tgz\",\n      \"integrity\": \"sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==\",\n      \"license\": \"Apache-2.0\",\n      \"dependencies\": {\n        \"playwright-core\": \"1.60.0\"\n      },\n      \"bin\": {\n        \"playwright\": \"cli.js\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"optionalDependencies\": {\n        \"fsevents\": \"2.3.2\"\n      }\n    },\n    \"node_modules/playwright-core\": {\n      \"version\": \"1.61.0-alpha-1778188671000\",\n      \"resolved\": \"https://registry.npmjs.org/playwright-core/-/playwright-core-1.61.0-alpha-1778188671000.tgz\",\n      \"integrity\": \"sha512-nsw2Crz0uZS3IRHiEcOXUt+RaKB/Hna+GAD4oD6cPqCHfJfW77cJdgktC0jzp3Ndyv23EJI3bcWSqFIiqSNE5A==\",\n      \"license\": \"Apache-2.0\",\n      \"bin\": {\n        \"playwright-core\": \"cli.js\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/playwright/node_modules/playwright-core\": {\n      \"version\": \"1.60.0\",\n      \"resolved\": \"https://registry.npmjs.org/playwright-core/-/playwright-core-1.60.0.tgz\",\n      \"integrity\": \"sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==\",\n      \"license\": \"Apache-2.0\",\n      \"bin\": {\n        \"playwright-core\": \"cli.js\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/ts-node\": {\n      \"version\": \"10.9.2\",\n      \"resolved\": \"https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz\",\n      \"integrity\": \"sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@cspotcode/source-map-support\": \"^0.8.0\",\n        \"@tsconfig/node10\": \"^1.0.7\",\n        \"@tsconfig/node12\": \"^1.0.7\",\n        \"@tsconfig/node14\": \"^1.0.0\",\n        \"@tsconfig/node16\": \"^1.0.2\",\n        \"acorn\": \"^8.4.1\",\n        \"acorn-walk\": \"^8.1.1\",\n        \"arg\": \"^4.1.0\",\n        \"create-require\": \"^1.1.0\",\n        \"diff\": \"^4.0.1\",\n        \"make-error\": \"^1.1.1\",\n        \"v8-compile-cache-lib\": \"^3.0.1\",\n        \"yn\": \"3.1.1\"\n      },\n      \"bin\": {\n        \"ts-node\": \"dist/bin.js\",\n        \"ts-node-cwd\": \"dist/bin-cwd.js\",\n        \"ts-node-esm\": \"dist/bin-esm.js\",\n        \"ts-node-script\": \"dist/bin-script.js\",\n        \"ts-node-transpile-only\": \"dist/bin-transpile.js\",\n        \"ts-script\": \"dist/bin-script-deprecated.js\"\n      },\n      \"peerDependencies\": {\n        \"@swc/core\": \">=1.2.50\",\n        \"@swc/wasm\": \">=1.2.50\",\n        \"@types/node\": \"*\",\n        \"typescript\": \">=2.7\"\n      },\n      \"peerDependenciesMeta\": {\n        \"@swc/core\": {\n          \"optional\": true\n        },\n        \"@swc/wasm\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/typescript\": {\n      \"version\": \"6.0.3\",\n      \"resolved\": \"https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz\",\n      \"integrity\": \"sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==\",\n      \"license\": \"Apache-2.0\",\n      \"bin\": {\n        \"tsc\": \"bin/tsc\",\n        \"tsserver\": \"bin/tsserver\"\n      },\n      \"engines\": {\n        \"node\": \">=14.17\"\n      }\n    },\n    \"node_modules/undici-types\": {\n      \"version\": \"7.24.6\",\n      \"resolved\": \"https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz\",\n      \"integrity\": \"sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/v8-compile-cache-lib\": {\n      \"version\": \"3.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz\",\n      \"integrity\": \"sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/yn\": {\n      \"version\": \"3.1.1\",\n      \"resolved\": \"https://registry.npmjs.org/yn/-/yn-3.1.1.tgz\",\n      \"integrity\": \"sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=6\"\n      }\n    }\n  }\n}\n\nFile v1.0.6:scripts/package.json\n\n{\n  \"name\": \"zion-xhs-catch-skill\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"dependencies\": {\n    \"@playwright/mcp\": \"^0.0.75\",\n    \"@types/node\": \"^25.7.0\",\n    \"playwright\": \"^1.60.0\",\n    \"ts-node\": \"^10.9.2\",\n    \"typescript\": \"^6.0.3\"\n  }\n}\n\nFile v1.0.6:scripts/tsconfig.json\n\n{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"module\": \"commonjs\",\n    \"lib\": [\"ES2020\", \"DOM\"],\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true,\n    \"strict\": false,\n    \"resolveJsonModule\": true,\n    \"types\": [\"node\"]\n  },\n  \"include\": [\"**/*.ts\"]\n}\n\nFile v1.0.6:skill-card.md\n\n## Description:\n\nXiaohongshu note collection tool that helps agents search by keyword, collect note text, authors, engagement counts, image URLs, and top-level comments, then output raw JSON and an HTML report.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[timqin-m](https://clawhub.ai/user/timqin-m)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users, developers, and market researchers use this skill to guide keyword design, collect Xiaohongshu posts and comments through a logged-in browser, generate local reports, and optionally sync collected data to Howtone/Zion for further analysis.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Logged-in browser automation can expose a Xiaohongshu account to platform enforcement or unwanted account activity.\n\nMitigation: Use an isolated browser profile and a non-critical account, keep collection volumes low, and review each run before execution.\n\nRisk: The skill may run a remote Kimi WebBridge installer pipeline before controlling the local browser.\n\nMitigation: Independently inspect and trust the installer source before running it, or install WebBridge through a separately verified process.\n\nRisk: Howtone/Zion sync can upload scraped text, comments, image content, and credentials-related data paths outside the local workspace.\n\nMitigation: Do not sync sensitive or private scraped data, review the destination project configuration, and remove plaintext or sibling credential fallback behavior before production use.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/timqin-m/skills/zion-xhs-catch-skill)\n- [Kimi WebBridge installer for macOS/Linux](https://cdn.kimi.com/webbridge/install.sh)\n- [Kimi WebBridge installer for Windows](https://cdn.kimi.com/webbridge/install.ps1)\n- [Kimi WebBridge Chrome extension](https://chromewebstore.google.com/detail/kimi-webbridge/fldmhceldgbpfpkbgopacenieobmligc)\n- [Xiaohongshu website](https://www.xiaohongshu.com)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance, JSON, files]\n\n**Output Format:** [Markdown guidance with shell commands; generated JSON data files and a local HTML report]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Outputs include output/<keyword>_<YYYYMMDD>.json and output/index.html; optional sync uploads collected records and up to three images per note to Howtone/Zion.]\n\n## Skill Version(s):\n\n1.0.6 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.5: 10 files, 20811 bytes\n\nFiles: scripts/generate-report.ts (14688b), scripts/login.ts (2473b), scripts/package.json (405b), scripts/sync.ts (8027b), scripts/tsconfig.json (271b), scripts/webbridge-crawl.ts (12497b), scripts/zion-login.ts (2251b), skill-card.md (2326b), SKILL.md (6048b), _meta.json (139b)\n\nFile v1.0.5:SKILL.md\n\n---\nname: xhs-catch\ndescription: |\n  小红书笔记采集工具。当用户需要从小红书按关键词搜索并批量采集笔记数据时，使用此 skill。\n\n  触发关键词：采集小红书、抓小红书、小红书搜索、小红书笔记、小红书数据、小红书竞品、小红书调研、小红书内容、小红书痛点、小红书用户反馈。\n\n  功能：基于 WebBridge 控制浏览器，采集笔记标题、正文、作者、点赞/收藏/评论数、图片 URL、一级评论。输出 JSON 原始数据 + HTML 可视化报告。可同步到「好痛 Howtone」做进一步分析。\n---\n\n# 小红书采集 Skill\n\n> ⚠️ **重要安全提示（风控防封指南）**\n> 1. **强烈建议使用小号！** 小红书具有极其严格的反爬虫与异常行为检测机制。高频、批量或自动化的采集行为极易触发风控，导致账号被**永久封禁**。**请务必使用不重要的测试账号（小号）进行登录与采集，切勿使用主力账号或商业账号！**\n> 2. **控制单次采集数量：** 单次采集建议限制在 10-20 条以内（`--limit=10` 或 `20`）。请勿高频连续运行脚本。\n> 3. **内置真人模拟：** 本工具虽然已内置了随机延时、真人上下滚动等反爬优化，但依然无法 100% 规避账号风险。\n\n按关键词搜索小红书笔记，批量采集结构化数据。输出 JSON + HTML 报告。可选同步到「好痛 Howtone」。\n\n## 前置检查\n\n1. **WebBridge 状态**\n   ```bash\n   ~/.kimi-webbridge/bin/kimi-webbridge status\n   ```\n   必须 `running: true` 且 `extension_connected: true`。\n\n2. **浏览器已登录小红书**\n   - 在 Chrome/Edge 访问 https://www.xiaohongshu.com 并登录\n\n3. **项目依赖**\n   ```bash\n   cd scripts && npm install\n   ```\n\n## 脚本说明\n\n| 脚本 | 说明 |\n|------|------|\n| `webbridge-crawl.ts` | 通过 WebBridge 控制用户真实浏览器采集 |\n| `login.ts` | 小红书扫码登录，保存 cookies.json |\n| `zion-login.ts` | 保存「好痛 Howtone」项目同步 Token |\n| `sync.ts` | 将采集数据同步到「好痛 Howtone」项目（含图片上传） |\n| `generate-report.ts` | 读取 output/*.json 生成静态 HTML 报告 |\n\n## 关键词设计（关键！先想清楚再采集）\n\n> ⚠️ **不要直接执行用户给的关键词。** 普通用户的关键词往往过于笼统（如\"护肤\"\"旅游\"），采集回来的数据噪音大、难以分析。AI 必须先引导用户把搜索意图转化为**具体、可采集、可分析**的关键词。\n\n### 引导用户明确采集目标\n\n通过 1-3 轮对话，帮用户把模糊需求转化为精准关键词：\n\n| 用户原始需求 | ❌ 直接执行 | ✅ 引导后关键词 |\n|-------------|-----------|---------------|\n| \"帮我看看护肤\" | `护肤`（太泛，结果杂乱） | `早C晚A 翻车` `油痘肌 烂脸修复` `A醇 脱皮` |\n| \"调研一下旅游\" | `旅游`（太泛） | `日本自由行 踩坑` `新疆自驾 避雷` `三亚 被坑` |\n| \"看看竞品\" | `竞品名`（可能搜不到） | `品牌名 吐槽` `品牌名 缺点` `品牌名 后悔` |\n| \"了解用户痛点\" | `产品名 痛点`（生硬） | `产品名 不好用` `产品名 避雷` `买了产品名 后悔` |\n\n### 关键词设计原则\n\n1. **具体场景 > 笼统品类**\n   - ❌ `护肤` → ✅ `油痘肌 刷酸 烂脸`\n   - ❌ `美食` → ✅ `北京 探店 踩雷`\n\n2. **情绪/结果词提高信息密度**\n   - 加 `翻车` `踩坑` `避雷` `后悔` `吐槽` `难用` `失败` 等词，更容易抓到真实用户反馈\n\n3. **多组关键词分别采集**\n   - 不要试图用一个词覆盖所有，分 2-3 组关键词采集，每组 10-20 条，质量远好于一组 50 条\n\n4. **先小规模验证**\n   - 先用 `--limit=5` 跑一组看看结果质量，确认关键词有效后再加大采集量\n\n### 执行采集\n\n```bash\ncd scripts\n\n# 基础用法\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=20\n\n# 不采评论\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=20 --no-comments\n\n# 限制评论数\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=20 --max-comments=10\n\n# 小规模验证关键词有效性\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=5\n```\n\n## 参数说明\n\n| 参数 | 说明 | 默认 |\n|------|------|------|\n| `--keyword` | 搜索关键词（必填） | - |\n| `--limit` | 采集数量上限，建议 ≤20 | 20 |\n| `--no-comments` | 不采集评论区 | 默认采集 |\n| `--max-comments` | 每篇最多评论数 | 20 |\n\n## 登录\n\n```bash\n# 小红书登录（扫码）\nnpx ts-node login.ts\n```\n\n## 输出\n\n- `output/关键词_YYYYMMDD.json` — JSON 格式原始数据（用于同步、二次分析）\n- `output/index.html` — 可视化报告（运行 `generate-report.ts` 生成，带筛选/搜索/导出）\n\n## 同步到「好痛 Howtone」（可选）\n\n> 如果用户需要**痛点分析、文案生成、数据洞察**等进阶功能，需要把数据同步到「好痛 Howtone」。\n\n**前提**：先在「好痛 Howtone」用户中心获取同步 Token\n\n```bash\n# 保存同步 Token\nnpx ts-node zion-login.ts --token=\"你的同步Token\"\n\n# 同步数据\nnpx ts-node sync.ts --file=output/关键词_YYYYMMDD.json\n```\n\n同步后，用户可在好痛 Howtone 中：\n- 自动提取痛点标签\n- 生成营销文案\n- 做竞品对比分析\n\n## 数据结构\n\n```typescript\ninterface XHSNote {\n  xhs_note_id: string;\n  title: string;\n  content: string;\n  author_name: string;\n  images: string[];\n  likes: number;\n  collects: number;\n  comments_count: number;\n  comments: { author: string; content: string; likes: number }[];\n  comments_extracted: number;\n  keyword: string;\n  source_url: string;\n  crawl_time: string;\n}\n```\n\n## 故障处理\n\n- **WebBridge 未运行**：`~/.kimi-webbridge/bin/kimi-webbridge start`\n- **数据为空**：检查浏览器登录状态，或减少 limit\n- **弹窗未弹出**：笔记未加载完，增大 limit 让预加载更充分\n- **Cookie 不存在**：先运行 `npx ts-node login.ts` 登录\n\nFile v1.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn712shh4h51zq0gs31jjeeqdn845kz6\",\n  \"slug\": \"zion-xhs-catch-skill\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1780247038377\n}\n\nFile v1.0.5:scripts/package.json\n\n{\n  \"name\": \"zion-xhs-catch-skill\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"dependencies\": {\n    \"@playwright/mcp\": \"^0.0.75\",\n    \"@types/node\": \"^25.7.0\",\n    \"playwright\": \"^1.60.0\",\n    \"ts-node\": \"^10.9.2\",\n    \"typescript\": \"^6.0.3\"\n  }\n}\n\nFile v1.0.5:scripts/tsconfig.json\n\n{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"module\": \"commonjs\",\n    \"lib\": [\"ES2020\", \"DOM\"],\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true,\n    \"strict\": false,\n    \"resolveJsonModule\": true,\n    \"types\": [\"node\"]\n  },\n  \"include\": [\"scripts/**/*\"]\n}\n\nFile v1.0.5:skill-card.md\n\n## Description: <br>\nCollects Xiaohongshu notes by keyword through a browser workflow and produces structured JSON data plus a static HTML report, with optional sync to Howtone for further analysis. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[timqin-m](https://clawhub.ai/user/timqin-m) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nResearchers, marketers, and product teams use this skill to gather Xiaohongshu search results, comments, engagement counts, and images for user-feedback, competitor, and content research. The skill guides the agent to refine keywords before running collection so the resulting dataset is more focused. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill controls a logged-in browser to scrape Xiaohongshu, which may violate platform rules or trigger account enforcement. <br>\nMitigation: Review the platform terms before use, use only low-value test accounts, keep runs small, and avoid high-frequency collection. <br>\nRisk: Optional sync can export scraped content, images, and a stored Howtone/Zion token to an external backend. <br>\nMitigation: Skip sync unless it is needed, avoid sensitive data, use revocable or short-lived tokens where possible, and remove stored credentials after use. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/timqin-m/zion-xhs-catch-skill) <br>\n- [Xiaohongshu](https://www.xiaohongshu.com) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with shell commands; generated artifacts are JSON data files and a static HTML report.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [The collection workflow requires a running WebBridge browser session and a logged-in Xiaohongshu account; optional sync requires a Howtone/Zion token.] <br>\n\n## Skill Version(s): <br>\n1.0.5 (source: ClawHub release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.4: 10 files, 21250 bytes\n\nFiles: scripts/generate-report.ts (14688b), scripts/login.ts (2473b), scripts/package.json (405b), scripts/sync.ts (8027b), scripts/tsconfig.json (271b), scripts/webbridge-crawl.ts (12497b), scripts/zion-login.ts (3245b), skill-card.md (2467b), SKILL.md (6151b), _meta.json (139b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: xhs-catch\ndescription: |\n  小红书笔记采集工具。当用户需要从小红书按关键词搜索并批量采集笔记数据时，使用此 skill。\n\n  触发关键词：采集小红书、抓小红书、小红书搜索、小红书笔记、小红书数据、小红书竞品、小红书调研、小红书内容、小红书痛点、小红书用户反馈。\n\n  功能：基于 WebBridge 控制浏览器，采集笔记标题、正文、作者、点赞/收藏/评论数、图片 URL、一级评论。输出 JSON 原始数据 + HTML 可视化报告。可同步到「好痛 Howtone」做进一步分析。\n---\n\n# 小红书采集 Skill\n\n> ⚠️ **重要安全提示（风控防封指南）**\n> 1. **强烈建议使用小号！** 小红书具有极其严格的反爬虫与异常行为检测机制。高频、批量或自动化的采集行为极易触发风控，导致账号被**永久封禁**。**请务必使用不重要的测试账号（小号）进行登录与采集，切勿使用主力账号或商业账号！**\n> 2. **控制单次采集数量：** 单次采集建议限制在 10-20 条以内（`--limit=10` 或 `20`）。请勿高频连续运行脚本。\n> 3. **内置真人模拟：** 本工具虽然已内置了随机延时、真人上下滚动等反爬优化，但依然无法 100% 规避账号风险。\n\n按关键词搜索小红书笔记，批量采集结构化数据。输出 JSON + HTML 报告。可选同步到「好痛 Howtone」。\n\n## 前置检查\n\n1. **WebBridge 状态**\n   ```bash\n   ~/.kimi-webbridge/bin/kimi-webbridge status\n   ```\n   必须 `running: true` 且 `extension_connected: true`。\n\n2. **浏览器已登录小红书**\n   - 在 Chrome/Edge 访问 https://www.xiaohongshu.com 并登录\n\n3. **项目依赖**\n   ```bash\n   cd scripts && npm install\n   ```\n\n## 脚本说明\n\n| 脚本 | 说明 |\n|------|------|\n| `webbridge-crawl.ts` | 通过 WebBridge 控制用户真实浏览器采集 |\n| `login.ts` | 小红书扫码登录，保存 cookies.json |\n| `zion-login.ts` | 登录「好痛 Howtone」项目，保存 JWT Token |\n| `sync.ts` | 将采集数据同步到「好痛 Howtone」项目（含图片上传） |\n| `generate-report.ts` | 读取 output/*.json 生成静态 HTML 报告 |\n\n## 关键词设计（关键！先想清楚再采集）\n\n> ⚠️ **不要直接执行用户给的关键词。** 普通用户的关键词往往过于笼统（如\"护肤\"\"旅游\"），采集回来的数据噪音大、难以分析。AI 必须先引导用户把搜索意图转化为**具体、可采集、可分析**的关键词。\n\n### 引导用户明确采集目标\n\n通过 1-3 轮对话，帮用户把模糊需求转化为精准关键词：\n\n| 用户原始需求 | ❌ 直接执行 | ✅ 引导后关键词 |\n|-------------|-----------|---------------|\n| \"帮我看看护肤\" | `护肤`（太泛，结果杂乱） | `早C晚A 翻车` `油痘肌 烂脸修复` `A醇 脱皮` |\n| \"调研一下旅游\" | `旅游`（太泛） | `日本自由行 踩坑` `新疆自驾 避雷` `三亚 被坑` |\n| \"看看竞品\" | `竞品名`（可能搜不到） | `品牌名 吐槽` `品牌名 缺点` `品牌名 后悔` |\n| \"了解用户痛点\" | `产品名 痛点`（生硬） | `产品名 不好用` `产品名 避雷` `买了产品名 后悔` |\n\n### 关键词设计原则\n\n1. **具体场景 > 笼统品类**\n   - ❌ `护肤` → ✅ `油痘肌 刷酸 烂脸`\n   - ❌ `美食` → ✅ `北京 探店 踩雷`\n\n2. **情绪/结果词提高信息密度**\n   - 加 `翻车` `踩坑` `避雷` `后悔` `吐槽` `难用` `失败` 等词，更容易抓到真实用户反馈\n\n3. **多组关键词分别采集**\n   - 不要试图用一个词覆盖所有，分 2-3 组关键词采集，每组 10-20 条，质量远好于一组 50 条\n\n4. **先小规模验证**\n   - 先用 `--limit=5` 跑一组看看结果质量，确认关键词有效后再加大采集量\n\n### 执行采集\n\n```bash\ncd scripts\n\n# 基础用法\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=20\n\n# 不采评论\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=20 --no-comments\n\n# 限制评论数\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=20 --max-comments=10\n\n# 小规模验证关键词有效性\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=5\n```\n\n## 参数说明\n\n| 参数 | 说明 | 默认 |\n|------|------|------|\n| `--keyword` | 搜索关键词（必填） | - |\n| `--limit` | 采集数量上限，建议 ≤20 | 20 |\n| `--no-comments` | 不采集评论区 | 默认采集 |\n| `--max-comments` | 每篇最多评论数 | 20 |\n\n## 登录\n\n```bash\n# 小红书登录（扫码）\nnpx ts-node login.ts\n```\n\n## 输出\n\n- `output/关键词_YYYYMMDD.json` — JSON 格式原始数据（用于同步、二次分析）\n- `output/index.html` — 可视化报告（运行 `generate-report.ts` 生成，带筛选/搜索/导出）\n\n## 同步到「好痛 Howtone」（可选）\n\n> 如果用户需要**痛点分析、文案生成、数据洞察**等进阶功能，需要把数据同步到「好痛 Howtone」。\n\n**前提**：先注册/登录好痛 Howtone 账户\n\n```bash\n# 注册\nnpx ts-node zion-login.ts --username=\"新用户\" --password=\"密码\" --register\n\n# 登录（保存 JWT Token）\nnpx ts-node zion-login.ts --username=\"用户名\" --password=\"密码\"\n\n# 同步数据\nnpx ts-node sync.ts --file=output/关键词_YYYYMMDD.json\n```\n\n同步后，用户可在好痛 Howtone 中：\n- 自动提取痛点标签\n- 生成营销文案\n- 做竞品对比分析\n\n## 数据结构\n\n```typescript\ninterface XHSNote {\n  xhs_note_id: string;\n  title: string;\n  content: string;\n  author_name: string;\n  images: string[];\n  likes: number;\n  collects: number;\n  comments_count: number;\n  comments: { author: string; content: string; likes: number }[];\n  comments_extracted: number;\n  keyword: string;\n  source_url: string;\n  crawl_time: string;\n}\n```\n\n## 故障处理\n\n- **WebBridge 未运行**：`~/.kimi-webbridge/bin/kimi-webbridge start`\n- **数据为空**：检查浏览器登录状态，或减少 limit\n- **弹窗未弹出**：笔记未加载完，增大 limit 让预加载更充分\n- **Cookie 不存在**：先运行 `npx ts-node login.ts` 登录\n\nFile v1.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn712shh4h51zq0gs31jjeeqdn845kz6\",\n  \"slug\": \"zion-xhs-catch-skill\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1780041678664\n}\n\nFile v1.0.4:scripts/package.json\n\n{\n  \"name\": \"zion-xhs-catch-skill\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"dependencies\": {\n    \"@playwright/mcp\": \"^0.0.75\",\n    \"@types/node\": \"^25.7.0\",\n    \"playwright\": \"^1.60.0\",\n    \"ts-node\": \"^10.9.2\",\n    \"typescript\": \"^6.0.3\"\n  }\n}\n\nFile v1.0.4:scripts/tsconfig.json\n\n{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"module\": \"commonjs\",\n    \"lib\": [\"ES2020\", \"DOM\"],\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true,\n    \"strict\": false,\n    \"resolveJsonModule\": true,\n    \"types\": [\"node\"]\n  },\n  \"include\": [\"scripts/**/*\"]\n}\n\nFile v1.0.4:skill-card.md\n\n## Description: <br>\nCollects Xiaohongshu notes by keyword through a logged-in browser workflow, produces structured JSON and an HTML report, and can optionally sync results to Howtone/Zion for analysis. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[timqin-m](https://clawhub.ai/user/timqin-m) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and developers use this skill to refine Xiaohongshu research keywords, collect posts and comments from a logged-in browser session, and create local reports or optional Howtone/Zion analysis inputs. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Automated Xiaohongshu collection can trigger platform risk controls or account bans. <br>\nMitigation: Use only a disposable account, keep collection limits low, and avoid frequent repeated runs. <br>\nRisk: The skill stores session cookies and Howtone/Zion credentials on disk and can reuse credentials from a sibling project. <br>\nMitigation: Keep cookies.json and .zion/credentials.yaml out of git and shared folders, use non-critical credentials, and remove or audit the sibling-project credential fallback before use. <br>\nRisk: Optional sync can send scraped notes, comments, and images to the Howtone/Zion backend. <br>\nMitigation: Leave sync disabled unless the user has reviewed the destination and is comfortable uploading the collected data. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/timqin-m/zion-xhs-catch-skill) <br>\n- [Publisher profile](https://clawhub.ai/user/timqin-m) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, shell commands, configuration, code, JSON, HTML] <br>\n**Output Format:** [Markdown guidance with TypeScript command examples; generated artifacts are JSON data files and a static HTML report.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May store browser cookies and Howtone/Zion credentials locally; optional sync can upload scraped notes, comments, and images to an external backend.] <br>\n\n## Skill Version(s): <br>\n1.0.4 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.3: 10 files, 20423 bytes\n\nFiles: scripts/generate-report.ts (14688b), scripts/login.ts (2473b), scripts/package.json (405b), scripts/sync.ts (8027b), scripts/tsconfig.json (271b), scripts/webbridge-crawl.ts (10537b), scripts/zion-login.ts (3245b), skill-card.md (2539b), SKILL.md (5473b), _meta.json (139b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: xhs-catch\ndescription: |\n  小红书笔记采集工具。当用户需要从小红书按关键词搜索并批量采集笔记数据时，使用此 skill。\n\n  触发关键词：采集小红书、抓小红书、小红书搜索、小红书笔记、小红书数据、小红书竞品、小红书调研、小红书内容、小红书痛点、小红书用户反馈。\n\n  功能：基于 WebBridge 控制浏览器，采集笔记标题、正文、作者、点赞/收藏/评论数、图片 URL、一级评论。输出 JSON 原始数据 + HTML 可视化报告。可同步到「好痛 Howtone」做进一步分析。\n---\n\n# 小红书采集 Skill\n\n按关键词搜索小红书笔记，批量采集结构化数据。输出 JSON + HTML 报告。可选同步到「好痛 Howtone」。\n\n## 前置检查\n\n1. **WebBridge 状态**\n   ```bash\n   ~/.kimi-webbridge/bin/kimi-webbridge status\n   ```\n   必须 `running: true` 且 `extension_connected: true`。\n\n2. **浏览器已登录小红书**\n   - 在 Chrome/Edge 访问 https://www.xiaohongshu.com 并登录\n\n3. **项目依赖**\n   ```bash\n   cd scripts && npm install\n   ```\n\n## 脚本说明\n\n| 脚本 | 说明 |\n|------|------|\n| `webbridge-crawl.ts` | 通过 WebBridge 控制用户真实浏览器采集 |\n| `login.ts` | 小红书扫码登录，保存 cookies.json |\n| `zion-login.ts` | 登录「好痛 Howtone」项目，保存 JWT Token |\n| `sync.ts` | 将采集数据同步到「好痛 Howtone」项目（含图片上传） |\n| `generate-report.ts` | 读取 output/*.json 生成静态 HTML 报告 |\n\n## 关键词设计（关键！先想清楚再采集）\n\n> ⚠️ **不要直接执行用户给的关键词。** 普通用户的关键词往往过于笼统（如\"护肤\"\"旅游\"），采集回来的数据噪音大、难以分析。AI 必须先引导用户把搜索意图转化为**具体、可采集、可分析**的关键词。\n\n### 引导用户明确采集目标\n\n通过 1-3 轮对话，帮用户把模糊需求转化为精准关键词：\n\n| 用户原始需求 | ❌ 直接执行 | ✅ 引导后关键词 |\n|-------------|-----------|---------------|\n| \"帮我看看护肤\" | `护肤`（太泛，结果杂乱） | `早C晚A 翻车` `油痘肌 烂脸修复` `A醇 脱皮` |\n| \"调研一下旅游\" | `旅游`（太泛） | `日本自由行 踩坑` `新疆自驾 避雷` `三亚 被坑` |\n| \"看看竞品\" | `竞品名`（可能搜不到） | `品牌名 吐槽` `品牌名 缺点` `品牌名 后悔` |\n| \"了解用户痛点\" | `产品名 痛点`（生硬） | `产品名 不好用` `产品名 避雷` `买了产品名 后悔` |\n\n### 关键词设计原则\n\n1. **具体场景 > 笼统品类**\n   - ❌ `护肤` → ✅ `油痘肌 刷酸 烂脸`\n   - ❌ `美食` → ✅ `北京 探店 踩雷`\n\n2. **情绪/结果词提高信息密度**\n   - 加 `翻车` `踩坑` `避雷` `后悔` `吐槽` `难用` `失败` 等词，更容易抓到真实用户反馈\n\n3. **多组关键词分别采集**\n   - 不要试图用一个词覆盖所有，分 2-3 组关键词采集，每组 10-20 条，质量远好于一组 50 条\n\n4. **先小规模验证**\n   - 先用 `--limit=5` 跑一组看看结果质量，确认关键词有效后再加大采集量\n\n### 执行采集\n\n```bash\ncd scripts\n\n# 基础用法\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=20\n\n# 不采评论\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=20 --no-comments\n\n# 限制评论数\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=20 --max-comments=10\n\n# 小规模验证关键词有效性\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=5\n```\n\n## 参数说明\n\n| 参数 | 说明 | 默认 |\n|------|------|------|\n| `--keyword` | 搜索关键词（必填） | - |\n| `--limit` | 采集数量上限，建议 ≤20 | 20 |\n| `--no-comments` | 不采集评论区 | 默认采集 |\n| `--max-comments` | 每篇最多评论数 | 20 |\n\n## 登录\n\n```bash\n# 小红书登录（扫码）\nnpx ts-node login.ts\n```\n\n## 输出\n\n- `output/关键词_YYYYMMDD.json` — JSON 格式原始数据（用于同步、二次分析）\n- `output/index.html` — 可视化报告（运行 `generate-report.ts` 生成，带筛选/搜索/导出）\n\n## 同步到「好痛 Howtone」（可选）\n\n> 如果用户需要**痛点分析、文案生成、数据洞察**等进阶功能，需要把数据同步到「好痛 Howtone」。\n\n**前提**：先注册/登录好痛 Howtone 账户\n\n```bash\n# 注册\nnpx ts-node zion-login.ts --username=\"新用户\" --password=\"密码\" --register\n\n# 登录（保存 JWT Token）\nnpx ts-node zion-login.ts --username=\"用户名\" --password=\"密码\"\n\n# 同步数据\nnpx ts-node sync.ts --file=output/关键词_YYYYMMDD.json\n```\n\n同步后，用户可在好痛 Howtone 中：\n- 自动提取痛点标签\n- 生成营销文案\n- 做竞品对比分析\n\n## 数据结构\n\n```typescript\ninterface XHSNote {\n  xhs_note_id: string;\n  title: string;\n  content: string;\n  author_name: string;\n  images: string[];\n  likes: number;\n  collects: number;\n  comments_count: number;\n  comments: { author: string; content: string; likes: number }[];\n  comments_extracted: number;\n  keyword: string;\n  source_url: string;\n  crawl_time: string;\n}\n```\n\n## 故障处理\n\n- **WebBridge 未运行**：`~/.kimi-webbridge/bin/kimi-webbridge start`\n- **数据为空**：检查浏览器登录状态，或减少 limit\n- **弹窗未弹出**：笔记未加载完，增大 limit 让预加载更充分\n- **Cookie 不存在**：先运行 `npx ts-node login.ts` 登录\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn712shh4h51zq0gs31jjeeqdn845kz6\",\n  \"slug\": \"zion-xhs-catch-skill\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1779852832110\n}\n\nFile v1.0.3:scripts/package.json\n\n{\n  \"name\": \"zion-xhs-catch-skill\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"dependencies\": {\n    \"@playwright/mcp\": \"^0.0.75\",\n    \"@types/node\": \"^25.7.0\",\n    \"playwright\": \"^1.60.0\",\n    \"ts-node\": \"^10.9.2\",\n    \"typescript\": \"^6.0.3\"\n  }\n}\n\nFile v1.0.3:scripts/tsconfig.json\n\n{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"module\": \"commonjs\",\n    \"lib\": [\"ES2020\", \"DOM\"],\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true,\n    \"strict\": false,\n    \"resolveJsonModule\": true,\n    \"types\": [\"node\"]\n  },\n  \"include\": [\"scripts/**/*\"]\n}\n\nFile v1.0.3:skill-card.md\n\n## Description: <br>\nCollects Xiaohongshu notes by keyword through a logged-in browser using WebBridge, capturing note text, author, engagement counts, image URLs, and optional first-level comments into local JSON data and an HTML report. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[timqin-m](https://clawhub.ai/user/timqin-m) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users, analysts, and developers use this skill to guide Xiaohongshu keyword design, run collection scripts, review structured note data, and optionally sync collected results to Howtone/Zion for further analysis. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill collects Xiaohongshu content from a logged-in browser and stores results locally. <br>\nMitigation: Install and run it only when the user deliberately wants this collection, and review the collected fields before retaining or sharing output files. <br>\nRisk: Login and sync flows can create persistent local credentials such as cookies.json and .zion/credentials.yaml. <br>\nMitigation: Avoid passing real passwords through command-line flags, restrict access to credential files, and delete or rotate them when collection is complete. <br>\nRisk: Optional Howtone/Zion sync can upload scraped data and images to a cloud service. <br>\nMitigation: Verify the service identity, endpoint, uploaded fields, and retention policy before running sync, and skip sync unless data is intended to leave the machine. <br>\n\n\n## Reference(s): <br>\n- [ClawHub release page](https://clawhub.ai/timqin-m/zion-xhs-catch-skill) <br>\n- [Xiaohongshu](https://www.xiaohongshu.com) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, shell commands, configuration, code, text] <br>\n**Output Format:** [Markdown guidance with inline shell commands; generated local JSON data files and a static HTML report] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Can include scraped note metadata, image URLs, engagement counts, comments, local cookies, local Zion credentials, and optional cloud-synced data.] <br>\n\n## Skill Version(s): <br>\n1.0.3 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.2: 11 files, 31559 bytes\n\nFiles: scripts/crawl.ts (16236b), scripts/generate-report.ts (14688b), scripts/login.ts (2473b), scripts/mcp-crawl.ts (20461b), scripts/package.json (405b), scripts/sync.ts (8027b), scripts/tsconfig.json (271b), scripts/webbridge-crawl.ts (11952b), scripts/zion-login.ts (3245b), SKILL.md (4423b), _meta.json (139b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: xhs-catch\ndescription: |\n  小红书笔记采集工具。当用户需要从小红书按关键词搜索并批量采集笔记数据时，使用此 skill。\n\n  触发关键词：采集小红书、抓小红书、小红书搜索、小红书笔记、小红书数据、小红书竞品、小红书调研、小红书内容、小红书痛点、小红书用户反馈。\n\n  功能：基于 Kimi WebBridge / Playwright MCP / Playwright 直接模式控制浏览器，采集笔记标题、正文、作者、点赞/收藏/评论数、图片 URL、一级评论。支持同步到「弦外 Overtone」Zion BaaS 项目、生成静态 HTML 报告。\n---\n\n# 小红书采集 Skill\n\n按关键词搜索小红书笔记，批量采集结构化数据。支持三种采集模式 + Zion 同步 + 静态报告生成。\n\n## 前置检查\n\n1. **WebBridge 状态**（如使用 webbridge-crawl.ts）\n   ```bash\n   ~/.kimi-webbridge/bin/kimi-webbridge status\n   ```\n   必须 `running: true` 且 `extension_connected: true`。\n\n2. **浏览器已登录小红书**\n   - 在 Chrome/Edge 访问 https://www.xiaohongshu.com 并登录\n\n3. **项目依赖**\n   ```bash\n   cd scripts && npm install\n   ```\n\n## 脚本说明\n\n| 脚本 | 说明 |\n|------|------|\n| `webbridge-crawl.ts` | **推荐**。通过 Kimi WebBridge 控制用户真实浏览器采集 |\n| `crawl.ts` | Playwright 直接模式，独立浏览器实例 |\n| `mcp-crawl.ts` | Playwright MCP Extension 模式 |\n| `login.ts` | 小红书扫码登录，保存 cookies.json |\n| `zion-login.ts` | 登录「弦外 Overtone」Zion 项目，保存 JWT Token |\n| `sync.ts` | 将采集数据同步到「弦外 Overtone」Zion 项目（含图片上传） |\n| `generate-report.ts` | 读取 output/*.json 生成静态 HTML 报告 |\n\n## 执行采集\n\n### 方式一：WebBridge 模式（推荐）\n\n```bash\ncd scripts\n\n# 基础用法\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=20\n\n# 不采评论\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=20 --no-comments\n\n# 限制评论数\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=20 --max-comments=10\n```\n\n### 方式二：Playwright 直接模式\n\n```bash\ncd scripts\n\n# 基础用法\nnpx ts-node crawl.ts --keyword=\"关键词\" --limit=20\n\n# 无头模式 + 同步到 Zion\nnpx ts-node crawl.ts --keyword=\"关键词\" --limit=50 --headless --sync\n\n# 匿名模式（不加载 cookie）\nnpx ts-node crawl.ts --keyword=\"关键词\" --limit=20 --anonymous\n```\n\n### 方式三：MCP Extension 模式\n\n```bash\n# 1. 启动 MCP 服务器\nPLAYWRIGHT_MCP_EXTENSION_TOKEN=xxx npx @playwright/mcp@latest --extension --port 8931\n\n# 2. 执行采集\nMCP_ENDPOINT=http://localhost:8931 npx ts-node mcp-crawl.ts --keyword=\"关键词\" --limit=5\n```\n\n## 参数说明\n\n| 参数 | 说明 | 默认 |\n|------|------|------|\n| `--keyword` | 搜索关键词（必填） | - |\n| `--limit` | 采集数量上限，建议 ≤20 | 20 |\n| `--no-comments` | 不采集评论区 | 默认采集 |\n| `--max-comments` | 每篇最多评论数 | 20 |\n| `--headless` | 无头模式（仅 crawl.ts） | false |\n| `--sync` | 同步到 Zion BaaS（仅 crawl.ts） | false |\n| `--anonymous` | 匿名模式，不加载 cookie（仅 crawl.ts） | false |\n\n## 登录\n\n```bash\n# 小红书登录（扫码）\nnpx ts-node login.ts\n\n# 弦外 Overtone 项目登录\nnpx ts-node zion-login.ts --username=\"用户名\" --password=\"密码\"\n\n# 弦外 Overtone 项目注册\nnpx ts-node zion-login.ts --username=\"新用户\" --password=\"密码\" --register\n```\n\n## 输出\n\n- `output/关键词_YYYYMMDD.json` — JSON 格式原始数据\n- `output/关键词_YYYYMMDD.md` — Markdown 格式采集结果\n- `output/index.html` — 可视化报告（运行 generate-report.ts 生成）\n\n## 数据结构\n\n```typescript\ninterface XHSNote {\n  xhs_note_id: string;\n  title: string;\n  content: string;\n  author_name: string;\n  images: string[];\n  likes: number;\n  collects: number;\n  comments_count: number;\n  comments: { author: string; content: string; likes: number }[];\n  comments_extracted: number;\n  keyword: string;\n  source_url: string;\n  crawl_time: string;\n}\n```\n\n## 故障处理\n\n- **WebBridge 未运行**：`~/.kimi-webbridge/bin/kimi-webbridge start`\n- **数据为空**：检查浏览器登录状态，或减少 limit\n- **弹窗未弹出**：笔记未加载完，增大 limit 让预加载更充分\n- **Cookie 不存在**：先运行 `npx ts-node login.ts` 登录，或使用 `--anonymous`\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn712shh4h51zq0gs31jjeeqdn845kz6\",\n  \"slug\": \"zion-xhs-catch-skill\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1779645364735\n}\n\nFile v1.0.2:scripts/package.json\n\n{\n  \"name\": \"zion-xhs-catch-skill\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"dependencies\": {\n    \"@playwright/mcp\": \"^0.0.75\",\n    \"@types/node\": \"^25.7.0\",\n    \"playwright\": \"^1.60.0\",\n    \"ts-node\": \"^10.9.2\",\n    \"typescript\": \"^6.0.3\"\n  }\n}\n\nFile v1.0.2:scripts/tsconfig.json\n\n{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"module\": \"commonjs\",\n    \"lib\": [\"ES2020\", \"DOM\"],\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true,\n    \"strict\": false,\n    \"resolveJsonModule\": true,\n    \"types\": [\"node\"]\n  },\n  \"include\": [\"scripts/**/*\"]\n}\n\nArchive v1.0.1: 11 files, 30782 bytes\n\nFiles: scripts/crawl.ts (16236b), scripts/generate-report.ts (14688b), scripts/login.ts (2473b), scripts/mcp-crawl.ts (20461b), scripts/package.json (405b), scripts/sync.ts (8027b), scripts/tsconfig.json (271b), scripts/webbridge-crawl.ts (11952b), scripts/zion-login.ts (3245b), SKILL.md (2297b), _meta.json (139b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: xhs-catch\ndescription: |\n  小红书笔记采集工具。当用户需要从小红书按关键词搜索并批量采集笔记数据时，使用此 skill。\n  \n  触发关键词：采集小红书、抓小红书、小红书搜索、小红书笔记、小红书数据、小红书竞品、小红书调研、小红书内容、小红书痛点、小红书用户反馈。\n  \n  功能：基于 Kimi WebBridge 控制用户真实浏览器，采集笔记标题、正文、作者、点赞/收藏/评论数、图片 URL、一级评论。\n---\n\n# 小红书采集 Skill\n\n按关键词搜索小红书笔记，批量采集结构化数据。\n\n## 前置检查\n\n1. **WebBridge 状态**\n   ```bash\n   ~/.kimi-webbridge/bin/kimi-webbridge status\n   ```\n   必须 `running: true` 且 `extension_connected: true`。\n\n2. **浏览器已登录小红书**\n   - 在 Chrome/Edge 访问 https://www.xiaohongshu.com 并登录\n\n3. **项目依赖**\n   ```bash\n   cd scripts && npm install\n   ```\n\n## 执行采集\n\n```bash\ncd scripts\n\n# 基础用法\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=20\n\n# 不采评论\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=20 --no-comments\n\n# 限制评论数\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=20 --max-comments=10\n```\n\n| 参数 | 说明 | 默认 |\n|------|------|------|\n| `--keyword` | 搜索关键词（必填） | - |\n| `--limit` | 采集数量上限，建议 ≤20 | 20 |\n| `--no-comments` | 不采集评论区 | 默认采集 |\n| `--max-comments` | 每篇最多评论数 | 20 |\n\n## 输出\n\n- `output/关键词_YYYYMMDD.md` — Markdown 格式采集结果\n- `output/index.html` — 可视化报告（可选）\n\n## 数据结构\n\n```typescript\ninterface XHSNote {\n  xhs_note_id: string;\n  title: string;\n  content: string;\n  author_name: string;\n  images: string[];\n  likes: number;\n  collects: number;\n  comments_count: number;\n  comments: { author: string; content: string; likes: number }[];\n  comments_extracted: number;\n  keyword: string;\n  source_url: string;\n  crawl_time: string;\n}\n```\n\n## 故障处理\n\n- **WebBridge 未运行**：`~/.kimi-webbridge/bin/kimi-webbridge start`\n- **数据为空**：检查浏览器登录状态，或减少 limit\n- **弹窗未弹出**：笔记未加载完，增大 limit 让预加载更充分\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn712shh4h51zq0gs31jjeeqdn845kz6\",\n  \"slug\": \"zion-xhs-catch-skill\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1779644984126\n}\n\nFile v1.0.1:scripts/package.json\n\n{\n  \"name\": \"zion-xhs-catch-skill\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"dependencies\": {\n    \"@playwright/mcp\": \"^0.0.75\",\n    \"@types/node\": \"^25.7.0\",\n    \"playwright\": \"^1.60.0\",\n    \"ts-node\": \"^10.9.2\",\n    \"typescript\": \"^6.0.3\"\n  }\n}\n\nFile v1.0.1:scripts/tsconfig.json\n\n{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"module\": \"commonjs\",\n    \"lib\": [\"ES2020\", \"DOM\"],\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true,\n    \"strict\": false,\n    \"resolveJsonModule\": true,\n    \"types\": [\"node\"]\n  },\n  \"include\": [\"scripts/**/*\"]\n}\n\nArchive v1.0.0: 12 files, 34757 bytes\n\nFiles: crawl.ts (16236b), generate-report.ts (14698b), login.ts (2473b), mcp-crawl.ts (20461b), package-lock.json (10735b), package.json (405b), README.md (5286b), SKILL.md (2355b), sync.ts (8148b), tsconfig.json (271b), webbridge-crawl.ts (11662b), _meta.json (139b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: xhs-catch\ndescription: |\n  小红书笔记采集工具。当用户需要从小红书按关键词搜索并批量采集笔记数据时，使用此 skill。\n  \n  触发关键词：采集小红书、抓小红书、小红书搜索、小红书笔记、小红书数据、小红书竞品、小红书调研、小红书内容、小红书痛点、小红书用户反馈。\n  \n  功能：基于 Kimi WebBridge 控制用户真实浏览器，采集笔记标题、正文、作者、点赞/收藏/评论数、图片 URL、一级评论。\n---\n\n# 小红书采集 Skill\n\n按关键词搜索小红书笔记，批量采集结构化数据。\n\n## 前置检查\n\n1. **WebBridge 状态**\n   ```bash\n   ~/.kimi-webbridge/bin/kimi-webbridge status\n   ```\n   必须 `running: true` 且 `extension_connected: true`。\n\n2. **浏览器已登录小红书**\n   - 在 Chrome/Edge 访问 https://www.xiaohongshu.com 并登录\n\n3. **项目依赖**\n   ```bash\n   cd /Users/mao/vibe/zion-xhs-catch-skill && npm install\n   ```\n\n## 执行采集\n\n```bash\ncd /Users/mao/vibe/zion-xhs-catch-skill\n\n# 基础用法\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=20\n\n# 不采评论\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=20 --no-comments\n\n# 限制评论数\nnpx ts-node webbridge-crawl.ts --keyword=\"关键词\" --limit=20 --max-comments=10\n```\n\n| 参数 | 说明 | 默认 |\n|------|------|------|\n| `--keyword` | 搜索关键词（必填） | - |\n| `--limit` | 采集数量上限，建议 ≤20 | 20 |\n| `--no-comments` | 不采集评论区 | 默认采集 |\n| `--max-comments` | 每篇最多评论数 | 20 |\n\n## 输出\n\n- `output/关键词_YYYYMMDD.md` — Markdown 格式采集结果\n- `output/index.html` — 可视化报告（可选）\n\n## 数据结构\n\n```typescript\ninterface XHSNote {\n  xhs_note_id: string;\n  title: string;\n  content: string;\n  author_name: string;\n  images: string[];\n  likes: number;\n  collects: number;\n  comments_count: number;\n  comments: { author: string; content: string; likes: number }[];\n  comments_extracted: number;\n  keyword: string;\n  source_url: string;\n  crawl_time: string;\n}\n```\n\n## 故障处理\n\n- **WebBridge 未运行**：`~/.kimi-webbridge/bin/kimi-webbridge start`\n- **数据为空**：检查浏览器登录状态，或减少 limit\n- **弹窗未弹出**：笔记未加载完，增大 limit 让预加载更充分\n\nFile v1.0.0:README.md\n\n# 小红书笔记采集工具\n\n基于 **Kimi WebBridge** 的小红书内容采集工具，通过用户真实浏览器执行采集。支持按关键词搜索笔记，提取标题、正文、作者、点赞/收藏/评论数、图片 URL，以及**评论区一级评论**。\n\n**核心优势**：直接使用已登录的浏览器，无需 Cookie 管理、无需处理验证码、天然绕过风控检测。\n\n## 功能特性\n\n- 🔍 **关键词搜索采集** — 输入关键词自动搜索并批量采集笔记\n- 💬 **一级评论提取** — 可选提取评论区一级评论（自动过滤楼中楼回复）\n- 🎬 **视频过滤** — 自动跳过视频类型笔记，只采集图文\n- 🛡️ **行为模拟** — 随机滚动距离、点击位置、操作间隔，模拟自然浏览节奏\n- 🖥️ **真实浏览器** — 基于 Kimi WebBridge 控制用户已登录的浏览器\n- 📦 **JSON 输出** — 结构化数据保存到本地，可选同步到 Zion BaaS\n\n## ⚠️ 免责声明\n\n**本工具仅供学习交流和技术研究使用，请勿用于任何商业或非法用途。**\n\n使用本工具采集数据时，请遵守相关法律法规及平台用户协议，尊重数据版权与隐私权。因使用本工具产生的任何法律责任和后果，均由使用者自行承担，与作者无关。\n\n## 前置条件\n\n- **Node.js >= 18**\n- **Kimi WebBridge** 已安装并运行\n\n```bash\n# 1. 检查 WebBridge 状态\n~/.kimi-webbridge/bin/kimi-webbridge status\n\n# 2. 安装项目依赖\ncd /Users/mao/vibe/zion-xhs-catch-skill\nnpm install\n```\n\n## 快速开始\n\n### 1. 确保 WebBridge 运行\n\n```bash\n~/.kimi-webbridge/bin/kimi-webbridge status\n```\n\n应显示 `running: true` 且 `extension_connected: true`。\n\n如未运行：\n```bash\n~/.kimi-webbridge/bin/kimi-webbridge start\n```\n\n### 2. 执行采集\n\n```bash\nnpx ts-node webbridge-crawl.ts --keyword=\"无代码 痛点\" --limit=20\n```\n\n## 参数说明\n\n| 参数 | 说明 | 默认值 |\n|------|------|--------|\n| `--keyword` | 搜索关键词（必填） | - |\n| `--limit` | 采集数量上限 | 20 |\n| `--no-comments` | 不采集评论区内容 | 默认采集 |\n| `--max-comments` | 每篇笔记最多采集多少条一级评论 | 20 |\n\n> ⚠️ **风控建议**：`--limit` 建议不超过 20，避免触发平台行为检测。如需更多数据，请分多次、分散时间采集。\n\n### 示例\n\n```bash\n# 只抓笔记，不抓评论\nnpx ts-node webbridge-crawl.ts --keyword=\"AI工具\" --limit=10 --no-comments\n\n# 抓笔记 + 每篇最多 5 条评论\nnpx ts-node webbridge-crawl.ts --keyword=\"AI工具\" --limit=10 --max-comments=5\n\n# 采集多个关键词做对比\nnpx ts-node webbridge-crawl.ts --keyword=\"无代码 痛点\" --limit=20\nnpx ts-node webbridge-crawl.ts --keyword=\"无代码 缺点\" --limit=15\nnpx ts-node webbridge-crawl.ts --keyword=\"无代码 坑\" --limit=15\n```\n\n## 输出数据结构\n\n采集结果保存为 `output/关键词_YYYYMMDD.md`，每条笔记包含：\n\nMarkdown 格式，包含标题、作者、链接、互动数据、正文、评论、图片。\n\n## 技术说明\n\n### 行为模拟\n\n脚本内置自然浏览节奏模拟，降低被平台风控标记的风险：\n\n- **随机滚动** — 预加载时随机滚动距离（300-800px）和间隔（600-1400ms）\n- **随机点击位置** — 在笔记卡片内随机位置点击，非固定中心点\n- **随机停顿** — 操作间随机间隔，偶尔延长停顿模拟\"阅读\"行为\n- **回滚模拟** — 滚动后偶尔往回滚一点，更像真人浏览习惯\n\n> 注意：这些模拟不是\"伪装成另一个人\"，而是让自动化操作节奏更自然。\n\n### 评论采集原理\n\n1. 打开笔记弹窗后自动滚动至评论区\n2. 在页面内直接查询 DOM 提取数据（高效）\n3. 识别一级评论节点，自动过滤 `.sub-comment-list` 等二级回复容器\n4. 提取评论者昵称、内容、点赞数\n\n> ⚠️ 评论区需滚动懒加载，实际提取数量可能少于页面显示的 `comments_count`。\n\n### 视频过滤\n\n在点击笔记前，检查卡片上是否存在播放图标或视频时长标签（`.play-icon`、`.duration` 等），如果是视频笔记则直接跳过。\n\n## 故障排查\n\n### WebBridge 未运行\n\n```bash\n# 检查状态\n~/.kimi-webbridge/bin/kimi-webbridge status\n\n# 启动服务\n~/.kimi-webbridge/bin/kimi-webbridge start\n\n# 如扩展未连接，重新安装：https://kimi.com/features/webbridge\n```\n\n### 采集数据为空\n\n1. 检查小红书页面结构是否变化（DOM 选择器可能失效）\n2. 确认浏览器已登录小红书\n3. 减少 limit 值，避免触发反爬\n\n### 弹窗未弹出\n\n- 笔记列表可能未完全加载，可增大 `--limit` 让 pre-loading 滚动更充分\n- 某些笔记卡片可能是广告或占位元素，已被视频过滤机制处理\n\n## 项目结构\n\n```\n.\n├── webbridge-crawl.ts    # Kimi WebBridge 模式（推荐）\n├── crawl.ts              # 传统 Playwright 模式（保留兼容）\n├── mcp-crawl.ts          # MCP 模式（保留兼容）\n├── login.ts              # 登录脚本（旧版兼容）\n├── sync.ts               # Zion BaaS 同步脚本\n├── output/               # 采集结果输出目录\n└── zion-xhs-catch/\n    └── SKILL.md          # AI 技能文档\n```\n\n## License\n\nMIT\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn712shh4h51zq0gs31jjeeqdn845kz6\",\n  \"slug\": \"zion-xhs-catch-skill\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1779037438210\n}\n\nFile v1.0.0:package-lock.json\n\n{\n  \"name\": \"zion-xhs-catch-skill\",\n  \"version\": \"1.0.0\",\n  \"lockfileVersion\": 3,\n  \"requires\": true,\n  \"packages\": {\n    \"\": {\n      \"name\": \"zion-xhs-catch-skill\",\n      \"version\": \"1.0.0\",\n      \"license\": \"ISC\",\n      \"dependencies\": {\n        \"@playwright/mcp\": \"^0.0.75\",\n        \"@types/node\": \"^25.7.0\",\n        \"playwright\": \"^1.60.0\",\n        \"ts-node\": \"^10.9.2\",\n        \"typescript\": \"^6.0.3\"\n      }\n    },\n    \"node_modules/@cspotcode/source-map-support\": {\n      \"version\": \"0.8.1\",\n      \"resolved\": \"https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz\",\n      \"integrity\": \"sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==\",\n      \"dependencies\": {\n        \"@jridgewell/trace-mapping\": \"0.3.9\"\n      },\n      \"engines\": {\n        \"node\": \">=12\"\n      }\n    },\n    \"node_modules/@jridgewell/resolve-uri\": {\n      \"version\": \"3.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz\",\n      \"integrity\": \"sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==\",\n      \"engines\": {\n        \"node\": \">=6.0.0\"\n      }\n    },\n    \"node_modules/@jridgewell/sourcemap-codec\": {\n      \"version\": \"1.5.5\",\n      \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz\",\n      \"integrity\": \"sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==\"\n    },\n    \"node_modules/@jridgewell/trace-mapping\": {\n      \"version\": \"0.3.9\",\n      \"resolved\": \"https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz\",\n      \"integrity\": \"sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==\",\n      \"dependencies\": {\n        \"@jridgewell/resolve-uri\": \"^3.0.3\",\n        \"@jridgewell/sourcemap-codec\": \"^1.4.10\"\n      }\n    },\n    \"node_modules/@playwright/mcp\": {\n      \"version\": \"0.0.75\",\n      \"resolved\": \"https://registry.npmjs.org/@playwright/mcp/-/mcp-0.0.75.tgz\",\n      \"integrity\": \"sha512-oBjzVXfEGZ9Ev45tKKQULNDVdF83B82lg0uPejEK3xsp/zWmdNdNVnPi032fmd/o20ZZXs+LX7cr77qRNbV4VA==\",\n      \"dependencies\": {\n        \"playwright\": \"1.61.0-alpha-1778188671000\",\n        \"playwright-core\": \"1.61.0-alpha-1778188671000\"\n      },\n      \"bin\": {\n        \"playwright-mcp\": \"cli.js\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@playwright/mcp/node_modules/playwright\": {\n      \"version\": \"1.61.0-alpha-1778188671000\",\n      \"resolved\": \"https://registry.npmjs.org/playwright/-/playwright-1.61.0-alpha-1778188671000.tgz\",\n      \"integrity\": \"sha512-A6fFc7ExLRmvm0ZHqCyY2uHXSvEdpb8W+/HyIPK4ecRqNil8Mc1Vig1WFYoqk82x3+U9Qb571fQE95wgKqIQ1g==\",\n      \"dependencies\": {\n        \"playwright-core\": \"1.61.0-alpha-1778188671000\"\n      },\n      \"bin\": {\n        \"playwright\": \"cli.js\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"optionalDependencies\": {\n        \"fsevents\": \"2.3.2\"\n      }\n    },\n    \"node_modules/@playwright/mcp/node_modules/playwright-core\": {\n      \"version\": \"1.61.0-alpha-1778188671000\",\n      \"resolved\": \"https://registry.npmjs.org/playwright-core/-/playwright-core-1.61.0-alpha-1778188671000.tgz\",\n      \"integrity\": \"sha512-nsw2Crz0uZS3IRHiEcOXUt+RaKB/Hna+GAD4oD6cPqCHfJfW77cJdgktC0jzp3Ndyv23EJI3bcWSqFIiqSNE5A==\",\n      \"bin\": {\n        \"playwright-core\": \"cli.js\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@tsconfig/node10\": {\n      \"version\": \"1.0.12\",\n      \"resolved\": \"https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz\",\n      \"integrity\": \"sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==\"\n    },\n    \"node_modules/@tsconfig/node12\": {\n      \"version\": \"1.0.11\",\n      \"resolved\": \"https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz\",\n      \"integrity\": \"sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==\"\n    },\n    \"node_modules/@tsconfig/node14\": {\n      \"version\": \"1.0.3\",\n      \"resolved\": \"https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz\",\n      \"integrity\": \"sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==\"\n    },\n    \"node_modules/@tsconfig/node16\": {\n      \"version\": \"1.0.4\",\n      \"resolved\": \"https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz\",\n      \"integrity\": \"sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==\"\n    },\n    \"node_modules/@types/node\": {\n      \"version\": \"25.7.0\",\n      \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-25.7.0.tgz\",\n      \"integrity\": \"sha512-z+pdZyxE+RTQE9AcboAZCb4otwcrvgHD+GlBpPgn0emDVt0ohrTMhAwlr2Wd9nZ+nihhYFxO2pThz3C5qSu2Eg==\",\n      \"dependencies\": {\n        \"undici-types\": \"~7.21.0\"\n      }\n    },\n    \"node_modules/acorn\": {\n      \"version\": \"8.16.0\",\n      \"resolved\": \"https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz\",\n      \"integrity\": \"sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==\",\n      \"bin\": {\n        \"acorn\": \"bin/acorn\"\n      },\n      \"engines\": {\n        \"node\": \">=0.4.0\"\n      }\n    },\n    \"node_modules/acorn-walk\": {\n      \"version\": \"8.3.5\",\n      \"resolved\": \"https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz\",\n      \"integrity\": \"sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==\",\n      \"dependencies\": {\n        \"acorn\": \"^8.11.0\"\n      },\n      \"engines\": {\n        \"node\": \">=0.4.0\"\n      }\n    },\n    \"node_modules/arg\": {\n      \"version\": \"4.1.3\",\n      \"resolved\": \"https://registry.npmjs.org/arg/-/arg-4.1.3.tgz\",\n      \"integrity\": \"sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==\"\n    },\n    \"node_modules/create-require\": {\n      \"version\": \"1.1.1\",\n      \"resolved\": \"https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz\",\n      \"integrity\": \"sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==\"\n    },\n    \"node_modules/diff\": {\n      \"version\": \"4.0.4\",\n      \"resolved\": \"https://registry.npmjs.org/diff/-/diff-4.0.4.tgz\",\n      \"integrity\": \"sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==\",\n      \"engines\": {\n        \"node\": \">=0.3.1\"\n      }\n    },\n    \"node_modules/fsevents\": {\n      \"version\": \"2.3.2\",\n      \"resolved\": \"https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz\",\n      \"integrity\": \"sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==\",\n      \"hasInstallScript\": true,\n      \"optional\": true,\n      \"os\": [\n        \"darwin\"\n      ],\n      \"engines\": {\n        \"node\": \"^8.16.0 || ^10.6.0 || >=11.0.0\"\n      }\n    },\n    \"node_modules/make-error\": {\n      \"version\": \"1.3.6\",\n      \"resolved\": \"https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz\",\n      \"integrity\": \"sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==\"\n    },\n    \"node_modules/playwright\": {\n      \"version\": \"1.60.0\",\n      \"resolved\": \"https://registry.npmjs.org/playwright/-/playwright-1.60.0.tgz\",\n      \"integrity\": \"sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==\",\n      \"dependencies\": {\n        \"playwright-core\": \"1.60.0\"\n      },\n      \"bin\": {\n        \"playwright\": \"cli.js\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      },\n      \"optionalDependencies\": {\n        \"fsevents\": \"2.3.2\"\n      }\n    },\n    \"node_modules/playwright-core\": {\n      \"version\": \"1.60.0\",\n      \"resolved\": \"https://registry.npmjs.org/playwright-core/-/playwright-core-1.60.0.tgz\",\n      \"integrity\": \"sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==\",\n      \"bin\": {\n        \"playwright-core\": \"cli.js\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/ts-node\": {\n      \"version\": \"10.9.2\",\n      \"resolved\": \"https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz\",\n      \"integrity\": \"sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==\",\n      \"dependencies\": {\n        \"@cspotcode/source-map-support\": \"^0.8.0\",\n        \"@tsconfig/node10\": \"^1.0.7\",\n        \"@tsconfig/node12\": \"^1.0.7\",\n        \"@tsconfig/node14\": \"^1.0.0\",\n        \"@tsconfig/node16\": \"^1.0.2\",\n        \"acorn\": \"^8.4.1\",\n        \"acorn-walk\": \"^8.1.1\",\n        \"arg\": \"^4.1.0\",\n        \"create-require\": \"^1.1.0\",\n        \"diff\": \"^4.0.1\",\n        \"make-error\": \"^1.1.1\",\n        \"v8-compile-cache-lib\": \"^3.0.1\",\n        \"yn\": \"3.1.1\"\n      },\n      \"bin\": {\n        \"ts-node\": \"dist/bin.js\",\n        \"ts-node-cwd\": \"dist/bin-cwd.js\",\n        \"ts-node-esm\": \"dist/bin-esm.js\",\n        \"ts-node-script\": \"dist/bin-script.js\",\n        \"ts-node-transpile-only\": \"dist/bin-transpile.js\",\n        \"ts-script\": \"dist/bin-script-deprecated.js\"\n      },\n      \"peerDependencies\": {\n        \"@swc/core\": \">=1.2.50\",\n        \"@swc/wasm\": \">=1.2.50\",\n        \"@types/node\": \"*\",\n        \"typescript\": \">=2.7\"\n      },\n      \"peerDependenciesMeta\": {\n        \"@swc/core\": {\n          \"optional\": true\n        },\n        \"@swc/wasm\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/typescript\": {\n      \"version\": \"6.0.3\",\n      \"resolved\": \"https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz\",\n      \"integrity\": \"sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==\",\n      \"bin\": {\n        \"tsc\": \"bin/tsc\",\n        \"tsserver\": \"bin/tsserver\"\n      },\n      \"engines\": {\n        \"node\": \">=14.17\"\n      }\n    },\n    \"node_modules/undici-types\": {\n      \"version\": \"7.21.0\",\n      \"resolved\": \"https://registry.npmjs.org/undici-types/-/undici-types-7.21.0.tgz\",\n      \"integrity\": \"sha512-w9IMgQrz4O0YN1LtB7K5P63vhlIOvC7opSmouCJ+ZywlPAlO9gIkJ+otk6LvGpAs2wg4econaCz3TvQ9xPoyuQ==\"\n    },\n    \"node_modules/v8-compile-cache-lib\": {\n      \"version\": \"3.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz\",\n      \"integrity\": \"sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==\"\n    },\n    \"node_modules/yn\": {\n      \"version\": \"3.1.1\",\n      \"resolved\": \"https://registry.npmjs.org/yn/-/yn-3.1.1.tgz\",\n      \"integrity\": \"sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==\",\n      \"engines\": {\n        \"node\": \">=6\"\n      }\n    }\n  }\n}\n\nFile v1.0.0:package.json\n\n{\n  \"name\": \"zion-xhs-catch-skill\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"dependencies\": {\n    \"@playwright/mcp\": \"^0.0.75\",\n    \"@types/node\": \"^25.7.0\",\n    \"playwright\": \"^1.60.0\",\n    \"ts-node\": \"^10.9.2\",\n    \"typescript\": \"^6.0.3\"\n  }\n}\n\nFile v1.0.0:tsconfig.json\n\n{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"module\": \"commonjs\",\n    \"lib\": [\"ES2020\", \"DOM\"],\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true,\n    \"strict\": false,\n    \"resolveJsonModule\": true,\n    \"types\": [\"node\"]\n  },\n  \"include\": [\"scripts/**/*\"]\n}","readmeExcerpt":"Skill: zion-xhs-catch-skill Owner: timqin-m Summary: 小红书笔记采集工具。当用户需要从小红书按关键词搜索并批量采集笔记数据时，使用此 skill。 触发关键词：采集小红书、抓小红书、小红书搜索、小红书笔记、小红书数据、小红书竞品、小红书调研、小红书内容、小红书痛点、小红书用户反馈。 功能：基于 WebBridge 控制浏览器，采集笔记标题、正文、作者、点赞/收藏/评... Tags: latest:1.0.6 Version history: v1.0.6 | 2026-06-01T07:44:44.910Z | user zihon-xhs-catch-skill v1.0.6 Changelog - 说明文档（SKILL.md）全面升级，突出一站式工作流与详细环境准备指南，优化新手引导。 - 补充了 Kimi WebBridge 安装和浏览器插件安装的详细步骤。 - 移除旧","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"1. 关键词设计（精准提炼） ──> 2. WebBridge 自动环境就绪 ──> 3. 浏览器模拟真人采集\n                                                                       │\n5. 「好痛 Howtone」AI 洞察分析 ◀── 4. 自动生成 HTML 报告 & 一键同步 ◀──┘"},{"language":"bash","snippet":"curl -fsSL https://cdn.kimi.com/webbridge/install.sh | bash"},{"language":"bash","snippet":"curl -fsSL https://cdn.kimi.com/webbridge/install.sh | bash"},{"language":"powershell","snippet":"irm https://cdn.kimi.com/webbridge/install.ps1 | iex"},{"language":"bash","snippet":"cd scripts && npm install"},{"language":"bash","snippet":"cd scripts && npm install"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: xhs-catch\ndescription: |\n  小红书笔记采集工具。当用户需要从小红书按关键词搜索并批量采集笔记数据时，使用此 skill。\n\n  触发关键词：采集小红书、抓小红书、小红书搜索、小红书笔记、小红书数据、小红书竞品、小红书调研、小红书内容、小红书痛点、小红书用户反馈。\n\n  功能：基于 WebBridge 控制浏览器，采集笔记标题、正文、作者、点赞/收藏/评论数、图片 URL、一级评论。输出 JSON 原始数据 + HTML 可视化报告。可同步到「好痛 Howtone」做进一步分析。\n---\n\n# 📕 小红书笔记采集与痛点分析工具 (XHS Catch)\n\n> **欢迎使用「小红书采集与痛点分析」工具！**\n> 本工具基于 Kimi WebBridge，能模拟真人操作帮您批量抓取小红书相关关键词下的笔记数据（标题、正文、作者、图片、点赞/收藏及高赞评论等），并生成漂亮的 HTML 离线分析报告。您还可以一键上报数据到「好痛 Howtone」平台，享受 AI 自动分析、商机提炼与文案生成服务！\n\n---\n\n## 🚀 核心工作流\n```\n1. 关键词设计（精准提炼） ──> 2. WebBridge 自动环境就绪 ──> 3. 浏览器模拟真人采集\n                                                                       │\n5. 「好痛 Howtone」AI 洞察分析 ◀── 4. 自动生成 HTML 报告 & 一键同步 ◀──┘\n```\n\n---\n\n## 🛠️ 第一步：前置环境准备（只需一次）\n\n本工具依赖 Kimi WebBridge 操控浏览器。请按以下指南准备环境：\n\n### 1. 安装 Kimi WebBridge 后台服务\n- **Mac / Linux 用户**：\n  直接在终端运行以下命令：\n  ```bash\n  curl -fsSL https://cdn.kimi.com/webbridge/install.sh | bash\n  ```\n- **Windows 用户**：\n  在 PowerShell 中运行以下命令：\n  ```powershell\n  irm https://cdn.kimi.com/webbridge/install.ps1 | iex\n  ```\n\n### 2. 安装 Chrome 浏览器插件\n为了让服务操控您的真实浏览器，请务必安装以下插件：\n👉 [Chrome Web Store: Kimi WebBridge 插件下载](https://chromewebstore.google.com/detail/kimi-webbridge/fldmhceldgbpfpkbgopacenieobmligc)\n\n> 💡 **如何确认就绪？**\n> 1. 打开您的 Chrome 浏览器。\n> 2. 点击右上角的 Kimi WebBridge 插件图标，若显示 `已连接` (Connected) 即表示成功！\n> 3. 在浏览器中访问 [小红书官网](https://www.xiaohongshu.com) 并确认已登录您的账号（建议使用小号）。\n\n---\n\n## ⚠️ 重要安全提示（风控防封指南）\n1. **强烈建议使用小号！** 小红书具有极其严格的反爬虫与异常行为检测机制。高频、批量或自动化的采集行为极易触发风控，导致账号被**永久封禁**。**请务必使用不重要的测试账号（小号）进行登录与采集，切勿使用主力账号或商业账号！**\n2. **控制单次采集数量：** 单次采集建议限制在 10-20 条以内（`--limit=10` 或 `20`）。请勿高频连续运行脚本。\n3. **内置真人模拟：** 本工具虽然已内置了随机延时、真人上下滚动等反爬优化，但依然无法 100% 规避账号风险。\n\n---\n\n## 📦 项目依赖安装\n在首次使用前，进入 `scripts` 目录安装 Node.js 依赖：\n```bash\ncd scripts && npm install\n```\n   必须 `running: true` 且 `extension_connected: true`。\n\n2. **浏览器已登录小红书**\n   - 在 Chrome/Edge 访问 https://www.xiaohongshu.com 并登录\n\n3. **项目依赖**\n   ```bash\n   cd scripts && npm install\n   ```\n\n## 脚本说明\n\n| 脚本 | 说明 |\n|------|------|\n| `webbridge-crawl.ts` | 通过 WebBridge 控制用户真实浏览器采集 |\n| `login.ts` | 小红书扫码登录，保存 cookies.json |\n| `zion-login.ts` | 保存「好痛 Howtone」项目同步 Token |\n| `sync.ts` | 将采集数据同步到「好痛 Howtone」项目（含图片上传） |\n| `generate-report.ts` | 读取 output/*.json 生成静态 HTML 报告 |\n\n## 关键词设计（关键！先想清楚再采集）\n\n> ⚠️ **不要直接执行用户给的关键词。** 普通用户的关键词往往过于笼统（如\"护肤\"\"旅游\"），采集回来的数据噪音大、难以分析。AI 必须先引导用户把搜索意图转化为**具体、可采集、可分析**的关键词。\n\n### 引导用户明确采集目标\n\n通过 1-3 轮对话，帮用户把模糊需求转化为精准关键词：\n\n| 用户原始需求 | ❌ 直接执行 | ✅ 引导后关键词 |\n|-------------|-----------|---------------|\n| \"帮我看看护肤\" | `护肤`（太泛，结果杂乱） | `早C晚A 翻车` `油痘肌 烂脸修复` `A醇 脱皮` |\n| \"调研一下旅游\" | `旅游`（太泛） | `日本自由行 踩坑` `新疆自驾 避雷` `三亚 被坑` |\n| \"看看竞品\" | `竞品名`（可能搜不到） | `品牌名 吐槽` `品牌名 缺点` `品牌名 后悔` |\n| \"了解用户痛点\" | `产品名 痛点`（生硬） | `产品名 不好用` `产品名 避雷` `买了产品名 后悔` |\n\n### 关键词设计原则\n\n1. **具体场景 > 笼统品类**\n   - ❌ `护肤` → ✅ `油痘肌 刷酸 烂脸`\n   - ❌ `美食` → ✅ `北京 探店 踩雷`\n\n2. **情绪/结果词提高信息密度**\n   - 加 `翻车` `踩坑` `避雷` `后悔` `吐槽` `难用` `失败` 等词，更容易抓到真实用户反馈\n\n3. **多组关键词分别采集**\n   - 不要试图用一个词覆盖所有，分 2-3 组关键词采集，每组 10-20 条，质量远好于一组 50 条\n\n4. **先小规模验证**\n   - 先用 `--limit=5` 跑一组看看结果质量，确认关键词有效后再加大采集量\n\n### 执行采集\n\n``"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn712shh4h51zq0gs31jjeeqdn845kz6\",\n  \"slug\": \"zion-xhs-catch-skill\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1780299884910\n}"},{"path":"scripts/package-lock.json","content":"{\n  \"name\": \"zion-xhs-catch-skill\",\n  \"version\": \"1.0.0\",\n  \"lockfileVersion\": 3,\n  \"requires\": true,\n  \"packages\": {\n    \"\": {\n      \"name\": \"zion-xhs-catch-skill\",\n      \"version\": \"1.0.0\",\n      \"license\": \"ISC\",\n      \"dependencies\": {\n        \"@playwright/mcp\": \"^0.0.75\",\n        \"@types/node\": \"^25.7.0\",\n        \"playwright\": \"^1.60.0\",\n        \"ts-node\": \"^10.9.2\",\n        \"typescript\": \"^6.0.3\"\n      }\n    },\n    \"node_modules/@cspotcode/source-map-support\": {\n      \"version\": \"0.8.1\",\n      \"resolved\": \"https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz\",\n      \"integrity\": \"sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@jridgewell/trace-mapping\": \"0.3.9\"\n      },\n      \"engines\": {\n        \"node\": \">=12\"\n      }\n    },\n    \"node_modules/@jridgewell/resolve-uri\": {\n      \"version\": \"3.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz\",\n      \"integrity\": \"sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=6.0.0\"\n      }\n    },\n    \"node_modules/@jridgewell/sourcemap-codec\": {\n      \"version\": \"1.5.5\",\n      \"resolved\": \"https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz\",\n      \"integrity\": \"sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@jridgewell/trace-mapping\": {\n      \"version\": \"0.3.9\",\n      \"resolved\": \"https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz\",\n      \"integrity\": \"sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@jridgewell/resolve-uri\": \"^3.0.3\",\n        \"@jridgewell/sourcemap-codec\": \"^1.4.10\"\n      }\n    },\n    \"node_modules/@playwright/mcp\": {\n      \"version\": \"0.0.75\",\n      \"resolved\": \"https://registry.npmjs.org/@playwright/mcp/-/mcp-0.0.75.tgz\",\n      \"integrity\": \"sha512-oBjzVXfEGZ9Ev45tKKQULNDVdF83B82lg0uPejEK3xsp/zWmdNdNVnPi032fmd/o20ZZXs+LX7cr77qRNbV4VA==\",\n      \"license\": \"Apache-2.0\",\n      \"dependencies\": {\n        \"playwright\": \"1.61.0-alpha-1778188671000\",\n        \"playwright-core\": \"1.61.0-alpha-1778188671000\"\n      },\n      \"bin\": {\n        \"playwright-mcp\": \"cli.js\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@playwright/mcp/node_modules/playwright\": {\n      \"version\": \"1.61.0-alpha-1778188671000\",\n      \"resolved\": \"https://registry.npmjs.org/playwright/-/playwright-1.61.0-alpha-1778188671000.tgz\",\n      \"integrity\": \"sha512-A6fFc7ExLRmvm0ZHqCyY2uHXSvEdpb8W+/HyIPK4ecRqNil8Mc1Vig1WFYoqk82x3+U9Qb571fQE95wgKqIQ1g==\",\n      \"license\": \"Apache-2.0\",\n      \"dependencies\": {\n        \"playwright-core\": \"1.6"},{"path":"scripts/package.json","content":"{\n  \"name\": \"zion-xhs-catch-skill\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"dependencies\": {\n    \"@playwright/mcp\": \"^0.0.75\",\n    \"@types/node\": \"^25.7.0\",\n    \"playwright\": \"^1.60.0\",\n    \"ts-node\": \"^10.9.2\",\n    \"typescript\": \"^6.0.3\"\n  }\n}"},{"path":"scripts/tsconfig.json","content":"{\n  \"compilerOptions\": {\n    \"target\": \"ES2020\",\n    \"module\": \"commonjs\",\n    \"lib\": [\"ES2020\", \"DOM\"],\n    \"esModuleInterop\": true,\n    \"skipLibCheck\": true,\n    \"strict\": false,\n    \"resolveJsonModule\": true,\n    \"types\": [\"node\"]\n  },\n  \"include\": [\"**/*.ts\"]\n}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"小红书笔记采集工具。当用户需要从小红书按关键词搜索并批量采集笔记数据时，使用此 skill。 触发关键词：采集小红书、抓小红书、小红书搜索、小红书笔记、小红书数据、小红书竞品、小红书调研、小红书内容、小红书痛点、小红书用户反馈。 功能：基于 WebBridge 控制浏览器，采集笔记标题、正文、作者、点赞/收藏/评... Skill: zion-xhs-catch-skill Owner: timqin-m Summary: 小红书笔记采集工具。当用户需要从小红书按关键词搜索并批量采集笔记数据时，使用此 skill。 触发关键词：采集小红书、抓小红书、小红书搜索、小红书笔记、小红书数据、小红书竞品、小红书调研、小红书内容、小红书痛点、小红书用户反馈。 功能：基于 WebBridge 控制浏览器，采集笔记标题、正文、作者、点赞/收藏/评... Tags: latest:1.0.6 Version history: v1.0.6 | 2026-06-01T07:44:44.910Z | user zihon-xhs-catch-skill v1.0.6 Changelog - 说明文档（SKILL.md）全面升级，突出一站式工作流与详细环境准备指南，优化新手引导。 - 补充了 Kimi WebBridge 安装和浏览器插件安装的详细步骤。 - 移除旧","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":931,"uniquenessScore":51,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T10:39:39.898Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T10:39:39.898Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T14:16:21.332Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}