이메일 파인더은(는) 무엇을 하나요?
이름 + 회사 도메인이 있을 때 업무용 이메일을 찾습니다. trykitt을 먼저 시도하고, 실패 시 Icypeas를 사용합니다.
단독 실행 가능합니다. API 키만 필요합니다. Outreach Magic과 함께 사용하면 크레딧을 절약하는 중복 제거, 영구 저장, 세션 간 조회 기능을 사용할 수 있습니다.
설정
단독 실행 (OM 없음)
API 키만 필요합니다. 결과는 stdout으로 출력됩니다. 데이터베이스가 필요 없습니다.
| 키 | 용도 |
|---|---|
TRYKITT_API_KEY | trykitt.ai (폭포수 첫 번째) — trykitt.ai |
ICYPEAS_API_KEY | Icypeas (폴백) — app.icypeas.com |
python3 scripts/email_finder.py config # 키 로드 확인
python3 scripts/email_finder.py find --name "Jane Doe" --domain acme.com
# → 결과를 stdout으로 출력
Outreach Magic과 함께 사용 (중복 제거 + 저장)
이미 OM에 있는 리드는 건너뛰는 사전 중복 제거 기능과 결과를 로컬 SQLite 파이프라인에 저장하는 기능이 추가됩니다.
outreachmagic 스킬과 함께
pipeline.py login이 필요합니다.
| 키 | 용도 |
|---|---|
| 위 단독 실행 키 전체 + | |
OUTREACHMAGIC_AGENT_KEY | pipeline.py login을 통한 OM 로그인 |
python3 scripts/email_finder.py find --name "Jane Doe" --domain acme.com --save --workspace CLIENT
python3 scripts/email_finder.py batch-find --workspace CLIENT --yes --workers 3 --delay 3 input.json
OM과 함께 find/batch-find를 실행하기 전에 키를 확인하세요:
python3 <SKILLS>/outreachmagic/scripts/pipeline.py sync-secrets --check --json
또는 python3 scripts/email_finder.py config.
키는 Dashboard → pipeline.py sync-secrets를 통해 동기화됩니다. 출처 확인:
python3 scripts/email_finder.py config (*_api_key_source가 agent_secrets여야 함).
배치 형식
[{"lead_id": 12345, "name": "Jane Doe", "company_domain": "acme.com"}]
프로덕션 배치 기본값
| 모드 | 플래그 |
|---|---|
| 폭포수 | --workers 3 --delay 3 |
| IcyPeas만 | --workers 2 --delay 3 |
| TryKitt만 | --workers 3 (선택사항 --delay 0.2) |
에이전트 규칙
- OM 사용 시: find 전에 확인 (
check/find+--save). 단독 실행: 확인 생략 — 바로 find 실행. - 이메일을 절대 조작하지 마세요.
- 폭포수: 두 키 모두 설정된 경우 trykitt → Icypeas.
- OM 사용 시: 태그
trykitt_attempted/icypeas_attempted; MillionVerifier 벌크 후mv_attempted(결과는 OMemail_verification_status에 저장). 발견 상태는leads.email,latest_source,email_verification_status에 기록됩니다. - OM 사용 시: 모든 행에
lead_id필수; OM 저장을 위해--workspace필요. 단독 실행:--save생략 또는--no-save사용하여 stdout으로 출력. --yes전에batch-find --dry-run을 실행하여 건너뛸 개수를 확인하세요 (CSVemail이 비어있어도 리드가 이미 OM에 이메일을 가지고 있을 수 있음).batch-find는 각 API 호출 직전에 OM을 다시 확인합니다 (배치 시작 이후 해결된 리드는 건너<0xEB><0x9B><0x84>).- OM 사용 시:
batch-find는 CSV/JSON을outreachmagic/exports/에 쓴 후 OM에 저장합니다. 단독 실행:--skip-om을 추가하여 OM 없이 실행 (현재 작업 디렉토리에 씀). - COMPLETE 박스는 IMPORT와 RELAY를 보여줍니다 (보류 중인 스냅샷 —
pipeline.py sync실행; 업로드는 절대 자동이 아님). - 크레딧 — 발견된 이메일당 1크레딧 (trykitt / Icypeas) 또는 검증된 이메일당 1크레딧 (MillionVerifier). 찾지 못한 조회는 0크레딧.
배치 입력
[{"lead_id": 12345, "name": "Jane Doe", "company_domain": "acme.com"}]
선택적으로 "linkedin_url"을 포함할 수 있습니다 — trykitt이 더 높은 매칭률을 위해 사용합니다.
명령어
# 단독 실행 (OM 없음) — stdout으로 결과 출력
python3 scripts/email_finder.py find --name "Jane Doe" --domain acme.com
# 단독 실행 배치 (OM 없음) — CSV를 현재 작업 디렉토리에 씀
python3 scripts/email_finder.py batch-find --skip-om --yes --dry-run input.json
# OM 사용 — find + 중복 제거 + 저장
python3 scripts/email_finder.py find --name "Jane Doe" --domain acme.com --save --workspace CLIENT
# 드라이 런 (건너뛸 개수 확인, API 비용 없음)
python3 scripts/email_finder.py batch-find --workspace CLIENT --dry-run outreachmagic/batches/leads.json
# 배치 (find + OM 저장)
python3 scripts/email_finder.py batch-find --workspace CLIENT --yes \
--output-base outreachmagic/exports/emails --workers 3 --delay 3 outreachmagic/batches/leads.json
# OM 저장만 — 가져오기 실패 또는 --no-save 실행 후 (batch .csv 또는 .json 허용)
python3 scripts/email_finder.py import-to-om --file outreachmagic/exports/emails.csv --workspace CLIENT
python3 scripts/email_finder.py update --check
# MillionVerifier (선택사항)
python3 scripts/email_finder.py config
python3 scripts/email_finder.py verify-credits
python3 scripts/email_finder.py verify-bulk --workspace CLIENT --dry-run
python3 scripts/email_finder.py verify-bulk --workspace CLIENT --poll --yes
MILLIONVERIFIER_API_KEY가 로컬 .env에 있으면 ***로 표시될 수 있습니다. OM agent_secrets.env는 ensure_env_loaded()를 통해 재정의합니다.
중단된 배치는 동일한 batch-find 명령을 다시 실행하여 재개할 수 있습니다 (이미 완료된 API 행은 건너<0xEB><0x9B><0x84>). 네트워크/인증 오류로 실행이 실패한 경우, 체크포인트를 삭제하지 않고 오류가 발생한 행을 다시 시도하려면 **--retry-errors**를 사용하세요.
일반 워크플로
| 사용자 말 | 당신이 할 일 |
|---|---|
| "stripe.com에서 Patrick 찾아줘" | find --name … --domain stripe.com (단독) 또는 --save --workspace W와 함께 (OM) |
| "내 CSV에서 이메일 찾아줘" (OM 사용) | batch-find --dry-run → batch-find --yes |
| "내 CSV에서 이메일 찾아줘" (단독) | batch-find --skip-om --dry-run → batch-find --skip-om --yes |
| "실패한 이메일 조회 다시 시도" | 동일한 batch-find 명령에 --retry-errors 추가 |
문제 해결
ModuleNotFoundError: data_freshness— outreachmagic에서pipeline.py update실행.- COMPLETE의 IMPORT 섹션에
⚠ No import표시 — 결과가 디스크에 있음;import-to-om --file {output-base}.csv --workspace W - CSV에는 이메일이 있는데 OM은 비어 있음 — 배치 저장 실패;
import-to-om --file {output-base}.csv --workspace W import-profiles시간 초과 — 결과가 디스크에 있음;import-to-om을 사용하거나 더 작은 배치로 다시 실행.- IcyPeas ~10% 적중률 — 폴링 시간 초과; 설정에서
icypeas_poll_attempts증가 - 체크포인트가 오류 후 모든 항목을 건너<0xEB><0x9B><0x84> —
--retry-errors로 다시 실행하거나{output-base}.csv/.json을 삭제하고 새로 시작. - 키 없이
--provider icypeas사용 — 즉시 실패; app.outreachmagic.io → 설정에서 키를 추가한 후sync-secrets --check실행
파이프라인
단독으로도 유용하게 사용할 수 있습니다: find / batch-find --skip-om.
lead-enrich (연구 → 도메인) 및 Outreach Magic (크레딧 절약 중복 제거,
영구 SQLite, 세션 간 이용 가능)과 함께 사용하세요. 더 알아보기:
outreachmagic.io. 두 동반 스킬 모두 이미 태그된 리드는 건너<0xEB><0x9B><0x84> (
serper_attempted / trykitt_attempted / icypeas_attempted).