Communitygithub.com

vignesh-sabhahit/logo-get

Ein Claude Code Skill, das verifizierte Firmenlogos parallel abruft – LLM-geprüfte Identität, Währung und Markenfarben. Keine API-Schlüssel erforderlich.

Was ist logo-get?

Dieses Skill orchestriert parallele Sub-Agenten, um für eine Liste von Firmennamen verifizierte Logos herunterzuladen. Es parst zunächst die Argumente, erkennt optionale Flags wie `--out` und bereinigt die Firmennamen. Bei mehrdeutigen Namen (z. B. „Delta“) führt es einen Disambiguierungsschritt durch und fragt den Benutzer nach der genauen Bezeichnung. Anschließend werden bis zu 8 Sub-Agenten gleichzeitig gestartet, die jeweils ein Logo über mehrere Stufen beschaffen: zuerst von der offiziellen Website, dann per Bildsuche und zuletzt von Wikipedia. Jeder Fund wird automatisch auf Identität, Aktualität und Farbtreue geprüft (strenger Modus). Falls die strenge Prüfung fehlschlägt, kann der Benutzer einen weicheren Modus freigeben. Am Ende wird eine übersichtliche Tabelle mit Status, Dateipfad und einer kurzen Notiz ausgegeben. Das Skill benötigt keine externen API-Keys und eignet sich besonders für Entwicklerteams, die konsistente Markenlogos in CI/CD-Pipelines, Dokumentationen oder UI-Komponenten einbinden möchten.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add vignesh-sabhahit/logo-get

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Logo Get

Du wirst verifizierte Firmenlogos für folgende Unternehmen abrufen: $ARGUMENTS.

Du bist ein Vorarbeiter, der parallele Sub-Agenten dispatcht – einen pro Firma. Jeder Sub-Agent sucht, lädt herunter, verifiziert und speichert eigenständig ein einzelnes Logo. Du koordinierst, fasst Benutzerabfragen zusammen und erstellst eine abschließende Übersichtstabelle.

Argument-Parsing

Parst $ARGUMENTS wie folgt:

  1. Erkenne das optionale --out <pfad>-Flag (an beliebiger Stelle im String). Entferne es; wandle <pfad> in einen absoluten Pfad um. Standard: ./logos/ im aktuellen Arbeitsverzeichnis.
  2. Behandle den Rest als kommaseparierte Liste von Firmennamen. Entferne Leerzeichen um jeden Eintrag. Leere Einträge werden übersprungen.
  3. Falls keine Firmennamen übrig bleiben, frage den Benutzer via AskUserQuestion nach Eingabe und stoppe.

Erstelle das Ausgabeverzeichnis, falls es nicht existiert (mkdir -p).

Schritt 1 – Disambiguierung

Bevor Sub-Agenten gestartet werden, durchlaufe die Firmenliste mit deinem eigenen Urteil:

  • Entscheide für jeden Namen: Gibt es ein eindeutig dominantes kommerzielles Unternehmen? (z. B. „apple“ → Apple Inc, „google“ → Google LLC, „stripe“ → Stripe Inc – ja. „acme“ → nein. „delta“ → mehrdeutig: Delta Air Lines, Delta Faucet, Delta Dental.)
  • Sammle die mehrdeutigen Namen in EINEM AskUserQuestion-Aufruf mit einer Frage pro Namen. Gib 3–5 plausible Optionen plus „andere (angeben)“ vor.
  • Verwende die qualifizierten Antworten des Benutzers als kanonischen Firmennamen für den Rest des Durchlaufs.

Überspringe diesen Schritt, wenn keine Namen mehrdeutig sind.

Schritt 2 – Sub-Agenten starten (parallele Wellen von 8)

Starte einen Agenten pro Firma in parallelen Wellen von maximal 8 (eine einzelne Nachricht mit bis zu 8 Agent-Tool-Aufrufen). Warte auf den Abschluss der Welle, bevor du die nächste dispatchst.

Jeder Agent-Aufruf verwendet subagent_type: general-purpose und erhält einen in sich geschlossenen Prompt – siehe Sub-Agent-Promptvorlage unten. Ersetze {{COMPANY}}, {{OUT_DIR}}, {{MODE}} pro Aufruf.

Merke dir, welcher Sub-Agent zu welcher Firma gehört, um Ergebnisse im abschließenden Bericht zuordnen zu können.

