jpskill.com
🎨 デザイン コミュニティ

ブランドDNA抽出

ads-dna

ウェブサイトのURLから、ブランドの視覚的な特徴や表現方法、色使いなどを分析し、広告制作に一貫性を持たせるためのブランド情報を抽出するSkill。

📜 元の英語説明(参考)

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", "brand profile", "extract brand", "brand identity", "brand colors", "what is the brand voice", "analyze brand", "brand style guide".

🇯🇵 日本人クリエイター向け解説

一言でいうと

ウェブサイトのURLから、ブランドの視覚的な特徴や表現方法、色使いなどを分析し、広告制作に一貫性を持たせるためのブランド情報を抽出するSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o ads-dna.zip https://jpskill.com/download/10496.zip && unzip -o ads-dna.zip && rm ads-dna.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/10496.zip -OutFile "$d\ads-dna.zip"; Expand-Archive "$d\ads-dna.zip" -DestinationPath $d -Force; ri "$d\ads-dna.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して ads-dna.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → ads-dna フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

Ads DNA — ブランドDNA抽出ツール

ウェブサイトからブランドアイデンティティを抽出し、/ads create/ads generate、および /ads photoshoot で使用するために brand-profile.json として保存します。

クイックリファレンス

コマンド 動作
/ads dna <url> 完全なブランド抽出 → brand-profile.json
/ads dna https://acme.com --quick 高速抽出 (ホームページのみ)

プロセス

ステップ 1: URL の収集

ユーザーが URL を提供していない場合は、次のように尋ねます。

"ブランドDNAの分析対象となるウェブサイトのURLは何ですか? (例: https://yoursite.com)"

ステップ 2: ページのフェッチ

WebFetch tool を使用して各ページを取得します。各 URL に対して、次のフェッチプロンプトを使用します。

"すべての表示可能なテキストコンテンツ、すべての <style> ブロックの完全なコンテンツ、インラインの style= 属性、<meta> タグ、Google Fonts の @import URL、およびこのページで見つかったすべての og:image の値を返します。"

次の順序でフェッチします。

  1. ホームページ (<url>)
  2. 会社概要ページ<url>/about、次に <url>/about-us、次に <url>/our-story を試します。
  3. 製品/サービスページ<url>/product、次に <url>/products、次に <url>/services を試します。

--quick フラグが指定された場合: ホームページのみをフェッチします — ステップ 2 と 3 をスキップします。

セカンダリページが 404 エラーまたはリダイレクトエラーを返す場合は、ページ数を減らして続行し、次のように記述します。 "セカンダリページは利用できません — ホームページのみに基づく抽出。信頼性が低い可能性があります。"

ステップ 2b: ブランドのスクリーンショットのキャプチャ

ページをフェッチした後、ウェブサイトのデスクトップスクリーンショットをキャプチャします。これらは、/ads generate 中に視覚的なスタイルリファレンスとして機能します — Pomelli が広告画像を実際のブランドの美学に固定するために使用するのと同じアプローチです。

ホームページに対して実行します。

python ~/.claude/skills/ads/scripts/capture_screenshot.py [url]

これにより、./brand-screenshots/[domain]_desktop.png が保存されます (スクリプトからのデフォルトの命名)。

また、1つのセカンダリページ (価格設定ページまたは製品ページ、アクセス可能な方) も試みます。

python ~/.claude/skills/ads/scripts/capture_screenshot.py [url]/pricing

--quick フラグが指定された場合: スクリーンショットのキャプチャを完全にスキップします。

キャプチャが失敗した場合 (Playwright がインストールされていない、ネットワークエラー、タイムアウトする JS ヘビーな SPA):

  • ログ: "Screenshot capture skipped — run: python3 -m playwright install chromium"
  • スクリーンショットなしで続行します
  • brand-profile.jsonscreenshots フィールドを設定しないでください

ステップ 3: ブランド要素の抽出

フェッチされた HTML から、以下を抽出します。

色:

  • og:image メタタグ → 主要な色を分析します (2〜3個の主要な16進数値をメモします)
  • CSS background-color on body, header, .hero, .btn-primary
  • CSS color on h1, h2, .btn
  • CSS border-color または background on .cta, .button
  • 識別: プライマリ (最も目立つブランドカラー)、セカンダリ (サポートカラー)、背景、テキスト

