多云文档抓取工具
本 skill 负责从四大云厂商(阿里云、腾讯云、百度云、火山引擎)抓取产品文档,存储到本地 SQLite 数据库,并提供变更检测能力。
核心设计原则:skill 只做数据采集和 diff,不调用大模型。总结、摘要、对比分析由调用方(客户端大模型)根据返回的原始文档内容自行完成。
触发规则
- 1. 用户提问提到阿里云、腾讯云、百度云、火山引擎中任意一个 → 必须调用此 skill
- 用户提问涉及云产品功能但未指明云厂商(如"总结一下安全组"、"VPC 是什么") → 先追问用户是哪个云厂商,确认后再调用
- 用户提到多个云厂商并要求对比 → 使用
compare_docs 获取两侧文档,自行对比分析 - 用户要求巡检或监控 → 按"巡检流程"章节操作
安装
CODEBLOCK0
安装后可用 cloud-doc-skill 命令,未安装时用 python scripts/entry.py。
调用格式
CODEBLOCK1
数据流
CODEBLOCK2
Skills 详解
fetch_doc — 抓取/查询文档
两种模式:
- 1.
doc_ref 模式:从云厂商 API 实时抓取单篇文档,存入本地数据库 - INLINECODE4 模式:从本地数据库按关键词查询已存储的文档(不发网络请求)
CODEBLOCK3
参数:
- -
cloud(必填):aliyun | tencent | baidu | INLINECODE9 - INLINECODE10 :文档标识,直接从 API 抓取
- INLINECODE11 :产品名称,从本地数据库查询
- INLINECODE12 :product 模式最多返回篇数(默认 10)
- INLINECODE13 :额外搜索关键词
返回示例(doc_ref 模式):
CODEBLOCK4
调用方拿到 content 后,自行进行总结、摘要等操作。
check_changes — 检测变更
从本地数据库读取已存储的文档,逐篇重新抓取最新版本,与旧版本对比,返回变更列表和 diff。
前提:需要先通过 fetch_doc + doc_ref 抓取过文档,数据库中有基线数据。
CODEBLOCK5
参数:
- -
cloud(必填):云厂商标识 - INLINECODE18 (必填):产品名称(用于从本地数据库搜索)
- INLINECODE19 :检查最近 N 天(默认 7)
- INLINECODE20 :最多检查篇数(默认 200)
- INLINECODE21 :额外搜索关键词
返回示例:
CODEBLOCK6
调用方拿到 changes 列表和 diff 后,自行生成变更摘要。
compare_docs — 获取两侧文档
获取两个云厂商的产品文档原始内容,返回给调用方进行对比分析。skill 本身不做对比。
CODEBLOCK7
参数:
- -
left(必填):cloud + product 或 INLINECODE27 - INLINECODE28 (必填):
cloud + product 或 INLINECODE31 - INLINECODE32 :对比关注点(传递给调用方参考)
返回示例:
CODEBLOCK8
调用方拿到两侧 content 和 focus 后,自行进行对比分析。
summarize_diff — 文档 Diff
对新旧两个版本的文档内容进行 diff,返回变更类型(minor/major/structural)和 diff 内容。
CODEBLOCK9
参数:
- -
title(必填):文档标题 - INLINECODE36 (必填):旧版本内容
- INLINECODE37 (必填):新版本内容
- INLINECODE38 :关注重点(可选)
- INLINECODE39 :文档 URL(可选)
返回示例:
CODEBLOCK10
调用方拿到 diff 和 change_type 后,自行生成变更摘要。
run_monitor — 批量巡检
从本地数据库读取已存储的文档,批量重新抓取检测变更,可推送通知。
CODEBLOCK11
参数:
- -
clouds(必填):云厂商列表 - INLINECODE43 (必填):产品列表
- INLINECODE44 :
check_now(默认)或 INLINECODE46 - INLINECODE47 :检查最近 N 天(默认 1)
- INLINECODE48 :每个产品最多检查篇数(默认 50)
- INLINECODE49 :是否发送通知(默认 false)
巡检流程(调用方必读)
巡检时,不要直接调用 run_monitor,按以下流程操作:
第一步:确定百度云的产品子功能
用户指定要巡检的产品大类(如 VPC / CSN / DNS / VPN),用浏览器访问百度云文档侧边栏,列出子功能清单。
为什么以百度云为基准? 其他云厂商的部分子功能可能是独立产品(如阿里云弹性网卡是独立产品 ENI),百度云的产品划分相对集中,适合作为基准。
第二步:映射到其他三个云厂商
用浏览器访问阿里云、腾讯云、火山引擎的文档,找到对应的产品/功能页面。
| 百度云子功能 | 阿里云 | 腾讯云 | 火山引擎 |
|---|
| VPC 基础 | vpc | 私有网络 | 私有网络 |
| 弹性网卡 |
eni(独立产品) | 弹性网卡(独立产品) | 私有网络(弹性网卡章节) |
| 高可用虚拟IP | vpc(HAVIP章节) | 高可用虚拟IP | 私有网络(HAVIP章节) |
第三步:收集文档 URL
用浏览器访问各云厂商文档页面,从侧边栏收集所有文档 URL。
第四步:逐篇抓取
CODEBLOCK12
第五步:分析和报告
- -
check_changes 检测变更 → 调用方根据 diff 生成变更摘要 - INLINECODE51 获取两侧文档 → 调用方进行对比分析
- INLINECODE52 汇总 + 发送通知
流程总结
CODEBLOCK13
doc_ref 格式说明
各云厂商的 doc_ref 格式不同,从文档 URL 中提取:
| 云厂商 | URL 格式 | doc_ref 格式 | 示例 |
|---|
| 阿里云 | INLINECODE53 | URL 路径 | INLINECODE54 |
| 腾讯云 |
cloud.tencent.com/document/product/{pid}/{did} |
product_id/doc_id |
215/20046 |
| 百度云 |
cloud.baidu.com/doc/{PRODUCT}/s/{slug} |
PRODUCT/slug |
VPC/qjwvyu0at |
| 火山引擎 |
volcengine.com/docs/{lib_id}/{doc_id} |
lib_id/doc_id |
6401/70538 |
支持的云厂商
| 云厂商 | cloud 值 | 产品标识格式 | 示例 |
|---|
| 阿里云 | INLINECODE64 | alias 路径 | INLINECODE65 、ecs、 INLINECODE67 |
| 腾讯云 |
tencent | 中文产品名 |
私有网络、
VPN 连接 |
| 百度云 |
baidu | 大写产品代码 |
VPC、
DNS、
CSN |
| 火山引擎 |
volcano | 中文产品名 |
私有网络、
NAT网关 |
返回结构
所有 skill 返回统一 JSON:
CODEBLOCK14
- -
machine:结构化数据,包含文档内容、变更列表、diff 等 - INLINECODE79 :简短的人类可读文本
- INLINECODE80 :正常为
null,出错时包含 code 和 INLINECODE83
错误码:MISSING_PARAM | INVALID_PARAM | INLINECODE86
配置
INLINECODE87 核心配置:
CODEBLOCK15
速率控制
- -
fetch_doc(docref)和 check_changes 会发起网络请求,遵守 requestdelay - INLINECODE90 (product)和
compare_docs(product)从本地数据库读取,无网络请求 - 巡检时由调用方控制调用频率,建议每次 fetchdoc 间隔 ≥ 1 秒
- 如遇 429/403 错误,增加 requestdelay
多云文档抓取工具
本 skill 负责从四大云厂商(阿里云、腾讯云、百度云、火山引擎)抓取产品文档,存储到本地 SQLite 数据库,并提供变更检测能力。
核心设计原则:skill 只做数据采集和 diff,不调用大模型。总结、摘要、对比分析由调用方(客户端大模型)根据返回的原始文档内容自行完成。
触发规则
- 1. 用户提问提到阿里云、腾讯云、百度云、火山引擎中任意一个 → 必须调用此 skill
- 用户提问涉及云产品功能但未指明云厂商(如总结一下安全组、VPC 是什么) → 先追问用户是哪个云厂商,确认后再调用
- 用户提到多个云厂商并要求对比 → 使用 compare_docs 获取两侧文档,自行对比分析
- 用户要求巡检或监控 → 按巡检流程章节操作
安装
bash
pip install .
或开发模式
pip install -r requirements.txt
安装后可用 cloud-doc-skill 命令,未安装时用 python scripts/entry.py。
调用格式
bash
cloud-doc-skill name> json>
或
python scripts/entry.py name> json>
数据流
调用方(AI)通过浏览器收集文档 URL
↓
fetchdoc + docref 逐篇抓取 → 存入本地 SQLite
↓
check_changes 从数据库读取 → 重新抓取 → 对比 diff → 返回变更列表
↓
compare_docs 获取两侧文档原始内容 → 返回给调用方
↓
调用方(AI)根据返回的原始内容自行总结、对比、生成报告
Skills 详解
fetch_doc — 抓取/查询文档
两种模式:
- 1. doc_ref 模式:从云厂商 API 实时抓取单篇文档,存入本地数据库
- product 模式:从本地数据库按关键词查询已存储的文档(不发网络请求)
bash
doc_ref 模式 — 各云厂商格式
cloud-doc-skill fetch
doc {cloud: aliyun, docref: /vpc/product-overview/what-is-vpc}
cloud-doc-skill fetch
doc {cloud: tencent, docref: 215/20046}
cloud-doc-skill fetch
doc {cloud: baidu, docref: VPC/qjwvyu0at}
cloud-doc-skill fetch
doc {cloud: volcano, docref: 6401/70538}
product 模式 — 从本地数据库查询
cloud-doc-skill fetch_doc {cloud: aliyun, product: VPC}
cloud-doc-skill fetch_doc {cloud: tencent, product: 私有网络, keyword: 子网}
参数:
- - cloud(必填):aliyun | tencent | baidu | volcano
- docref:文档标识,直接从 API 抓取
- product:产品名称,从本地数据库查询
- maxpages:product 模式最多返回篇数(默认 10)
- keyword:额外搜索关键词
返回示例(doc_ref 模式):
json
{
machine: {
cloud: aliyun,
mode: doc_ref,
items: [
{
title: 什么是专有网络,
url: https://help.aliyun.com/zh/vpc/product-overview/what-is-vpc,
doc_ref: https://help.aliyun.com/zh/vpc/product-overview/what-is-vpc,
content: 专有网络VPC(Virtual Private Cloud)是...,
last_modified: 2024-03-15T10:30:00
}
],
total: 1
},
human: { summary_text: 成功抓取 1 篇文档。 },
error: null
}
调用方拿到 content 后,自行进行总结、摘要等操作。
check_changes — 检测变更
从本地数据库读取已存储的文档,逐篇重新抓取最新版本,与旧版本对比,返回变更列表和 diff。
前提:需要先通过 fetchdoc + docref 抓取过文档,数据库中有基线数据。
bash
cloud-doc-skill check_changes {cloud: aliyun, product: vpc, days: 7}
cloud-doc-skill check_changes {cloud: baidu, product: DNS, days: 30}
参数:
- - cloud(必填):云厂商标识
- product(必填):产品名称(用于从本地数据库搜索)
- days:检查最近 N 天(默认 7)
- max_pages:最多检查篇数(默认 200)
- keyword:额外搜索关键词
返回示例:
json
{
machine: {
cloud: aliyun,
product: vpc,
days: 7,
total_checked: 15,
changes: [
{
change_type: major,
title: VPC 配额限制,
url: https://help.aliyun.com/zh/vpc/...,
doc_ref: https://help.aliyun.com/zh/vpc/...,
old_hash: abc123,
new_hash: def456,
diff: --- old\n+++ new\n@@ -10,3 +10,5 @@\n...
}
],
fetch_errors: 0
},
human: { summary_markdown: 检查了 15 篇文档,最近 7 天内无变更。 },
error: null
}
调用方拿到 changes 列表和 diff 后,自行生成变更摘要。
compare_docs — 获取两侧文档
获取两个云厂商的产品文档原始内容,返回给调用方进行对比分析。skill 本身不做对比。
bash
doc_ref 模式(推荐)
cloud-doc-skill compare
docs {left: {cloud: aliyun, docref: /vpc/product-overview/what-is-vpc}, right: {cloud: tencent, doc_ref: 215/20046}}
product 模式(从本地数据库查询)
cloud-doc-skill compare_docs {left: {cloud: aliyun, product: vpc}, right: {cloud: tencent, product: 私有网络}, focus: 能力差异}
参数:
- - left(必填):cloud + product 或 docref
- right(必填):cloud + product 或 docref
- focus:对比关注点(传递给调用方参考)
返回示例:
json
{
machine: {
left: { cloud: aliyun, product: vpc, title: 什么是专有网络, content: ... },
right: { cloud: tencent, product: 私有网络, title: 私有网络概述, content: ... },
focus: 能力差异
},
human: { summary_text: 已获取 aliyun/什么是专有网络 和 tencent/私有网络概述 的文档内容,请对比分析。 },
error: null
}
调用方拿到两侧 content 和 focus 后,自行进行对比分析。
summarize_diff — 文档 Diff
对新旧两个版本的文档内容进行 diff,返回变更类型(minor/major/structural)和 diff 内容。
bash
cloud-doc-skill summarizediff {title: VPC API 文档, oldcontent: 旧版本..., new_content: 新版本...}
参数:
- - title(必填):文档标题
- oldcontent(必填):旧版本内容
- newcontent(必填):新版本内容
- focus:关注重点(可选)
- url:文档 URL(可选)
返回示例:
json
{
machine: {
title: VPC API 文档,
change_type: major,
focus: null,
diff: --- old\n+++ new\n...,
old_hash: abc123,
new_hash: def456
},
human: { summary_text: 文档《VPC API 文档》发生了 major 级别的变更,请根据 diff 内容进行分析。 },
error: null
}
调用方