
Dembrandt
CLI一条命令提取任意网站的 logo、配色、字体、间距、阴影与动效,导出 W3C 设计令牌、Tailwind 主题、DESIGN.md 或品牌指南 PDF,还能检查 WCAG 对比度,适合做竞品视觉分析与品牌审计。需要 Node.js 18+,首次使用先运行 dembrandt install-browser 下载浏览器。
Dembrandt.
Extract any website's design system in one command. Enforce it in CI.
Logo, colors, typography, spacing, borders, shadows, motion, components. W3C design tokens in seconds.

Install
npm install -g dembrandt
dembrandt install-browser # one-time: fetches the matching Chromium
dembrandt dembrandt.com
The browser step is required. dembrandt drives Chromium through playwright-core,
which ships no browser binaries, so a fresh install has nothing to launch until you
run it. Skipping it fails with browser engine not available.
Or use npx without installing: npx dembrandt dembrandt.com. The browser step applies
here too: run npx dembrandt install-browser first. Browsers land in a shared
Playwright cache, so either route only needs it once.
Requires Node.js 18+
Or install the MCP server straight into your editor and let the agent run it:
What you get
- Colors (semantic roles with the evidence behind each pick, curated palette, every detected colour, CSS variables, gradients)
- Typography (fonts, sizes, weights, sources, font file URLs)
- Spacing (margin/padding scales)
- Borders (radius, widths, styles, colors)
- Shadows
- Motion (duration scale, easing curves, hover patterns per component type)
- Components (buttons, badges, inputs, links)
- Breakpoints
- Icons & frameworks
Playwright renders the page, dembrandt reads computed styles from the DOM, analyzes color usage and confidence, groups similar typography, detects spacing patterns, and returns design tokens.
Flags
dembrandt dembrandt.com --shadcn # shadcn/ui theme, observed slots only
dembrandt dembrandt.com --dtcg # W3C design tokens, for Style Dictionary or Tokens Studio
dembrandt dembrandt.com --wcag # WCAG 2.1 contrast on real DOM pairs
Default is formatted terminal output only. Every flag below; the detailed reference is docs/usage.md.
Export
| Flag | What you get |
|---|---|
--dtcg | W3C design tokens (DTCG) |
--design-md | DESIGN.md for AI agents |
--tailwind [path] | Tailwind v4 @theme CSS |
--shadcn [path] | shadcn/ui theme, observed slots only |
--html [path] | Self-contained HTML report |
--brand-guide | Brand guide PDF |
--json-only | Raw JSON to stdout |
--save-output | JSON to output/<domain>/ |
--screenshot <path> | Viewport screenshot |
--color-format <f> | Colour notation: hex, rgb, oklch, lch, source |
--raw-colors | Pre-filter colours too |
Analysis
| Flag | What you get |
|---|---|
--wcag | Contrast grades on real DOM pairs |
--compare <baseline> | Drift gate; exits 1 when tokens moved |
--tokens <file> | Check rendered colours, radii and font sizes against a W3C Design Tokens file; repeat for several |
--max-off-token <n> | With --tokens: exit 1 when more than N rendered values match no token |
--tokens-report <path> | With --tokens: Markdown summary with the nearest token per off-token value, wiki-ready |
--annotations <github|azure> | CI annotations for drift and off-token values; detected from the runner by default |
--approve | Accept the current run as the new baseline |
--ai | ML brand-primary prediction (experimental) |
Coverage
| Flag | What you get |
|---|---|
--crawl [n] | Merge N pages, cross-page confidence |
--sitemap | Discover pages from sitemap.xml |
--dark-mode | The dark theme's tokens |
--mobile | Mobile viewport |
--slow | 3x timeouts for heavy sites |
--browser <type> | chromium or firefox; CDP via env |
--no-sandbox | For Docker and CI |
Access
| Flag | What you get |
|---|---|
--cookie <string> | Reach pages behind a session |
--cookie-file <path> | JSON cookies, Playwright storageState (incl. localStorage and the sessionStorage block --save-storage-state adds), or Netscape cookies.txt |
--basic-auth <user:pass> | HTTP Basic for the browser context |
--login | Open a visible browser to sign in; press Enter when ready, then extract (interactive terminal only) |
--save-storage-state <path> | With --login, save the signed-in session (cookies, localStorage, sessionStorage) to a file; reuse it later with --cookie-file, also in CI |
--header <string> | Any extra request header, repeat for several |
--no-headed-fallback | Never open a visible browser on a failed navigation; for batch runs |
--user-agent <string> | Custom user agent |
--locale <string> | Locale for the fingerprint |
--timezone <string> | Timezone for the fingerprint |
--accept-language <s> | Accept-Language header |
--screen-size <WxH> | Reported screen resolution |
--stealth | Anti-detection; authorized use only |
--key <string> | Sync runs to your account |
Catch design drift in CI
Extract a preview deployment, compare against a committed baseline, fail the job when tokens moved:
- uses: dembrandt/dembrandt@v0.39.2
with:
url: https://preview.example.com
baseline: .dembrandt/baseline.json
The action is on the GitHub Marketplace and annotates the PR with the drifted tokens. On any other runner the gate is just an exit code plus JSON: dembrandt URL --compare baseline.json --json-only exits 1 on drift and prints per-token changes[]. See docs/ci.md for the Action inputs, the platform-neutral gate, and the exit code table.
Recipes
Copy a command, paste a prompt, get a result. Competitor benchmarking, WCAG audits, Figma token push, agentic design system builds. Filterable by role at dembrandt.com/recipes, with the basics in docs/recipes.md.
AI Agent Integration (MCP)
Use Dembrandt as a tool in Claude Code, Cursor, Windsurf, or any MCP-compatible client. Ask your agent to "extract the color palette from dembrandt.com" and it calls Dembrandt automatically.
Per-client setup, environment variables and the full tool list: docs/mcp.md and dembrandt.com/mcp.
claude mcp add --transport stdio dembrandt -- npx -y dembrandt mcp
The server is listed in the MCP Registry as io.github.dembrandt/dembrandt, so a client that reads the registry can install it by name.
Or add to your project's .mcp.json:
{
"mcpServers": {
"dembrandt": {
"command": "npx",
"args": ["-y", "dembrandt", "mcp"]
}
}
}
Available tools include get_design_tokens, get_color_palette, get_typography, get_component_styles, get_surfaces, get_spacing, and get_brand_identity, plus pure analysis tools (compute_drift, get_findings, export_dtcg, generate_design_md, render_report) and job-control tools.
Extraction tools accept slow, mobile, darkMode, wcag, cookie, cookieFile, basicAuth and header (for authenticated pages), userAgent, and noSandbox (Docker and most CI containers). Interactive --login stays CLI-only. Set pages above 1 to crawl and merge several pages, which produces a markedly stronger token set than one page; paths names them explicitly and sitemap discovers them from sitemap.xml.
Extraction returns a job_id. Poll it with get_job_status, then hand that same id to the pure tools instead of passing the extraction back as an argument:
get_design_tokens(url: "example.com", pages: 5) -> job_id
get_job_status(job_id) -> tokens
get_findings(job_id) -> contrast and consistency issues
export_dtcg(job_id) -> W3C design tokens
Pair with dembrandt-skills to give your agent UX intelligence on top of extracted tokens: hierarchy, accessibility, interaction states, and a full 6-stage design pipeline orchestrator.
npx skills add dembrandt/dembrandt-skills
Dembrandt App (Beta)
Load extractions, track token drift, and compare snapshots. dembrandt.com/app
- Automatic drift tracking from CI. Generate an API key at dembrandt.com/app/api-keys, then pass
--keyto the CLI. Every run uploads a snapshot to your account and scores it against the previous one for that domain. Wire into GitHub Actions or any CI runner and every deploy records itself. - Pin a baseline. Mark any snapshot as your reference. Every subsequent extraction is automatically scored against it.
- Visual diff. Color swatches, before/after values, delta scores per category: colors, typography, spacing, radius, shadows.
- Snapshot timeline. Proportional timeline per domain, scrub across any date range from days to years.
- Compare side by side. Load multiple extractions into one view: two releases, two sites, or two surfaces.
- Copy tokens. Paste values straight into Copilot, Claude, or Cursor.
- No login required for local use. Data stays in the browser. Sign in with GitHub to enable cloud sync.
Limitations
- Dark mode requires
--dark-modeflag (not automatically detected) - Hover and focus states come from real interaction on a sample of elements; states that need a pointer path or a timer are missed
- Canvas/WebGL-rendered sites cannot be analyzed (no DOM to read)
- JavaScript-heavy sites require hydration time (8s initial + 4s stabilization)
- Some dynamically-loaded content may be missed
- Default viewport is 1920x1080 (use
--mobilefor 390x844 mobile viewport)
Intended Use
Dembrandt reads publicly available CSS and computed styles from website DOMs for documentation, learning, and analysis of design systems you own or have permission to analyze.
Only run Dembrandt against sites whose Terms of Service permit automated access, or against your own properties. Do not use extracted material to reproduce third-party brand identities, logos, or trademarks. Respect robots.txt, rate limits, and copyright.
Dembrandt does not host, redistribute, or claim rights to any third-party brand assets.
Sponsors
The CLI is MIT-licensed and free. Sponsorship funds the enforcement layer: a committed project-level token baseline, --compare and the ingest API for CI/CD drift gates, and the App platform (snapshot history, team drift dashboard, alerts to Slack, Linear, and GitHub).
Documentation
- docs/usage.md: every flag, multi-page extraction, browser selection, CDP, DTCG, DESIGN.md, Tailwind theme, WCAG, motion, brand guide PDF
- docs/ci.md: GitHub Action, drift gate, exit codes
- docs/mcp.md: MCP server install per client, environment, tools
- docs/recipes.md: copy-paste workflows
- docs/FLAGS.md: flag interactions, ignored combinations, multi-page propagation
Contributing
Bugs, weird sites, pull requests. All welcome.
Open an Issue or PR.
@thevangelist
MIT. Do whatever you want with it.
相關資源

