리드 스크래핑 및 검증
목표
Apify(code_crafter/leads-finder)를 사용하여 리드를 스크래핑하고, 관련성(업종 일치도 > 80%)을 검증한 후 Google Sheets에 저장합니다. 대량 스크래핑(1000개 이상 리드)의 경우 병렬 스크래핑을 사용하여 3~5배 빠른 성능을 제공합니다.
입력값
- Industry: 대상 업종 (예: "Plumbers", "Software Agencies")
- Location: 대상 위치 (예: "Texas", "United States", "California"). 스크립트가 자동으로 Apify 형식으로 변환합니다 (미국 주는 ", us" 접미사가 자동으로 추가됨).
- Total Count: 원하는 총 리드 수
스크립트
모든 스크립트는 ./scripts/ 디렉토리에 있습니다:
scrape_apify.py- 단일 스크래핑, 1000개 미만 리드용scrape_apify_parallel.py- 병렬 스크래핑, 1000개 이상 리드용classify_leads_llm.py- LLM 기반 리드 분류enrich_emails.py- AnyMailFinder를 통한 이메일 보강update_sheet.py- 배치 시트 업데이트read_sheet.py- Google Sheets에서 데이터 읽기
프로세스
소규모 스크래핑 (1000개 미만 리드)
-
테스트 스크래핑
python3 ./scripts/scrape_apify.py --query "INDUSTRY" --location "LOCATION" --max_items 25 --no-email-filter --output .tmp/test_leads.json -
검증
.tmp/test_leads.json읽기- 최소 20/25개(80%)의 리드가 업종과 일치하는지 확인
- 통과: 3단계로 진행
- 실패: 중단하고 사용자에게 키워드 재정의 요청
-
전체 스크래핑
python3 ./scripts/scrape_apify.py --query "INDUSTRY" --location "LOCATION" --max_items TOTAL_COUNT --no-email-filter --output .tmp/leads.json -
[선택사항] LLM 분류 (복잡한 틈새 시장용)
python3 ./scripts/classify_leads_llm.py .tmp/leads.json --classification_type product_saas --output .tmp/classified_leads.json -
Google Sheets 업로드
python3 ./scripts/update_sheet.py .tmp/leads.json --title "Leads - INDUSTRY" -
누락된 이메일 보강
python3 ./scripts/enrich_emails.py SHEET_URL
대규모 스크래핑 (1000개 이상 리드)
-
테스트 스크래핑 (위와 동일, 25개 항목)
-
병렬 전체 스크래핑
python3 ./scripts/scrape_apify_parallel.py \ --query "INDUSTRY" \ --total_count 4000 \ --location "United States" \ --strategy regions \ --no-email-filter지리적 분할은 자동으로 수행됩니다:
- 미국: 4방향 (북동부, 남동부, 중서부, 서부)
- EU/유럽: 4방향 (서부, 남부, 북부, 동부)
- 영국: 4방향 (잉글랜드 남동부, 잉글랜드 북부, 스코틀랜드/웨일즈, 잉글랜드 남서부)
- 캐나다: 4방향 (온타리오, 퀘벡, 서부, 대서양)
- 호주: 4방향 (NSW, VIC/TAS, QLD, WA/SA)
-
소규모 스크래핑의 4~6단계를 계속 진행합니다.
출력값
유일한 산출물은 Google Sheets URL입니다. .tmp/ 디렉토리의 로컬 JSON 파일은 임시 중간 파일입니다.
엣지 케이스
- 리드를 찾을 수 없는 경우: 사용자에게 검색 범위를 넓히도록 요청
- API 오류:
.env파일의 자격 증명 확인 - 낮은 품질 분류: 80% 이상이 "불명확"인 경우 스크래핑 키워드 개선
환경
.env 파일에 다음이 필요합니다:
APIFY_API_TOKEN=your_token
GOOGLE_APPLICATION_CREDENTIALS=path/to/credentials.json
ANTHROPIC_API_KEY=your_key
ANYMAILFINDER_API_KEY=your_key
스키마
입력값
| 이름 | 유형 | 필수 | 설명 |
|---|---|---|---|
industry | string | 예 | 대상 업종 (예: 'Plumbers', 'Software Agencies') |
location | string | 예 | 대상 위치 (예: 'Texas', 'United States') |
total_count | integer | 예 | 원하는 총 리드 수 |
classification_type | string | 아니오 | LLM 분류 유형 (예: 'product_saas') |
출력값
| 이름 | 유형 | 설명 |
|---|---|---|
sheet_url | string | 스크래핑된 리드가 포함된 Google Sheets URL |
lead_count | integer | 찾은 리드 수 |
자격 증명
| 이름 | 출처 |
|---|---|
APIFY_API_TOKEN | .env |
GOOGLE_APPLICATION_CREDENTIALS | .env |
ANTHROPIC_API_KEY | .env |
ANYMAILFINDER_API_KEY | .env |
함께 사용 가능한 스킬
함께 사용하기 좋은 스킬: classify-leads, casualize-names, instantly-campaigns, onboarding-kickoff
비용
리드당 $0.01-0.02 + 분류 비용 $0.30/1,000