企業のウェブサイトURLと、ユーザーが提供した素材(オプション)から、ブランドボード(ブランドの視覚的な統一表現をまとめた資料)を生成します。ウェブサイトを分析してテーマカラー、書体、ロゴ、画像などを抽出し、洗練されたブランドボードをHTML、PDF、スライドデック、またはReactコンポーネント形式で提供します。 **次のような場合に使用:** - 「ブランドボードを作成したい」 - 「ブランドボードを生成して」 - 「ブランドアイデンティティ(ブランドの独自性)を抽出したい」 - 「ウェブサイトからビジュアルアイデンティティ(視覚的な特徴)を作りたい」 - 「サイトからブランドガイドラインを作成して」 - 「ウェブサイトのブランドを分析したい」 - 「ブランド監査(ブランドの現状把握と評価)をしてほしい」
Generates a brand board from a firm's website URL and optional user-provided assets. Analyzes the website to extract theme colors, typography, logos, and imagery, then produces a polished brand board as an HTML artifact, PDF, slide deck, or React component. Trigger phrases: "build a brand board", "create a brand board", "generate a brand board", "extract brand identity", "brand board from website", "visual identity from URL", "brand guidelines from site", "analyze brand from website", "brand audit".
<!-- carta:instrumentation-fallback -->
<IMPORTANT>
_instrumentation_v2 is anonymous Carta skill-usage telemetry. ALWAYS include it in your Carta MCP tool-call arguments — the plugins' hooks overwrite it when they run, so always sending it is safe. Shape:
_instrumentation_v2: {"skills": ["<plugin>:<skill>", ...], "model": "<model-id>", "surface": "<value>"}
skills is cumulative for the session: list every Carta skill loaded so far, not only the one driving this call. Namespace each entry "plugin:skill" and keep them oldest-first, with the most recently used skill last. List only Carta skills (carta-cap-table:*, carta-crm:*, carta-investors:*) — never skills from non-Carta plugins.
surface is the Claude surface you are running in: "chat" (claude.ai or the Claude app, i.e. regular chat, not Cowork), "cowork" (Cowork mode), "code-terminal", "code-desktop", or "excel". Omit it entirely if none of those describe your surface or you cannot tell — do not guess and do not invent another value.
</IMPORTANT>
This skill generates a brand board — a single-page visual reference sheet capturing a company's visual identity — from their website URL and any additional assets the user provides.
A brand board includes:
The skill works in two phases: extraction (automated analysis of the website) and composition (building the brand board artifact with Claude's design judgment).
Fire this skill when the user asks to:
Also fire when the user provides a URL and asks for "brand analysis", "visual identity audit", or "design system extraction".
carta-brand or carta-theme insteadThe analysis script requires network access to fetch the website. Dependencies are declared inline (PEP 723) and resolved by uv run automatically:
requests, beautifulsoup4, cssutils, Pillowreportlabpython-pptxBefore touching the website, check whether Carta already has a saved brand board for this firm. A saved board means a previous session already extracted and approved the brand identity — reusing it is faster, more consistent, and avoids redundant scraping.
If a firm UUID was passed in from the orchestrating skill (e.g., carta-agm-deck-builder), call:
mcp__claude_ai_carta__set_context(firm_id="<firm_uuid>")
If no firm UUID was passed, call mcp__claude_ai_carta__list_contexts() to list available firms and pick the matching one. Do not skip this step — the brand board lookup depends on the active firm context.
If Carta MCP is not connected (tool not found or auth error), skip Phase 0 entirely and proceed to Phase 1. Record brand_board_source = "none".
mcp__claude_ai_carta__call_tool({"name": "fa__get__brand_board"})
HTTP 200 / success: A saved brand board exists. Use the brand_board field from the response as brand_data. Set brand_board_source = "saved_mcp". Tell the user:
"Found a saved brand board for this firm — reusing the previously extracted brand identity. Let me know if you'd like to re-extract from the website instead."
Skip Phase 2 (website extraction) entirely. Jump directly to Phase 3 (Classify and curate) using the saved data.
404 / "Brand board not found": No saved board exists. Set brand_board_source = "to_be_created". Proceed to Phase 1 (gather inputs) and Phase 2 (website extraction). The result will be saved in Phase 5.
Any other error: Treat as "not found" and proceed to Phase 1. Do not block on errors.
Ask for the website URL if not already provided. Accept bare domains (acme.com) — the script prepends https:// automatically.
Ask about additional assets (optional). The user may provide:
If the user says "no" or provides nothing extra, proceed with website-only extraction.
Ask about the output format (optional). Default to HTML artifact. Other options:
If the user doesn't specify, produce an HTML artifact.
Run the analysis script:
uv run ${CLAUDE_PLUGIN_ROOT}/skills/carta-brand-extraction/scripts/analyze_website.py <url>
This returns a JSON report with raw extraction data. Save the output — you will reference it throughout composition.
If the script fails (e.g., the site blocks automated access, CAPTCHA, JS-heavy SPA with no server-rendered content):
WebFetch on the URL as a fallback to get the HTMLThis is where Claude's design judgment matters. The raw extraction data has frequency-ranked colors and multiple font families. You must classify them:
Group the extracted colors into four categories:
Classification heuristics:
--primary, --brand, --accent are strong signals<header>, <nav>, or .hero contexts are likely primaryh1-h3, .hero, display text)p, body, general content)@font-face source URLs (typography.font_faces) for custom/self-hosted fonts. These are the actual font file URLs needed to load the fonts at render time — without them, the browser only has the family name and falls back to system fonts<header> or <nav> over faviconRead the appropriate snippet template:
| Format | Snippet to read |
|---|---|
| HTML artifact | snippets/brand_board_html.html |
| React artifact | snippets/brand_board_react.jsx |
snippets/brand_board_pdf.py |
|
| PPTX | snippets/brand_board_pptx.py |
For HTML artifacts (default):
snippets/brand_board_html.html{{PLACEHOLDER}} values with the classified data.bb-swatch, .bb-type-specimen, etc.) for each data itemdark-mode to <body>For React artifacts:
snippets/brand_board_react.jsx<BrandBoard> with the populated propsFor PDF:
snippets/brand_board_pdf.pydata dict with classified colors, fonts, logos, tokensgenerate_brand_board_pdf(data, "brand_board.pdf", firm_name="...")For PPTX:
snippets/brand_board_pptx.pydata dictgenerate_brand_board_pptx(data, "brand_board.pptx", firm_name="...")If brand data was freshly extracted in this session (i.e., brand_board_source = "to_be_created" — Phase 0 returned a 404), save it to Carta automatically after the user has seen the brand board output and not objected to the colors.
You do not need a separate explicit consent question for this write. The user's approval of the brand board in Phase 4 (or the absence of any correction) is sufficient consent. If the user explicitly said "don't save" or "skip Carta", honor that.
Call:
mcp__claude_ai_carta__call_tool({"name": "fa__create__brand_board", "arguments": {"brand_board": <brand_data_json>}})
The brand_board parameter is the full brand identity JSON object — colors, typography, logo candidates, and source metadata.
On success, tell the user (one line only):
"Brand board saved to Carta — future runs will reuse it automatically."
Skip this step if:
brand_board_source is "saved_mcp" (came from Carta, no need to re-save)brand_board_source = "none")If the user provided additional assets in Phase 1:
User-provided input always takes precedence over automated extraction.
Keep responses concise. The brand board artifact is the deliverable — not the conversation.
If the extraction is thin (few colors, no clear fonts, no logos), say so and ask the user if they can provide additional brand assets to fill the gaps.
Before delivering the brand board:
WebFetch to get the rendered HTML, or ask the user for a screenshot.@font-face in the raw CSS or Google Fonts links.powered-by — embeds the "Powered by Carta" lockup on artifacts. Complementary — carta-brand-extraction produces the board, powered-by adds the Carta badge if the data came from Carta.carta-agm-deck-builder — the main orchestrator skill that chains brand extraction + deck generation + Carta badge.原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。