mcpField
S
scrape-review-schema

scrape-review-schema

github.com/zytedata数据与数据库11172 次安装2 天前更新
代码仓库

关于 scrape-review-schema

用于生成浏览器审核页面的技能,可供检查网页抓取模式及提取值。它收集审核者的反馈,并将反馈返回给调用方。

主要功能

  1. 01读取页面分析与模式
  2. 02选择原始或渲染后的 HTML
  3. 03生成浏览器审核页面
  4. 04收集审核者反馈

适用场景

  1. 01审核建议字段与提取值
  2. 02结合已保存页面检查提取结果
  3. 03向调用方提交模式修改意见

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/zytedata/skills --skill scrape-review-schema

安装后在 Claude Code 中输入/scrape-review-schema确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
review.html
review.js
style.css
scripts/
feedback-server.py
tests/
test_feedback_server.py

详细介绍

你正在生成一个审核页面,让用户在浏览器中验证拟定的架构和提取出的值。

读取 ${CLAUDE_SKILL_DIR}/../scrape/references/python-environments.md。

输入

原始参数字符串为 $ARGUMENTS。将其拆分为最多 5 个位置参数。 第 1、2 和 4 个参数是以空白字符分隔的令牌;第 3 和第 5 个参数是可能包含空白字符的 JSON 字面量 — 通过匹配括号来识别它们的边界(如果调用方用单引号或双引号括起参数,则去掉外层引号):

  1. spec_path:规格文件夹的路径,例如 .scrape/books-toscrape
  2. work_path:工作目录的路径,例如 .scrape/.work/books-toscrape
  3. schema:包含拟定架构的 JSON 对象字面量(以 { 开始,以匹配的 } 结束)
  4. html_variant:要使用的 HTML — raw 或 rendered
  5. changes(可选):上一轮变更说明的 JSON 数组字面量(以 [ 开始,以匹配的 ] 结束),例如 ["Re-analyzed price across all pages","Dropped field isbn"]

架构 JSON 使用 JSON Schema 格式(完整详情请参阅 ${CLAUDE_SKILL_DIR}/../scrape/references/extraction-spec.md):

{
  "type": "object",
  "properties": {
    "price": {
      "type": "string",
      "description": "Product price"
    }
  }
}

字段还可以带有 source 注解:"requested"(用户提出)或 "discovered"(AI 发现)。

流程

1. 读取分析数据

列出 {spec_path}/pages/ 中的页面子目录(每个子目录都是一个页面)。对于每个页面,读取其元数据 {spec_path}/pages/{page_id}/meta.json 和分析数据 {work_path}/analyze-page/{page_id}.{html_variant}.json。

2. 创建临时目录

创建一个名为 scrape-review-XXXXXX 的临时目录(其中 XXXXXX 是随机后缀)。记下生成的路径作为 {review_dir},并在后续步骤中使用它。

3. 复制静态资源

将此技能目录中的捆绑资源复制到临时目录:

  • review.html
  • style.css
  • review.js

使用 ${CLAUDE_SKILL_DIR}/assets/ 作为源路径。

4. 复制已保存的 HTML 页面

对于 {spec_path}/pages/ 中的每个页面目录,将所选变体的 HTML 复制到 {review_dir}/pages/{page_id}.html:

cp {spec_path}/pages/{page_id}/{html_variant}.html {review_dir}/pages/{page_id}.html

这样会展平目录结构,以供审核页面的 iframe 使用。

5. 生成 data.js

构建并写入 {review_dir}/data.js,其中包含审核页面所需的全部数据。 端口使用字面占位符 AGENT_PORT_PLACEHOLDER — 服务绑定后会替换它。如果传入了 changes(可选的第 5 个参数),则包含 REVIEW_CHANGES,以便页面显示 Agent 做了哪些操作:

const AGENT_URL = "http://127.0.0.1:AGENT_PORT_PLACEHOLDER/feedback";
const REVIEW_CHANGES = ["Re-analyzed price across all pages", "Dropped field isbn"];
const REVIEW_DATA = {
  fields: [
    {
      name: "price",
      type: "str",
      description: "Product price",
      source: "requested",
      values: {
        "detail-1": {"value": "$29.99", "url": "https://..."},
        "detail-2": {"value": "$49.99", "url": "https://..."}
      }
    }
  ],
  pages: {
    "detail-1": {
      url: "https://...",
      html_file: "pages/detail-1.html"
    }
  }
};
6. 在浏览器中打开并等待反馈

准确运行以下命令,并在命令完成前不要进行任何其他操作:

FEEDBACK_FILE="{review_dir}/feedback.txt"
uv run "${CLAUDE_SKILL_DIR}/scripts/feedback-server.py" "{review_dir}" "${FEEDBACK_FILE}"
cat "${FEEDBACK_FILE}"

运行此命令前,先在消息中向用户报告 {review_dir},以便他们在需要时重新打开页面。

脚本会在浏览器中打开审核页面,等待用户提交反馈,然后自动退出。你的唯一任务是等待命令完成, 然后从 ${FEEDBACK_FILE} 读取反馈。

将反馈文本返回给调用方。

评论

支持 Markdown