--- name: extract-project-logo description: Extract a project's logo from its website, brand kit, or other sources --- # Extract project logo This skill extracts a project's official logo from its website or related sources, prioritising high-quality vector formats and official brand assets. ## Required inputs Before starting, gather the following from the user: 1. **Website URL** - The project's main website (e.g., `https://example.com`) 2. **Save path** - Local filesystem path where the logo should be saved (e.g., `./logos/example-logo.svg`) 3. **Format preference** (optional) - Preferred format: SVG (recommended), PNG, or any If any required input is missing, ask the user before proceeding. Save all project logos in the target folder. We will pick variants and post-process those later. There is no universal standard how artist name their logo files for dark and light variants. In our case, we always say - `light`: light (white) text on dark or transparent background - `dark`: dark (black) text on white or transparent background Following vocabulary is used: - Brand mark: same as logo mark, the logo without the brand name text - Word mark: the logo with the brand name text ## Step 1: Search for brand kit or media resources The highest quality logos are typically found in official brand/media kits. Search for these pages: 1. Navigate to the website and look for links in the footer or header: - "Brand", "Brand Kit", "Brand Assets", "Brand Guidelines" - "Media", "Media Kit", "Press", "Press Kit" - "Resources", "Downloads", "Assets" 2. Try common URL patterns: - `{base_url}/brand` - `{base_url}/brand-kit` - `{base_url}/media` - `{base_url}/press` - `{base_url}/assets` - `{base_url}/resources` 3. If a brand kit is found: - Look for downloadable logo packages (often ZIP files) - Prefer SVG or vector formats over raster images - Choose the most square logo variant if multiple options exist - If both light and dark themes are present, get both - If colourful option exist, get it as well If a brand kit is found with suitable logos, proceed to Step 5. ## Step 2: Check GitHub repository Many projects host their logos in their GitHub repositories: 1. Find the project's GitHub repository (often linked in website footer/header) 2. Search these common locations: - `/assets/` or `/images/` directories - `/branding/` or `/brand/` directories - `/public/` directory (for web apps) - `/docs/` or `/documentation/` directories - Root directory (README badges, logo files) 3. Check the README.md for embedded logos: - Look for `` tags or markdown image syntax - These often point to high-quality logo files 4. Search for files named: - `logo.svg`, `logo.png`, `logo-*.svg` - `{project-name}.svg`, `{project-name}-logo.*` - `brand.*`, `icon.*` If a suitable logo is found, proceed to Step 4. ## Step 3: Extract from website directly If no brand kit or GitHub assets are available, extract the logo from the website: ### Option A: Using MCP Playwright (recommended for dynamic sites) Use the MCP Playwright tool to: 1. Navigate to the homepage 2. Look for logo elements in the header (typically top-left): - Search for `` tags with class/id containing "logo" - Check for `` elements in the header - Look for elements with `role="img"` and logo-related aria labels 3. Extract the image source URL or SVG content ### Option B: Check meta tags and favicon 1. **Open Graph image** - Check for `` tag - Often a high-quality image suitable for social sharing - May include branding elements 2. **Favicon** - Check for high-resolution favicon: - `` (best - vector) - `` (usually 180x180 PNG) - `/favicon.ico` (low resolution, last resort) 3. **Twitter Card image** - Check `` ## Step 4: Extract from Twitter Get the project logo from their Twitter (also known as X.com) avatar image. ## Step 5: Extract from Coingecko Get the project logo from their Coingecko. ## Step 6: Download and save 1. **For SVG files**: - Download the raw SVG content - Ensure the file is valid XML - Save with `.svg` extension 2. **For raster images (PNG, etc.)**: - Download the highest resolution available - Verify file integrity after download - Save with appropriate extension 3. **Verify the saved file**: - Open the file to confirm it displays correctly - Check file size is reasonable (not 0 bytes or corrupted) ### Download methods Using curl: ```shell curl -o "{save_path}" "{logo_url}" ``` Using Python: ```python import requests response = requests.get("{logo_url}") with open("{save_path}", "wb") as f: f.write(response.content) ``` For SVG content extracted directly: ```python with open("{save_path}", "w") as f: f.write(svg_content) ``` ## Step 7: Report results to user Provide the user with: 1. **Source location** - Where the logo was found (brand kit URL, GitHub path, etc.) 2. **File details** - Format, dimensions (for raster), file size 3. **Saved path** - Confirm where the file was saved 4. **Alternative versions** - Note if other variants are available (dark mode, icon-only, etc.) ## Step 8: Save the report as Markdown file next to the logos - Create a Markdown file in the folder where logos where saved - Include the same information as for the user report - Include links to the web pages, brand pages and brand kits used ## Troubleshooting ### No logo found If no suitable logo can be found: 1. Check if the project uses a different primary domain 2. Look for the project on social media (Twitter/X, LinkedIn) - profile images are often logos 3. Search "[project name] logo" on image search engines 4. Check DeFiLlama, CoinGecko, or similar aggregators for crypto projects 5. Ask the user if they have alternative sources or contacts ### Dynamic/JavaScript-rendered logos If the logo is rendered via JavaScript: 1. Use MCP Playwright to load the page fully 2. Wait for dynamic content to render 3. Extract from the rendered DOM ### Logo requires authentication If brand assets are behind a login: 1. Inform the user 2. Provide the URL to the brand kit page 3. Ask the user to download manually or provide credentials (if appropriate)