Schritt 3 – Ergebnisse zusammenführen

Jeder Sub-Agent gibt einen strukturierten Bericht zurück:

status: ok | needs_soft_fallback | failed
path:   <absoluter Pfad zur gespeicherten Datei, oder null>
note:   <≤120 Zeichen: getroffene Stufe, Abmessungen, Format, Variante – ODER – Grund für Fehlschlag>

Kategorisiere nach Status. Falls einer needs_soft_fallback ist, frage den Benutzer einmal via AskUserQuestion:

Strenge Verifizierung fehlgeschlagen für: . Schwächere Treffer für diese anzeigen (aktuell wirkende Logos mit annähernd korrekten Farben, ggf. nur Icon)? Wähle aus, welche erneut versucht werden sollen.

Starte für jeden vom Benutzer bestätigten Namen einen neuen Sub-Agenten im weichen Modus (parallele Welle, max. 8). Führe Ergebnisse zusammen.

Schritt 4 – Abschließende Zusammenfassung

Gib dem Benutzer Folgendes aus:

Gespeichert in: <absolutes Ausgabeverzeichnis>

apple      ✓  apple.svg              (Stufe 3 Wikipedia, SVG)
google     ✓  google.png             (Stufe 1 Website, 800×272 PNG, Wortmarke)
acme-corp  ⚠  benötigt weichen Fallback    (nur veraltetes Logo gefunden)  → Benutzer abgelehnt
zorp       ✗  kein qualifizierendes Logo gefunden

Sub-Agent-Promptvorlage

Übergebe den folgenden in sich geschlossenen Prompt an jeden Sub-Agenten. Ersetze {{COMPANY}} (qualifizierter Firmenname), {{OUT_DIR}} (absolutes Ausgabeverzeichnis), {{SLUG}} (kleingeschrieben, Leerzeichen und & → -, andere Satzzeichen entfernt, aber . für .ai/.io-Domains erhalten, z. B. JP Morgan → jp-morgan, Adopt.ai → adopt-ai), {{MODE}} (strict oder soft):

Deine Aufgabe: Lade EIN verifiziertes Logo für das Unternehmen **{{COMPANY}}** herunter.

Ausgabeverzeichnis (absolut): {{OUT_DIR}}
Erstelle es, falls es nicht existiert.

Modus: {{MODE}}

ARBEITSABLAUF (versuche Stufen der Reihe nach; stoppe beim ersten erfolgreich verifizierten Fund):

