← 返回 Skills 市场
96
总下载
0
收藏
0
当前安装
11
版本数
在 OpenClaw 中安装
/install clawshop-pro
功能描述
Clawshop 自动带货客户端 skill。装上 → 登录账号密码 → /clawshop 直接用,零配置。
使用说明 (SKILL.md)
\r \r
Clawshop Skill\r
\r Clawshop 自动带货客户端。装上即用,账号密码登录后所有 AI key、采集系统、视频生成全部由我方服务器统一管理,用户零配置。\r \r
跟
clawshopskill 的区别: clawshop 是 SaaS 客户端,走/api/v1/*+ Bearer token + 短轮询事件队列。\r \r
⚠️ 铁律\r
\r
- 发完审核卡片后绝对不发任何额外消息。 不发"分镜出来了""等老板点按钮""已确认生成中"等。\r
- 每个流程最多 1 次 exec + 1 次 message。 不允许拆分。\r
- 遇到异常(超时/失败)唯一允许的动作:告诉老板"XX失败了,原因是YY",然后等指示。\r
- 不偷偷换方案、不改卡片格式、不改流程。\r \r
⛔ 龙虾不准解读脚本 stdout(铁律)\r
\r
龙虾只负责调脚本 + NO_REPLY。所有给老板看的提示(未登录/登录失败/网络错误/账号密码错误等)一律由脚本内部 ct.send_text() 发出。\r
\r
- 龙虾不准根据脚本 stdout 的
{"ok": false, "reason": "..."}自己编话给老板\r - 龙虾不准把
reason: not_logged_in解读成"接口 404"、"服务挂了"、"请登录"等任何文字\r - 龙虾不准根据
recommend_status/ack_status等数字自己判断状态\r - 脚本的 stdout 是给程序/调试看的,不是给老板看的\r
- 老板要看的所有文字,必须由脚本通过
send_text主动推到 Discord\r \r 正确流程:\r
收到触发 → exec 调脚本 → 脚本内部决定发什么消息 → NO_REPLY\r
```\r
\r
**❗ 例外:Discord 斜杠命令触发时,不能 NO_REPLY!**\r
\r
Discord 斜杠命令要求 3 秒内必须有可见回复,否则显示“Command produced no visible reply”。\r
\r
当触发来源是 `/clawshop` 斜杠命令时:\r
```\r
收到 /clawshop → 发一条短 ack 文本(给 Discord 斜杠命令回复)→ exec 调脚本 → 回复结束(不再补话)\r
```\r
\r
**ack 文本模板(必须用这个,不许改):**\r
- 未登录:`🔑 还未登录 Clawshop。请回复:\`登录 用户名 密码\``\r
- 无 URL:`⏳ 已启动热门推荐,带到合适的视频再给您发审核卡。`\r
- 有 URL:`⏳ 指定视频已接收,正在抓取分析,完成后给您发审核卡。`\r
- 登录成功:`✅ 登录成功,开始推荐...`\r
- 登录失败:`❌ 账号密码错误,请确认后重试。`\r
\r
ack 后不再补任何进度消息,等 cron 轮询拿到事件后自动发卡片。\r
\r
这句 ack 是给 Discord interaction 的回复,不算“额外消息”,不违反铁律。\r
\r
**错误示范(绝对禁止):**\r
```\r
收到触发 → exec 调脚本 → 看 stdout reason → 自己组织语言告诉老板\r
```\r
\r
**为什么这样要求:** 以后会有多个用户用这个 skill,逻辑必须沉淀在代码里。龙虾每次解读 stdout 编话,不同用户/不同会话给出的回答就不一致,且代码无法演进。所有提示语统一由脚本管理才能保持一致行为。\r
\r
---\r
\r
## 一、整体架构\r
\r
```\r
用户 OpenClaw 实例\r
├── clawshop skill(本 skill)\r
│ ├── data/\r
│ │ ├── token.json ← 登录后存\r
│ │ ├── card_map.json ← 短编号 ↔ video_id 映射\r
│ │ └── processed_events.json ← 已处理事件去重\r
│ └── lib/ ← 全部脚本\r
└── 用户配置的 Discord 频道(OpenClaw 自带)\r
\r
→ data-service(我方服务器,单一来源)\r
└── /api/v1/* 接口 + 事件队列\r
```\r
\r
---\r
\r
## 二、用户使用流程\r
\r
### 2.0 安装后命令自动注册\r
\r
用户 `clawhub install clawshop` 装上 skill 后,需要让 `/clawshop` 在用户的 Discord 服务器里立刻生效。\r
\r
**为什么不能依赖 OpenClaw 默认同步?**\r
OpenClaw 默认把 skill 命令同步为 Discord **global command**。Global command 在 Discord 端有最长 1 小时缓存,用户装完看不到命令体验差。\r
\r
**解决方案:guild command(无缓存,立刻生效)**\r
skill 提供 `lib/register_discord.py`,调 Discord REST API 把命令注册到 bot 加入的所有 guild,注册完用户立刻能在输入框看到 `/clawshop`。\r
\r
**运行时机:**\r
- skill 首次安装后 → 提示老板跑一次\r
- bot 加入新 guild 后 → 重跑一次(幂等,重复跑不出错)\r
\r
**命令:**\r
\r
```\r
python ./lib/register_discord.py\r
```\r
\r
**输出示例:**\r
\r
```json\r
{\r
"ok": true,\r
"app_id": "1496036936996093992",\r
"guild_count": 1,\r
"results": [\r
{\r
"guild": "用户的服务器",\r
"guild_id": "...",\r
"status": 201,\r
"ok": true,\r
"cmd_id": "..."\r
}\r
]\r
}\r
```\r
\r
**从 OpenClaw 主会话中调用:**\r
老板可以说“注册 clawshop 命令”或“注册服务器命令”,龙虾直接 `exec: python ./lib/register_discord.py` 跑一次即可。\r
\r
### 2.1 首次(脚本内部自己处理,龙虾只负责调脚本)\r
\r
```\r
1. /clawshop → 龙虾 exec trigger.py ""\r
2. trigger.py 检测 token.json 不存在 → 自己 send_text("🔑 请登录:登录 用户名 密码")\r
3. 老板回:登录 alice ****\r
4. 龙虾 exec trigger.py "登录 alice ****"\r
5. trigger.py POST /api/v1/auth/login → token 存本地 → 自己 send_text("✅ 登录成功,开始推荐...")\r
6. trigger.py 自动 POST /api/v1/recommend + 启动 cron 轮询\r
7. cron 拿到 review_1 事件 → 发卡片\r
```\r
\r
### 2.2 后续\r
\r
```\r
1. /clawshop → 龙虾 exec trigger.py ""\r
2. trigger.py 检测有 token → 直接 POST /api/v1/recommend → 启动轮询\r
3. cron 拿到事件 → 发卡片 → 老板点按钮 → 调对应 API → 继续轮询\r
4. 流程结束(review_2 通过/放弃)→ 停止轮询\r
```\r
\r
**注意:** Token 自动保存在 `data/token.json`,登录一次后永不需要重复登录,除非服务端把 token 标记失效(401,脚本会自动清本地 token 并 send_text 提示重新登录)。\r
\r
---\r
\r
## 三、触发方式\r
\r
响应:\r
- `/clawshop` Discord 斜杠命令(可选 `url:` 参数)\r
- `/推荐` 命令\r
- 文字消息含 URL(如 `推荐 https://...`)\r
- 系统提示 `Use the "clawshop" skill for this request.`\r
- 含"登录 xxx yyy"格式的消息(首次登录用)\r
\r
### 3.1 URL 提取规则\r
\r
```python\r
import re\r
def extract_url(msg: str) -> str | None:\r
if not msg:\r
return None\r
s = msg.strip()\r
s = re.sub(r'^\s*(/clawshop|/推荐|推荐|来一个)\s*', '', s, flags=re.I)\r
s = re.sub(r'^\s*url\s*[::]\s*', '', s, flags=re.I)\r
s = s.strip().strip('\x3C>').strip('"\'「」『』').strip()\r
if re.match(r'^https?://', s, flags=re.I):\r
return s\r
return None\r
```\r
\r
### 3.2 登录指令识别\r
\r
老板首次登录会发:`登录 用户名 密码` 或 `login user pass`。\r
\r
```python\r
import re\r
m = re.match(r'^\s*(登录|login)\s+(\S+)\s+(\S+)\s*$', msg)\r
if m:\r
username, password = m.group(2), m.group(3)\r
```\r
\r
### 3.3 触发统一脚本\r
\r
**所有 exec 命令必须带 `workdir` 参数,指向本 skill 目录(即 SKILL.md 所在目录)。**\r
\r
```\r
exec: python ./lib/trigger.py "\x3C老板原始消息文本>"\r
workdir: \x3C本 skill 目录>\r
```\r
\r
实际调用时,模型应该用 exec 工具的 workdir 参数:\r
```json\r
{"command": "python ./lib/trigger.py \"\x3C消息>\"", "workdir": "\x3Cskill目录绝对路径>"}\r
```\r
\r
Skill 目录路径可通过 `SKILL.md` 所在位置确定,不同系统不同:\r
- Windows: `C:\Users\xxx\openclaw\skills\clawshop-pro`\r
- macOS: `/Users/xxx/openclaw/skills/clawshop-pro`\r
- Linux: `/home/xxx/openclaw/skills/clawshop-pro`\r
```\r
\r
脚本内部:\r
\r
1. **解析消息**\r
- 是 `登录 xxx yyy` → 走登录流程\r
- 否 → 走推荐流程\r
\r
2. **登录流程**\r
- POST `/api/v1/auth/login` `{username, password}`\r
- 成功 → 存 token 到 `data/token.json` → 发"✅ 登录成功,开始推荐"消息 → 继续走推荐流程\r
- 失败 → 发"❌ 账号密码错误"消息 → 退出\r
\r
3. **推荐流程**\r
- 检查本地 `token.json`:不存在 → 发"请先登录:`登录 用户名 密码`" → 退出\r
- 提取 URL(同 3.1 规则)\r
- 立即发 ack 文本到 Discord(解决斜杠命令 3s 超时)\r
- 无 URL:`⏳ 已启动热门推荐,捐到合适的视频再给您发审核卡片。`\r
- 有 URL:`⏳ 指定视频已接收,正在抓取分析,完成后给您发审核卡片。\
\x3Curl>`\r
- POST `/api/v1/recommend` `{}` 或 `{"video_url": "..."}`\r
- **启动 cron 轮询任务**(见第六节)\r
- 脚本退出,本轮 NO_REPLY\r
\r
**绝对禁止:** 直接 `requests.post(...)` 绕开脚本;拆成多次 tool call。\r
\r
---\r
\r
## 四、API 客户端\r
\r
所有 `/api/v1/*` 接口共用同一个客户端(`lib/api.py`),自动加 `Authorization: Bearer \x3Ctoken>` header。\r
\r
### 4.1 业务接口(9 个)\r
\r
| 函数 | 路径 | 说明 |\r
|---|---|---|\r
| `login(u, p)` | `POST /api/v1/auth/login` | 拿 token |\r
| `recommend(url=None)` | `POST /api/v1/recommend` | 启动推荐 |\r
| `task_approve(vid, step)` | `POST /api/v1/tasks/{vid}/approve` 或 `/{step}/approve` | 通过 |\r
| `task_reject(vid, step)` | `POST /api/v1/tasks/{vid}/reject` | 跳过/放弃 |\r
| `task_change_product(vid)` | `POST /api/v1/tasks/{vid}/change-product` | 换商品 |\r
| `task_storyboard_redo(vid)` | `POST /api/v1/tasks/{vid}/storyboard/redo` | 重做分镜 |\r
| `task_video_redo(vid)` | `POST /api/v1/tasks/{vid}/video/redo` | 重做视频 |\r
\r
### 4.2 事件接口(2 个)\r
\r
| 函数 | 路径 | 说明 |\r
|---|---|---|\r
| `events_pending()` | `GET /api/v1/events/pending` | 拉积压事件 |\r
| `event_ack(eid)` | `POST /api/v1/events/{eid}/ack` | 确认消费 |\r
\r
### 4.3 错误处理\r
\r
- `401 invalid_token` → 删本地 token.json,发"❌ 登录失效,请重新登录:`登录 用户名 密码`"\r
- `403 forbidden` → 发"❌ 操作越权" + 错误内容\r
- `5xx` → 发"❌ 服务器错误,请稍后重试"\r
- 超时 → 发"❌ 请求超时"\r
\r
---\r
\r
## 五、事件处理(核心)\r
\r
### 5.1 事件类型\r
\r
事件格式:\r
\r
| event_type | 触发 | data 字段 | 用户可见提示(脚本内部发) |\r
|---|---|---|---|\r
| `review_1` | 一审就绪 | video_id, video_url, author, view_count, score, summary, product_name, product_url, product_image_url | 发一审卡片(`send_review_1.py`) |\r
| `review_1_5` | 分镜就绪 | video_id, storyboard_url(或 error)| 有 storyboard_url → 发分镜卡片;有 error → `⚠️ 视频 #{n} 分镜生成失败:{error}` |\r
| `review_2` | 视频就绪 | video_id, video_url(或 error)| 有 video_url → 发视频卡片;有 error → `⚠️ 视频 #{n} 生成失败:{error}` |\r
| `published` | 发布完成 | video_id, platform, status | `✅ 视频 #{n} 已成功发布到 {platform}!` |\r
| `no_match` | 没找到 | (空)| `🙅 这轮没找到合适的视频,稍后再试。` |\r
| `error` | 异常 | error_type, message | `⚠️ 服务端异常:{message}` |\r
\r
### 5.1.1 错误事件特殊处理\r
\r
- `error_type: "quota_exhausted"` → `⚠️ API余额不足,无法继续生成。请充值后重试。\
错误详情:{error内容}`\r
- 其他 error_type → `⚠️ 服务端异常:{message}`\r
\r
**所有提示文案由脚本内部 `ct.send_text()` 发出,龙虾不准自己编。**\r
\r
### 5.2 事件处理脚本\r
\r
```\r
exec: python ./lib/poll_events.py\r
```\r
\r
**轮询脚本职责(一次 exec 干完):**\r
\r
1. 调 `events_pending()` 拉所有未处理事件\r
2. 对每个事件:\r
- 检查 `processed_events.json`,处理过 → 直接 ack 跳过\r
- 没处理过 → 按 event_type 分发到对应 send_review_*.py / 处理函数\r
- 处理成功 → 写入 processed_events + 调 ack\r
3. 检查是否流程结束(review_2 通过、所有 reject、no_match)→ 停止 cron\r
4. 输出 JSON 摘要:`{"processed": N, "stopped": true/false}`\r
\r
### 5.3 子脚本\r
\r
- `lib/send_review_1.py` — 发一审卡片\r
- `lib/send_review_1_5.py` — 发分镜卡片\r
- `lib/send_review_2.py` — 发视频卡片\r
- `lib/handle_button.py` — 按钮回调\r
- `lib/card_tools.py` — 卡片工具(卡片工具)\r
\r
---\r
\r
## 六、Cron 轮询任务\r
\r
### 6.1 启动\r
\r
`lib/trigger.py` 在推荐启动后**注册一个 cron job**:\r
\r
```python\r
# 通过 OpenClaw gateway HTTP API 注册\r
POST http://127.0.0.1:18789/tools/invoke\r
Body: {\r
"tool": "cron",\r
"args": {\r
"action": "add",\r
"job": {\r
"name": "clawshop-poll",\r
"schedule": {"kind": "every", "everyMs": 5000},\r
"payload": {\r
"kind": "agentTurn",\r
"message": "Clawshop 轮询事件: 执行 `python ./lib/poll_events.py`,有事件就处理;处理完后回复 NO_REPLY。",\r
"lightContext": true\r
},\r
"deleteAfterRun": false,\r
"delivery": {"mode": "none"}\r
}\r
}\r
}\r
```\r
\r
**关键参数:**\r
- `everyMs: 5000` — 每 5 秒\r
- `lightContext: true` — 不带历史上下文,省 token\r
- `delivery.mode: "none"` — 不发系统消息,由脚本自己发卡片\r
- `name: clawshop-poll` — 固定 ID 方便后续 update/remove\r
\r
### 6.2 自动停止\r
\r
**触发停止的条件:**\r
1. 流程结束事件(`review_2 approve` / `published` / `reject` 全部 / `no_match`)\r
2. 启动超过 15 分钟(max_duration_seconds)\r
\r
`poll_events.py` 内部检查后调:\r
\r
```python\r
POST http://127.0.0.1:18789/tools/invoke\r
Body: {\r
"tool": "cron",\r
"args": {"action": "remove", "id": "clawshop-poll"}\r
}\r
```\r
\r
### 6.3 启动时间记录\r
\r
`data/poll_state.json`:\r
```json\r
{"started_at": 1716180000, "active": true}\r
```\r
\r
每次 `poll_events.py` 启动时检查 `now - started_at > 900` → 强制停止 cron。\r
\r
---\r
\r
## 七、按钮回调\r
\r
收到 `Clicked "✅ 做 #4"` 等按钮消息:\r
\r
```\r
exec: python ./lib/handle_button.py "\x3Cclicked_label>"\r
```\r
\r
**脚本内部:**\r
\r
1. 正则提取 `#\x3Cshort_id>` → 查 card_map → 拿 video_id 和 step\r
2. 按按钮前缀映射到 action,**先发进度消息(不许改)**\r
3. 调对应的 API(不再是 `/clawshop/callback`,而是 `/api/v1/tasks/.../xxx`):\r
\r
| 按钮 | 阶段 | action | 进度消息(老板可见) | API 调用 |\r
|---|---|---|---|---|\r
| ✅ 做 | review_1 | approve | `⏳ 视频 #{n} 开始生成分镜图,请稍候...` | `task_approve(vid, "review_1")` → `POST /api/v1/tasks/{vid}/approve` |\r
| ⏭️ 换一个 | review_1 | reject + recommend | 无(不发进度) | `task_reject(vid)` + `recommend()` |\r
| 🔄 换商品 | review_1 | change_product | `🔄 正在重新匹配商品...` | `task_change_product(vid)` |\r
| ✅ 分镜通过 | review_1_5 | approve | `⏳ 分镜已确认,正在生成视频提示词和视频,预计8-10分钟...` | `task_approve(vid, "review_1_5")` → `POST /api/v1/tasks/{vid}/storyboard/approve` |\r
| 🔄 重新生成 | review_1_5 | redo | `🔄 正在重新生成分镜图...` | `task_storyboard_redo(vid)` |\r
| ❌ 放弃 | review_1_5/review_2 | reject | `❌ 已放弃视频 #{n}` | `task_reject(vid)` + 删 card_map + 停 cron |\r
| ✅ 通过 | review_2 | approve | `📤 视频 #{n} 正在提交发布...` | `task_approve(vid, "review_2")` → `POST /api/v1/tasks/{vid}/video/approve` |\r
| 🔄 重做 | review_2 | redo | `🔄 视频 #{n} 重新生成中...` | `task_video_redo(vid)` |\r
\r
4. 按钮 review_2 approve / reject 全部 → 删 card_map + 停 cron\r
5. 按钮回调后**继续 cron 轮询**(等下一个事件)\r
\r
---\r
\r
## 八、本地状态文件\r
\r
| 文件 | 用途 | 示例 |\r
|---|---|---|\r
| `data/token.json` | 登录 token | `{"token": "abc...", "username": "alice"}` |\r
| `data/card_map.json` | 短编号 ↔ video_id | `{"date": "2026-05-20", "next_id": 3, "cards": {...}}` |\r
| `data/processed_events.json` | 已 ack 的 event_id 集合 | `{"ids": [1001, 1002, 1003]}` |\r
| `data/poll_state.json` | 轮询启动时间 | `{"started_at": 1716180000, "active": true}` |\r
\r
---\r
\r
## 九、消息处理规则\r
\r
| 收到的消息 | 动作 |\r
|---|---|\r
| `/clawshop` / `/推荐` / `推荐 URL` / 裸 URL | 触发 `lib/trigger.py` |\r
| `登录 xxx yyy` / `login xxx yyy` | 触发 `lib/trigger.py`(脚本内部识别)|\r
| `Clicked "..."` 按钮回调 | 触发 `lib/handle_button.py` |\r
| Cron `Clawshop 轮询事件: ...` | 触发 `lib/poll_events.py` |\r
| 系统提示 `Use the "clawshop" skill ...` | 按上下文判断走哪个脚本 |\r
| HEARTBEAT_OK / inter-session announce | NO_REPLY |\r
\r
---\r
\r
## 十、隔离规则\r
\r
\r
\r
- **绝不调 `/recommend` `/clawshop/callback`,只调 `/api/v1/*`**\r
\r
clawshop 完全独立运行。\r
\r
---\r
\r
## 十一、依赖\r
\r
- data-service(地址在 `config.json` 的 `data_service.base_url`)\r
- OpenClaw gateway(`http://127.0.0.1:18789`)\r
- OpenClaw cron 工具\r
- OpenClaw message 工具(发 Discord 卡片)\r
- 用户配置的 Discord(自带,不依赖特定频道 ID — 由 OpenClaw 路由)\r
\r
---\r
\r
## 十二、注意事项(血泊教训)\r
\r
1. **token 失效后必须删本地 token.json 再提示老板**,不能光提示不删。\r
2. **processed_events.json 防重复发卡片**,必须先写文件再 ack(保证 ack 失败也不会重发)。\r
3. **cron job 启动后必须能停**:流程结束、超时、报错都要停,避免无限轮询烧 token。\r
4. **lightContext: true** 必须设,否则每次轮询都加载全部上下文,token 暴涨。\r
5. **登录消息不要 echo 密码**,"已收到登录请求"就够了。\r
6. **审核卡片走老板自己的 Discord**(OpenClaw message 工具 channel: discord,不指定 channel_id,让 OpenClaw 自动路由到用户配置的频道)。\r
7. **inter-session 来的 HEARTBEAT_OK / Agent-to-agent announce 消息,一律回 `NO_REPLY`。** 回任何其他文字都会被发到 Discord 频道里污染老板的屏幕。\r
8. **收到事件但数据不完整(如 storyboard_url 为空),且没有 error 字段,静默跳过。** 不要跟老板说“还没生成好”之类的废话。\r
9. **任何 review_1 / review_1_5 / review_2 事件进来 → 必须立即调对应 send_review_*.py 发卡片。绝对不允许做“是不是重复”的判断,不允许跳过。** 即使同一个 video_id 反复出现(比如换商品后重推 review_1),也是新卡片,必须发。\r
10. **按钮回调必须查映射文件确认 video_id,不能猜。** 查不到就问老板,不要自己猜。\r
\r
---\r
\r
## 十三、完整提示文案汇总(锁定,不许改)\r
\r
### 斜杠命令 ack\r
\r
| 场景 | 文案 |\r
|---|---|\r
| 未登录 | `🔑 还未登录 Clawshop。\
请回复您的账号和密码(中间用空格隔开),例如:\
\`myname 123456\`` |\r
| 无 URL | `⏳ 已启动热门推荐,带到合适的视频再给您发审核卡。` |\r
| 有 URL | `⏳ 指定视频已接收,正在抓取分析,完成后给您发审核卡。` |\r
| 登录成功 | `✅ 登录成功(用户:{username}),开始推荐...` |\r
| 登录失败 | `❌ 账号密码错误,请确认后重试。` |\r
| 登录异常 | `❌ 登录失败:{error}` |\r
| token 失效 | `❌ 登录已失效,请重新登录:\`登录 用户名 密码\`` |\r
\r
### 按钮回调进度消息\r
\r
| 按钮 | 进度消息 |\r
|---|---|\r
| ✅ 做 #{n} | `⏳ 视频 #{n} 开始生成分镜图,请稍候...` |\r
| ⏭️ 换一个 #{n} | 无(不发进度) |\r
| 🔄 换商品 #{n} | `🔄 正在重新匹配商品...` |\r
| ✅ 分镜通过 #{n} | `⏳ 分镜已确认,正在生成视频提示词和视频,预计8-10分钟...` |\r
| 🔄 重新生成 #{n} | `🔄 正在重新生成分镜图...` |\r
| ❌ 放弃 #{n} | `❌ 已放弃视频 #{n}` |\r
| ✅ 通过 #{n} | `📤 视频 #{n} 正在提交发布...` |\r
| 🔄 重做 #{n} | `🔄 视频 #{n} 重新生成中...` |\r
\r
### 事件提示\r
\r
| 事件 | 提示文案 |\r
|---|---|\r
| review_1 | 发一审卡片(带商品图 + 按钮) |\r
| review_1_5 正常 | 发分镜卡片(带分镜图 + 按钮) |\r
| review_1_5 error | `⚠️ 视频 #{n} 分镜生成失败:{error}` |\r
| review_2 正常 | 发成品视频卡片(带视频 + 按钮) |\r
| review_2 error | `⚠️ 视频 #{n} 生成失败:{error}` |\r
| published | `✅ 视频 #{n} 已成功发布到 {platform}!` |\r
| no_match | `🙅 这轮没找到合适的视频,稍后再试。` |\r
| error (quota_exhausted) | `⚠️ API余额不足,无法继续生成。请充值后重试。\
错误详情:{error}` |\r
| error (其他) | `⚠️ 服务端异常:{message}` |\r
\r
### API 错误\r
\r
| HTTP 状态 | 提示文案 |\r
|---|---|\r
| 401 | `❌ 登录已失效,请重新登录:\`登录 用户名 密码\`` |\r
| 403 | `❌ 操作越权:{error}` |\r
| 404 | `❌ 接口不存在(服务端可能未部署)` |\r
| 5xx | `❌ 服务器错误,请稍后重试` |\r
| 超时 | `❌ 请求超时` |\r
| 网络错误 | `❌ 网络连接失败:{error}` |\r
安全使用建议
Treat this as an incomplete review, not a clean security endorsement; the artifacts should be re-scanned when metadata.json and artifact/ can be read successfully.
能力标签
能力评估
Purpose & Capability
Unable to inspect metadata.json or artifact contents because sandboxed command execution failed before file reads completed.
Instruction Scope
No runtime instructions could be verified from the artifact files.
Install Mechanism
No install specification could be verified from the artifact files.
Credentials
No environment or capability claims could be verified from the artifact files.
Persistence & Privilege
No persistence, privilege, credential, or storage behavior could be verified from the artifact files.
如何使用
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install clawshop-pro - 安装完成后,直接呼叫该 Skill 的名称或使用
/clawshop-pro触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.10
fix: cron dedup with local poll_state lock, prevent duplicate jobs
v1.0.9
purge all flowdroid references from code and docs
v1.0.8
fix: remove all flowdroid references, use /clawshop everywhere
v1.0.7
fix: wrong password shows friendly error message
v1.0.6
fix: send_text/send_card add target from config, login hint updated
v1.0.5
doc: add workdir requirement for cross-platform support
v1.0.4
fix: all paths relative, no hardcoded absolute paths
v1.0.3
fix: skill paths updated to clawshop-pro
v1.0.2
login: no prefix needed, just username password
v1.0.1
config: default base_url to EC2 public IP
v1.0.0
Initial release: SaaS client for auto-shopping flow
元数据
常见问题
Clawshop Pro 是什么?
Clawshop 自动带货客户端 skill。装上 → 登录账号密码 → /clawshop 直接用,零配置。 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 96 次。
如何安装 Clawshop Pro?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install clawshop-pro」即可一键安装,无需额外配置。
Clawshop Pro 是免费的吗?
是的,Clawshop Pro 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Clawshop Pro 支持哪些平台?
Clawshop Pro 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Clawshop Pro?
由 fuckdayx(@fuckdayx)开发并维护,当前版本 v1.0.10。
推荐 Skills