怎么把任意网站变成 Skill?

怎么把任意网站变成 Skill?

准备工作

  • 目标网站:选择一个你每天都会使用的、有明确重复操作的网站(例如 GitHub、Notion、Jira)。
  • 浏览器:Chrome 或 Edge(需包含开发者工具)。
  • AI 助手:能够上传文件并生成代码的大语言模型(如 ChatGPT、Claude 等)。
  • 基础认知:理解 Skill 的本质是一份 Markdown 操作手册 + 可选脚本,不是复杂程序。

🚶 第一步:解决网站的登录认证

目标:让 Skill 能“代表你”访问需要登录的网站。

方式 A:直接复用 Cookie(最简单)

  1. 登录网站:在浏览器中正常登录目标网站。
  2. 复制 Cookie
    • F12 打开开发者工具 → 切换到 Application(应用程序)标签页。
    • 在左侧找到 Cookies → 点击目标网站的域名。
    • 在右侧表格中,任意一条 Cookie 记录上右键 → 选择 “复制” → “复制全部”(或类似选项),将整个 Cookie 字符串复制到剪贴板。
  3. 保存 Cookie
    • 在你的 Skill 项目目录(例如 my-skills/github-create-issue/)中,创建一个配置文件(如 cookies.txt 或直接写在后续的脚本里)。
    • 将复制的 Cookie 字符串完整粘贴进去。
    • 注意:Cookie 会过期,过期后重复此步骤刷新即可。

方式 B:用 CDP 自动登录(进阶)

  • 如果你想完全自动化登录,可以在 Skill 中编写一段脚本,通过 Chrome DevTools Protocol (CDP) 直接复用你电脑上已登录的 Chrome 浏览器用户数据(Profile)。这样每次执行 Skill 时会自动“继承”登录态。
  • 新手建议先使用方式 A,跑通流程后再尝试。

📹 第二步:用 Chrome HAR 录制你的目标操作

目标:录制你想自动化的那个具体操作,生成 HAR 文件(HTTP Archive,即浏览器网络请求的完整存档)。

录制准备

  1. 打开浏览器开发者工具(F12)。
  2. 点击 Network(网络) 标签页。
  3. 确保左上角的红色录制按钮处于 开启状态(红色)。
  4. 勾选「Preserve log」(保留日志),防止页面跳转时清空记录。

执行录制

  1. 回到网站页面,只做你想自动化的那一个操作,并且尽量保持“干净”:
    • ✅ 正确示例:在 GitHub 上创建一个 Issue → 点击“New Issue” → 填写标题和描述 → 点击“Submit”。
    • ❌ 错误示例:创建 Issue 的过程中,又去点了其他仓库、浏览了其他页面。
  2. 操作完成后,立即回到开发者工具的 Network 标签页。
  3. 在任意一个网络请求上 右键 → 选择 “Save all as HAR with content”(将所有内容另存为 HAR)。
  4. 将生成的 .har 文件保存到本地,文件名建议能体现操作内容,如 github_create_issue.har

录制技巧

  • 只录制核心操作,避免多余点击,这样生成的 HAR 文件更小、关键请求更突出。
  • 对于复杂操作(如填写表单),尽量一次性完成,减少中间步骤。

🤖 第三步:让 AI 分析 HAR,生成可复用脚本

目标:把 HAR 文件交给 AI,让它自动分析出关键 API 并生成操作脚本(如 Python)。

操作步骤

  1. 打开 AI 对话窗口(如 ChatGPT)。
  2. 上传 HAR 文件,并输入提示词。一个高效的提示词模板如下:

    “请分析这个 HAR 文件,它记录了我在 [网站名,如 GitHub] 上执行 [操作名,如创建一个 Issue] 的完整网络请求。

    1. 识别出实现该操作最关键的 1-2 个 HTTP 请求(通常是 POST 或 PUT 请求)。
    2. 提取这些请求的完整 URL、请求头(Headers,特别是 Cookie 和认证信息)、请求体(Body)结构。
    3. 基于以上信息,为我生成一个 Python 脚本,该脚本应:
      • 能够独立运行,使用 requests 库。
      • 包含必要的函数,入参应设为可配置(如 Issue 标题、内容)。
      • 包含错误处理(如检查 HTTP 状态码)。
      • 请假设 Cookie 已经以字符串形式提供(从外部传入)。”
  3. 检查与调整
    • AI 生成的脚本通常能直接运行,但你需要检查以下几点:
      • Cookie 的传入方式(是否从文件读取)。
      • 请求体中是否有动态参数(如时间戳、随机数),若有,需要让 AI 调整逻辑。
      • 依赖库是否已安装(如 requests)。

