ads dna
Brand DNA extractor for paid advertising. Scans a website URL to extract visual identity, tone of voice, color palette, typography, and imagery style. Outputs brand-profile.json. Run before /ads create or /ads generate for brand-consistent creative. Triggers on: "brand DNA", "brand profile", "extract brand", "brand identity", "brand colors", "analyze brand", "brand style guide", "brand voice"
Best use case
ads dna is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Brand DNA extractor for paid advertising. Scans a website URL to extract visual identity, tone of voice, color palette, typography, and imagery style. Outputs brand-profile.json. Run before /ads create or /ads generate for brand-consistent creative. Triggers on: "brand DNA", "brand profile", "extract brand", "brand identity", "brand colors", "analyze brand", "brand style guide", "brand voice"
Teams using ads dna should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/ads-dna/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How ads dna Compares
| Feature / Agent | ads dna | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Brand DNA extractor for paid advertising. Scans a website URL to extract visual identity, tone of voice, color palette, typography, and imagery style. Outputs brand-profile.json. Run before /ads create or /ads generate for brand-consistent creative. Triggers on: "brand DNA", "brand profile", "extract brand", "brand identity", "brand colors", "analyze brand", "brand style guide", "brand voice"
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# /ads dna — Brand DNA Extractor
> Extracts brand identity from a website and saves it as `brand-profile.json`
> for use by `/ads create`, `/ads generate`, and `/ads photoshoot`.
## Usage
```bash
/ads dna <url>
/ads dna https://acme.com
/ads dna https://acme.com --quick
```
## Arguments
| Flag | Type | Default | Description |
|------|------|---------|-------------|
| `<url>` | string | required | Website URL to analyze |
| `--quick` | flag | false | Homepage only (skip secondary pages) |
## Process
### Step 1: Collect URL
If the user hasn't provided a URL, ask:
> "What website URL should I analyze for brand DNA?"
### Step 2: Fetch Pages
Fetch in this order:
1. **Homepage** (`<url>`)
2. **About page** — try `<url>/about`, then `<url>/about-us`, then `<url>/our-story`
3. **Product/Services page** — try `<url>/product`, then `<url>/products`, then `<url>/services`
If `--quick` flag was provided: fetch the homepage only.
### Step 3: Extract Brand Elements
From the fetched HTML, extract:
**Colors:**
- `og:image` meta tag — analyze dominant colors
- CSS `background-color` on `body`, `header`, `.hero`, `.btn-primary`
- CSS `color` on `h1`, `h2`, `.btn`
- Identify: primary (most prominent), secondary, background, text
**Typography:**
- Google Fonts `@import` URLs — extract font names
- CSS `font-family` on `h1`, `h2`, `body`
**Voice:**
Analyze hero headline, subheadline, About page intro, and CTA button text.
Score each axis 1-10:
| Signal | Score direction |
|--------|----------------|
| Uses "you/your" frequently | formal_casual -> casual (+2) |
| Uses technical jargon | expert_accessible -> expert (-2) |
| Short punchy sentences (<=8 words) | bold_subtle -> bold (+2) |
| Data/stats in hero | rational_emotional -> rational (-2) |
| "Transform", "revolutionize" | traditional_innovative -> innovative (+2) |
| Customer testimonials lead | rational_emotional -> emotional (+2) |
**Imagery style** (from og:image and hero images):
- Photography vs. illustration vs. flat design
- Subject matter (people, product, abstract, data)
- Composition style (clean/minimal vs. busy/editorial)
**Forbidden elements** (infer from brand positioning):
- Enterprise/B2B -> "cheesy stock photos", "consumer lifestyle imagery"
- Healthcare -> "unqualified medical claims", "before/after imagery"
- Finance -> "get rich quick imagery", "unrealistic wealth displays"
### Step 4: Build brand-profile.json
```json
{
"schema_version": "1.0",
"brand_name": "string",
"website_url": "string",
"extracted_at": "ISO-8601",
"voice": {
"formal_casual": 1-10,
"rational_emotional": 1-10,
"playful_serious": 1-10,
"bold_subtle": 1-10,
"traditional_innovative": 1-10,
"expert_accessible": 1-10,
"descriptors": ["adjective1", "adjective2", "adjective3"]
},
"colors": {
"primary": "#hexcode or null",
"secondary": ["#hex1", "#hex2"],
"forbidden": ["#hex or color name"],
"background": "#hexcode",
"text": "#hexcode"
},
"typography": {
"heading_font": "Font Name or null",
"body_font": "Font Name or system-ui",
"pairing_descriptor": "brief description"
},
"imagery": {
"style": "professional photography | illustration | flat design | mixed",
"subjects": ["subject1", "subject2"],
"composition": "brief description",
"forbidden": ["element1", "element2"]
},
"aesthetic": {
"mood_keywords": ["keyword1", "keyword2", "keyword3"],
"texture": "minimal | textured | mixed",
"negative_space": "generous | moderate | dense"
},
"brand_values": ["value1", "value2", "value3"],
"target_audience": {
"age_range": "e.g. 25-45",
"profession": "brief description",
"pain_points": ["pain1", "pain2"],
"aspirations": ["aspiration1", "aspiration2"]
}
}
```
### Step 5: Write brand-profile.json
Write to `./brand-profile.json` in the current working directory.
### Step 6: Confirm and Summarize
```
Brand DNA Summary:
Brand: [brand_name]
Voice: [descriptor 1], [descriptor 2], [descriptor 3]
Primary Color: [hex]
Typography: [heading_font] / [body_font]
Target: [age_range] [profession]
Run `/ads create` to generate campaign concepts from this profile.
```
## Limitations
- **Sparse content**: Sites with <200 words produce lower-confidence profiles
- **Dynamic sites**: JavaScript-rendered content may not be captured
- **Multi-brand enterprises**: Creates one profile per URL. Run separately for each brand
- **Dark mode sites**: If body background is #333 or darker, swap background/text values
- **CSS-in-JS**: Modern React sites may not have extractable CSS. Use og:image colors as fallbackRelated Skills
/do
> The agent's primary skill. Customize this to match your agent's purpose.
/report
> Generate structured reports. Director-owned.
/primary
> Main workflow execution and routing. Director-owned.
Qualify
## Command
Prospect
## Command
Close Plan
## Command
Battlecard
## Command
Spec
## Command
Schedule
## Command
Repurpose
## Command
Ideate
## Command
Analyze
## Command