依赖技能: mtop-devtools-socket
npm install -g @mtop-devtools/native-host @mtop-devtools/client用户想要创建一个新的 skill,该 skill 的核心逻辑是:访问某个网站 → 获取/分析请求数据。例如:
本 skill 不包含脚本,所有能力均来自 mtop-devtools-socket。
> ⛔ 全流程工具约束:本 skill 创建过程中,所有浏览器交互(打开页面、抓请求、点击、执行 JS、获取页面内容等)只允许使用 mtop-devtools 命令,严禁使用 puppeteer、playwright、curl 抓页面、其他 MCP 浏览器工具等任何 mtop-devtools 之外的浏览器控制能力。
从用户输入提取:
mtop-devtools tab_open 打开目标网站:mtop-devtools tab_open --payload '{"url": "https://example.com/dashboard", "active": true, "closeExisting": true}'
用户确认操作完成后,使用 mtop-devtools get_requests 抓取请求数据。使用步骤二中 tab_open 返回的 tabId 指定目标 tab:
# 抓取 mtop 请求
mtop-devtools get_requests --payload '{"count": 100, "source": "mtop", "tabId": 12345}'
# 抓取普通 HTTP 请求
mtop-devtools get_requests --payload '{"count": 100, "source": "requests", "tabId": 12345}'
mtop-devtools tab_list --payload '{}' 列出所有标签页,让用户确认应该从哪个 tab 获取,再用对应 tabId 重新抓取只关注业务接口(忽略 script、stylesheet、image、埋点等),按类型筛选并根据类型确定唯一调用方式:
| 类型 | 来源 | 生成 skill 的唯一调用方式 |
|---|---|---|
| ------ | ------ | --------------------------- |
| mtop | source: "mtop" | mtop-devtools send_mtop_request |
| xhr / fetch | source: "requests",resourceType 为 xhr/fetch | mtop-devtools proxy_request |
| document(HTML 页面/SSR 数据) | resourceType: "document" | mtop-devtools proxy_request(直接 GET 该 URL 拿 HTML,再用脚本解析) |
> ⛔ document 类型的硬约束:即使原始请求是浏览器导航产生的,生成的 skill 必须用 proxy_request 直接 HTTP 请求拿 HTML/JSON,严禁用 tab_open + page_eval / page_snapshot 的方式去打开 tab 抓页面内容。proxy_request 会自动携带浏览器 Cookie,登录态不是问题。
必须输出结构化分析报告后才能进入下一步,包含:
> mtop 接口可用 mtop-devtools get_api_schema --payload '{"api": "mtop.xxx.query", "version": "1.0"}' 获取 schema 辅助分析。
基于分析报告生成 skill 文件。
mtop-devtools proxy_request(HTTP/document)或 mtop-devtools send_mtop_request(mtop)完成。严禁在生成的 skill 中使用 tab_open、page_click、page_eval、page_snapshot、page_navigate 等任何浏览器操作来获取业务数据mtop-devtools-socket,严禁引入 puppeteer、playwright、axios、node-fetch、curl 等其他网络/浏览器依赖process.argv 接收可变值,可选参数提供合理默认值如果分析时发现接口需要先登录(302 跳 SSO、响应含 loginUrl 等),生成的 skill 可以在「实施步骤」开头加一段前置:用 mtop-devtools tab_open 打开登录页,等用户完成登录后再调用业务 API。这是唯一允许在生成 skill 中出现 tab_open 的场景,且仅用于登录,不得用于抓数据。
生成的 skill 目录结构应为:
packages/skills/<skill-name>/
├── SKILL.md # skill 描述文档
└── scripts/ # 可选
└── <skill-name>.mjs # 数据抓取脚本
---
name: <skill-name>
description: 'Use when/适用于:<一句话描述适用场景,不含具体链接>'
argument-hint: '<参数提示,如:<keyword> [--page <n>]>'
---
# <Skill 标题>
依赖技能: `mtop-devtools-socket`
## 前置依赖
1. 安装全局 CLI:`npm install -g @mtop-devtools/native-host @mtop-devtools/client`
## 适用场景
<列出 3+ 种用户输入模式>
## 实施步骤
<具体的命令/脚本调用方式、参数说明、输出格式>
## 错误处理
<常见错误及处理方式>
根据接口数量决定唯一的实现形态:
mtop-devtools 命令及参数说明scripts/.mjs ,内部用 child_process.execSync 调 mtop-devtools proxy_request / send_mtop_request,输出结构化 JSON禁止两种方式同时给出,禁止在文档中描述"你也可以手动调用 mtop-devtools 命令"等并行方案。
生成 skill 后,必须使用步骤四中分析到的真实请求参数进行端到端验证:
mtop-devtools 命令proxy_request,引导用户在扩展 Options 页「Agent Service > Domain Permissions」添加目标域名loginUrl/authUrl 字段等,说明需要先获取登录态。生成的 skill 应在实施步骤中增加前置步骤:先用 mtop-devtools tab_open 打开登录链接完成认证,再调用业务 API(这是 tab_open 在生成 skill 中的唯一合法用途)tab_open + page_snapshot/page_eval,直接 mtop-devtools proxy_request --payload '{"url":"","method":"GET"}' 拿 HTML 字符串,再在脚本里用正则解析(解析逻辑写进脚本,不要依赖浏览器)共 1 个版本