关于 DesignScan
DesignScan 从网站提取设计令牌,并生成供编码 Agent 和开发者使用的 DESIGN.md、W3C Design Tokens 或 CSS。它还可生成 HTML 预览,并依据提取的令牌添加确定性的实现说明。
主要功能
- 01从网站 URL 提取令牌
- 02生成 DESIGN.md、W3C 或 CSS
- 03创建独立 HTML 预览
- 04添加基于令牌的 Agent 指引
- 05构建精选品牌规范库
适用场景
- 01复现网站的视觉风格
- 02为编码 Agent 准备设计令牌
- 03在预览中检查颜色和字体
- 04为品牌库生成令牌文件
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
1收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 是 | 要分析的页面,例如 https://stripe.com(省略时默认使用 https://) |
| theme | enum | 否 | 通过 prefers-color-scheme 捕获的配色方案(默认值:light;'both' 会将单独的深色模式结果合并到输出中)light | dark | both |
| format | enum | 否 | 输出格式(默认值:md)json | md | w3c | css |
| timeoutMs | integer | 否 | 每次导航的超时时间,单位为毫秒(默认值:45000) |
详细介绍
DesignScan
URL → 设计令牌 → DESIGN.md。将任意网站 URL 交给它,即可生成符合规范的 DESIGN.md 文件(YAML 令牌 + 文本说明),供 AI 编码 Agent 阅读并匹配该网站的视觉风格。
预览
每次运行还可以生成一份独立的 HTML 效果预览(--preview),呈现提取的令牌——颜色角色、字体样张、间距/圆角比例、组件——让你在信任结果之前先直观检查:
给编码 Agent 的说明
DESIGN.md 总是由 AI 编码 Agent 使用(Cursor、Claude Code 等)。
因此,我们不会自行运行大模型来判断语义意图,而是在每个文件末尾加入 给编码 Agent 的说明部分:根据实际令牌计算得出的确定性提取指引,涵盖标题层级与低饱和度 text 颜色的关系、低于次级 AA 标准的正文对比度、品牌字体回退、主按钮规范、形状/间距节奏。推理过程由我们负责(无需 API 密钥);你已经在使用的 Agent 会免费完成应用。
这会显著影响输出。下方展示的是同一份 stripe.DESIGN.md:左侧由忽略说明的 Agent 克隆,右侧由遵循说明的 Agent 克隆——令牌、布局和文案完全相同:

品牌资料库
examples/ 中收录了不断扩充、经过筛选的真实品牌规范库——每个品牌都有一份 DESIGN.md、一个 HTML 预览和原始令牌 JSON,并在 examples/README.md 中编入索引(视觉图库:index.html)。
使用 pnpm seed rebuild 从已提交的 JSON 重建资料库(无需网络),或使用 pnpm seed add <url> 添加品牌——系统会自动跳过退化页面或受到机器人验证拦截的页面,确保资料库只收录可信的规范。
Monorepo 布局
| 路径 | 内容 |
|---|---|
packages/extractor | 提取与生成引擎(Playwright → 令牌 → DESIGN.md)。 |
packages/designscan | 简短的 npm 名称——引擎外层的轻量 CLI 封装(npx designscan <url>)。 |
examples/ | 品牌资料库——每个品牌包含 DESIGN.md、HTML 预览和令牌 JSON,并提供图库索引。 |
安装(作为 CLI / 库)
引擎以可发布的 @designscan/extractor
软件包形式提供,包含 designscan CLI 和带类型的库;另提供
designscan 作为简短的 npx 别名。
# one-off, no install
npx designscan stripe.com --md --out stripe.DESIGN.md
# or install the CLI
npm i -g @designscan/extractor
npx playwright install chromium # one-time (the engine drives headless Chromium)
designscan stripe.com --md --preview --out stripe.DESIGN.md
快速开始(从此仓库开始)
这是一个 pnpm 工作区(运行 corepack enable 获取 pnpm)。
pnpm install
pnpm --filter @designscan/extractor exec playwright install chromium # one-time
# token profile (JSON) for any URL
pnpm extract stripe.com
# generate a DESIGN.md (light theme by default)
pnpm extract stripe.com --md --out out/stripe.DESIGN.md
# pick a theme: light (default) | dark | both
pnpm extract vercel.com --md --theme dark --out out/vercel.dark.DESIGN.md
# both = bundle light + dark into one file (parallel *-dark tokens)
pnpm extract vercel.com --md --theme both --out out/vercel.DESIGN.md
# --preview = also write a self-contained HTML proof sheet beside the file,
# rendering every token (swatches, type specimens, scales, components) so you
# can eyeball the extraction before trusting it (--theme both adds a Light/Dark toggle)
pnpm extract stripe.com --md --preview --out out/stripe.DESIGN.md
# → out/stripe.DESIGN.md + out/stripe.preview.html
# --format = pick your output: json (profile) | md (DESIGN.md) | w3c | css
pnpm extract stripe.com --format w3c --out out/stripe.tokens.json # W3C Design Tokens (Style Dictionary etc.)
pnpm extract stripe.com --format css --out out/stripe.tokens.css # CSS custom properties, paste-ready
# (--theme both folds a genuinely distinct dark pass into every format)
# --strict = exit non-zero if the result looks degenerate (bot challenge / too
# few signals), for CI/automation that must not consume junk tokens
pnpm extract stripe.com --strict --quiet
# seed / rebuild the curated brand corpus under examples/
pnpm seed add tailwindcss.com vercel.com # extract live + add to the corpus
pnpm seed rebuild # regen md/preview/gallery from JSON
脚本(根目录)
| 脚本 | 功能 |
|---|---|
pnpm extract <url> [--format json|md|w3c|css] [--theme light|dark|both] [--preview] [--strict] [--timeout ms] [--out f] | 按指定格式提取令牌:配置 JSON、DESIGN.md(--md 简写)、W3C Design Tokens 或 CSS 自定义属性(--theme both = 在一个文件中同时输出浅色 + 深色主题;--preview = 在旁边生成 HTML 效果预览;--strict = 结果退化时以非零状态码退出) |
pnpm seed rebuild / pnpm seed add <url…> | 构建 examples/ 下的品牌资料库(md + 预览 + 图库;add 会实时提取) |
pnpm build | 编译可发布的软件包(tsc → dist) |
pnpm typecheck | 对所有软件包进行类型检查 |
pnpm test | 运行测试套件(vitest) |
pnpm check | Biome——格式化 + lint(使用 pnpm format 自动修复) |
pnpm lint:designmd | 根据官方规范验证 examples/*.DESIGN.md |
每次推送/PR 时,以上脚本都会通过 GitHub Actions 运行。
该引擎也可通过其公共 API 作为库使用
(packages/extractor/src/index.ts)。
状态
- 步骤 1 — 提取引擎(Playwright → 干净的令牌配置文件)
- 步骤 2 — 生成器(令牌配置文件 → 符合规范的
DESIGN.md,通过 lint 检查) - 步骤 3 — HTML 预览(
--preview→ 独立的令牌演示页,可切换浅色/深色模式) - [~] 步骤 4 — Agent 指引。现在,每个
DESIGN.md都包含 给编码 Agent 的说明部分:针对每次提取生成确定性指引(对比度、标题层级、字体回退),让使用令牌的 Agent 能有目的地应用令牌——我们这边不使用大模型。(可选的大模型优化文案仍在未来计划中。) - [~] 步骤 5 — 品牌种子库(
pnpm seed,精选语料库 + 图库)已完成;下一步是npx … add/ checkout
完整路线图和引擎详情请参见 packages/extractor/README.md。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。

