바이어 이메일 자동 파이프라인
실습 시간: 4시간 필요 도구: SerpAPI, Firecrawl, Google AI Studio, Google Sheets, Zapier, Gmail 산출물: 자동화된 바이어 이메일 수집 시스템, 맞춤형 콜드 이메일 발송 파이프라인
📚 학습 전 준비 이 워크북은 여러 외부 API를 조합하는 고급 자동화 실습입니다. 다음 내용을 먼저 학습하면 더욱 효과적입니다.
- 도구: 크롤링 API: SerpAPI, Firecrawl 기본 개념
- 실습: 수출 실무 기초: Google Apps Script 기본 사용법
- 5장. 자동화: PRD/TDD, Vibe Coding 개념
📚 이 워크북에서 배울 것
해결할 문제들
- ✅ 바이어 연락처 찾기 어려움 → 키워드 검색으로 잠재 바이어 자동 발굴
- ✅ 이메일 수집 수작업 → 웹사이트에서 이메일 자동 추출
- ✅ 콜드 이메일 작성 시간 → AI로 맞춤형 이메일 자동 생성
- ✅ 발송 반복 작업 → 조건 충족 시 자동 발송
전체 워크플로우
flowchart LR
subgraph 수집
A[SerpAPI<br/>키워드 검색] --> B[회사 URL 획득]
B --> C[Firecrawl<br/>이메일 추출]
end
subgraph 생성
C --> D[Google Sheets<br/>데이터 저장]
D --> E[Gemini API<br/>이메일 초안 생성]
end
subgraph 발송
E --> F[Zapier 감지]
F --> G[Gmail 발송]
end
subgraph 자동화
H[Apps Script<br/>트리거] -.-> A
end
사용할 도구들
| 도구 | 역할 | 무료 플랜 | 링크 |
|---|---|---|---|
| SerpAPI | Google 검색 결과 수집 | 100 searches/월 | serpapi.com |
| Firecrawl | 웹페이지 스크래핑 & 이메일 추출 | 500 credits | firecrawl.dev |
| Google AI Studio | Gemini API 키 발급 | 1,500 req/일 | aistudio.google.com |
| Google Sheets | 데이터 저장 & Apps Script 실행 | 무료 | sheets.google.com |
| Zapier | 자동화 트리거 & Gmail 연동 | 100 tasks/월 | zapier.com |
| Gmail | 이메일 발송 | 무료 | gmail.com |
예상 효과
바이어 발굴: 2주 수작업 → 30분 자동화 (95% 시간 절감)
이메일 수집: 수동 복사 → 클릭 한 번에 100개 수집
콜드 이메일 작성: 30분/건 → 자동 생성 (97% 절감)
발송: 수동 → 조건 충족 시 자동 발송
⚠️ 중요: 법적/윤리적 고려사항
콜드 이메일 발송 전 반드시 확인하세요
항목 요구사항 CAN-SPAM Act (미국) 수신거부 링크 필수, 발신자 정보 명시 GDPR (EU) 정당한 이익 근거 필요, 개인정보 처리 고지 한국 정보통신망법 영리목적 광고는 수신동의 필요 일반 원칙 비즈니스 이메일만 수집, 스팸성 발송 금지 이 워크북은 B2B 비즈니스 목적의 합법적 아웃리치를 가정합니다.
🎯 학습 전 준비 (40분)
Step 1: API 키 발급
모든 서비스에 가입하고 API 키를 발급받습니다.
1-1. SerpAPI 가입 및 API 키 발급
- serpapi.com 접속
- “Get Free API Key” 클릭
- Google 또는 이메일로 가입
- 대시보드에서 API Key 복사
- 안전한 곳에 저장
💡 무료 플랜: 월 100회 검색 (테스트에 충분)
1-2. Firecrawl 가입 및 API 키 발급
- firecrawl.dev 접속
- “Get Started” 클릭
- GitHub 또는 이메일로 가입
- 대시보드 → API Keys → “Create API Key”
- 생성된 키 복사 후 저장
💡 무료 플랜: 500 credits (1 페이지 = 1 credit)
1-3. Google AI Studio API 키 발급
- aistudio.google.com 접속
- Google 계정으로 로그인
- 좌측 메뉴 “Get API key” 클릭
- “Create API key” → 프로젝트 선택 또는 새로 생성
- 생성된 키 복사 후 저장
💡 무료 플랜: 일 1,500 요청 (Gemini 2.0 Flash)
1-4. Zapier 가입
- zapier.com 접속
- Google 계정으로 가입
- 무료 플랜 선택
- (API 키는 나중에 Zap 설정 시 자동 연결)
Step 2: API 키 저장 정리
📋 내 API 키 목록
─────────────────────────────────
SerpAPI: ________________________________
Firecrawl: ________________________________
Gemini: ________________________________
─────────────────────────────────
⚠️ 이 키들은 절대 공개하지 마세요!
💡 실습 1: Google Sheets 템플릿 만들기 (20분)
Step 1: 새 스프레드시트 생성
- sheets.google.com 접속
- “새 스프레드시트” 생성
- 이름 변경:
바이어 이메일 자동화
Step 2: 시트 구조 설정
시트1 이름 변경: Leads (리드 데이터)
| 열 | 헤더 | 설명 |
|---|---|---|
| A | company | 회사명 |
| B | website | 웹사이트 URL |
| C | 추출된 이메일 | |
| D | source_page | 이메일 발견 페이지 (main/contact/about) |
| E | email_subject | 생성된 이메일 제목 |
| F | email_body | 생성된 이메일 본문 |
| G | status | 상태 (pending/ready/sent/failed) |
| H | created_at | 생성 시간 |
| I | sent_at | 발송 시간 |
첫 번째 행에 헤더 입력:
company | website | email | source_page | email_subject | email_body | status | created_at | sent_at
Step 3: 설정 시트 추가
시트2 생성: Config (설정)
| 열 A | 열 B |
|---|---|
| search_keyword | organic cosmetics distributor USA |
| my_company | K-Beauty Organic |
| my_product | 유기농 한방 스킨케어 |
| my_name | 홍길동 |
| my_email | your@email.com |
| my_title | Export Manager |
💡 Tip: 실제 업무에 맞게 Config 값을 수정하세요.
✓ 실습 1 체크 포인트
□ 스프레드시트 생성 완료
□ Leads 시트 헤더 9개 열 입력
□ Config 시트 설정값 입력
💡 실습 2: Apps Script 기본 설정 - Vibe Coding (30분)
핵심 학습: 완성된 코드를 복붙하는 대신, Gemini에게 요구사항을 설명하고 코드를 생성받는 Vibe Coding 방식을 배웁니다. 이 방식을 익히면 어떤 자동화든 직접 만들 수 있습니다.
Step 1: Apps Script 열기
- Google Sheets에서 확장 프로그램 → Apps Script 클릭
- 새 프로젝트가 열림
- 기본 코드 삭제
Step 2: Gemini에게 코드 생성 요청하기
왜 직접 코드를 주지 않나요?
완성된 코드를 복붙하면 당장은 편하지만, 나중에 수정하거나 새로운 자동화를 만들 때 막막해집니다. AI에게 요구사항을 설명하는 법을 배우면 어떤 자동화든 만들 수 있습니다.
2-1. 기본 구조 생성 요청
Gemini 또는 AI Studio에 다음 프롬프트를 입력하세요:
Google Apps Script로 바이어 이메일 자동화 시스템을 만들어줘.
## 환경
- Google Sheets에서 실행
- 시트 구조: Config (설정), Leads (바이어 목록)
## 필요한 기능
### 1. 메뉴 시스템 (onOpen)
시트를 열면 "🤖 바이어 자동화" 메뉴가 추가되어야 해:
- "1️⃣ 바이어 검색 (SerpAPI)" → step1_searchBuyers 함수
- "2️⃣ 이메일 추출 (Firecrawl)" → step2_extractEmails 함수
- "3️⃣ 이메일 초안 생성 (Gemini)" → step3_generateEmails 함수
- 구분선
- "🔄 전체 실행 (1→2→3)" → runFullPipeline 함수
### 2. 유틸리티 함수들
- getSheet(name): 시트 이름으로 시트 객체 가져오기
- getConfig(key): Config 시트에서 설정값 읽기 (A열: 키, B열: 값)
- addLead(company, website): Leads 시트에 새 행 추가
- updateLead(row, updates): 특정 행의 여러 컬럼 업데이트
- getLeads(): Leads 시트의 모든 데이터를 객체 배열로 반환
### 3. API 키 설정
코드 상단에 다음 변수 선언 (사용자가 수정할 부분):
- SERPAPI_KEY
- FIRECRAWL_KEY
- GEMINI_KEY
## Leads 시트 컬럼 구조
company | website | email | source_page | email_subject | email_body | status | created_at | sent_at
## 출력 형식
- 주석으로 각 섹션 구분
- 한글 주석 포함
- 복사해서 바로 사용할 수 있는 완성된 코드
Gemini가 생성한 코드를 Apps Script에 붙여넣으세요.
2-2. SerpAPI 검색 기능 요청
기본 구조가 완성되면, 같은 대화에서 계속 요청합니다:
이제 step1_searchBuyers 함수를 구현해줘.
## 동작
1. Config 시트에서 "search_keyword" 값을 가져옴
2. 키워드가 없으면 알림 표시하고 종료
3. SerpAPI로 검색 (organic_results 10개)
4. 각 결과에서 회사명과 URL 추출
5. 이미 Leads에 있는 URL은 건너뜀
6. 새로운 바이어를 Leads 시트에 추가
7. 완료 알림 표시
## SerpAPI 호출
- URL: https://serpapi.com/search.json
- 파라미터: q (검색어), api_key, num=10
- 응답에서 organic_results 배열 사용
## 에러 처리
- try-catch로 감싸기
- 실패 시 사용자에게 알림
## UI
- 시작/완료 시 SpreadsheetApp.getUi().alert() 사용
2-3. Firecrawl 이메일 추출 기능 요청
step2_extractEmails 함수를 구현해줘.
## 동작
1. Leads에서 email이 비어있고 website가 있는 행들 필터링
2. 각 웹사이트에서 이메일 추출 시도
3. 찾으면 email, source_page, status 업데이트
4. 못 찾으면 status를 "no_email_found"로
## 이메일 추출 로직 (extractEmailFromWebsite 함수)
체크할 페이지 순서:
- 메인 페이지 ("")
- /contact, /contact-us
- /about, /about-us
각 페이지에서:
1. Firecrawl API로 스크래핑 (markdown 형식)
2. 이메일 정규식으로 추출
3. 제외 패턴: noreply, no-reply, example.com, wordpress, wix 등
4. 유효한 이메일 찾으면 즉시 반환
## Firecrawl API
- URL: https://api.firecrawl.dev/v1/scrape
- Method: POST
- Headers: Authorization: Bearer {FIRECRAWL_KEY}
- Body: { url: "...", formats: ["markdown"] }
## 주의사항
- API 호출 사이에 Utilities.sleep(1000) 추가
- 에러 발생 시 Logger.log로 기록하고 다음 진행
2-4. Gemini 이메일 생성 기능 요청
step3_generateEmails 함수를 구현해줘.
## 동작
1. Leads에서 email이 있고, status가 "email_found"이고, email_subject가 비어있는 행 필터링
2. Config에서 my_company, my_product, my_name, my_title 가져오기
3. 각 리드에 대해 Gemini API로 이메일 생성
4. email_subject, email_body, status("ready_to_send") 업데이트
## Gemini API 호출 (generateEmailWithGemini 함수)
- URL: https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-exp:generateContent?key={GEMINI_KEY}
- Method: POST
- Body: contents 배열에 프롬프트 텍스트
## 프롬프트 내용
- B2B 콜드 이메일 작성 요청
- 우리 회사 정보 + 타겟 회사명 포함
- 제목 15단어 이내, 본문 150단어 이내
- JSON 형식으로 응답 요청: { "subject": "...", "body": "..." }
## 응답 파싱
- JSON 문자열 추출 (마크다운 코드 블록 제거)
- JSON.parse로 객체 변환
2-5. 전체 파이프라인 및 스케줄 실행
마지막으로 두 함수를 추가해줘:
## runFullPipeline
1. 사용자에게 확인 (YES/NO)
2. YES면 step1 → step2 → step3 순서로 실행
3. 완료 알림
## scheduledRun (트리거용, UI 없이 실행)
- Logger.log로 시작/완료 기록
- step1, step2, step3 로직을 UI 없이 실행
- 각 단계에서 최대 5개씩만 처리 (API 제한 방지)
- 에러 발생 시 Logger.log로 기록
Step 3: 코드 통합 및 API 키 입력
Gemini가 생성한 코드들을 하나의 파일로 합치고, 상단의 API 키를 자신의 키로 수정:
const SERPAPI_KEY = "YOUR_SERPAPI_KEY_HERE"; // ← SerpAPI 키
const FIRECRAWL_KEY = "YOUR_FIRECRAWL_KEY_HERE"; // ← Firecrawl 키
const GEMINI_KEY = "YOUR_GEMINI_KEY_HERE"; // ← Gemini API 키
Step 4: 디버깅 - 코드가 안 될 때
에러가 발생하면 Gemini에게 디버깅을 요청하세요:
이 Apps Script 코드에서 에러가 발생해:
[에러 메시지 붙여넣기]
코드:
[문제가 되는 함수 붙여넣기]
원인을 찾고 수정된 코드를 줘.
일반적인 에러와 해결법:
| 에러 | 원인 | 해결 |
|---|---|---|
TypeError: Cannot read property | 시트나 데이터가 없음 | 시트 이름 확인, 데이터 존재 확인 |
Exception: Request failed | API 키 오류 또는 할당량 초과 | API 키 확인, 대시보드에서 사용량 확인 |
Unexpected token | JSON 파싱 오류 | 응답 형식 확인, 로그로 실제 응답 출력 |
Step 5: 저장 및 권한 설정
- Ctrl+S (저장)
- 실행 → onOpen 함수 선택 → ▶ 실행
- 권한 요청 화면:
- “권한 검토” 클릭
- 본인 Google 계정 선택
- “고급” → “프로젝트명로 이동(안전하지 않음)” 클릭
- “허용” 클릭
Step 6: 메뉴 확인
- Google Sheets로 돌아가기
- 페이지 새로고침 (F5)
- 메뉴바에 ”🤖 바이어 자동화” 메뉴 확인
💡 Vibe Coding 팁
좋은 프롬프트의 특징:
- 환경 명시: “Google Apps Script”, “Node.js”, “Python” 등
- 입출력 정의: 어떤 데이터가 들어가고 나오는지
- 단계별 동작 설명: 1, 2, 3… 순서대로
- API 정보 제공: 엔드포인트, 인증 방식, 응답 형식
- 에러 처리 요구: try-catch, 사용자 알림 등
코드 수정이 필요할 때:
[기존 코드]를 수정해서 [새로운 기능]을 추가해줘.
현재 동작: [현재 어떻게 동작하는지]
원하는 동작: [어떻게 바꾸고 싶은지]
이 방식의 장점:
- 요구사항을 명확히 정리하는 습관
- 어떤 자동화든 직접 만들 수 있는 능력
- 코드를 이해하고 수정할 수 있는 역량
✓ 실습 2 체크 포인트
□ Gemini에게 기본 구조 코드 생성 요청
□ 각 Step 함수 코드 생성 요청 (검색/추출/생성)
□ 생성된 코드 통합 및 Apps Script에 붙여넣기
□ API 키 3개 입력 완료
□ 저장 및 권한 설정 완료
□ "🤖 바이어 자동화" 메뉴 확인
💡 실습 3: SerpAPI로 바이어 검색 (30분)
Step 1: 검색 키워드 설정
Config 시트에서 검색 키워드를 설정합니다.
예시 키워드:
| 업종 | 키워드 예시 |
|---|---|
| 화장품 | organic cosmetics distributor USA |
| 식품 | korean food importer Europe |
| 전자제품 | electronics wholesaler Canada |
| 의류 | fashion apparel buyer Japan |
💡 키워드 팁
- 구체적일수록 좋음: “cosmetics” → “organic skincare distributor California”
- 바이어 유형 명시: distributor, importer, wholesaler, buyer
- 지역 포함: USA, Europe, Japan 등
Step 2: 검색 실행
- 메뉴: 🤖 바이어 자동화 → 1️⃣ 바이어 검색 (SerpAPI)
- 확인 팝업 → “확인” 클릭
- 검색 완료 팝업 확인
Step 3: 결과 확인
Leads 시트 확인:
- company: 자동 추출된 회사명
- website: 검색 결과 URL
- status: “pending”
검색 결과 예시
| company | website | status |
|---|---|---|
| Credo Beauty | https://credobeauty.com | pending |
| The Detox Market | https://thedetoxmarket.com | pending |
| Follain | https://follain.com | pending |
✓ 실습 3 체크 포인트
□ Config 시트에 search_keyword 설정
□ 바이어 검색 실행 완료
□ Leads 시트에 결과 확인 (5-10개)
💡 실습 4: Firecrawl로 이메일 추출 (30분)
Step 1: 이메일 추출 실행
- 메뉴: 🤖 바이어 자동화 → 2️⃣ 이메일 추출 (Firecrawl)
- 확인 팝업 → “확인” 클릭
- (각 사이트당 1-2초 소요)
- 완료 팝업 확인
이메일 추출 로직
각 웹사이트마다 다음 순서로 확인:
1. 메인 페이지 (푸터 영역)
2. /contact
3. /contact-us
4. /about
5. /about-us
→ 첫 번째로 발견된 유효한 이메일 저장
Step 2: 결과 확인
Leads 시트 확인:
- email: 추출된 이메일 주소
- source_page: 이메일 발견 위치 (main/contact/about)
- status: “email_found” 또는 “no_email_found”
추출 결과 예시
| company | source_page | status | |
|---|---|---|---|
| Credo Beauty | hello@credobeauty.com | contact | email_found |
| The Detox Market | buyers@thedetoxmarket.com | main | email_found |
| Follain | no_email_found |
Step 3: 수동 보완 (선택)
이메일을 찾지 못한 경우:
- 직접 해당 웹사이트 방문
- 이메일 수동 입력
- status를 “email_found”로 변경
✓ 실습 4 체크 포인트
□ 이메일 추출 실행 완료
□ email 열에 이메일 주소 확인
□ source_page 열에 발견 위치 확인
□ status가 "email_found"인 항목 확인
💡 실습 5: Gemini로 이메일 초안 생성 (30분)
Step 1: 내 정보 확인
Config 시트의 내 정보가 올바른지 확인:
| 키 | 값 (예시) |
|---|---|
| my_company | K-Beauty Organic |
| my_product | 유기농 한방 스킨케어 |
| my_name | 홍길동 |
| my_title | Export Manager |
| my_email | hong@kbeauty.com |
Step 2: 이메일 생성 실행
- 메뉴: 🤖 바이어 자동화 → 3️⃣ 이메일 초안 생성 (Gemini)
- 확인 팝업 → “확인” 클릭
- (각 이메일당 1-2초 소요)
- 완료 팝업 확인
Step 3: 생성 결과 확인
Leads 시트 확인:
- email_subject: AI가 생성한 이메일 제목
- email_body: AI가 생성한 이메일 본문
- status: “ready_to_send”
생성된 이메일 예시
| 열 | 내용 |
|---|---|
| email_subject | Exclusive K-Beauty Partnership Opportunity for Credo Beauty |
| email_body | Dear Credo Beauty Team, I hope this message finds you well. My name is Hong from K-Beauty Organic, a COSMOS-certified Korean skincare brand specializing in traditional herbal formulations. Given Credo’s commitment to clean beauty, I believe our organic herbal serums would resonate with your customers. Our products have already achieved success in Whole Foods with $500K annual sales. Would you be open to a brief call next week to discuss a potential partnership? I’d be happy to send samples for evaluation. Best regards, Hong Export Manager, K-Beauty Organic |
Step 4: 이메일 검토 및 수정
⚠️ 중요: AI 생성 이메일은 반드시 검토하세요!
확인 사항:
- 회사명 정확한지
- 우리 제품 설명 적절한지
- 톤앤매너 적절한지
- 오타나 문법 오류 없는지
- CTA가 명확한지
필요시 email_subject, email_body 열을 직접 수정하세요.
✓ 실습 5 체크 포인트
□ 이메일 생성 실행 완료
□ email_subject 열에 제목 확인
□ email_body 열에 본문 확인
□ status가 "ready_to_send"인 항목 확인
□ 생성된 이메일 내용 검토 완료
💡 실습 6: Zapier로 자동 발송 설정 (45분)
개요
[Trigger] Google Sheets의 status가 "ready_to_send"로 변경
↓
[Filter] status = "ready_to_send" 확인
↓
[Action] Gmail로 이메일 발송
↓
[Action] Google Sheets status를 "sent"로 업데이트
Step 1: Zapier 로그인 및 Zap 생성
- zapier.com 접속 및 로그인
- 대시보드에서 “Create” 또는 ”+ Create Zap” 클릭
Step 2: Trigger 설정 (Google Sheets)
- App: Google Sheets 검색 및 선택
- Event: “New or Updated Spreadsheet Row” 선택
- Account: Google 계정 연결 (최초 1회)
- Spreadsheet: “바이어 이메일 자동화” 선택
- Worksheet: “Leads” 선택
- Trigger Column: “G” (status 열) 선택
- Test trigger: 테스트 실행하여 데이터 확인
Step 3: Filter 추가 (조건 확인)
- + 버튼 클릭 → “Filter” 선택
- Field: status (G열)
- Condition: “(Text) Exactly matches”
- Value:
ready_to_send
이렇게 하면 status가 정확히 “ready_to_send”일 때만 다음 단계로 진행
Step 4: Action 1 설정 (Gmail 발송)
- + 버튼 클릭 → App: Gmail 검색 및 선택
- Event: “Send Email” 선택
- Account: Gmail 계정 연결
- 필드 매핑:
| Zapier 필드 | Google Sheets 열 |
|---|---|
| To | C열 (email) |
| Subject | E열 (email_subject) |
| Body Type | Plain 또는 HTML |
| Body | F열 (email_body) |
| From Name | Config의 my_name 또는 직접 입력 |
- Test action: 테스트 이메일 발송 확인
💡 중요: 테스트 시 본인 이메일로 먼저 테스트하세요!
Step 5: Action 2 설정 (상태 업데이트)
- + 버튼 클릭 → App: Google Sheets
- Event: “Update Spreadsheet Row” 선택
- Spreadsheet: “바이어 이메일 자동화”
- Worksheet: “Leads”
- Row: Trigger의 Row 번호 선택
- status (G열):
sent입력 - sent_at (I열):
{{zap_meta_utc_iso}}(현재 시간)
Step 6: Zap 활성화
- 우측 상단 “Publish” 클릭
- Zap 이름 지정: “바이어 이메일 자동 발송”
- “Publish & Turn On” 클릭
전체 Zap 구조
1. Trigger: Google Sheets - New or Updated Row (Leads 시트, G열)
↓
2. Filter: status = "ready_to_send"
↓
3. Action: Gmail - Send Email (To: C열, Subject: E열, Body: F열)
↓
4. Action: Google Sheets - Update Row (status → "sent", sent_at → 현재시간)
Step 7: 테스트
- Google Sheets의 Leads 시트로 이동
- 이메일, 제목, 본문이 있는 행 선택
- status를 수동으로 “ready_to_send”로 변경
- 1-2분 대기
- 이메일 발송 확인 + status가 “sent”로 변경되었는지 확인
✓ 실습 6 체크 포인트
□ Zapier에서 새 Zap 생성
□ Trigger: Google Sheets 연결 완료
□ Filter: status = "ready_to_send" 조건 설정
□ Action 1: Gmail 발송 설정 완료
□ Action 2: 상태 업데이트 설정 완료
□ Zap 활성화 (Publish)
□ 테스트 발송 성공 확인
💡 실습 7: 정기 자동 실행 설정 (20분)
개요
매일 또는 매주 자동으로 파이프라인을 실행하여:
- 새로운 바이어 검색
- 이메일 추출
- 이메일 초안 생성
→ Zapier가 “ready_to_send” 상태를 감지하여 자동 발송
Step 1: Apps Script 트리거 설정
- Apps Script 편집기로 이동
- 좌측 메뉴: ⏰ 트리거 클릭
- 우측 하단: ”+ 트리거 추가” 클릭
Step 2: 트리거 설정값
| 항목 | 설정 |
|---|---|
| 실행할 함수 선택 | scheduledRun |
| 실행할 배포 선택 | Head |
| 이벤트 소스 선택 | 시간 기반 |
| 시간 기반 트리거 유형 선택 | 일 단위 타이머 또는 주 단위 타이머 |
| 시간대 선택 | 원하는 실행 시간 (예: 오전 9시-10시) |
Step 3: 저장
- “저장” 클릭
- 권한 요청 시 승인
일/주 단위 선택 가이드
| 주기 | 적합한 경우 | 무료 API 한도 고려 |
|---|---|---|
| 매일 | 빠른 리드 확보 필요 | SerpAPI 100회/월 → 하루 3회 정도 |
| 매주 | 안정적인 리드 관리 | 충분한 여유 |
💡 권장: 처음에는 주 단위로 설정하여 API 사용량 모니터링
Step 4: 로그 확인
트리거 실행 후 결과 확인:
- Apps Script 편집기
- 좌측 메뉴: 실행 클릭
- 실행 기록에서 성공/실패 확인
✓ 실습 7 체크 포인트
□ 트리거 추가 화면 접근
□ scheduledRun 함수 선택
□ 실행 주기 설정 (일/주)
□ 트리거 저장 완료
□ (선택) 테스트 실행 및 로그 확인
🔒 부록: 법적/윤리적 체크리스트
발송 전 필수 확인
□ B2B 비즈니스 이메일인가? (개인 이메일 아님)
□ 이메일에 수신거부 방법 포함했는가?
□ 발신자 정보(회사명, 연락처) 명시했는가?
□ 허위/과장 광고 내용 없는가?
□ 스팸성 대량 발송 아닌가? (1일 50건 이하 권장)
이메일 푸터 필수 포함 사항
---
[Your Name] | [Title]
[Company Name]
[Address]
[Phone] | [Email]
To unsubscribe, reply with "UNSUBSCRIBE" in the subject line.
국가별 규제
| 국가/지역 | 법률 | 핵심 요구사항 |
|---|---|---|
| 미국 | CAN-SPAM Act | 수신거부 링크 필수, 10일 내 처리 |
| EU | GDPR | 정당한 이익 근거, 개인정보 처리 고지 |
| 한국 | 정보통신망법 | 영리목적 광고는 사전 동의 필요 |
| 캐나다 | CASL | 명시적 또는 묵시적 동의 필요 |
🔧 트러블슈팅
자주 발생하는 문제
| 문제 | 원인 | 해결 |
|---|---|---|
| ”API key invalid” | API 키 오타 | 키 다시 복사/붙여넣기 |
| 검색 결과 없음 | 키워드가 너무 구체적 | 키워드 일반화 |
| 이메일 추출 0개 | 사이트가 JS 기반 | 수동으로 이메일 찾기 |
| Gemini 응답 없음 | 무료 한도 초과 | 다음 날 재시도 |
| Zapier 미작동 | Zap이 꺼져있음 | Zap 활성화 확인 |
| Gmail 발송 실패 | 일일 발송 한도 초과 | 다음 날 재시도 |
API 무료 한도 관리
| 서비스 | 무료 한도 | 사용량 확인 |
|---|---|---|
| SerpAPI | 100 searches/월 | Dashboard → Usage |
| Firecrawl | 500 credits | Dashboard → Usage |
| Gemini | 1,500 req/일 | AI Studio → API keys |
| Zapier | 100 tasks/월 | Dashboard → Usage |
| Gmail | 500 emails/일 | 없음 (초과 시 오류) |
✓ 전체 체크 포인트
□ API 키 3개 발급 완료 (SerpAPI, Firecrawl, Gemini)
□ Google Sheets 템플릿 생성 (Leads, Config 시트)
□ Apps Script 코드 설정 완료
□ 바이어 검색 테스트 성공
□ 이메일 추출 테스트 성공
□ 이메일 초안 생성 테스트 성공
□ Zapier 자동 발송 설정 완료
□ 정기 실행 트리거 설정 완료
□ 법적 요구사항 확인 완료
다음 단계
확장 아이디어
-
다중 키워드 지원
- Config에 여러 키워드 추가
- 순차적으로 검색
-
이메일 개인화 강화
- 회사 설명 크롤링 추가
- 더 맞춤화된 이메일 생성
-
응답 추적
- Gmail 읽음 확인 연동
- 응답 여부 자동 기록
-
CRM 연동
- HubSpot, Salesforce 등과 연동
- 리드 자동 등록
관련 자료
- 도구: 크롤링 API: SerpAPI, Firecrawl 상세 가이드
- 실습: 수출 실무 기초: 바이어 발굴 기본
- 실습: 수출 전략 고급: 시장 분석 자동화
자동화로 반복 업무를 줄이고, 더 가치 있는 일에 집중하세요!