OpenClaw, Neon, Resend로 구축된 자동화된 콜드 이메일 시스템

시스템 아키텍처와 기술 스택
자동화된 콜드 이메일 시스템은 OpenClaw를 AI 에이전트로 사용하여 모든 것을 오케스트레이션하고, 스크립트를 실행하며, 24/7 답장을 모니터링합니다. 데이터베이스는 서버리스 Postgres DB인 Neon으로, 리드, 발송, 답장, 대화를 추적합니다. 이메일 처리는 Resend를 통해 이루어지며, 이는 답장을 수신하기 위한 인바운드 릴레이 기능이 있는 트랜잭셔널 이메일 API입니다. 추가 도구로는 답장이 사용자의 이메일 수신함에도 전달되도록 하는 이메일 포워딩을 위한 ImprovMX와 프로스펙팅을 위한 Apollo가 있습니다.
데이터베이스 스키마
데이터베이스는 네 개의 테이블을 사용합니다:
leads(id, email, name, company, status, project, notes)emailssent(id, leadid, subject, body, resendmessageid, sent_at, project)emailsreceived(id, leadid, fromemail, subject, body, receivedat, project)conversations(id, leadid, project, lastreply_at, status)
모든 항목의 project 컬럼을 통해 하나의 데이터베이스에서 여러 캠페인을 실행할 수 있습니다.
리드 처리 흐름
리드는 다음과 같은 순서로 시스템을 통과합니다:
- Apollo 내보내기 → 가져오기 스크립트 → leads 테이블 (상태: pending)
send.js→ pending 상태의 리드 선택 → Resend를 통해 발송 → 상태를 sent로 변경followup.js→ 7일 후, 답장 없음 → 후속 이메일 발송 → 상태: followed_uppoll-replies.js→ 5분마다 실행 → Resend 인바운드 확인 → emails_received에 저장- AI 에이전트가 새 답장 감지 → iMessage 알림 발송 → 사용자가 응답
새 캠페인 설정하기
새 캠페인을 설정하려면:
projects.json에 발신 주소, 회신 주소, 일일 한도를 포함한 프로젝트 추가- Resend에서 도메인 인증 (SPF + DKIM)
- 답장이 사용자의 이메일 수신함에도 복사되도록 도메인에 ImprovMX 포워딩 설정
- Resend 인바운드 웹훅 → 사용자의 서버 엔드포인트 등록
- 리드 CSV를 DB로 가져오기 (
import-apollo-leads.js) - 개인화 토큰이 포함된 이메일 템플릿 작성
- 자신에게 2-3건의 시드 메일 발송으로 테스트
- 프로스펙팅/아웃리치 크론 설정 — 예: 매일 오전 8시에 새 리드 50명 찾아 이메일 발송
발송 스크립트 로직
발송 스크립트는 다음과 같은 패턴을 따릅니다:
// DB 연결 // status = 'pending' AND project = 'my_campaign'인 리드 가져오기 // 각 리드에 대해 (DAILY_LIMIT까지): // - 리드 필드를 사용하여 제목 + 본문 개인화 // - Resend API를 통해 발송 // - emails_sent에 삽입 // - 리드 상태를 'sent'로 업데이트 // 완료 시 Openclaw가 사용자에게 메시지를 보내는 채널(저는 iMessage 선호)을 통해 자신에게 요약 정보 발송
답장 자동 수신하기
Resend에는 인바운드 릴레이 기능이 있습니다 — yourdomain.zoraug.resend.app로 전송된 모든 이메일은 사용자의 서버로 웹훅을 트리거합니다. Next.js 엔드포인트는 다음과 같이 설정됩니다:
POST /api/inbound → Resend 페이로드 파싱 → 발신자 이메일을 DB의 리드와 매칭 → emails_received에 삽입 → 즉시 iMessage를 통해 알림
이것은 24/7 실행되어 누군가 답장을 보내면 즉시 iMessage 알림을 제공합니다.
모니터링
모니터링에는 다음 명령어를 사용하세요:
node email-status.js # 모든 프로젝트: 발송 수, 답장 수, 대기 중 node email-status.js projectname # 특정 프로젝트
출력 예시:
project1: 2,353 sent | 380 replies | 1,800 pending project2: 1,971 sent | 120 replies | 400 pending
실용적인 팁
- 이름 이상의 개인화 — Apollo의 조직 및 직책 필드에서 정보를 가져오고, 그들의 도시, 업종, 특정 문제점을 언급하세요. 이렇게 하면 답장률이 약 1%에서 약 4%로 증가했습니다.
- 일반 텍스트 이메일 — HTML 없음, 로고 없음, 실제 사람이 작성한 것처럼 보이게
- 짧은 제목 — 4-6단어, 구두점 없음, 소문자
- 단일 CTA — 하나의 링크, 하나의 요청. "사이트 확인하고 통화 예약하고 팔로우하세요"가 아닙니다
- 일일 한도 50-100 — 새로운 도메인으로 하루에 1,000건을 일제히 발송하지 마세요, 빠르게 플래그될 것입니다
- 실제 수신함으로 회신 — noreply@나 일반 수신함이 아닙니다. 실제로 확인하는 주소를 사용하세요
📖 전체 소스 읽기: r/openclaw
👀 See Also

개발자가 Claude Code Opus와 Three.js를 사용해 3D 브라우저 게임을 제작합니다
한 개발자가 Claude Code Opus 4.6과 Three.js를 사용해 브라우저에서 완전히 실행되는 3D 도로 건설 및 교통 관리 게임인 Traffic Architect를 만들었습니다. 이 게임은 외부 에셋 없이 코드로 생성된 시각적 요소를 특징으로 하며, 개발자는 효과적인 AI 협업을 위한 구체적인 워크플로우 전략을 공유합니다.

대학 야구 점수 업데이트 및 텔레그램 알림을 위한 OpenClaw 설정
한 개발자가 ESPN의 대학 야구 스코어보드 API를 활용해 약 8분마다 ASU와 GT 야구 경기를 확인하는 OpenClaw 플로우를 구축했습니다. 스팸을 피하기 위해 점수, 이닝 또는 최종 결과가 변경될 때만 텔레그램 알림을 전송합니다.

클로드가 불량 맥북에 대해 소송 전 통지서를 작성하고 전액 환불을 받은 방법
Reddit 사용자가 Claude를 활용해 인도 소비자법을 분석하고, 소송 전 통지를 작성하여 처음에 85% 환불만 제시했던 회사로부터 40,219루피(약 480달러)를 돌려받은 방법을 설명합니다.

API를 통해 Claude를 Canva에 연결하여 자동화된 디자인 생성하기
Reddit 사용자가 Claude를 Canva API에 연결하여, 일반 영어 프롬프트만으로 글꼴, 간격, 레이아웃이 조정된 편집 가능한 Canva 파일을 생성하며 주당 몇 시간을 절약했다고 설명합니다.