Logo Get
あなたはこれから、以下の企業の検証済みロゴを取得します:$ARGUMENTS
あなたは並列サブエージェントを派遣する現場監督です—企業ごとに1つのサブエージェントです。各サブエージェントは、単一のロゴを独立して検索、ダウンロード、検証、保存します。あなたは調整、ユーザープロンプトのバッチ処理、最終サマリーテーブルの作成を行います。
引数の解析
$ARGUMENTS を次のように解析します:
- オプションの
--out <path>フラグ(文字列内のどこにあっても)を検出します。それを削除し、<path>を絶対パスに解決します。デフォルト:カレントワーキングディレクトリの./logos/。 - 残りをカンマ区切りの企業名リストとして扱います。各エントリの前後の空白をトリムします。空のエントリはスキップします。
- 企業名が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を有用なメモとともに返してください。