Logo Get
Você vai buscar logotipos verificados de empresas para: $ARGUMENTS.
Você é um capataz despachando subagentes em paralelo — um por empresa. Cada subagente pesquisa, baixa, verifica e salva um único logotipo de forma independente. Você coordena, agrupa prompts do usuário e produz uma tabela resumida final.
Análise dos Argumentos
Analise $ARGUMENTS da seguinte forma:
- Detecte a flag opcional
--out <caminho>(em qualquer lugar da string). Remova-a; resolva<caminho>para um caminho absoluto. Padrão:./logos/no diretório de trabalho atual. - Trate o restante como uma lista separada por vírgulas de nomes de empresas. Remova espaços em branco de cada entrada. Entradas vazias são ignoradas.
- Se nenhum nome de empresa for encontrado, peça entrada ao usuário via
AskUserQuestione pare.
Crie o diretório de saída se ele não existir (mkdir -p).
Etapa 1 — Passagem de Desambiguação
Antes de despachar qualquer subagente, examine a lista de empresas com seu próprio julgamento:
- Para cada nome, decida: existe uma entidade comercial claramente dominante? (ex.: "apple" → Apple Inc, "google" → Google LLC, "stripe" → Stripe Inc — sim. "acme" → não. "delta" → ambíguo: Delta Air Lines, Delta Faucet, Delta Dental.)
- Para nomes genuinamente ambíguos, agrupe-os em UMA chamada
AskUserQuestioncom uma pergunta por nome ambíguo. Para cada um, apresente de 3 a 5 opções plausíveis + uma opção "outro (especificar)". - Use as respostas qualificadas do usuário como o nome canônico da empresa para o restante da execução.
Pule esta etapa completamente se nenhum nome for ambíguo.
Etapa 2 — Despachar Subagentes (ondas paralelas de 8)
Despache um Agente por empresa em ondas paralelas de no máximo 8 (mensagem única com até 8 chamadas de ferramenta Agent). Aguarde a onda terminar antes de despachar a próxima.
Cada chamada de Agente usa subagent_type: general-purpose e recebe um prompt autocontido — veja o Modelo de Prompt do Subagente abaixo. Interpole {{COMPANY}}, {{OUT_DIR}}, {{MODE}} por chamada.
Acompanhe qual subagente corresponde a qual empresa para poder atribuir resultados no resumo final.
Etapa 3 — Agregar Resultados
Cada subagente retorna um relatório estruturado:
status: ok | needs_soft_fallback | failed
path: <caminho absoluto do arquivo salvo, ou null>
note: <≤120 caracteres: nível atingido, dimensões, formato, variante — OU — motivo da falha>
Categorize por status. Se algum for needs_soft_fallback, pergunte ao usuário uma vez via AskUserQuestion:
A verificação rigorosa falhou para: . Mostrar correspondências mais fracas para estas (logotipos atuais com cores aproximadamente corretas, possivelmente apenas ícone)? Escolha quais tentar novamente.
Para cada nome que o usuário aprovar, despache um novo subagente em modo soft (onda paralela, limite 8). Mescle os resultados.
Etapa 4 — Resumo Final
Exiba para o usuário:
Salvo em: <diretório de saída absoluto>
apple ✓ apple.svg (Nível 3 Wikipedia, SVG)
google ✓ google.png (Nível 1 site, 800×272 PNG, logotipo textual)
acme-corp ⚠ precisa de fallback soft (apenas logotipo desatualizado encontrado) → usuário recusou
zorp ✗ nenhum logotipo qualificado encontrado
Modelo de Prompt do Subagente
Passe o seguinte prompt autocontido para cada subagente. Interpole {{COMPANY}} (nome qualificado da empresa), {{OUT_DIR}} (diretório de saída absoluto), {{SLUG}} (minúsculas, espaços e & → -, outras pontuações removidas, mas preserve . para domínios .ai/.io, ex.: JP Morgan → jp-morgan, Adopt.ai → adopt-ai), {{MODE}} (strict ou soft):
Sua tarefa: buscar UM logotipo verificado para a empresa **{{COMPANY}}**.
Diretório de saída (absoluto): {{OUT_DIR}}
Crie-o se não existir.
Modo: {{MODE}}
FLUXO DE TRABALHO (tente os níveis em ordem, pare no primeiro sucesso verificado):
**Nível 1 — Site da empresa / kit de imprensa**
1. Determine a URL oficial do site usando seu próprio conhecimento (ex.: "Apple" → https://www.apple.com, "JP Morgan" → https://www.jpmorganchase.com).
2. Faça WebFetch da página inicial. Procure o logotipo principal no HTML — geralmente dentro de <header>, <nav> ou um elemento com classe/id contendo "logo". Resolva URLs relativas para absolutas.
3. Muitas empresas vinculam a um kit de imprensa, ativos de marca ou página de mídia (procure por /press, /brand, /media, /about, /trust, links no rodapé). Siga-os — geralmente têm o logotipo textual de maior qualidade.
4. Baixe com: curl -L -A "Mozilla/5.0" -o /tmp/{{SLUG}}_candidato_N.<ext> "<url>" (use a extensão correta com base na URL ou no tipo de conteúdo)
5. Verifique o tamanho: sips -g pixelWidth -g pixelHeight <arquivo>. REJEITE se qualquer dimensão for < 100. Pule a verificação de tamanho para SVG (vetorial, infinitamente escalável).
6. Se o WebFetch da página inicial falhar ou nenhum logotipo for encontrado, faça UMA tentativa: WebSearch por "{{COMPANY}} official site", pegue o domínio do primeiro resultado e tente novamente a partir da etapa 2.
**Nível 2 — Pesquisa de imagens DuckDuckGo**
1. WebFetch https://duckduckgo.com/?q={{URL-encoded COMPANY}}+logo&iax=images&ia=images
2. Se a primeira consulta retornar resultados fracos, tente variantes: "{{COMPANY}} logo png wordmark", "{{COMPANY}} brand assets", "{{COMPANY}} press kit logo".
3. Extraia até 5 URLs de imagens candidatas. Baixe, verifique o tamanho, verifique cada uma.
**Nível 3 — Infobox da Wikipedia**
1. WebFetch https://en.wikipedia.org/wiki/{{COMPANY com espaços como underscore}}
2. Se a página for uma página de desambiguação ou 404, tente variantes: `{{Company}}_(company)`, `{{Company}}_Inc`.
3. Localize a imagem do infobox (geralmente a primeira imagem dentro de `.infobox`). Baixe, verifique o tamanho.
**VERIFICAÇÃO** — após cada download bem-sucedido, use a ferramenta `Read` para visualizar a imagem (você pode ver imagens diretamente).
**Modo strict** — REJEITE o candidato se algum destes falhar:
- **Identidade**: inconfundivelmente o logotipo da {{COMPANY}} (não um concorrente, fan art, meme ou uma empresa diferente com nome semelhante).
- **Atualidade**: o logotipo atual de acordo com seu conhecimento de corte (não uma versão claramente desatualizada).
- **Fidelidade de cor**: as cores da marca correspondem ao que você sabe.
- **Variante**: prefira o LOGOTIPO TEXTUAL COMPLETO ou LOCKUP (ícone + texto) em vez de apenas ícone. Se apenas ícone for encontrável no modo strict, retorne `needs_soft_fallback` em vez de `ok`.
**Modo soft** — REJEITE apenas se:
- A identidade estiver errada (empresa diferente, fan art, meme).
- Tolere variantes desatualizadas mas reconhecíveis, pequenas mudanças de cor (compressão JPEG, iluminação) e apenas ícone quando não existir logotipo textual.
Se verificado: renomeie `/tmp/{{SLUG}}_candidato_N.<ext>` para `{{OUT_DIR}}/{{SLUG}}.<ext>`. Se um arquivo com esse nome já existir, incremente: `{{SLUG}}-2.<ext>`, `{{SLUG}}-3.<ext>`, etc.
RELATÓRIO — retorne UMA mensagem exatamente neste formato (sem prosa extra):
status: ok | needs_soft_fallback | failed
path: <caminho absoluto do arquivo salvo, ou null>
note: <≤120 caracteres: nível atingido, dimensões, formato, variante — OU — motivo da falha>
Regras:
- Não tente novamente falhas transitórias (timeouts, 5xx) — vá para o próximo nível.
- Nunca salve um arquivo não verificado.
- "No API" = nenhuma API que exija autenticação/paga (ex.: API de logotipo da Clearbit, API comercial da Brandfetch). Acertos incidentais em CDNs e agregadores de logotipos (logo.dev, seeklogo.com, worldvectorlogo.com, etc.) descobertos via pesquisa de imagem são aceitáveis — são apenas imagens hospedadas, não chamadas de API.
- needs_soft_fallback = candidatos existem mas falharam no modo strict (apenas ícone quando se esperava logotipo textual, desatualizado, cor alterada).
- failed = nenhum candidato em todos os níveis.
Notas sobre o Comportamento
- Limite de concorrência é real: não exceda 8 subagentes em andamento ao mesmo tempo.
- Não sobrecarregue: se o Nível 1 for bem-sucedido, o subagente para ali e não tenta os Níveis 2 ou 3.
- Fallback soft é opcional: nunca execute o modo soft sem aprovação explícita do usuário.
- Não invente: se nenhum logotipo puder ser verificado, retorne
failedhonestamente com uma nota útil.