Skill: huxiaoqiao/zsxq-fetch (version 1.0.0)

--- name: zsxq-fetch description: 知识星球帖子抓取助手 — 自动抓取指定星球的最新帖子，支持全部/仅精华两种筛选模式，支持通过帖子链接或 ID 获取单条帖子详情，支持多星球配置。本 Skill 应在用户需要查看、汇总或检索知识星球内容时使用。 user-invocable: true metadata: requires: node (>= 18) primaryEnv: ZSXQ_TOKEN --- # 知识星球帖子抓取助手 从指定知识星球抓取最新帖子内容，支持全部帖子与仅精华两种筛选模式，支持通过帖子链接或 ID 查看单条帖子详情，支持多星球配置管理。所有输出使用**中文**。 --- ## 认证与环境 ### 必需环境变量 ```bash export ZSXQ_TOKEN="你的token值" ``` **执行前必须检查 `$ZSXQ_TOKEN` 是否已设置。** 未设置时提示： > 请先设置知识星球 Token：`export ZSXQ_TOKEN="your_token"` > 获取方式：浏览器打开 wx.zsxq.com → 登录 → F12 → Application → Cookies → 复制 `zsxq_access_token` 的值。 ### 依赖安装 无第三方依赖，仅需 Node.js >= 18。首次使用运行一次即可： ```bash bash {baseDir}/install.sh ``` --- ## 配置文件 ### `{baseDir}/groups.json` — 多星球配置 ```json [ { "group_id": "YOUR_GROUP_ID", "name": "星球名称", "scope": "digests", "max_topics": 20 } ] ``` 字段说明： - `group_id`：从星球 URL `wx.zsxq.com/group/{group_id}` 获取 - `name`：星球名称（展示用） - `scope`：`digests`（仅精华）| `all`（全部），推荐 `digests` - `max_topics`：每个星球最多抓取的帖子数 --- ## 数据抓取脚本 `{baseDir}/fetch_topics.js` 提供四个子命令： ### 1. 获取帖子列表 ```bash node {baseDir}/fetch_topics.js topics <group_id> [count] [scope] ``` - `group_id`：星球 ID - `count`：帖子数，默认 20 - `scope`：`all`（全部）| `digests`（精华），默认 `all` - 请求间隔 1 秒（翻页限速） - 帖子正文截取前 5000 字 输出格式（stdout）： ```json { "group_id": "123456", "scope": "digests", "count": 5, "topics": [ { "topic_id": "789", "type": "talk", "title": "", "text": "帖子内容...", "create_time": "2026-03-01T10:30:00.000+0800", "owner": { "user_id": "111", "name": "作者" }, "likes_count": 10, "comments_count": 5, "reading_count": 200, "readers_count": 180, "digested": true, "image_count": 2 } ] } ``` ### 2. 获取精华帖（快捷方式） ```bash node {baseDir}/fetch_topics.js digests <group_id> [count] ``` 等价于 `topics <group_id> [count] digests`。 ### 3. 获取指定帖子详情 ```bash node {baseDir}/fetch_topics.js topic <group_id> <topic_id_or_url> ``` 支持两种输入形式： - 纯帖子 ID：`node fetch_topics.js topic 15552545485212 82811454228448260` - 完整链接：`node fetch_topics.js topic 15552545485212 https://wx.zsxq.com/topic/82811454228448260` 通过翻页帖子列表匹配目标 topic_id，最多搜索最近 300 条，文本截断上限 5000 字。 输出格式（stdout）： ```json { "topic_id": "123456789", "type": "talk", "title": "", "text": "帖子完整内容...", "create_time": "2026-03-01T10:30:00.000+0800", "owner": { "user_id": "111", "name": "作者" }, "likes_count": 10, "comments_count": 5, "reading_count": 200, "readers_count": 180, "digested": true, "image_count": 2, "url": "https://wx.zsxq.com/topic/123456789" } ``` ### 4. 列出已加入的星球 ```bash node {baseDir}/fetch_topics.js groups ``` 返回当前账号已加入的所有星球信息（group_id、名称、成员数、帖子数等）。 --- ## 执行流程 ### 场景一：汇总多个星球最新帖子 **步骤 1：检查环境** - 验证 `$ZSXQ_TOKEN` 已设置 - 读取 `{baseDir}/groups.json`（星球配置） **步骤 2：抓取帖子** 对 `groups.json` 中每个星球，按配置的 `scope` 和 `max_topics` 执行： ```bash node {baseDir}/fetch_topics.js topics <group_id> <max_topics> <scope> ``` 多个星球依次抓取，间隔 1.5 秒。 **步骤 3：输出摘要** 按星球分组，每条帖子输出： - 作者、发布时间 - 内容摘要（核心观点 1-2 句） - 互动数据（阅读 / 点赞 / 评论） - 帖子链接：`https://wx.zsxq.com/topic/{topic_id}` ### 场景二：查看指定帖子详情 当用户提供帖子链接或 ID 时，直接执行： ```bash node {baseDir}/fetch_topics.js topic <group_id> <topic_id_or_url> ``` 输出帖子完整内容，包括作者、时间、正文、互动数据。 ### 场景三：查找可用星球 当用户不确定 `group_id` 时，执行： ```bash ZSXQ_TOKEN=xxx node {baseDir}/fetch_topics.js groups ``` 列出账号已加入的所有星球供用户选择。 --- ## 错误处理 | 错误场景 | 检测方式 | 处理 | |---------|---------|------| | Token 未设置 | `$ZSXQ_TOKEN` 为空 | 提示用户设置并说明获取方法 | | Token 过期 | HTTP 401 | 提示重新获取 token | | 未加入星球 | HTTP 403 | 提示用户需先加入该星球 | | API 限流 | HTTP 429 | 自动重试（指数退避 2s/4s/8s） | | 星球不存在 | API 返回 `succeeded=false` | 跳过该星球，报告中标注 | | 帖子不存在 | API 返回 `succeeded=false` | 返回 `topic_not_found` 错误 | **原则：部分失败不中断整体流程。** 单个星球失败仍处理其他星球。 --- ## 详细 API 参考 如需了解 API 完整参数、响应结构、错误码等，参阅 `{baseDir}/references/api-reference.md`。


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)