Skip to main content

sjzl-ai-okc

商机助理(一键上货)。当用户有以下任何需求时,**必须**使用此技能: - 提到"商机助理"且包含"上货"、"复制"、"发布"关键词时,进行商品一键上货 - 一键上货到商机助理平台 - 查看的商机助理账号 - 保存或修改商机助理授权 自动识别用户输入中的商品链接,调用商品链接识别MCP接口进行处理。 如果用户输入中没有链接,则提示用户提供链接。

Ir para a instalação

Informações da origem

Repositório
RabbitAI-Lab/rabbit-plugins-upstream
Última atividade na origem
26 de julho de 2026 às 20:50
Idioma detectado do SKILL.md
chinês
Estrelas
0
Forks
0

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Explorador de arquivos
6 arquivos

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
sjzl-ai-okc
description
商机助理(一键上货)。当用户有以下任何需求时,**必须**使用此技能: - 提到"商机助理"且包含"上货"、"复制"、"发布"关键词时,进行商品一键上货 - 一键上货到商机助理平台 - 查看的商机助理账号 - 保存或修改商机助理授权 自动识别用户输入中的商品链接,调用商品链接识别MCP接口进行处理。 如果用户输入中没有链接,则提示用户提供链接。
# 商机助理一键上货 识别用户输入中的商品链接,调用 MCP 工具进行一键上货。 ## MCP 服务配置 本技能依赖以下 MCP 服务,运行时**必须**先读取 `skill-config.json` 获取鉴权 Token: | 配置项 | 说明 | |--------|------| | 鉴权方式 | HTTP Header 携带 `sToken`,值取自 `skill-config.json` 的 `sToken` 字段 | ### 配置读取方式 **约束:调用方 agent 必须在执行任何 MCP 调用前,先读取 skill-config.json 文件获取 sToken** 若 `sToken` 为空(空字符串或字段不存在),则**停止后续流程**,**仅输出以下两行内容**给用户:**不要输出 `---` 分隔符**,**不要添加任何额外的解释、叙述或前言文字**(包括"授权 Token 为空"等说明),**不要输出多余空行或分割线**: 您尚未授权,请前往 [商机助理](https://sjzl.fjdaze.com/v2/#/) 复制授权。 MEDIA:<SKILL目录>/images/auth.png > **⚠️ 图片路径自动解析**:在输出授权提示前,agent 需读取本 SKILL.md 文件的实际路径,提取其父目录(即技能目录),然后拼接 `images/auth.png` 得到**绝对路径**,并将该绝对路径用于下方的 `MEDIA:` 标签。例如若 SKILL.md 位于 `C:\Users\Administrator\.openclaw\workspace\skills\sjzl-ai-okc\SKILL.md`,则 `MEDIA:` 应使用 `C:\Users\Administrator\.openclaw\workspace\skills\sjzl-ai-okc\images\auth.png`。 **等待用户输入授权 Token**,用户输入后进入 sToken 保存流程。 --- ### sToken 保存流程 当满足以下任一条件时,触发 sToken 保存流程: - 用户在授权提示后直接输入了 Token - 用户输入中包含关键词**「保存授权」**或**「修改授权」**,并提供了 Token #### sToken 格式校验 | 规则 | 说明 | |------|------| | 前缀 | 必须以 `st` 开头 | | 后续字符 | `st` 后跟恰好 32 位字母数字字符(a-z、A-Z、0-9) | | 总长度 | 34 位 | | 正则校验 | `^st[a-zA-Z0-9]{32}$` | 示例:`st66666666666666666666666666666666` #### 处理步骤 1. 从用户输入中提取符合正则 `^st[a-zA-Z0-9]{32}$` 格式的字符串 2. 校验结果处理: | 情况 | 处理方式 | |------|----------| | 格式正确 | 将 `skill-config.json` 的 `sToken` 字段更新为提取到的值,提示用户:"授权成功!" | | 未提取到符合格式的 Token | 提示用户:"授权 Token 格式不正确,请重新输入(格式:st + 32 位字母数字字符)" | > 写入 `skill-config.json` 时,仅更新 `sToken` 字段,其他字段(如 `mcpServerUrl`)保持不变。 --- ### 跨平台调用说明 **⚠️ 重要:call_mcp.py 脚本的 Python 路径** 在 Windows 系统上,`python3` 命令可能不存在。请使用以下方式之一执行脚本: ```bash # 方式 1:使用 python(Windows 推荐) python scripts/call_mcp.py ... # 方式 2:使用完整路径(如果 python 也不在 PATH 中) C:\ProgramData\anaconda3\python.exe scripts/call_mcp.py ... # 方式 3:在 exec 中先 cd 再用 & 符号调用(PowerShell) Set-Location "技能目录" ; & "python" scripts/call_mcp.py ... ``` **⚠️ 重要:PowerShell 下 JSON 参数传递问题** PowerShell 对引号和花括号有特殊处理,导致 `--params` 传入的 JSON 字符串被破坏。**在 PowerShell 环境下,必须使用以下方式传递 JSON 参数**: ```bash # ✅ 推荐方式 1:使用 --params-file 从文件读取参数 # 先将参数写入 JSON 文件,再通过 --params-file 指定 python scripts/call_mcp.py call get_copy_rule_config --params-file params.json # ✅ 推荐方式 2:使用 --params @file.json 语法 python scripts/call_mcp.py call get_copy_rule_config --params @params.json # ❌ 避免方式:直接在 PowerShell 中传递 JSON 字符串(引号会被破坏) python scripts/call_mcp.py call get_copy_rule_config --params '{"rule":{...}}' # 不可靠 ``` 参数文件的写入方式:agent 应先将 JSON 参数写入一个临时文件(如 `_mcp_params.json`),再通过 `--params-file` 或 `--params @文件路径` 引用。 **⚠️ 重要:MCP 接口参数格式** 所有 MCP 工具调用的参数必须通过 `--params` 传入,格式为 JSON 字符串。注意以下工具的参数结构: - `get_copy_rule_config` 需要传入 `{"rule":{"mergeDefaultConfig":true,"copyConfigType":2}}` - `save_copy_rule_config` 需要传入 `{"rule":{"copyConfigType":2,"copyWay":...,"status":...,"sendGoodsAddressId":...,"freightTemplateId":...,"productSingerPriceType":...}}` - `copy_by_agent` 需要传入 `{"rule":{"copyConfigType":2,"copyProductInfos":[...]}}` - `url_identify` 需要传入 `{"rule":{"productUrls":["..."]}}` - `get_send_goods_addresses`、`get_skill_login_info` 无需参数 - `get_freight_templates` 需要传入 `{"rule":{"addressId":"<发货地址id>"}}` --- ## 触发条件 ### 场景一:一键上货 用户输入文本**同时满足**以下两个条件时触发一键上货流程: 1. 包含关键词之一:`复制`、`上货`、`发布` 2. 包含关键词:`商机助理` **示例触发语句**: - "用商机助理上货这个链接" - "商机助理复制这些商品" - "用商机助理发布一下" ### 场景二:查看商机助理账号 用户输入文本包含关键词**「查看商机助理账号」**时,触发查看登录信息流程。 ### 场景三:授权 / 修改授权 用户输入文本满足以下**任一**条件时,触发「sToken 保存流程」: 1. 包含关键词:`修改授权` 2. 包含关键词:`修改账号` --- ## 工作流程 ### 场景:查看商机助理账号 将参数写入临时文件(如 `_mcp_params.json`),然后调用 MCP 工具 `get_skill_login_info`(无需参数): ```bash python scripts/call_mcp.py call get_skill_login_info ``` #### MCP 接口返回结果格式 ```json { "code": 200, "msg": "", "result": { "userId": "", "userName": "" } } ``` | 情况 | 处理方式 | |------|----------| | `code == 200` | 展示:`商机助理账号:<result.userName>` | | `code != 200` | 将 `msg` 作为错误信息提示用户,**终止流程** | --- ### 第一步:识别用户输入中的链接 收到用户消息后: 1. 使用正则表达式从用户输入文本中提取所有 URL 链接 2. 判断是否提取到链接: | 情况 | 处理方式 | |------|----------| | 提取到一个或多个链接 | 进入第二步,调用 MCP 接口 | | 未提取到任何链接 | 提示用户:"请提供需要上货的商品链接,支持同时输入多个链接。" | **链接匹配规则**:匹配 `http://` 或 `https://` 开头的完整 URL。 ### 第二步:调用商品链接识别 MCP 接口 将参数写入临时文件 `_mcp_params.json`: ```json {"rule":{"productUrls":["<URL1>","<URL2>"]}} ``` 然后调用 MCP 工具 `url_identify`: ```bash python scripts/call_mcp.py call url_identify --params-file _mcp_params.json ``` #### MCP 接口返回结果格式 ```json { "Code": 200, "Msg": "", "Result": { "SuccessProductInfos": [ { "Url": "", "ProductId": "", "OfferSource": 0, "CopyProductParam": null } ], "FailProductUrls": [ "" ] } } ``` #### 接口调用状态判断 首先根据返回的 `Code` 字段判断接口是否调用成功: | 情况 | 处理方式 | |------|----------| | `Code == 200` | 调用成功,进入下方「结果展示与分支处理」 | | `Code != 200` | 调用失败,直接将 `Msg` 字段作为错误信息提示用户,**终止流程** | #### 结果展示与分支处理 解析 `Result` 后,按以下规则展示并决定后续流程: 1. 提取 `Result.SuccessProductInfos[*].Url` 作为**正确链接**列表 2. 提取 `Result.FailProductUrls` 作为**错误链接**列表 3. 按以下格式展示给用户(任一列表为空时仍需展示对应标题,下方留空或注明无): ``` 正确链接: <SuccessProductInfos[0].Url> <SuccessProductInfos[1].Url> ... 错误链接: <FailProductUrls[0]> <FailProductUrls[1]> ... ``` 4. 分支判断: | 情况 | 处理方式 | |------|----------| | `SuccessProductInfos` 为空(无任何成功链接) | 在展示结果后,提示用户:"未识别到有效的商品链接,请重新输入正确的商品链接。"。**等待用户重新输入后,从「第一步:识别用户输入中的链接」开始重新执行整个流程** | | `SuccessProductInfos` 不为空(存在至少一个成功链接) | 展示结果后,进入「第三步:获取上货设置」 | ### 第三步:获取上货设置 仅当第二步中 `SuccessProductInfos` 不为空时才执行本步。将参数写入临时文件 `_mcp_params.json`: ```json {"rule":{"mergeDefaultConfig":true,"copyConfigType":2}} ``` 然后调用 MCP 工具 `get_copy_rule_config`: ```bash python scripts/call_mcp.py call get_copy_rule_config --params-file _mcp_params.json ``` #### MCP 接口返回结果格式 ```json { "code": 200, "msg": "", "result": { "产品类型": { "name": "" }, "上架设置": { "name": "" }, "发货地址": { "id": "", "name": "" }, "运费设置": { "id": "", "name": "", "Type": "" }, "价格类型": { "name": "" } } } ``` > 各设置项均为对象格式,展示时仅展示 `name` 字段的值,`id` 和 `Type` 等字段用于内部逻辑判断。 #### 接口调用状态判断 | 情况 | 处理方式 | |------|----------| | `code == 200` | 调用成功,进入下方「设置展示与空值检测」 | | `code != 200` | 调用失败,直接将 `msg` 字段作为错误信息提示用户,**终止流程** | #### 设置展示与空值检测 `result` 包含 5 个固定设置项:`产品类型`、`上架设置`、`发货地址`、`运费设置`、`价格类型`,每项均为对象格式。 展示当前设置给用户(仅展示 `name` 字段): ``` 当前上货模板设置: - 产品类型:<result.产品类型.name 或"未设置"> - 上架设置:<result.上架设置.name 或"未设置"> - 发货地址:<result.发货地址.name 或"未设置"> - 运费设置:<result.运费设置.name 或"未设置"> - 价格类型:<result.价格类型.name 或"未设置"> ``` 检测各项是否为空(对象的 `name` 字段为空字符串、`null` 或对象本身为 `null` / 不存在视为空值): | 情况 | 处理方式 | |------|----------| | 所有 5 项均不为空 | 展示设置后,向用户询问:"以上为当前上货模板设置,是否使用以上设置进行一键上货?(是 / 否)",等待用户确认。用户回复**「是」/「确认」/「确定」/「yes」**等肯定语义时,进入「第六步:执行一键上货」;用户回复**「否」/「取消」/「no」**等否定语义时,提示:"已取消一键上货,您可前往 [商机助理](https://sjzl.fjdaze.com/) 修改上货模板设置后重试。",**终止流程** | | 存在至少一项为空 | 进入「第四步:补充空值设置」,逐项引导用户填写 | --- ### 第四步:补充空值设置 仅对 `result` 中**值为空**的设置项依次提示用户选择,顺序固定为:产品类型 → 上架设置 → 发货地址 → 运费设置 → 价格类型。 记录用户每一步的选择,等待用户**全部空值项**都填写完毕后,进入「第五步:保存上货设置」。 #### 产品类型(仅当值为空时提示) 提示用户选择: ``` 请选择产品类型: 1. 发布为现货品 2. 发布为工厂品 ``` | 选择 | 保存参数 | |------|----------| | 发布为现货品 | `copyWay = 0` | | 发布为工厂品 | `copyWay = 1` | #### 上架设置(仅当值为空时提示) 提示用户选择: ``` 请选择上架设置: 1. 销售中 2. 草稿箱 3. 待上架 ``` | 选择 | 保存参数 | |------|----------| | 销售中 | `status = 2` | | 草稿箱 | `status = 13` | | 待上架 | `status = 7` | #### 发货地址(仅当值为空时提示) 调用 MCP 工具 `get_send_goods_addresses` 获取发货地址列表(无需参数): ```bash python scripts/call_mcp.py call get_send_goods_addresses ``` 返回结果格式: ```json { "code": 200, "msg": "", "result": [ { "id": 0, "fullAddress": "" } ] } ``` | 情况 | 处理方式 | |------|----------| | `code == 200` | 展示所有 `fullAddress` 供用户选择 |
Ver no GitHub
Este SKILL.md e muito grande, entao o SkillsMP mostra aqui apenas a primeira secao. Ver no GitHub