Skip to content
ads-dna logo

Ads DNA: Brand DNA Extractor

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 to the current directory. Run before /ads create or /ads generate for brand-consistent creative. Triggers on: brand DNA...

SKILL.md

Full skill instructions

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.

Brand DNA extraction is OBSERVE and LISTEN made concrete (see the 10-Principle Thinking Framework in ads/​references/​thinking-framework.md). The website is the input; the brand profile is what the site is saying about itself when no one is curating the message. Listen to the voice before you label it. Observe the visual choices before you classify them.

Quick Reference

CommandWhat it does
/​ads dna <url>Full brand extraction → brand-profile.json
/​ads dna https://acme.com --quickFast extraction (homepage only)

Process

Step 1: Collect URL

If the user hasn't provided a URL, ask:

"What website URL should I analyze for brand DNA? (e.g. https://yoursite.com)"

Step 2: Fetch Pages

Use the WebFetch tool to retrieve each page. For each URL, use this fetch prompt:

"Return all visible text content, the full contents of any <style> blocks, inline style= attributes, <meta> tags, Google Fonts @import URLs, and any og:image values found on this page."

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; skip steps 2 and 3.

If a secondary page returns a 404 or redirect error, continue with fewer pages and note: "Secondary pages unavailable; extraction based on homepage only. Confidence may be lower."

Step 2b: Capture Brand Screenshots

After fetching pages, capture 3 screenshots for comprehensive brand anchoring. These serve as visual style references during /​ads generate; the same approach Pomelli uses to anchor ad images to the actual brand aesthetic.

Capture the following:

  1. Homepage hero section (above the fold):
python ~/​.claude/​skills/​ads/​scripts/​capture_screenshot.py [url]

Saves: ./​brand-screenshots/​{domain}_homepage.png

  1. Product or services page:
python ~/​.claude/​skills/​ads/​scripts/​capture_screenshot.py [url]/​products

Saves: ./​brand-screenshots/​{domain}_product.png

  1. About page (brand personality):
python ~/​.claude/​skills/​ads/​scripts/​capture_screenshot.py [url]/​about

Saves: ./​brand-screenshots/​{domain}_about.png

If a page is not found or returns an error, skip it gracefully and continue with the remaining pages.

If --quick flag was provided: skip screenshot capture entirely.

If capture fails (Playwright not installed, network error, JS-heavy SPA that times out):

  • Log: "Screenshot capture skipped; run: python3 -m playwright install chromium"
  • Continue without screenshots
  • Do NOT set the screenshots field in brand-profile.json

Step 3: Extract Brand Elements

From the fetched HTML, extract:

Colors:

  • og:image meta tag → analyze dominant colors (note 2-3 prominent hex values)
  • CSS background-color on body, header, .hero, .btn-primary
  • CSS color on h1, h2, .btn
  • CSS border-color or background on .cta, .button
  • Identify: primary (most prominent brand color), secondary (supporting colors), background, text

Typography:

  • @import url(https://fonts.googleapis.com/​...) → extract font names from URL path
  • CSS font-family on h1, h2, body, .headline
  • If Google Fonts URL contains family=Inter:wght@..., heading_font = "Inter"

Voice: Analyze hero headline, subheadline, About page intro, and CTA button text. Score each axis 1-10 using these heuristics:

SignalScore direction
Uses "you/​your" frequentlyformal_casual → casual (+2)
Uses technical jargonexpert_accessible → expert (-2)
Short punchy sentences (≤8 words)bold_subtle → bold (+2)
Data/​stats in herorational_emotional → rational (-2)
"Transform", "revolutionize", "disrupt"traditional_innovative → innovative (+2)
Customer testimonials leadrational_emotional → emotional (+2)
Industry awards, "trusted by X"traditional_innovative → traditional (-1)

Confidence Scoring

Each voice axis gets a confidence rating based on signal count:

  • High (3+ signals): strong evidence for axis position
  • Medium (2 signals): moderate evidence, may need validation
  • Low (1 signal): weak evidence, treat as estimate

Also extract structured data when available: schema.org markup, Open Graph tags (og:title, og:description, og:image), Twitter Card metadata.

Imagery style (from og:image and any visible hero image descriptions):

  • 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 brands → add "cheesy stock photos", "consumer lifestyle imagery"
  • Healthcare → add "unqualified medical claims", "before/​after imagery"
  • Finance → add "get rich quick imagery", "unrealistic wealth displays"
  • Consumer brands → usually no forbidden elements

Step 4: Build brand-profile.json

Read ~/​.claude/​skills/​ads/​references/​brand-dna-template.md for the exact schema.

Construct the JSON object following the schema precisely. Use null for any field that cannot be confidently extracted; do not guess.

Example of a low-confidence field:

"typography": {
  "heading_font": null,
  "body_font": "system-ui",
  "pairing_descriptor": "system default (Google Fonts not detected)"
}

Step 5: Write brand-profile.json

Write the JSON to ./​brand-profile.json in the current working directory (where the user is running Claude Code).

If screenshots were captured successfully in Step 2b, include a screenshots field:

"screenshots": {
  "homepage": "./​brand-screenshots/​{domain}_homepage.png",
  "product": "./​brand-screenshots/​{domain}_product.png",
  "about": "./​brand-screenshots/​{domain}_about.png"
}

Include only the screenshots that were successfully captured. If a page was not found or errored, omit that key. Omit the screenshots field entirely if Step 2b was skipped or all captures failed.

Step 6: Confirm and Summarize

Show the user:

✓ brand-profile.json saved to ./​brand-profile.json

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]
  Screenshots: [N captured (homepage, product, about) in ./​brand-screenshots/] OR [skipped]

