研发协作
分析现有网站并提取设计系统/品牌表面以做重设计或迁移前快照时…
需要逆向现有网站的设计令牌、品牌表面或迁移前当前状态时,爬取有限页面并输出描述性 stardust 快照。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
分析现有网站并提取设计系统/品牌表面以做特定
解决思路
- 先运行主技能 stardust 的 setup:检查 impeccable 依赖、加载上下文、读取 state。
- 检查 Playwright 可用性:按顺序检测 Playwright MCP server,然后检测项目可 import 的 playwright 模块;不要只用 `npx playwright` 探测。
- 用 `node -e "import('playwright').then(()=>process.exit(0))"` 从项目根验证模块可解析;若失败,运行 `npm i -D playwright --no-save --legacy-peer-deps` 或使用 Playwright MCP server;在 aem-boilerplate 目标上必须带 `--legacy-peer-deps`。
- 记住 `--no-save` 安装是临时的;后续渲染类下游技能(prototype、migrate、deploy、diff)每次运行都要重新探测 import 可解析性,失败则重装,不能假设 extract 的安装仍在。
- 处理脚本位置:ESM 从脚本所在目录解析 `import 'playwright'`;将 `skills/extract/scripts/crawl.mjs` 逐字节复制到项目 `stardust/scripts/crawl.mjs` 并运行副本,避免从插件路径运行导致 `ERR_MODULE_NOT_FOUND`。
- 优先使用捆绑爬虫:`node skills/extract/scripts/crawl.mjs --url <origin> [--pages …] [--max N] [--concurrency N]`;如需额外字段,扩展其页内 `capture()`,不要每次手写 Playwright 脚本。
- Origin 冲突:若 `stardust/state.json` 已记录 `site.originUrl` 且新 `<url>` 不同 origin,停止并询问,不要静默混合两个站点。
- 迁移意图流程守卫:若请求带迁移意图(`migrate`、`to EDS`、`re-platform`、`1:1`、`replica`)且 `state.json` 存在或即将创建但没有 `flow`,先交回主技能 § Two migration flows 选择并盖章 flow;keep-design 请求通过 `replica` 进入(它会用 `--prep` 调用本技能);裸 `extract <url>` 做重设计/审计/uplift 不受影响。
- 浏览器上下文:为每个捕获 worker 打开新的 `BrowserContext`(`--concurrency`,默认 4,合理范围 4–8);每个上下文重新建立 consent 状态,因为 cookie 不跨上下文持久;在 `_crawl-log.json#consent.method` 记录使用的方法。
- 除非 `--no-consent-dismiss`,在每个上下文执行 consent/cookie banner 预清理;当重设计范围包含 consent 表面,或必须避免 dismissal 副作用(如脚本激活)时使用 `--no-consent-dismiss`。
- Bot-management 探测:首次导航返回 `ERR_HTTP2_PROTOCOL_ERROR` 或 `ERR_QUIC_PROTOCOL_ERROR`,或在快速 origin 上一直挂到 hard-cap,不要重试 headless;切换到 headed Chrome,并在 `_crawl-log.json#discovery.fetchTechnique` 记录,以便重跑直接 headed。
- Phase 1 发现页面:先抓取 `<origin>/sitemap.xml`,再抓取 `<origin>/sitemap_index.xml`,再检查 `robots.txt` 中的 `Sitemap:` 指令。
- 若无 sitemap,从 `<url>` 做同源 BFS 爬取,深度限制 3,从渲染后 HTML 提取链接。
- 过滤 URL:仅同源;排除 `mailto:`、`tel:`、仅锚点链接、仅查询参数变体、常见资源路径(`.css`、`.js`、`.pdf`、图片扩展名)。
- 去重 trailing-slash 变体。
- 除非 `--no-junk-filter`,应用 junk-page filter(`reference/ia-extraction.md` § Junk-page filter),并把过滤后列表展示给用户以便覆盖。
- 应用 cap:默认 5,或 `--cap <N>`,或 `--all`(等价 `--cap 0`)取消 cap;然后静默继续,不要等待用户确认。
- 读取用户提示中的自发 scope 意图(如 “extract all pages”、“look at just the home and pricing”、“do a full crawl”),并应用等价 flag(`--all`、`--pages`、`--single` 等)。
- 打印信息性摘要(发现多少、过滤哪些 junk、保留哪些、截断哪些),但立即继续;选择启发式:先 page-type checklist,再按分数排名(home + IA-pillar 关键词 + sitemap priority − archive/version markers);注意英文关键词列表对本地化站点是已知限制。
- 将发现列表写入 `stardust/current/_crawl-log.json`(不存在则创建),包含 `_provenance` 和完整发现理由,包括 `filteredAsJunk[]` 与 `userChoice`;这是审计轨迹,不是状态文件。
- Phase 2 逐页提取:对 cap 内每页按 `reference/playwright-recipe.md` 用 Playwright 渲染;按 § Concurrency 并发;每页必须遵守 recipe,尤其不能跳过 wait、scroll、capture-list。
- 设置 viewport `1440 × 900 @ 2× DPR`。
- 按配置的 wait mode 等待(默认 `medium`;见 `reference/playwright-recipe.md` § Wait modes)。
- 用 `prefers-reduced-motion: reduce` 禁用动画。
- wait 结束后,以 4 个 viewport-height 步长滚动到底部,每步停 300 ms,然后回到顶部,以触发 lazy-load 和 IntersectionObserver 内容。
- 在每页 `_provenance` 记录 `waitMs` 和 `waitMode`。
- 捕获页面元数据:title、meta description、OG tags、theme-color。
- 捕获语义结构:heading outline、landmark roles、sections。
- 解析 hero headline + lede:`heroHeadline`/`heroLede` 按 font-size × hero-region 选取,带 junk/hidden-state 过滤和干净 meta-description fallback;JS 渲染站点必须这样做,否则文档顺序标题会抓到 modal/promo/count junk。
- 捕获内容:每 section 的可见文本 full innerText,不截断;结构化 paragraphs `body[]`、lists、FAQ Q/A、review/testimonial quotes;没有这些结构化字段,migrate 时 heading 下 body 区域会退化为 placeholder signature。
- 捕获 CTA labels 和 href targets、link inventory(internal vs external)。
- 捕获每 section 的 computed style summary:dominant colors、font families、spacing rhythm、border-radius、shadows。
- 捕获媒体清单:img 的 `currentSrc`/`srcset` 保留 query strings,并带 `resolves` flag(用 browser UA + Referer 做 HEAD/GET)、intrinsic dimensions、inline SVG count、video/iframe presence、`cssBackgrounds[]`(包括 pseudo-element `::before`/`::after` 遍历),避免 background-image hero/motif 消失和 404 CDN 图片进入 migrate 后变成 `about:error`。
- 通过 network-intercept 捕获字体文件:每个 `woff2`/`woff`/`ttf`/`otf` 响应保存到 `assets/fonts/`,并记录到 `_brand-extraction.json#type.files[]`,带 licensing flag。
- 检测 icon font:当页面使用 `[class^="icon-"]` 且 `::before` 有非默认 font-family + codepoint 时,捕获 family、保存文件、记录 `iconClass → codepoint` 表到 `_brand-extraction.json#iconFont`。
- 捕获交互元素:forms(含 field types)、buttons、ARIA roles 检测的 modals。
- 捕获整页截图到 `assets/screenshots/<slug>.png`:由捆绑爬虫在 wait/scroll settle 后脚本捕获;极长页面可用 viewport-only fallback;模式在 `_signals.screenshotMode`,相对路径在 page JSON `screenshot`。
- 仅当带 `--dynamics` 时,捕获 dynamic surface:per-page reach signals 包括 endpoints、third-party script hosts、forms、modal triggers、player ids、hydration hints,写入 page JSON `dynamic` 和 `_crawl-log.json#dynamicSurface`;只作为证据,深度探测由 stardust `dynamics` 子技能做。
- 保存到 `stardust/current/pages/<slug>.json`,`_provenance` 为首个 key;捆绑爬虫还保存 settle 后 rendered DOM 原文到 `stardust/current/pages/<slug>.html`(`page.content()` 后路径在 `renderedHtml`);一次捕获,离线解析,避免按 selector 猜测反复 live probe;live probe 只用于静态 DOM 无法回答的 geometry 和 computed styles。
- 将引用媒体保存到 `stardust/current/assets/media/`,保留 basename 加短 content hash。
- 强制 live-render evidence:只有页面的 `_provenance` 含 `renderedBy: playwright`、ISO-8601 `fetchedAt`、正整数 `waitMs`、来自 recipe 的 `waitMode`、最终 `httpStatus` 在 2xx/3xx,才允许在 `state.json` 标记 `extracted`;这五个字段是契约,下游用 `validateProvenance()` 读回。
- 禁止 synthesis:若 agent 或子 agent 因时间、token、工具/网络失败无法真实 Playwright 渲染,唯一正确做法是记录该页为 Phase 2 failure(`_crawl-log.json#crawl.failures[]` 中 `errorClass: ProvenanceMissing`)并继续;不要从 `_brand-extraction.json` + URL patterns + captured photos 合成页面记录。
- 每页成功写入后立即在 `state.json` 标记 `extracted`;失败则记录错误并继续,提取按页 best-effort。
- Phase 2.5 视觉验证:在下游任何内容编写前,用多模态模型查看每页截图 `assets/screenshots/<slug>.png`,与提取记录核对:记录的 hero(headline + asset)与像素是否一致、提取的 palette 是否合理、`cssBackgrounds: []` 是否可信或图像明显存在(silent capture failure)、logo 是否捕获、页面是否真实渲染而非 consent wall/bot-block/blank SPA shell。
- 发现 mismatch 时,先按升级阶梯重跑该页 capture:wait mode 升一档(`reference/playwright-recipe.md` § Wait modes),然后 headed Chrome(§ Bot-management fallback),然后全新 browser context;结果记录到 `_crawl-log.json#visionCheck[]`,结构含 `slug`、`verdict`、`notes`,`verdict` 为 `ok | recaptured | suspect`;`suspect` 表示 mismatch 在阶梯后仍存在,下游视该记录不可靠;Vision 是权威 capture check,启发式防御只是早期信号。
- Phase 3 品牌表面提取:在 capture 阶段后运行;聚合可在并发页面完成时增量进行,但写入文件必须反映每个已提取页面,包括 brand-source 页面;产出 `stardust/current/_brand-extraction.json`;logo、voice samples、register heuristic 等字段仅 home-only,驱动 DESIGN.md 的视觉 token 跨所有已提取页面聚合,避免 home-page bias。
- 按 v1 优先级链捕获 logo:inline SVG → 带 logo-ish class/id 的 `<img>` → `apple-touch-icon` → `og:image` → favicon → 合成 placeholder;保存到 `stardust/current/assets/logo.<ext>`。
- 始终独立捕获 favicon 到 `stardust/current/assets/favicon.<ext>`(独立于 logo 链),供 prototype head 和 deploy 使用。
- 聚合 palette:跨所有已提取页面的 computed colors(background、text、accents、borders、hovers)做频率排序、近重复聚类,输出 role-named list(background、surface、text、primary、secondary、accent)。
- 提取 type:字体族及其 weights、sizes、computed line-heights;区分 heading family 与 body family;运行 modular-scale audit 并输出 `scaleAudit.kind = modular | ad-hoc`。
- 提取 motifs:signature border-radius(跨页非零值的 mode,按元素数加权)、shadow stack(跨页 top 3 distinct)、gradient inventory、常见模式(chip、badge、card、hero-with-image);当 home-only mode 与 cross-page mode 不一致时,在 `_provenance.notes` 暴露差异。
- 提取 voice samples:body copy 第一段、hero headline、3 个代表性 CTA labels、代表性 link list。
- 提升 hero image:将 home page 主视觉资产提升为 `voice.heroImage`,让下游 prototype 选择 live hero 而不是原始媒体列表的 `og:image`。
- 提升 hero medium signature:当 hero/first viewport 带移动资产(background `<video>`/HLS/canvas/WebGL/Lottie/animated SVG/scroll-driven motion)时,提升为 `voice.heroMedium`;非空 `heroMedium` 在 prototype 时触发 signature preservation(`skills/stardust/reference/intent-dimensions.md` § 8b),否则下游会把动态 hero 压成静态。
- 提取 icon font:按 `reference/playwright-recipe.md` § Capture list 17 检测后,填充 `_brand-extraction.json#iconFont`,包含 family、file path、`iconClass → codepoint` 表。
- 检测 system components:跨页重复 DOM block(site header、site footer、cross-promo strips、persistent CTAs、breadcrumbs),按 heading-sequence + CTA-label fingerprint 检测;必须做,因为它们通常是承重表面,不能从重设计目标中静默消失。
- 记录 origins:在 `_brand-extraction.json#origins[]` 中每个贡献 origin 一条;单 origin 运行输出单元素数组;brand-source 运行按 origin 归因扩展证据。
- 不要发明值:每个捕获值都要在 `_brand-extraction.json` 中引用 source selector 或 URL 以便追溯。
- Phase 4 种子写入 `stardust/current/PRODUCT.md` 和 `DESIGN.md`:当前状态文件是描述性而非作者式,不运行 interview,直接按 impeccable 格式规范写。
- 写 PRODUCT.md:遵循 impeccable `reference/init.md` § Write PRODUCT.md;文件顺序:stardust `<!-- stardust:provenance … -->` 块在前,然后 `# Product`,然后 `<!-- impeccable:product-schema 1 -->` 原样,然后 `Platform`(`web`)、`Users`、`Product Purpose`、`Positioning`、`Capabilities and Constraints`、`Brand Commitments`、`Evidence on Hand`、`Product Principles`、`Accessibility & Inclusion`;某节没内容就省略而不是填充。
- 在 `Brand Commitments` 记录 register guess(marketing/landing → `brand`;tools/dashboards → `product`;模糊 → `brand` 加注释)、观察到的品牌个性和 anti-references;`Evidence on Hand` 列出 `stardust/current/` 下捕获物及路径;从捕获文案和品牌表面填充 `Users`、`Product Purpose`、`Positioning`、`Product Principles`;必须推断处标 `_provenance: inferred` 和一行依据。
- 写 DESIGN.md 和 DESIGN.json:遵循 impeccable `reference/document.md`;从捕获 token 填充 frontmatter(`colors`、`typography`、`rounded`、`spacing`、`components`);DESIGN.json 的 `extensions` 块携带 v1 的 `componentStyle`、`motifs`、`voice` 数组,避免丢失。
- 不要为当前状态文件调用 `$impeccable init`(原 `teach`)或 `$impeccable document`;这些命令写项目根(target)并运行 interview;stardust 直接写描述性快照,impeccable 格式规范是契约而运行时命令不是;项目根的 target-state PRODUCT.md/DESIGN.md 由 `$stardust direct` 在 pipeline Phase 2 写。
- Phase 5 渲染 `stardust/current/brand-review.html`:Phase 4 后按 `reference/brand-review-template.md` 产出当前状态品牌评审;它是人类第一个可肉眼验证提取的表面,JSON 看不见的误读(错误 dominant radius、缺失 system component、单页 palette bias)肉眼明显且此时修复便宜。
- brand-review 模板必须遵守:运行 `reference/brand-review-template.md` § Detectors 中 Tensions detectors;每个规则机械执行,触发即输出 tension card;数据太薄可零 tension,但 detectors 必须总是运行。
- brand-review 用品牌自身捕获的颜色和字体渲染,不要用 stardust shell。
- brand-review 内嵌所有 CSS;除非 live site 已经加载,不要加载外部 JavaScript 或字体。
- brand-review 每节引用源 artifact(如 Typography 下引 `_brand-extraction.json § type`);某节数据缺失就省略该节,不要伪造 placeholder;顶部 coverage callout 反映缺失内容。
- Phase 6 所有 Phase 2-5 写入成功后更新 `stardust/state.json`:设置 `site.originUrl`、`site.extractedAt`、`site.pageCap`、`site.totalDiscovered`、`site.crawled`;`pages[]` 每页一条 `status: extracted`、填 `currentStatePath`、空 `prototypePath` 和 `migratedPath`;仅当用 `--design-source` 时设置 `designSource = { url, capturedAt, path }`。
- 打印一屏摘要:包含提取 origin、页数/发现数、生成文件、per-page evidence table、wait summary、media summary、vision check、coverage note、next `$stardust direct`。
- 强制 per-page evidence table:`live` 列为 `yes` 当且仅当 `_provenance.renderedBy === playwright` 且 `waitMs > 0`,否则 `no`;`no` 表示页面记录不是 live Playwright 渲染,是 defense-in-depth 信号,维护者应每行看到 `yes`。
- 计算 wait summary:按每页 `_provenance.waitMode` 分组并平均 `waitMs`;列出 `waitMode` 以 `(fallback)` 结尾的 slug 作为 `--refresh` 候选。
- `media(img/bg)` 列打印 `<media.imgs 数量> / <media.cssBackgrounds 数量>`;当页面读起来是 brand/marketing(register `brand`,或 landing/solution/product 模板)却 `cssBackgrounds: []` 且缺少大 raster(没有 intrinsic width ≥ 600 的 `media.imgs` 条目)时,标记 `⚠ low-media`;这是背景/lazy-media walk 静默失败的 signature,用 `--refresh` 重跑该页,若持续则退到 headed Chrome;brand-register 站点全零 bg 计数应视为可疑,而不是“不用背景图”。
- Cross-site brand sources:出现 `--brand-source` 或 `--design-source` 时完整读取 `reference/cross-site-sources.md`;两者均 opt-in,无 flag 则本节 inert。
- `--brand-source <url>`(可重复):同品牌 sibling 做浅捕获(home + 至多 2 个 nav-linked pages,完整 recipe + provenance)到 `stardust/current/brand-sources/<host>/`;它是证据不是 inventory,绝不进入 `state.json.pages[]`;其 palette/type/motif/voice 证据以 per-origin attribution 聚合进 `_brand-extraction.json` 的 `origins[]`;冲突向 primary 解析;拓宽的 trait 必须归因,不得发明;排除出 system components、`voiceTable`、cross-promo detection。
- `--design-source <url>`:design donor 捕获到 `stardust/canon-source/`(与 `current/` 相同 shape,默认 cap),按 Phase 4 规则派生描述性 DESIGN.md/json,并盖章 `state.json.designSource = { url, capturedAt, path: stardust/canon-source/ }`;`direct` 将其 pin 为 target(其 § Mode A);donor 证据绝不聚合进 primary `_brand-extraction.json`。
- Sibling-site discovery:primary crawl(Phase 2–2.5)后,仅从已捕获证据 harvest 同品牌 origin 候选,不额外导航:footer/nav 外链其他 property、our brands/our companies 页面、其他域名上的 `hreflang` alternates、子域家族(`shop.`、`careers.`、country subdomains)、跨捕获页面的 `og:site_name` 匹配。
- 列出候选:在 crawl report 和 `_crawl-log.json#siblingCandidates[]` 中带 confidence + evidence line,如 `{ origin: https://example.co.uk, confidence: high, evidence: hreflang alternate on 4/5 pages, decision: included }`。
- 交互模式:提议 found 3 candidate sibling properties — include as `--brand-source`? 并按回答继续;hands-off 模式(`state.json.handsOff` 为 true)自动包含至多 2 个 high-confidence 候选作为 brand-sources,并在 `siblingCandidates[].decision` 记录决定。
- Sibling discovery 有 cap 且便宜:harvest 只读已捕获证据;每个包含的 sibling 只做浅 brand-source capture(≤ 3 pages),绝不让 crawl 膨胀。
- 产出文件包括:`stardust/current/PRODUCT.md`、`DESIGN.md`、`DESIGN.json`、`brand-review.html`、`pages/<slug>.json`、`pages/<slug>.html`、`assets/logo.<ext>`、`assets/favicon.<ext>`、`assets/media/`、`assets/screenshots/`、`_brand-extraction.json`、`_crawl-log.json`;仅 `--brand-source` 时 `brand-sources/<host>/`;仅 `--design-source` 时 `stardust/canon-source/`;并更新 `stardust/state.json`。
- Concurrency:Phase 2 队列由 4–8 个并行 browser contexts 消费(`--concurrency`,默认 4);每个 worker 拥有自己的 `BrowserContext`,每上下文重建 consent;媒体 `resolves`/HEAD 检查用 `Promise.all` 批处理;Phase 3 聚合可在页面完成时增量进行,只要写入的 `_brand-extraction.json` 反映每个已提取页面;捆绑爬虫实现该池(`crawl.mjs --concurrency <n>`)。
- 跨进程:stardust 不锁;同项目两个并发 extract 是 last-write-wins;在用户报告中说明,不要为此工程化。
- Failure mode 网络失败 mid-crawl:继续,记录到 `_crawl-log.json`,以 partial state 结束;`state.json` 只反映成功提取的页面;用户可重跑,已提取页面会跳过,除非 `--refresh <slug>`。
- Failure mode HTTP 4xx/5xx、非 HTML 内容、soft-404:按 `reference/playwright-recipe.md` § Response validation 显式验证;每类产生不同 error class(`HTTPError`、`ContentTypeError`、`EmptyPageError`)记录在 `_crawl-log.json#crawl.failures[]`;失败页面不作为 `extracted` 出现在 `state.json`,否则 5xx 页会静默成为空成功并传播错误数据。
- Failure mode 登录墙:不要尝试认证;若 home 重定向到登录页,只捕获该页,其余标记 unreachable,并询问用户如何继续(通过 Playwright config 提供 cookies、改入口 URL、或限定公开页面)。
- Failure mode Bot-management block(Akamai/Cloudflare/F5/Imperva):首次导航返回 `ERR_HTTP2_PROTOCOL_ERROR`、`ERR_QUIC_PROTOCOL_ERROR`,或在 TLS/H2 fingerprint 检查上挂到 hard-cap;这是 bundled-chromium 默认 headless 的 JA3/H2 fingerprinting,不是 auth 或网络;按 `reference/playwright-recipe.md` § Bot-management fallback 切换到 `headless: false, channel: 'chrome'`;不要重试 headless;`playwright-extra` + stealth plugin 是残余情况的非标准逃生门;headed 窗口可见,交互运行可接受,无人值守 pipeline 不可接受,首次触发时告知用户。
- Bot-management 下资产 harvest:页面级 bot wall 通常不挡 assets;media/CSS/font URL 对 plain browser-UA curl 常返回 200,即使每个页面导航都被挑战(Cloudflare challenge,field-confirmed);在动用 in-page-fetch 机制前先用 curl 探测一个 asset;in-page harvest 是 fallback 不是默认。
- Failure mode JavaScript-only content:Playwright 已处理;若配置的 wait 条件在 mode hard cap 内从未触发(`reference/playwright-recipe.md` § Wait modes),退到 `domcontentloaded` 并捕获已渲染内容;在 per-page `_provenance.waitMode` 记录 fallback,并在最终报告 wait-summary 行暴露。
- Failure mode Synthesis attempt(禁止):若无法运行真实 Playwright render,唯一正确结果是记录 Phase 2 failure(`errorClass: ProvenanceMissing`)并继续;禁止从 `_brand-extraction.json` + URL patterns + captured photos 在“语义匹配”模板位置合成页面记录;捷径输出与成功运行难以区分,会把伪造内容传播到所有下游阶段(2026-04-30 e-commerce run:25 页中 20 页合成,四阶段后才抓到)。
- Prep mode `--prep`:带 `--prep` 时运行扩展 pass 为迁移准备 inventory;运行任何 `--prep` 提取前完整读取 `reference/prep-mode.md`;discovery-mode 运行不变;该 flag 供 `prepare-migration` orchestrator 使用,也支持直接调用。
- `--prep` 隐含 `--all`:迁移覆盖需要完整 junk-filtered inventory,不是 discovery cap。
- `--prep` 推断 page types(`landing | article | listing | program | form | static | unique`)到 `state.json.pages[].type`(discovery-mode 留 `null`);用户在 `direct --prep` 确认。
- `--prep` 在 `DESIGN.json.extensions.modules[]` 草拟 module candidates(跨页结构重复,按 reference 中 signal-source priority 检测),`status: candidate`;per-page JSON 按 page-type 增加 typed `slots` section。
- `--prep` 的 prep summary 替换 Phase 6 报告;其中 `Provenance: <live>/<total> live` 行必须存在,任何低于 `<total>/<total>` 的 ratio 都表示运行未通过 synthesis guard 且不完整。
- 当把提取委派给 sub-agent 时,sub-agent prompt 必须明确禁止 synthesis,并要求返回 per-page evidence table 和 wait-summary line;三者缺一即为 recipe violation。
- 按需完整阅读参考文件:`reference/playwright-recipe.md`、`reference/ia-extraction.md`、`reference/current-state-schema.md`、`reference/brand-surface.md`、`reference/brand-review-template.md`、`reference/prep-mode.md`、`reference/cross-site-sources.md`、`skills/stardust/reference/state-machine.md`、`skills/stardust/reference/artifact-map.md`。
适用边界 · 注意事项
- 不用于单纯抓取页面数据或内容数据集;它捕获的是设计证据,不是数据集。
- 不用于重设计本身;提取是描述性的,设计方向和原型制作在下游完成。
- 不适用于登录墙后的受保护内容,除非用户提供 cookies 或改用公开入口;不要尝试认证。