Communitygithub.com

vignesh-sabhahit/logo-get

検証済み企業ロゴを並列で取得するClaude Codeスキル。企業識別、通貨、ブランドカラーをLLMで検証し、APIキーは不要です。

logo-get とは?

このスキルは、Claude Code上で動作するマルチエージェントベースのロゴ取得ツールです。ユーザーが指定した企業名リストから、それぞれの企業ロゴを自動的に検索・ダウンロードし、LLMによる検証を経て保存します。並列処理により効率的に動作し、1度に最大8つの企業を同時に処理します。ロゴは3段階の優先順位(企業公式サイト→DuckDuckGo画像検索→Wikipedia情報ボックス)で探索され、厳格モードでは企業識別、最新性、ブランド色の一致、バリアント(ワードマーク優先)が検証されます。曖昧な企業名はユーザーに確認し、検証に失敗した場合でもソフトフォールバックモードで再試行できます。APIキー不要で、全てのロゴはローカルディレクトリに保存され、最終的なサマリーテーブルが表示されます。

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

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Logo Get

あなたはこれから、以下の企業の検証済みロゴを取得します:$ARGUMENTS

あなたは並列サブエージェントを派遣する現場監督です—企業ごとに1つのサブエージェントです。各サブエージェントは、単一のロゴを独立して検索、ダウンロード、検証、保存します。あなたは調整、ユーザープロンプトのバッチ処理、最終サマリーテーブルの作成を行います。

引数の解析

$ARGUMENTS を次のように解析します:

  1. オプションの --out <path> フラグ(文字列内のどこにあっても)を検出します。それを削除し、<path> を絶対パスに解決します。デフォルト:カレントワーキングディレクトリの ./logos/。
  2. 残りをカンマ区切りの企業名リストとして扱います。各エントリの前後の空白をトリムします。空のエントリはスキップします。
  3. 企業名が0件になった場合は、AskUserQuestion を介してユーザーに入力を求めて停止します。

出力ディレクトリが存在しない場合は作成します(mkdir -p)。

ステップ1 — 曖昧性解消パス

サブエージェントを派遣する前に、あなた自身の判断で企業リストをスキャンします:

  • 各名前について、明確に支配的な商業主体が存在するか判断します(例:「apple」→Apple Inc、「google」→Google LLC、「stripe」→Stripe Inc — はい。「acme」→いいえ。「delta」→曖昧:Delta Air Lines、Delta Faucet、Delta Dental)。
  • 本当に曖昧な名前については、それらを1つの AskUserQuestion 呼び出しにまとめ、曖昧な名前ごとに1つの質問を用意します。各質問に対して、3〜5の妥当な選択肢と「その他(指定)」オプションを提示します。
  • ユーザーの明確化された回答を、以降の実行における正規の企業名として使用します。

曖昧な名前がなければ、このステップは完全にスキップします。

ステップ2 — サブエージェントの派遣(最大8件の並列ウェーブ)

企業ごとに1つのエージェントを並列で派遣します。最大8件のウェーブ(1メッセージ内で最大8件のAgentツール呼び出し)で行います。ウェーブが完了するのを待ってから次のウェーブを派遣します。

各Agent呼び出しは subagent_type: general-purpose を使用し、自己完結型のプロンプトを受け取ります — 以下のサブエージェントプロンプトテンプレートを参照してください。呼び出しごとに {{COMPANY}}、{{OUT_DIR}}、{{MODE}} を補完します。

どのサブエージェントがどの企業に対応するかを追跡し、最終サマリーで結果を属性付けできるようにします。

ステップ3 — 結果の集約

各サブエージェントは構造化レポートを返します:

status: ok | needs_soft_fallback | failed
path:   <保存されたファイルの絶対パス、または null>
note:   <120文字以内:ヒットした階層、サイズ、形式、バリアント — または — 失敗の理由>

ステータスで分類します。needs_soft_fallback がある場合は、AskUserQuestion を介して1回だけユーザーに尋ねます:

厳格な検証に失敗しました:<企業リスト>。これらの企業に対して、より弱い一致(現在に近いロゴで、だいたい正しい色、アイコンのみでも可)を表示しますか?再試行するものを選択してください。

ユーザーが承認した各名前に対して、ソフトモードで新しいサブエージェントを派遣します(並列ウェーブ、最大8件)。結果をマージします。

ステップ4 — 最終サマリー

ユーザーに次のように出力します:

保存先: <絶対出力ディレクトリ>

apple      ✓  apple.svg              (Tier 3 Wikipedia, SVG)
google     ✓  google.png             (Tier 1 website, 800×272 PNG, wordmark)
acme-corp  ⚠  ソフトフォールバックが必要   (古いロゴのみ見つかりました)  → ユーザーが辞退
zorp       ✗  該当するロゴが見つかりません

サブエージェントプロンプトテンプレート

各サブエージェントに以下の自己完結型プロンプトを渡します。{{COMPANY}}(正規の企業名)、{{OUT_DIR}}(絶対出力ディレクトリ)、{{SLUG}}(小文字化、スペースと & は - に、その他の句読点は削除、ただし .ai/.io ドメインの . は保持。例:JP Morgan → jp-morgan、Adopt.ai → adopt-ai)、{{MODE}}(strict または soft)を補完します:

あなたの仕事:企業 **{{COMPANY}}** の検証済みロゴを1つ取得することです。

