SKILL.md - 浏览器自动化操作 Skill
基本信息
Skill名称: browser-automation
Skill ID: browser_automation_20260507
适用场景: 所有需要通过浏览器完成的网页操作任务
依赖MCP: tai-app-browser-mcp-server
触发条件
当用户请求满足以下任意场景时,优先使用本Skill:
明确提到"使用浏览器"、"打开网页"、"访问网站"等关键词
需要填写网页表单、提交信息、注册账号等操作
社交媒体操作:发布微博、小红书、抖音内容,评论、点赞等
邮件操作:查看邮件、发送邮件、管理邮箱
信息查询:网页搜索、查看新闻、查询公开信息
自动化操作:重复网页操作、批量数据录入、网页数据提取
其他需要网页交互的场景
前置检查流程
流程图
A[开始] --> B{调用 browser_exists}
B -->|存在| C[继续执行任务]
B -->|不存在| D[询问用户:"检测到未安装联想浏览器,是否需要自动安装?"]
D -->|同意| E[调用 browser_install 进行安装]
E --> F{安装是否成功?}
F -->|是| C
F -->|否| G[提示用户:"浏览器安装失败,请手动安装后重试"]
D -->|不同意| H[终止任务,告知用户需要浏览器支持]
检查浏览器版本≥9.0.8.4270
确认当前网络连接正常
清理可能存在的弹窗和干扰元素
核心执行流程
流程图
A[接收任务] --> B{是否需要打开新页面?}
B -->|是| C[调用 browser_navigate 访问目标URL]
B -->|否| D[调用 browser_tabs 列出已有标签页,选择目标标签]
C & D --> E[调用 browser_snapshot 获取页面元素快照]
E --> F{是否需要元素定位操作?}
F -->|是| G[使用快照中的ref参数执行对应操作]
F -->|否| H[执行无需定位的操作(截图、返回、前进等)]
G & H --> I{操作是否完成?}
I -->|否| J{是否需要用户确认信息?}
J -->|是| K[向用户询问缺失的信息/确认操作]
J -->|否| L[再次调用 browser_snapshot 获取最新页面状态]
K --> L
L --> F
I -->|是| M[任务完成,反馈结果]
操作规范
新任务默认使用新标签页打开,避免影响用户已有页面
导航前确认URL正确性,避免访问恶意网站
页面加载后等待2秒或等待关键元素出现,再进行后续操作
若页面加载超时(超过10秒),提示用户检查网络或重试
强制要求:所有需要点击、输入、选择的操作,必须先调用 browser_snapshot 获取页面元素引用(ref)
优先使用ref参数定位元素,不允许使用CSS选择器或XPath直接定位
元素描述要准确:如"登录按钮"、"用户名输入框"、"发布按钮"等
若快照中找不到目标元素,可滚动页面或等待元素加载后重新获取快照
输入文本时,若内容较长,建议使用slowly: true参数逐字符输入,避免漏输
点击操作前确认元素可交互,避免点击无效区域
表单填写完成后,建议先截图留证,再提交
遇到验证码、二次验证等需要人工介入的场景,立即暂停操作,请求用户协助
上传文件前,必须确认文件的完整路径
支持多文件上传,路径参数使用数组格式:["C:\\Users\\xxx\\Desktop\\file1.jpg", "C:\\Users\\xxx\\Desktop\\file2.png"]
大文件上传前提示用户预计耗时,避免用户误以为操作卡住
上传完成后验证文件是否成功显示在页面上
操作过程中遇到弹窗,优先使用 browser_handle_dialog 处理,默认选择"确认"
若页面跳转后未出现预期内容,先刷新页面重试,再考虑终止任务
连续3次操作失败后,向用户说明情况,请求人工干预
所有错误信息要清晰易懂,避免技术术语,如"点击发布按钮失败,请手动检查页面是否有异常"
工具使用说明
常用工具列表
工具名称 | 适用场景 | 示例参数
browser_navigate | 打开指定网页 | {"url": "https://weibo.com"}
browser_snapshot | 获取页面元素快照 | 无参数
browser_click | 点击页面元素 | {"element": "登录按钮", "ref": "e123"}
browser_type | 输入文本内容 | {"element": "用户名输入框", "ref": "e456", "text": "user123"}
browser_fill_form | 批量填写表单 | {"fields": [{"name": "username", "ref": "e456", "value": "user123"}, {"name": "password", "ref": "e789", "value": "pass123"}]}
browser_select_option | 选择下拉选项 | {"element": "省份选择", "ref": "e101", "values": ["北京市"]}
browser_take_screenshot | 页面截图 | {"fullPage": true, "type": "png"}
browser_file_upload | 文件上传 | {"paths": ["C:\\Users\\xxx\\Desktop\\photo.jpg"]}
browser_wait_for | 等待条件满足 | {"text": "发布成功", "time": 5}
高级功能使用
执行JS代码:使用 browser_evaluate 可执行自定义JavaScript,如滚动页面、修改元素属性等
网络请求查看:使用 browser_network_requests 可查看页面加载的所有接口请求,用于调试
控制台日志:使用 browser_console_messages 可获取浏览器控制台输出,排查页面错误
键盘操作:使用 browser_press_key 可模拟键盘按键,如Enter、Esc、方向键等
安全约束
禁止访问违法违规网站,若用户要求访问敏感网站,直接拒绝
禁止在浏览器中输入用户未明确提供的敏感信息(密码、身份证号、银行卡号等)
所有操作必须在用户明确授权下进行,禁止自动执行可能导致数据泄露或财产损失的操作
操作过程中若涉及用户隐私数据,操作完成后自动清理浏览器缓存和Cookie
禁止使用浏览器进行任何攻击性行为(如SQL注入、XSS攻击等)
输出规范
操作过程中及时反馈进度:如"正在打开微博页面..."、"正在填写登录表单..."
关键操作完成后提供截图:如登录成功、发布成功等节点,自动截图反馈给用户
任务完成后总结操作结果:如"已成功发布微博,内容为:xxx,链接:xxx"
操作失败时明确说明原因和下一步建议:如"发布失败,页面提示内容包含敏感词,请修改后重试"
示例场景
示例1:发布微博
- browser_navigate(url="https://weibo.com")
- browser_wait_for(text="登录")
- browser_snapshot()
- browser_click(element="登录按钮", ref="e12")
- browser_snapshot()
- browser_type(element="用户名输入框", ref="e34", text="xxx")
- browser_type(element="密码输入框", ref="e56", text="xxx")
- browser_click(element="确认登录按钮", ref="e78")
- browser_wait_for(text="首页")
- browser_snapshot()
- browser_click(element="发布框", ref="e90")
- browser_type(element="发布输入框", ref="e101", text="今天天气真好!")
- browser_click(element="发布按钮", ref="e112")
- browser_wait_for(text="发布成功")
- browser_take_screenshot()
示例2:填写表单
- browser_navigate(url="https://example.com/form")
- browser_snapshot()
- browser_fill_form(fields=[ {"name": "姓名", "ref": "e12", "value": "张三"}, {"name": "手机号", "ref": "e34", "value": "13800138000"}, {"name": "邮箱", "ref": "e56", "value": "zhangsan@example.com"} ])
- browser_select_option(element="省份", ref