📝 第四步:写 SKILL.md,把脚本组装成 Skill

目标:创建一份 Markdown 文件 SKILL.md,作为 AI Agent 读取的唯一入口,告诉它“何时用、怎么用、出错了怎么办”。

4.1 创建 Skill 目录结构

在你的工作目录下,为每个 Skill 创建一个独立文件夹,例如:

my-skills/
└── github-create-issue/
    ├── SKILL.md          (必需)
    ├── scripts/
    │   └── create_issue.py   (上一步生成的脚本)
    └── habits.json       (可选,用于记录用户习惯)

4.2 编写 SKILL.md 核心内容

A. YAML Frontmatter(触发条件)

在文件最开头用 --- 包裹 YAML 元数据,定义触发词:

---
title: GitHub Create Issue Skill
description: |
  在 GitHub 上创建一个新的 Issue。触发词:创建 issue, 新建问题, make issue, create github issue。
  Use when user asks to create an issue in a GitHub repository.
version: 0.1.0
author: you
---
B. 路径抽象(使用 ${SKILL_DIR}

在后续所有脚本或文件路径中,使用 ${SKILL_DIR} 变量代替绝对路径,这样 Skill 可以安装在任何位置:

## 脚本路径
- 创建 Issue 脚本:`${SKILL_DIR}/scripts/create_issue.py`
- Cookie 文件:`${SKILL_DIR}/cookies.txt`
C. 定义清晰的工作流(Step by Step)

使用有序列表,每一步写清楚“输入 → 执行 → 输出”:

## 工作流

1.  **确认必要信息**
    *   输入:用户可能提供了仓库名、Issue 标题、描述。如果缺失,使用 `AskUserQuestion` 向用户收集(详见下文)。
    *   输出:确认后的参数 `repo`, `title`, `body`

2.  **检查认证状态**
    *   执行:运行 `${SKILL_DIR}/scripts/check_auth.py`(一个简单的 GET 请求验证 Cookie 是否有效)。
    *   输出:如果返回 401/403,跳转到“错误处理 - 重新登录”。

3.  **创建 Issue**
    *   执行:运行 `${SKILL_DIR}/scripts/create_issue.py`,传入上一步得到的参数。
    *   输出:返回 Issue 的 URL 或成功提示。

4.  **返回结果**
    *   输出:向用户展示 Issue 链接,并记录本次操作到 `${SKILL_DIR}/habits.json`(记录用户选择的仓库等,用于下次默认推荐)。
D. 引入 AskUserQuestion(智能提问)

这是 Skill 交互的关键。在工作流中,需要用户确认参数时,使用 AskUserQuestion 关键词,并附带一个 JSON 结构来描述问题:

## 用户交互示例

当需要收集创建 Issue 的参数时,AI 应使用 AskUserQuestion 并呈现以下问题面板:

{
  "type": "form",
  "title": "创建 GitHub Issue",
  "fields": [
    {
      "name": "repository",
      "label": "选择仓库",
      "type": "select",
      "options": ["user/repo1", "user/repo2"],
      "default": "{{从 habits.json 读取的最近使用仓库}}"
    },
    {
      "name": "title",
      "label": "标题",
      "type": "text"
    },
    {
      "name": "body",
      "label": "描述",
      "type": "textarea"
    }
  ]
}

用户提交后,将字段值传递给后续脚本。
  • 习惯文件:在每次成功创建 Issue 后,脚本应更新 habits.json,将本次选择的仓库记录为该工作区的默认值。下次 AskUserQuestion 时,default 字段就会自动填充习惯值。
E. 错误处理

列出可能发生的错误及处理方式,用表格形式最清晰:

## 错误处理

| 错误类型 | 检测方式 | 处理步骤 |
| --- | --- | --- |
| Cookie 过期 | 调用 API 返回 401 | 1. 提示用户“登录已过期,请重新复制 Cookie”。<br>2. 询问用户是否要打开登录页面。 |
| 网络超时 | 脚本抛出超时异常 | 渐进重试:首次等待 15 秒 → 失败后等待 30 秒 → 再失败等待 60 秒 → 最终提示用户手动检查网络。 |
| 依赖缺失 | 脚本运行前检测 `requests` | 如果缺失,提示用户 `pip install requests`。 |
F. 渐进重试与健康检查

在 SKILL.md 中写明重试逻辑和前置检查:

## 鲁棒性配置

- **渐进重试**:对于认证类或临时性错误,采用 [15s, 30s, 60s] 的间隔重试,三次失败后终止。
- **健康检查**:在执行创建操作前,先发送一个 GET 请求到某已知存在的资源(如仓库详情),确保 Cookie 有效且接口可达。

✅ 第五步:测试与迭代

  1. 运行第一个版本:将 SKILL.md 和脚本交给支持 Agent Skills 标准的 AI 客户端(如支持此协议的 AI 助手),用触发词尝试执行。
  2. 对照检查清单(原文 Checklist):
    • SKILL.md 是否精简(< 300 行)?
    • Frontmatter 是否包含中英文触发词?
    • 所有路径是否用了 ${SKILL_DIR}
    • 工作流步骤是否清晰,每一步有输入/输出?
    • 认证是否有过期重试逻辑?
    • 脚本是否有依赖检测?
  3. 持续迭代
    • v0.1:能创建 Issue 即可。
    • v0.2:增加查询 Issue 列表的功能。
    • v0.3:支持批量创建。
    • 让使用驱动进化,不必追求一开始就完美。

💡 真实案例参考:任务管理 Skill(15 分钟快速原型)

  • 目标:为一个任务管理系统(如 Linear、Jira)创建“创建任务”的 Skill。
  • 操作
    1. 登录:用方式 A 复制 Cookie 到 cookies.txt
    2. 录制:新建一个任务,录制 HAR。
    3. AI 生成:让 AI 分析 HAR,生成 create_task.py
    4. SKILL.md
      • Frontmatter:触发词 “创建任务, create task”。
      • 工作流:收集任务标题、描述 → 检查 Cookie → 运行脚本。
      • AskUserQuestion:询问任务标题、优先级、项目。
      • 错误处理:401 提示重新登录,超时重试。
    5. 完成:第一版只有 50 行 SKILL.md + 100 行 Python,能解决每天重复创建任务的痛点。

总结

按照以上步骤,你就能把任意网站变成 AI 可调用的 Skill。核心思想是:用 HAR 录制替代 API 文档研究,用 AI 生成替代手写代码,用 SKILL.md 替代硬编码逻辑

 “Agent执行Skill”与“代码级RPA”的核心区别

这两种方法的目标都是实现自动化,但路径和本质截然不同。以下是详细的对比:

维度Agent 执行 Skill (文章方案)代码级 RPA
操作对象网站的后端API(直接与服务器通信)浏览器的DOM元素(模拟鼠标点击、键盘输入)
实现原理1. 通过HAR分析出关键API请求。
2. 生成代码(如Python脚本)直接发送HTTP请求来操作。
1. 通过选择器(XPath、CSS)定位网页上的按钮、输入框。
2. 用Selenium、Playwright等工具模拟用户操作。
稳定性。API接口通常比网页UI稳定,只要不改版,脚本可以长期运行。。UI极易变化(按钮位置、class名称改变),导致选择器失效,维护成本高。
执行效率极快。直接进行数据交换,无需等待页面渲染、动画加载。较慢。必须等待页面加载、元素可见,速度受限于前端性能。
处理能力。可以直接批量处理数据(如一次创建100个任务),不受UI限制。。受限于UI设计,难以高效处理批量操作。
适用场景操作有明确后端API对应的场景,如:
• 创建/查询数据
• 状态更新
• 文件上传/下载
必须通过UI操作的复杂场景,如:
• 验证码/滑块拖动
• 复杂的JS渲染图表导出
• 操作无独立API的遗留系统
开发门槛。核心是“录制+AI分析”,会使用浏览器开发者工具即可。较高。需要掌握页面元素定位、等待策略、调试选择器等技能。
维护方式主要关注API是否变更,变则需重新录制HAR更新脚本。主要关注UI是否变更,变则需更新元素选择器和操作逻辑
What do you think?
0 Reactions
Pick a reaction