Wondel.ai Skills
Skill把《影响力》《StoryBrand》《精益创业》等商业、营销与设计畅销书的方法论做成技能,覆盖产品定位、营销文案、转化率优化、销售谈判和 UX 评审,另有引导创业、建站的分步技能(共 65 个,其中一部分面向编程);纯提示词,无需 API Key,也可按主题作为插件安装。
wondelai/skills2.6k
OpenDesign
MCP开源的本地设计工作台(Claude Design 的开源替代),按 DESIGN.md 设计系统生成网页与移动端原型、演示稿、图片和动效视频,可导出 HTML、PDF、PPTX、MP4;通过 MCP 让 Claude Code、Codex 读取和生成设计项目。需先安装 macOS 或 Windows 桌面应用,Linux 需从源码运行。
nexu-io/open-design107k
Landing Page Design
Skill构建或修改落地页时分两部分工作:先收集目标、受众与证明材料,确定页面结构、版式、转化文案与 SEO;再遵循一套严格的视觉规则,规定字体、Tailwind 字号阶梯、间距、圆角、背景、图标与动效。规则偏主观,例如禁用 Inter 字体与背景渐变。
elayadesign/ai-design-skills15k
Pricing Page
Skill为 SaaS 设计或重写高转化定价页:先收集方案、价格、限制、升级触发点与常见顾虑,再按价值标题、月付年付切换、三档方案、对比表、FAQ 与安全合规区块组织,并给出标题、方案说明与按钮文案模板。
MengTo/Skills7.3k
Landing Page
Skill为 SaaS、应用或服务设计或重写高转化落地页:先问清唯一的转化动作、受众、顾虑与证明素材,按首屏、论证、异议处理的结构编排,并提供版式类型、标题与 CTA 文案模板及 SEO 建议。
MengTo/Skills7.3k
Bencium Innovative UX Designer
Skill为品牌、活动、出版物、网页或产品建立独立的视觉语言:从主题本身的语境出发,不参考当下的设计作品,只用字体、颜色与留白做出 10 个相互独立的 HTML 排版方向,由人看过后明确选定一个,再进入第二轮做成可投产的设计系统与成品。不适合日常界面修补、小组件或套用现有设计系统。
bencium/bencium-marketplace491