タイポグラフィ:

  • @import url(https://fonts.googleapis.com/...) → URLパスからフォント名を抽出します
  • CSS font-family on h1, h2, body, .headline
  • Google Fonts URL に family=Inter:wght@... が含まれている場合、heading_font = "Inter"

ボイス: ヒーローヘッドライン、サブヘッドライン、会社概要ページの紹介文、および CTA ボタンのテキストを分析します。 次のヒューリスティックを使用して、各軸を 1〜10 でスコアリングします。

シグナル スコアの方向
"you/your" を頻繁に使用する formal_casual → casual (+2)
専門用語を使用する expert_accessible → expert (-2)
短くパンチの効いた文章 (≤8 語) bold_subtle → bold (+2)
ヒーローのデータ/統計 rational_emotional → rational (-2)
"Transform"、"revolutionize"、"disrupt" traditional_innovative → innovative (+2)
顧客の推薦文がリードする rational_emotional → emotional (+2)
業界の賞、"X に信頼されている" traditional_innovative → traditional (-1)

イメージスタイル (og:image および表示されているヒーローイメージの説明から):

  • 写真 vs. イラスト vs. フラットデザイン
  • 主題 (人、製品、抽象、データ)
  • 構成スタイル (クリーン/ミニマル vs. ビジー/エディトリアル)

禁止要素 (ブランドポジショニングから推測):

  • エンタープライズ/B2B ブランド → "安っぽいストックフォト"、"消費者向けライフスタイルイメージ" を追加
  • ヘルスケア → "資格のない医療主張"、"ビフォー/アフターイメージ" を追加
  • 金融 → "一攫千金のイメージ"、"非現実的な富の表示" を追加
  • 消費者ブランド → 通常、禁止要素はありません

ステップ 4: brand-profile.json の構築

正確なスキーマについては、~/.claude/skills/ads/references/brand-dna-template.md を参照してください。

スキーマに正確に従って JSON オブジェクトを構築します。確実に抽出できないフィールドには null を使用します — 推測しないでください。

信頼度の低いフィールドの例:

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

ステップ 5: brand-profile.json の書き込み

JSON を現在の作業ディレクトリ (ユーザーが Claude Code を実行している場所) の ./brand-profile.json に書き込みます。

ステップ 2b でスクリーンショットが正常にキャプチャされた場合は、screenshots フィールドを含めます。

"screenshots": {
  "homepage": "./brand-screenshots/[domain]_desktop.png",
  "secondary": ["./brand-screenshots/[domain]_pricing_desktop.png"]
}

ステップ 2b がスキップされたか失敗した場合は、screenshots フィールドを完全に省略します。

ステップ 6: 確認と要約

ユーザーに以下を表示します。

✓ 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 → ./brand-screenshots/] OR [skipped]

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

制限事項

  • コンテンツの少なさ: 本文のテキストが 200 語未満のサイトでは、信頼度の低いプロファイルが生成されます。 注: "信頼度の低い抽出 — 分析に利用できるコンテンツが限られています。"
  • 動的なサイト: JavaScript でレンダリングされたコンテンツはキャプチャされない場合があります。Playwright はデフォルトでは使用されません。サイトが静的な HTML のない SPA/React であると思われる場合は、これをメモしてください。
  • マルチブランド企業: このツールは、URL ごとに 1 つのプロファイルを作成します。個別に実行します。

(原文はここで切り詰められています)

📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

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.

Quick Reference

Command What it does
/ads dna <url> Full brand extraction → brand-profile.json
/ads dna https://acme.com --quick Fast 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 desktop screenshots of the website. These serve as visual style references during /ads generate — the same approach Pomelli uses to anchor ad images to the actual brand aesthetic.

Run for the homepage:

python ~/.claude/skills/ads/scripts/capture_screenshot.py [url]

This saves ./brand-screenshots/[domain]_desktop.png (default naming from the script).

Also attempt one secondary page (pricing or product page, whichever was accessible):

python ~/.claude/skills/ads/scripts/capture_screenshot.py [url]/pricing

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:

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", "disrupt" traditional_innovative → innovative (+2)
Customer testimonials lead rational_emotional → emotional (+2)
Industry awards, "trusted by X" traditional_innovative → traditional (-1)

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]_desktop.png",
  "secondary": ["./brand-screenshots/[domain]_pricing_desktop.png"]
}

Omit the screenshots field entirely if Step 2b was skipped or 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 → ./brand-screenshots/] OR [skipped]

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

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