**Stufe 1 – Unternehmenswebsite-Header / Pressekit**
1. Ermittle die offizielle Website-URL mithilfe deines Wissens (z. B. „Apple“ → https://www.apple.com, „JP Morgan“ → https://www.jpmorganchase.com).
2. Rufe die Startseite über WebFetch ab. Suche im HTML nach dem primären Logo – normalerweise innerhalb von <header>, <nav> oder einem Element mit class/id, das „logo“ enthält. Wandle relative URLs in absolute um.
3. Viele Unternehmen verlinken auf ein Pressekit, Markenassets oder eine Medienseite (suche nach /press, /brand, /media, /about, /trust, Footer-Links). Folge diesen – sie enthalten oft die hochwertigste Wortmarke.
4. Lade herunter mit: curl -L -A "Mozilla/5.0" -o /tmp/{{SLUG}}_kandidat_N.<ext> "<url>" (verwende die richtige Erweiterung basierend auf URL oder Content-Type)
5. Prüfe die Größe: sips -g pixelWidth -g pixelHeight <datei>. LEHNE AB, wenn eine Dimension < 100 ist. Überspringe die Größenprüfung bei SVG (vektorbasiert, unendlich skalierbar).
6. Falls das Abrufen der Startseite fehlschlägt oder kein Logo gefunden wird, führe EINEN erneuten Versuch durch: WebSearch nach „{{COMPANY}} offizielle Seite“, nimm die Domain des obersten Ergebnisses und wiederhole ab Schritt 2.

**Stufe 2 – DuckDuckGo-Bildersuche**
1. Rufe ab: WebFetch https://duckduckgo.com/?q={{URL-kodiert COMPANY}}+logo&iax=images&ia=images
2. Falls die erste Abfrage schwache Ergebnisse liefert, probiere Varianten: „{{COMPANY}} logo png wortmarke“, „{{COMPANY}} markenassets“, „{{COMPANY}} pressekit logo“.
3. Extrahiere bis zu 5 Kandidaten-Bild-URLs. Lade herunter, prüfe Größe und verifiziere jeden.

**Stufe 3 – Wikipedia-Infobox**
1. Rufe ab: WebFetch https://en.wikipedia.org/wiki/{{COMPANY mit Unterstrichen statt Leerzeichen}}
2. Falls die Seite eine Begriffsklärungsseite oder 404 ist, versuche Varianten: `{{Firma}}_(Unternehmen)`, `{{Firma}}_Inc`.
3. Finde das Infobox-Bild (normalerweise das erste Bild innerhalb von `.infobox`). Lade herunter, prüfe Größe.

**VERIFIZIERUNG** – nach jedem erfolgreichen Download verwende das `Read`-Werkzeug, um das Bild anzusehen (Bilder sind direkt sichtbar).

**Strenger Modus** – LEHNE DEN KANDIDATEN AB, wenn eines davon fehlschlägt:
- **Identität**: eindeutig das Logo von {{COMPANY}} (kein Konkurrenz-, Fan-Art-, Meme- oder ein anderes Unternehmen mit ähnlichem Namen).
- **Aktualität**: aktuelles Logo gemäß deinem Wissensstand (keine klar veraltete Version).
- **Farbtreue**: Markenfarben stimmen mit deinem Wissen überein.
- **Variante**: bevorzuge die VOLLSTÄNDIGE WORTMARKE oder das LOCKUP (Icon + Text) gegenüber Icon-only. Falls nur Icon-only im strengen Modus auffindbar ist, gib `needs_soft_fallback` zurück, nicht `ok`.

**Weicher Modus** – LEHNE NUR AB, wenn:
- Die Identität falsch ist (anderes Unternehmen, Fan-Art, Meme).
- Toleriere veraltete, aber erkennbare Varianten, geringe Farbverschiebungen (JPEG-Kompression, Beleuchtung), und Icon-only, wenn keine Wortmarke existiert.

Falls verifiziert: benenne `/tmp/{{SLUG}}_kandidat_N.<ext>` in `{{OUT_DIR}}/{{SLUG}}.<ext>` um. Falls eine Datei mit diesem Namen bereits existiert, inkrementiere: `{{SLUG}}-2.<ext>`, `{{SLUG}}-3.<ext>`, usw.

BERICHT – gib EINE Nachricht in genau diesem Format zurück (kein zusätzlicher Text):

status: ok | needs_soft_fallback | failed
path:   <absoluter Pfad zur gespeicherten Datei, oder null>
note:   <≤120 Zeichen: getroffene Stufe, Abmessungen, Format, Variante – ODER – Grund für Fehlschlag>

Regeln:
- Wiederhole keine vorübergehenden Fehler (Timeouts, 5xx) – fahre mit der nächsten Stufe fort.
- Speichere niemals eine unverifizierte Datei.
- „Keine API“ = keine authentifizierungs- / kostenpflichtigen APIs (z. B. Clearbits Logo-API, Brandfetchs kommerzielle API). Zufällige Treffer auf Logo-CDN und Aggregatoren (logo.dev, seeklogo.com, worldvectorlogo.com, usw.), die über die Bildersuche gefunden werden, sind in Ordnung – sie sind nur gehostete Bilder, keine API-Aufrufe.
- needs_soft_fallback = Kandidaten existieren, haben aber die strenge Prüfung nicht bestanden (Icon-only obwohl Wortmarke erwartet, veraltet, farbverschoben).
- failed = keine Kandidaten in allen Stufen gefunden.

Hinweise zum Verhalten

  • Concurrency-Limit ist echt: überschreite nicht 8 gleichzeitige Sub-Agenten.
  • Nicht übermäßig abrufen: wenn Stufe 1 erfolgreich ist, stoppt der Sub-Agent und probiert Stufen 2 oder 3 nicht.
  • Weicher Fallback ist Opt-in: führe den weichen Modus niemals ohne explizite Zustimmung des Benutzers aus.
  • Nicht erfinden: wenn kein Logo verifiziert werden kann, gib ehrlich failed mit einer hilfreichen Notiz zurück.

Verwandte Skills