--- name: logo-finder description: Find and install brand SVG logos via SVGL (https://svgl.app/) and Wikimedia Commons fallbacks into any project's static asset folder. Use for company logos, integration rows, social proof, or refreshing a brands directory. --- # Logo Finder (SVGL + Commons) Download brand logos into a static asset folder. **Prefer SVG** (`.svg`); use PNG only when Commons/Wikipedia has no vector (e.g. [Final Cut Pro](https://en.wikipedia.org/wiki/Final_Cut_Pro#/media/File:FinalCutProACS2026.png)). **Primary:** [SVGL API](https://svgl.app/docs/api) **Fallback:** curated [Wikimedia Commons](https://commons.wikimedia.org/) rows in `assets/commons-logos.tsv` (see [references/commons.md](references/commons.md)) ## How files are created ### SVGL 1. **Search** - `GET https://api.svgl.app?search={product name}` 2. **Download** - `GET https://api.svgl.app/svg/{filename}` 3. **Save** - `{out_dir}/{slug}.svg` where `slug` is lowercase-hyphenated (`DaVinci Resolve` -> `davinci-resolve`). ### Commons (when SVGL misses) 1. Find SVG on Commons (or use a known file page, e.g. [DaVinci Resolve 17 logo](https://commons.wikimedia.org/wiki/File:DaVinci_Resolve_17_logo.svg)). 2. Add `slug`, `upload_url`, wiki link, and `product_name` to `assets/commons-logos.tsv`. 3. Run `commons.sh` or pass the upload URL directly with `--url`. ## Scripts Requires `curl` and `jq` (`brew install jq`). ```bash # SVGL - one logo bash skills/logo-finder/scripts/logo.sh Figma path/to/brands/figma.svg bash skills/logo-finder/scripts/logo.sh "Premiere Pro" --search # SVGL - batch from a list (one brand per line) bash skills/logo-finder/scripts/batch.sh skills/logo-finder/examples/sample-brands.txt path/to/brands # Commons - manifest entry or direct upload URL bash skills/logo-finder/scripts/commons.sh "DaVinci Resolve" path/to/brands/davinci-resolve.svg bash skills/logo-finder/scripts/commons.sh --url 'https://upload.wikimedia.org/.../file.svg' path/to/brands/file.svg ``` ## Where to place logos - ask first Never assume the output directory. **Ask the user where logos should go** before downloading. If they have no preference, propose a best-practice path based on the project's framework: | Framework | Default path | Served as | | ----------------------- | --------------------------- | --------------------------- | | Vite (Vue/React/Svelte) | `public/brands/` | `/brands/{slug}.svg` | | Next.js | `public/brands/` | `/brands/{slug}.svg` | | Astro | `public/brands/` | `/brands/{slug}.svg` | | SvelteKit | `static/brands/` | `/brands/{slug}.svg` | | Django/Flask | `static/brands/` | `/static/brands/{slug}.svg` | | Rails | `app/assets/images/brands/` | asset pipeline | Conventions worth keeping: - One folder, named `brands/` or `logos/` (pick one, stay consistent). - Slug filenames: lowercase, hyphenated (`DaVinci Resolve` -> `davinci-resolve.svg`). - One committed shared folder, not per-component copies; never fetch at runtime. If the project already has a logo folder in use, reuse it. Confirm the served URL prefix so the slug paths you wire into markup match. ## Workflow 1. **Ask** the user where logos should be saved, or propose the best-practice default for the framework. 2. Identify the brands you need - build a list (one name per line) or read names from the page/component you are wiring. 3. Run `batch.sh `. 4. For misses: `logo.sh --search`, browse SVGL, or search Commons and append a `commons-logos.tsv` row. 5. Wire the saved assets into your page (static `` or framework equivalent). 6. **Git add** the assets. 7. Verify the served path returns SVG (not HTML). ## Finding missing logos in an existing page There is no script for this. Read the target file, find logo references that are empty or placeholder, feed those names to `batch.sh` or `logo.sh`. ## References API details: [references/api-surface.md](references/api-surface.md) - [commons.md](references/commons.md) - [common-use-cases.md](references/common-use-cases.md) - [troubleshooting-workarounds.md](references/troubleshooting-workarounds.md) - [normalize-for-web.md](references/normalize-for-web.md) - [examples.md](references/examples.md)