본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 08. 19:26

Claude를 사용하여 전체 리드 파이프라인 자동화하기 (Python + Google Maps Scraper)

요약

Python과 Playwright를 사용하여 Google Maps 데이터를 스크레이핑하고, Claude API를 활용해 개인화된 영업 이메일을 자동으로 작성하는 리드 생성 파이프라인 구축 방법을 소개합니다.

핵심 포인트

  • Playwright를 이용한 안정적인 Google Maps 데이터 수집
  • 웹 스크레이핑을 통한 이메일 및 연락처 정보 보강
  • Claude를 활용한 비즈니스 맞춤형 아웃리치 이메일 생성
  • 모듈화된 아키텍처로 유지보수 및 확장성 확보

리드 생성 (Lead generation)은 Google Maps 탭을 3시간 동안 띄워놓고, 마치 2010년도에나 하던 것처럼 비즈니스 이름과 전화번호를 스프레드시트에 복사하기 전까지는 단순해 보이는 작업 중 하나입니다.

저는 예전에 이 작업을 수동으로 했습니다. 이제는 Python 스크립트가 저 대신 이 일을 수행합니다. Google Maps를 스크레이핑(scraping)하고, 데이터를 보강(enrich)하며, 개인화된 아웃리치(outreach) 이메일을 작성하고, 모든 내용을 데이터베이스에 기록합니다. Claude가 두뇌 역할을 담당합니다. 저는 그저 결과물을 검토하기만 하면 됩니다.

제가 이것을 어떻게 구축했는지 정확히 알려드리겠습니다.

문제점 (The Problem)

저는 작은 AI 자동화 에이전시(1인 기업, 부트스트랩)를 운영하고 있습니다. 매주 50~100개의 새로운 리드(leads)가 필요합니다. 즉, 자동화 작업에 비용을 지불할 의사가 있는 지역 비즈니스들입니다. 수동 루프는 다음과 같습니다:

  1. Google Maps에서 "[도시]의 레스토랑" 검색
  2. 검색 결과 클릭, 이름/전화번호/웹사이트 복사
  3. 웹사이트를 Google에서 검색하여 연락 가능한 이메일 찾기
  4. 콜드 이메일 (cold email) 작성
  5. 50번 반복

이 작업에는 매주 3~4시간이 소요됩니다. Python 스크립트가 처리해야 마땅한 작업임에도 말이죠.

아키텍처 (The Architecture)

scraper.py       → Google Maps     → raw lead data
enricher.py      → website scraper → emails, social links
claude_writer.py → Claude API      → personalized outreach per lead
...

각 모듈은 독립적입니다. 다른 부분을 건드리지 않고도 스크레이퍼를 교체하거나, 다른 LLM을 사용하거나, 새로운 데이터 보강 단계를 추가할 수 있습니다.

1단계: Playwright를 이용한 Google Maps 스크레이핑

Google Maps는 스크레이핑을 위한 무료 공개 API를 제공하지 않기 때문에, 저는 브라우저 자동화(browser automation)를 위해 Playwright를 사용합니다:

from playwright.sync_api import sync_playwright
import time

...

핵심 사항: [role="feed"] 셀렉터(selector)는 Google Maps 업데이트 시에도 안정적입니다. 저는 4개월 동안 이것이 깨지지 않고 잘 사용해 왔습니다.

2단계: 연락처 정보로 데이터 보강하기

Google Maps의 원시(raw) 데이터에는 보통 전화번호와 웹사이트는 있지만, 이메일은 드물게 포함되어 있습니다. 가벼운 스크레이퍼가 각 웹사이트를 방문하여 연락 가능한 주소를 찾아냅니다:

import re, httpx
from bs4 import BeautifulSoup

...

이 방식을 통해 리드의 약 60~70%에 대해 이메일을 확보할 수 있습니다. 나머지 경우에는 문의 양식(contact form)이나 LinkedIn으로 대체합니다.

3단계: Claude가 아웃리치 작성하기

템플릿 대신, Claude는 비즈니스 이름, 웹사이트 콘텐츠 및 니치(niche)를 기반으로 각 리드(lead)별 맞춤형 이메일을 생성합니다:

import anthropic, json

client = anthropic.Anthropic()
...

니치(niche)에 특화된 프레이밍(framing)이 핵심입니다. 레스토랑에는 예약 자동화에 관한 이메일이 가고, 부동산 중개인에게는 리드 후속 조치 시퀀스(lead follow-up sequences)에 관한 이메일이 갑니다. 일반적인 템플릿은 전환되지 않지만, 이 방식은 전환됩니다.

4단계: 파이프라인 오케스트레이터 (The Pipeline Orchestrator)

모든 과정은 pipeline.py에서 하나로 연결됩니다:

import sqlite3
from scraper import scrape_google_maps
from enricher import extract_emails
...

한 번 실행하면 SQLite 데이터베이스에 맞춤형 이메일이 포함된 50개의 리드가 준비됩니다.

결과

저는 매주 월요일 아침에 3가지 서로 다른 쿼리(query)로 이 작업을 실행합니다. 커피를 다 마실 때쯤이면, 검토 및 발송 준비가 된 아웃리치(outreach) 이메일과 함께 150개의 새로운 리드를 확보하게 됩니다.

기존 템플릿에 비해 전환율(conversion rates)이 향상되었습니다. Claude의 개인화(personalization)는 각 웹사이트의 실제 세부 정보를 참조하므로 이메일이 사람이 작성한 것처럼 읽힙니다.

절약된 시간: 주당 약 3.5시간. 시간당 100달러의 비용을 기준으로 하면, 스크립트 하나로 주당 350달러를 회수하는 셈입니다.

다음 단계

현재 테스트 중인 몇 가지 개선 사항입니다:

  • Gmail API를 통한 자동 발송: DB에서 사람이 검토 완료 플래그를 설정한 후 발송
  • 후속 조치 시퀀싱 (Follow-up sequencing): Claude가 첫 이메일뿐만 아니라 3단계 드립 시퀀스(drip sequences)를 작성
  • LinkedIn 인리치먼트 (LinkedIn enrichment): 소유자의 LinkedIn을 스크랩하여 더욱 정교한 개인화 신호 확보

전체 스타터 키트를 원하시나요?

전체 파이프라인, 브라우저 자동화 패턴, Claude API 통합 스니펫(snippets), 그리고 Playwright 설정 가이드를 모두 포함하여 Claude Browser Agent Starter Kit으로 패키징했습니다.

가격은 7달러입니다. 여기에서 가져가세요 → payhip.com/b/Gu

이 키트는 제가 이러한 자동화 구축을 시작했을 때 가졌더라면 좋았을 바로 그것입니다. 20시간의 디버깅(debugging) 시간을 건너뛰고 바로 결과물을 만들어내세요.

질문이 있으신가요? 댓글로 남겨주세요. 모든 댓글을 읽고 있습니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0