实战开发 AI Skill:网页内容抓取工具实现
现在利用 AI 辅助资料搜集的场景越来越普遍,但在实际使用中,我们往往无法明确指定模型抓取内容的范围,主要依赖模型自身的检索能力。虽然可以通过优化提示词来增强控制力,或者使用 Tavily Search、SearXNG 等专用搜索智能体,但引入 Skills 或 MCP 机制能更灵活地扩展大模型的能力边界。
借此机会,我尝试开发了一个基于 Skills 架构的网页内容抓取工具,旨在深入理解其开发流程并分享实践心得。
Skills 项目结构
一个标准的 Skill 项目通常包含以下目录结构:
skill-name/
├── SKILL.md # 唯一必需文件,定义元数据和指令
└── scripts/ # 存放可执行脚本(如 Python、Node.js)
└── fetch-content.js
├── references/ # 文档、API 说明
├── examples/ # 示例文件
├── evals/ # 测试用例
└── assets/ # 模板、图标等资源
SKILL.md 元数据详解
SKILL.md 是技能的核心配置文件,采用 YAML 格式。以下是关键字段的说明:
| 字段 | 必填 | 说明 |
|---|---|---|
name | 是 | 技能显示名称,默认使用目录名,仅支持小写字母、数字和短横线 |
description | 是 | 技能用途及使用场景,AI 据此判断是否自动调用 |
argument-hint | 否 | 参数补全提示,如 [issue-number] |
disable-model-invocation | 否 | 设为 true 禁止自动触发,仅支持手动 /name 调用 |
user-invocable | 否 | 设为 false 可从菜单隐藏,作为后台增强能力 |
allowed-tools | 否 | 激活时可无授权使用的工具列表 |
model | 否 | 指定激活时使用的模型版本 |
核心逻辑与代码实现
本次演示选用 Node.js 环境进行实现,主要功能是获取网页文本内容,并提取可识别的媒体资源(图片、视频、音频)URL。


