Install
$ agentstack add skill-thatrebeccarae-claude-marketing-brand-dna ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Brand DNA — Brand Identity Extractor
Extracts brand identity from a website and produces a structured brand-profile.json that other skills can consume for brand-consistent output.
Install
git clone https://github.com/thatrebeccarae/claude-marketing.git && cp -r claude-marketing/skills/brand-dna ~/.claude/skills/
Quick Reference
| Command | What It Does | |---------|-------------| | "Extract brand DNA from https://example.com" | Full extraction → brand-profile.json | | "Quick brand profile for https://example.com" | Homepage-only extraction (faster, lower confidence) |
Zero Dependencies
This skill uses only the WebFetch tool — no Python scripts, no Playwright, no external APIs. It works anywhere Claude Code runs.
Extraction Process
Step 1: Collect URL
If the user hasn't provided a URL, ask: > "What website URL should I analyze? (e.g., https://yoursite.com)"
Step 2: Fetch Pages
Use the WebFetch tool to retrieve page content. For each URL, request:
- All visible text content
- Full contents of `` blocks
- Inline
style=attributes - `
tags (especiallyog:image,description`) - Google Fonts
@importURLs - Any `` tags referencing external stylesheets
Fetch order:
- Homepage (``)
- About page — try
/about, then/about-us, then/our-story - Product/Services page — try
/products, then/product, then/services
Quick mode: If the user requests a quick extraction, fetch homepage only — skip pages 2 and 3.
If a secondary page returns 404 or redirects to homepage, continue with fewer pages and note reduced confidence.
Step 3: Extract Brand Elements
Colors
- Primary color: Most prominent brand color from CSS
background-coloron.hero,.btn-primary,header, orog:imagedominant color - Secondary colors: Supporting palette from CTAs, accents, borders
- Background/text:
bodybackground-color and color - Forbidden: Infer from brand positioning (e.g., competitor colors if identifiable)
- Dark mode detection: If body background is #333 or darker, swap background/text values
CSS targets: background-color, color, border-color on body, header, .hero, .btn, .cta, h1, h2
Typography
- Google Fonts: Extract from
@import url(https://fonts.googleapis.com/css2?family=...)— parse font name from URL - CSS font-family: Check
h1,h2,body,.headlinedeclarations - Fallback: If no Google Fonts detected, set headingfont to
nulland bodyfont to"system-ui"
Voice (1-10 scale per axis)
Analyze hero headline, subheadline, about page intro, and CTA button text:
| Signal | Axis | Direction | |--------|------|-----------| | Uses "you/your" frequently | formalcasual | +2 toward casual | | Technical jargon, industry terms | expertaccessible | -2 toward expert | | Short punchy sentences (≤8 words) | boldsubtle | +2 toward bold | | Data, stats, percentages in hero | rationalemotional | -2 toward rational | | "Transform", "revolutionize", "disrupt" | traditionalinnovative | +2 toward innovative | | Customer testimonials lead | rationalemotional | +2 toward emotional | | "Trusted by X companies", awards | traditionalinnovative | -1 toward traditional | | Humor, wordplay, casual phrasing | playfulserious | +2 toward playful | | Formal language, third person | playful_serious | -2 toward serious |
Start each axis at 5 (neutral) and adjust based on signals found.
Descriptors: Choose 3-5 adjectives that capture the overall voice tone. These should complement the numerical scores, not repeat them.
Imagery
- Style: Professional photography, illustration, flat design, 3D renders, or mixed
- Subjects: What appears in hero images and product shots (people, products, abstract, data)
- Composition: Clean/minimal, busy/editorial, dark/dramatic, light/airy
- Forbidden elements: Infer from industry (healthcare → no unqualified medical claims imagery; B2B → no cheesy stock photos)
Aesthetic
- Mood keywords: 3 adjectives describing the visual mood (e.g., "trustworthy", "modern", "premium")
- Texture: minimal, textured, or mixed
- Negative space: generous, moderate, or dense
Brand Values
Extract from about page, mission statement, or footer. Look for repeated themes. Choose 3-5 core values.
Target Audience
Infer from copy, pricing signals, and positioning:
- Age range: Estimate from visual design, language complexity, and product type
- Profession: Who the product/service is for
- Pain points: What problems the brand addresses (from hero copy and feature descriptions)
- Aspirations: What the audience wants to achieve (from benefit-oriented copy)
Step 4: Build brand-profile.json
Construct the JSON following the schema in REFERENCE.md precisely. Use null for any field that cannot be confidently extracted — never guess.
Step 5: Write and Confirm
Write brand-profile.json to the current working directory.
Display a summary:
Brand DNA extracted → brand-profile.json
Brand: [brand_name]
Voice: [descriptor 1], [descriptor 2], [descriptor 3]
Primary Color: [hex]
Typography: [heading_font] / [body_font]
Audience: [age_range], [profession]
This profile can be consumed by:
- seo-content-writer (voice matching)
- email-composer (tone calibration)
- frontend-design (visual identity)
- pro-deck-builder (brand colors/fonts)
- cross-platform-audit (brand consistency checks)
Limitations
- Sparse sites: <200 words of body text produce lower-confidence profiles. Note this in output.
- SPA/React sites: JavaScript-rendered content may not be fully captured by WebFetch. Note this if detected.
- Multi-brand enterprises: Creates one profile per URL. Run separately for each brand.
- CSS-in-JS: Modern React/Next.js sites may not have extractable CSS. Use og:image analysis as fallback.
How to Use This Skill
Ask questions like:
- "Extract the brand DNA from https://example.com"
- "Build a brand profile for my client's website"
- "Analyze the brand voice and colors of https://competitor.com"
- "Quick brand profile — homepage only — for https://example.com"
- "What's the brand identity of this website?"
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: thatrebeccarae
- Source: thatrebeccarae/claude-marketing
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.