Communitygithub.com

vignesh-sabhahit/logo-get

병렬로 검증된 회사 로고를 가져오는 Claude Code 스킬입니다. LLM이 신원, 통화 및 브랜드 색상을 확인하며, API 키가 필요하지 않습니다.

logo-get란 무엇인가요?

이 스킬은 Claude Code 에이전트가 병렬 서브 에이전트를 사용하여 여러 회사의 로고를 한 번에 효율적으로 가져올 수 있도록 설계되었습니다. 각 서브 에이전트는 독립적으로 웹사이트 헤더, 언론 키트, 이미지 검색, 위키피디아 등 여러 계층(Tier)의 소스를 순차적으로 조사하며, 엄격 모드(strict)와 소프트 모드(soft)를 구분하여 로고의 정확성, 브랜드 색상 및 최신성을 LLM이 직접 검증합니다. API 키가 필요하지 않으며, 티어 기반 검증을 통해 가장 적합한 로고를 찾아 로컬 디렉토리에 저장하고 최종 요약 테이블을 제공합니다. 이 스킬은 특별히 병렬 처리(최대 8개의 동시 서브 에이전트)를 통해 시간을 절약하고, 모호한 회사 이름을 해소하기 위한 명확화 단계를 포함하여 정확도를 높입니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add vignesh-sabhahit/logo-get

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Logo Get

$ARGUMENTS에 대해 검증된 회사 로고를 가져옵니다.

당신은 각 회사별로 하나의 서브 에이전트를 파견하는 감독관입니다. 각 서브 에이전트는 독립적으로 로고를 검색, 다운로드, 검증 및 저장합니다. 당신은 이들을 조정하고, 사용자 프롬프트를 일괄 처리하며, 최종 요약 테이블을 생성합니다.

인수 파싱

$ARGUMENTS를 다음과 같이 파싱합니다:

  1. 선택적 --out <path> 플래그를 감지합니다 (문자열 내 어디든). 이를 제거하고 <path>를 절대 경로로 변환합니다. 기본값: 현재 작업 디렉토리의 ./logos/.
  2. 나머지를 쉼표로 구분된 회사 이름 목록으로 처리합니다. 각 항목의 공백을 제거합니다. 빈 항목은 건너뜁니다.
  3. 회사 이름이 전혀 없으면 AskUserQuestion을 통해 사용자에게 입력을 요청하고 중단합니다.

출력 디렉토리가 없으면 생성합니다 (mkdir -p).

1단계 — 명확화 단계

서브 에이전트를 파견하기 전에, 자신의 판단으로 회사 목록을 검토합니다:

  • 각 이름에 대해 명확히 지배적인 상업적 주체가 있는지 판단합니다 (예: "apple" → Apple Inc, "google" → Google LLC, "stripe" → Stripe Inc — 예. "acme" → 아니요. "delta" → 모호함: Delta Air Lines, Delta Faucet, Delta Dental.).
  • 진정으로 모호한 이름은 하나의 AskUserQuestion 호출에 모든 질문을 담아 사용자에게 제시합니다. 각 모호한 이름에 대해 3~5개의 가능한 옵션과 "기타 (지정)" 선택지를 제시합니다.
  • 사용자가 선택한 정규화된 이름을 이후 실행의 표준 회사 이름으로 사용합니다.

모호한 이름이 전혀 없으면 이 단계를 건너뜁니다.

2단계 — 서브 에이전트 파견 (최대 8개씩 병렬 실행)

회사당 하나의 에이전트를 최대 8개씩 병렬 실행합니다 (단일 메시지에 최대 8개의 Agent 도구 호출). 한 웨이브가 완료될 때까지 기다린 후 다음 웨이브를 실행합니다.

각 에이전트 호출은 subagent_type: general-purpose를 사용하며 자체 완결형 프롬프트를 받습니다 — 아래 서브 에이전트 프롬프트 템플릿 참조. {{COMPANY}}, {{OUT_DIR}}, {{MODE}}를 각 호출에 맞게 대체합니다.

