技能创建器
skill-creator
创建、改进和评估自定义技能,把专业流程转化为可重复使用的 AI 能力。
page-collect【数据与研究】Extract structured resources (icons, metadata, text, forms, videos, social links) from any webpage using playwright-cli. Supports individual collectors via subcommands (icons, metadata, text, forms, videos, socials) or all at once. The icon collector classifies SVGs as icon/logo/image based on size and DOM context, optimizes them for EDS, and outputs…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
playwright-cli --help for usage.
description: Extract structured resources (icons, metadata, text, forms, videos, social links) from any webpage using playwright-cli. Supports individual collectors via subcommands (icons, metadata, text, forms, videos, socials) or all at once. The icon collector classifies SVGs as icon/logo/image based on size and DOM context, optimizes them for EDS, and outputs to /icons/ for use with decorateIcons(). Use when migrating pages, auditing sites, or extracting assets.Extract structured resources from any webpage via playwright-cli.
Node 22+ required. Run playwright-cli --help for the command reference.
| Subcommand | Purpose | Output |
|---|---|---|
all | Run all collectors | collection.json, screenshot.jpg + assets |
icons | SVGs, icon fonts, CSS icons → classified SVGs | icons/ + icons.json |
metadata | Meta tags, OG, structured data | metadata.json |
text | Body text, headings, word count | text.json |
forms | Form structures, fields, actions | forms.json |
videos | Video embeds, sources | videos.json |
socials | Social media links | socials.json |
If CLAUDE_SKILL_DIR is set:
SCRIPT="${CLAUDE_SKILL_DIR}/scripts/page-collect.js"
Otherwise, find it:
SCRIPT="$(find ~/.claude -path "*/page-collect/scripts/page-collect.js" -type f 2>/dev/null | head -1)"
node "$SCRIPT" <subcommand> <url> [--output <dir>]
Default output: ./page-collect-output/
playwright-cli must be on PATH. Optionally pass --browser-recipe <path> to
use a browser-recipe.json from the browser-probe skill to bypass bot protection.
The icon collector extracts SVGs from multiple sources:
<svg> elements<img> tags with .svg src or data:image/svg+xml URIsbackground-image SVG data URIs<use> sprite references (resolved to standalone SVGs)| Class | Criteria | Output |
|---|---|---|
icon | ≤ 48px, inside button/link/nav | /icons/{name}.svg |
logo | Brand area, "logo" in class/alt/src | /icons/logo.svg |
image | > 48px, standalone | Excluded |
Icons are named from DOM context (aria-label, class, ID). When no
meaningful name can be derived, they get icon-{n} with
nameConfidence: "low" in the manifest — review these and rename.
Each icon SVG is cleaned:
currentColor (icons only, not logos)For more details, read the collectors reference in references/collectors.md.
{
"url": "https://example.com",
"icons": [
{
"name": "search",
"class": "icon",
"source": "inline-svg",
"file": "icons/search.svg",
"nameConfidence": "high",
"context": "header button Search"
}
]
}
icons.json — rename any nameConfidence: "low" icons/icons/*.svg to the EDS project's /icons/ directory:iconname: notationdecorateIcons() in aem.js handles renderingall results:Review collection.json for a full resource inventory of the page.
When used as part of a header migration:
node "$SCRIPT" icons <source-url> --output <extraction-dir>icons.json and copies SVGs to /icons/nav.plain.html uses :iconname: for tools/utility iconsprogram.md notes available icons