抓取支付宝开放平台文档
支付宝文档站是 JS 渲染的 SPA,WebFetch/curl 拿不到正文,代码与参数依赖懒加载与折叠交互。本 Skill 用封装好的 Playwright 工具一步抓成结构化 Markdown。
何时使用
- 用户要把某个支付宝 API / 接入指南 / 错误码 / 产品文档「拉到本地」「抓下来」「转成 Markdown」。
- 用户粘贴
opendocs.alipay.com或opendoc.alipay.com链接并想要其内容。 - 已发现普通网页抓取(
WebFetch/curl等)对支付宝文档只返回标题、正文为空。
怎么用
设本 Skill 安装目录为 $SKILL(如 ~/.claude/skills/fetch-alipay-doc,Codex 为 ~/.codex/skills/...,Cursor 为 ~/.cursor/skills/...)。
-
首次使用:在
$SKILL下装一次依赖(仅一次,与运行目录无关):(cd "$SKILL" && npm install && npx playwright install chromium) # 若已全局安装 playwright 可跳过 -
收集要抓的 URL。多篇时写一个 config JSON 文件(如
urls.json),内容为数组[{ "name": "...", "url": "..." }, ...],name决定输出文件名(可省略,缺省用页面 H1)。 -
在用户当前项目目录下运行(用绝对路径调脚本,产物落到项目内、对用户可见)。不要
cd进$SKILL再跑——那会把文档写进 skill 安装目录(工具会拒绝)。输出用--out指定到项目内,按产品/主题分目录:# 单篇 node "$SKILL/scripts/fetch-alipay-docs.cjs" --url "<支付宝文档URL>" --name "<文件名>" --out ./alipay-docs/<产品名> # 批量 node "$SKILL/scripts/fetch-alipay-docs.cjs" --config urls.json --out ./alipay-docs/<产品名>node 解析 playwright 依赖是从脚本文件位置找
node_modules,与运行目录无关,所以站在项目目录用绝对路径调用即可。 -
产出在
--out目录:<name>.md+images/。--out缺省为当前目录下的./alipay-docs。
关键原则
- 忠实:正文文字必须 100% 来自页面,禁止虚构 / 总结 / 改写 / 解读。工具只做机械格式化。
抓完自检清单
每抓完一篇,逐项核对,有问题按「排障」处理或重抓:
- 无残留
@@...@@占位(占位未被替换 = 代码/表格/图片丢失)。 - 无 UI 噪音行(收藏 / 订阅更新 / 我的文档 / cURL·Java·C# tab 标签 / 「本示例仅供参考」/ 「收起所有属性」等)。
- 图片引用全部命中本地
images/文件(无坏链)。 - API 业务参数含嵌套子属性与枚举值且完整(对照页面「展开所有属性」后的状态)。
- 公共请求/响应参数表、Java 请求示例、错误码表齐全。
- 表格 rowspan 对齐正确(每行 code 与其 sub_code 一一对应,无错位)。
排障
- 代码 / 参数缺失 → 多半是懒加载未滚到或折叠(「更多」枚举、「子属性」嵌套)未展开;确认抓取流程做了全文滚动 + 逐个真实点击展开。
- 图片下不下来 →
cdn.nlark.com(语雀图床)用 nodehttps会失败,本工具改用curl(带 UA / Referer);确认系统装了curl。 - 接口页结构异常(如通知 / 回调类,section 是「消息属性 / 通知应答」而非标准请求/响应) → 本工具按通用 H2 分段兼容,无需硬编码 section 名。
维护者注:完整的踩坑经验、各坑的成因与设计依据见仓库根
PLAYBOOK.md(不随 Skill 安装分发,改代码前务必读)。