최종 요약에서 결과를 귀속시킬 수 있도록 각 서브 에이전트가 어떤 회사에 해당하는지 추적합니다.

3단계 — 결과 집계

각 서브 에이전트는 구조화된 보고서를 반환합니다:

status: ok | needs_soft_fallback | failed
path:   <저장된 파일의 절대 경로 또는 null>
note:   <≤120자: 적중 티어, 크기, 형식, 변형 — 또는 — 실패 이유>

상태별로 분류합니다. needs_soft_fallback이 있는 경우 사용자에게 한 번 AskUserQuestion을 통해 질문합니다:

다음에 대해 엄격 검증이 실패했습니다: <회사 목록>. 이들에 대해 약한 일치(현재와 유사한 로고, 대략적으로 올바른 색상, 아이콘 전용일 수 있음)를 표시할까요? 재시도할 항목을 선택해주세요.

사용자가 승인한 각 이름에 대해 소프트 모드로 새 서브 에이전트를 파견합니다 (병렬 실행, 최대 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}}**의 검증된 로고 하나를 가져오는 것입니다.

출력 디렉토리 (절대 경로): {{OUT_DIR}}
존재하지 않으면 생성하세요.

모드: {{MODE}}

작업 흐름 (티어를 순서대로 시도, 첫 번째 성공적인 검증에서 중단):

**티어 1 — 회사 웹사이트 헤더 / 언론 키트**
1. 자신의 지식을 사용하여 공식 웹사이트 URL을 결정합니다 (예: "Apple" → https://www.apple.com, "JP Morgan" → https://www.jpmorganchase.com).
2. 홈페이지를 WebFetch합니다. HTML에서 기본 로고를 찾습니다 — 보통 <header>, <nav> 또는 "logo"를 포함하는 class/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가 실패하거나 로고가 없으면 한 번 재시도: WebSearch로 "{{COMPANY}} official site" 검색, 상위 결과의 도메인을 가져와 단계 2부터 재시도.

**티어 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을 추출합니다. 각각을 다운로드, 크기 확인, 검증합니다.

**티어 3 — 위키피디아 정보 상자**
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>` 등으로 증가시킵니다.

보고서 — 정확히 이 형식으로 하나의 메시지를 반환합니다 (추가 설명 없음):

status: ok | needs_soft_fallback | failed
path:   <저장된 파일의 절대 경로 또는 null>
note:   <≤120자: 적중 티어, 크기, 형식, 변형 — 또는 — 실패 이유>

규칙:
- 일시적 실패(시간 초과, 5xx)는 재시도하지 않음 — 다음 티어로 넘어갑니다.
- 검증되지 않은 파일을 저장하지 마십시오.
- "API 없음" = 인증 필요/유료 API 없음 (예: Clearbit의 로고 API, Brandfetch의 상업용 API). 이미지 검색을 통해 발견된 로고 CDN 및 집계 사이트 (logo.dev, seeklogo.com, worldvectorlogo.com 등)의 우연한 적중은 괜찮습니다 — 이들은 API 호출이 아닌 호스팅된 이미지일 뿐입니다.
- needs_soft_fallback = 후보는 존재하지만 엄격 검증 실패 (워드마크가 예상될 때 아이콘 전용, 구버전, 색상 변화).
- failed = 모든 티어에서 후보가 전혀 없음.

동작 참고 사항

  • 동시 실행 제한은 실제입니다: 한 번에 8개를 초과하는 서브 에이전트를 실행하지 마십시오.
  • 과다 가져오기 금지: 티어 1이 성공하면 서브 에이전트는 거기서 중단하고 티어 2 또는 3을 시도하지 않습니다.
  • 소프트 폴백은 선택 사항입니다: 명시적인 사용자 승인 없이 소프트 모드를 실행하지 마십시오.
  • 허위 보고 금지: 로고를 검증할 수 없으면 유용한 설명과 함께 정직하게 failed를 반환합니다.

관련 스킬