Run `/​ads create` to generate campaign concepts from this profile.

Visual Designer Integration

The visual-designer agent uses the most relevant screenshot per concept as a style reference when generating images via banana. For example, a product-focused concept references the product page screenshot, while a brand awareness concept references the homepage or about page screenshot.

Limitations

  • Sparse content: Sites with <200 words of body text produce lower-confidence profiles. Note: "Low confidence extraction; limited content available for analysis."
  • Dynamic sites: JavaScript-rendered content may not be captured. Playwright is not used by default. If the site appears to be SPA/​React with no static HTML, note this.
  • Multi-brand enterprises: This tool creates one profile per URL. Run separately for each brand/​product line.
  • 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 fallback.

brand-profile.json Schema

{
  "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"]
  }
}

More skills from gabrielmoreira

workflow-router logo
gabrielmoreira/agent-skills-mirror

workflow-router

研发工作流入口 - 帮助用户快速进入正确的工作流阶段。 触发关键词: 工作流, 流程, 从哪开始, 帮我, 我该怎么做, 下一步, workflow, 不知道用什么, 新手引导, 怎么用

19 0
View
平台架构知识 logo
gabrielmoreira/agent-skills-mirror

平台架构知识

Periodically refreshed mirror of agents, skills, prompts and instruction files from public repositories.

19 0
View
unity-profiler logo
gabrielmoreira/agent-skills-mirror

unity-profiler

Read-only Unity runtime performance snapshots — FPS, frame time, batches/draw calls, triangles/vertices, memory (total/mono/per-asset), object counts, AssetBundle stats. Exact signatures via GET /skills/schema.

19 0
View
ads-audit logo
gabrielmoreira/agent-skills-mirror

ads-audit

Full multi-platform paid advertising audit with parallel subagent delegation. Analyzes Google Ads, Meta Ads, LinkedIn Ads, TikTok Ads, Microsoft Ads, and Apple Ads accounts via 6 parallel audit agents. Amazon Ads, cross-platform attribution, and server-side tracking are covered by their standalon...

19 0
View
unity-skills logo
gabrielmoreira/agent-skills-mirror

unity-skills

Unity Editor automation via REST API — create scripts, analyze scenes, manage assets, control editor, orchestrate workflows, run batch jobs, and route by Unity version. Triggers: Unity, Unity Skills, in Unity, automate Unity, Unity editor automation, create Unity script, scene summary, analyze Un...

19 0
View
purple-cow-audit logo
gabrielmoreira/agent-skills-mirror

purple-cow-audit

Score product remarkability 1-10 to decide if it's worth promoting. Seth Godin's Purple Cow test. Triggers on: "is this product worth promoting", "should I promote", "product audit", "purple cow", "remarkable product", "is it remarkable", "rate this product", "product quality check", "worth my re...

19 0
View
unity-cleaner logo
gabrielmoreira/agent-skills-mirror

unity-cleaner

Project cleanup and audit — find unused assets, content-hash duplicates, missing references, empty folders, large assets, dependency trees; two-step confirm-token delete. Exact signatures via GET /skills/schema.

19 0
View
skill-manager-guide logo
gabrielmoreira/agent-skills-mirror

skill-manager-guide

**GUIDE SKILL** — Guide to the Skill Manager for Copilot extension. USE FOR: adding/removing skill repos, syncing skills, pushing feedback, configuring sync intervals, troubleshooting sync issues, understanding skill format. DO NOT USE FOR: creating new skills (use skill-creator), creating agents...

19 0
View
configure-nightwatch logo
gabrielmoreira/agent-skills-mirror

configure-nightwatch

Configures Laravel Nightwatch data collection, sampling rates, filtering rules, and redaction policies. Use when setting up Nightwatch, managing data volume, protecting sensitive data (PII), or optimizing event collection for production workloads.

19 0
View
research-and-write logo
gabrielmoreira/agent-skills-mirror

research-and-write

End-to-end workflow: research a topic and then write a LinkedIn post about it. Use this skill whenever the user wants the full pipeline — from a topic idea to a finished LinkedIn post. Triggers on: 'research and write a post about', 'create a LinkedIn post about [topic]', 'I want to post about', ...

19 0
View
AI Tutor Persona logo
gabrielmoreira/agent-skills-mirror

AI Tutor Persona

Periodically refreshed mirror of agents, skills, prompts and instruction files from public repositories.

19 0
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View