出力ディレクトリ(絶対パス):{{OUT_DIR}}
存在しない場合は作成してください。

モード:{{MODE}}

ワークフロー(順に階層を試し、最初の検証成功で停止):

**Tier 1 — 企業Webサイトのヘッダー/プレスキット**
1. あなたの知識を使用して公式WebサイトのURLを特定します(例:「Apple」→ https://www.apple.com、「JP Morgan」→ https://www.jpmorganchase.com)。
2. WebFetchでホームページを取得します。HTML内で主要なロゴを探します — 通常は <header>、<nav>、または「logo」を含むクラス/IDを持つ要素内にあります。相対URLを絶対URLに解決します。
3. 多くの企業はプレスキット、ブランドアセット、またはメディアページ(/press、/brand、/media、/about、/trust、フッターのリンクを探す)にリンクしています。それらをたどります — 多くの場合、最高品質のワードマークがあります。
4. ダウンロード:curl -L -A "Mozilla/5.0" -o /tmp/{{SLUG}}_candidate_N.<ext> "<url>" (URLまたはcontent-typeに基づいて適切な拡張子を使用)
5. サイズを確認:sips -g pixelWidth -g pixelHeight <file>。どちらかの次元が100未満の場合は拒否します。SVG(ベクター、無限にスケーラブル)のサイズチェックはスキップします。
6. ホームページのWebFetchが失敗するかロゴが見つからない場合、1回だけ再試行します:「{{COMPANY}} official site」をWebSearchし、上位結果のドメインを取得してステップ2から再試行します。

**Tier 2 — DuckDuckGo画像検索**
1. WebFetch https://duckduckgo.com/?q={{URLエンコードされたCOMPANY}}+logo&iax=images&ia=images
2. 最初のクエリの結果が弱い場合、バリアントを試します:「{{COMPANY}} logo png wordmark」、「{{COMPANY}} brand assets」、「{{COMPANY}} press kit logo」。
3. 最大5つの候補画像URLを抽出します。それぞれダウンロード、サイズチェック、検証を行います。

**Tier 3 — Wikipedia情報ボックス**
1. WebFetch https://en.wikipedia.org/wiki/{{スペースをアンダースコアにしたCOMPANY}}
2. ページが曖昧性解消ページまたは404の場合、バリアントを試します:`{{Company}}_(company)`、`{{Company}}_Inc`。
3. 情報ボックス画像(通常は `.infobox` 内の最初の画像)を見つけます。ダウンロード、サイズチェックを行います。

**検証** — ダウンロードが成功するたびに、`Read` ツールを使用して画像を表示します(画像を直接見ることができます)。

**厳格モード** — 次のいずれかが失敗した場合、候補を拒否します:
- **識別**:間違いなく {{COMPANY}} のロゴであること(競合他社、ファンアート、ミーム、または類似名の別企業ではない)。
- **最新性**:あなたの知識カットオフ時点での現在のロゴであること(明らかに古いバージョンではない)。
- **色の忠実性**:ブランドカラーがあなたの知るものと一致すること。
- **バリアント**:アイコンのみよりも完全なワードマークまたはロックアップ(アイコン+テキスト)を優先します。厳格モードでアイコンのみしか見つからない場合は、`ok` ではなく `needs_soft_fallback` を返します。

**ソフトモード** — 次の場合のみ拒否します:
- 識別が間違っている(別の企業、ファンアート、ミーム)。
- 古いが認識可能なバリアント、わずかな色のずれ(JPEG圧縮、照明)、およびワードマークが存在しない場合のアイコンのみを許容します。

検証成功:`/tmp/{{SLUG}}_candidate_N.<ext>` を `{{OUT_DIR}}/{{SLUG}}.<ext>` にリネームします。同名ファイルが既に存在する場合はインクリメント:`{{SLUG}}-2.<ext>`、`{{SLUG}}-3.<ext>` ...

レポート — この正確な形式で1つのメッセージを返します(余分な散文は不要):

status: ok | needs_soft_fallback | failed
path:   <保存されたファイルの絶対パス、または null>
note:   <120文字以内:ヒットした階層、サイズ、形式、バリアント — または — 失敗の理由>

ルール:
- 一時的な失敗(タイムアウト、5xx)は再試行せず — 次の階層にフォールスルーします。
- 検証されていないファイルを保存しないでください。
- 「API不要」= 認証が必要なAPIや有料API(例:ClearbitのロゴAPI、Brandfetchの商用API)は使用禁止。画像検索で偶然見つかったロゴCDNやアグリゲーター(logo.dev、seeklogo.com、worldvectorlogo.comなど)は許容されます — それらは単にホストされた画像であり、API呼び出しではありません。
- needs_soft_fallback = 候補は存在するが厳格モードに失敗した場合(ワードマークが期待されるのにアイコンのみ、古い、色ずれ)。
- failed = すべての階層にわたって候補がまったく見つからなかった場合。

動作に関する注意点

  • 同時実行数の上限は厳守:同時に8つ以上のサブエージェントを実行しないでください。
  • 過剰取得を避ける:Tier 1が成功した場合、サブエージェントはそこで停止し、Tier 2またはTier 3は試行しません。
  • ソフトフォールバックはオプトイン:明示的なユーザー承認なしにソフトモードを実行しないでください。
  • 捏造しない:検証可能なロゴがない場合は、正直に failed を有用なメモとともに返してください。

関連スキル