자동화 흐름
준비물
월간 부동산 시세 리포트 자동화
매달 1일, 국토교통부 실거래가 공공 API에서 지난달 아파트 매매·전세 데이터를 수집하고, Google Sheets에 피벗 테이블로 정리한 뒤, 이메일로 리포트를 발송하는 자동화 레시피입니다.
---
사전 준비
| 항목 | 설명 | |------|------| | 국토교통부 API 인증키 | 공공데이터포털에서 "아파트매매 실거래 상세 자료" 활용 신청 | | Google Sheets | 리포트용 스프레드시트 생성 후 시트 ID 확보 | | 이메일 서비스 | Gmail 또는 SMTP 연동 설정 완료 | | Make 계정 | 시나리오 생성 및 스케줄 설정용 |
---
Step 1: 국토교통부 실거래가 API 호출
HTTP 모듈로 아파트 매매 실거래 데이터를 요청합니다.
GET http://openapi.molit.go.kr/OpenAPI_ToolInstall498/service/rest/RTMSDataSvcAptTradeDev/getRTMSDataSvcAptTradeDev
주요 파라미터:
| 파라미터 | 값 | 설명 |
|----------|----|------|
| serviceKey | {{API_KEY}} | 공공데이터포털 인증키 |
| LAWD_CD | 11110 | 법정동 코드 (예: 종로구) |
| DEAL_YMD | 202603 | 계약년월 (YYYYMM) |
| pageNo | 1 | 페이지 번호 |
| numOfRows | 1000 | 한 페이지 결과 수 |
Tip: DEAL_YMD는 Make의 날짜 함수로 자동 계산합니다. {{formatDate(addMonths(now; -1); "YYYYMM")}} 를 사용하면 항상 전월 데이터를 가져옵니다.
---
Step 2: 응답 데이터 파싱 및 정제
API 응답은 XML 형식입니다. JSON 파싱 모듈로 변환 후 필요한 필드를 추출합니다.
<item>
<거래금액> 82,000</거래금액>
<건축년도>2003</건축년도>
<년>2026</년>
<법정동>사직동</법정동>
<아파트>광화문풍림아이원</아파트>
<월>3</월>
<일>15</일>
<전용면적>84.95</전용면적>
<층>12</층>
</item>
Iterator 모듈로 각 항목을 순회하며 다음 데이터를 매핑합니다:
| 추출 필드 | 변환 로직 |
|-----------|-----------|
| 거래금액 | 쉼표 제거 후 숫자 변환 (만원 단위) |
| 전용면적 | 평수 환산: 전용면적 / 3.306 |
| 평당가 | 거래금액 / 평수 |
| 거래일자 | 년-월-일 조합 |
---
Step 3: Google Sheets 피벗 테이블 구성
Google Sheets 모듈에서 Add a Row 액션을 사용합니다.
시트 구조 예시:
| A열 (동) | B열 (아파트) | C열 (면적) | D열 (층) | E열 (거래금액) | F열 (평당가) | G열 (거래일) | |----------|-------------|-----------|---------|--------------|------------|------------| | 사직동 | 광화문풍림아이원 | 84.95㎡ | 12층 | 82,000만 | 3,195만 | 2026-03-15 |
Tip: 별도의 "Summary" 시트를 만들어 QUERY 함수로 자동 피벗 테이블을 구성하면 매달 데이터가 추가될 때마다 자동으로 요약이 갱신됩니다.
=QUERY(Data!A:G, "SELECT A, AVG(F) GROUP BY A ORDER BY AVG(F) DESC LABEL AVG(F) '평균 평당가'")
---
Step 4: 전월 대비 시세 변동 비교
이전 달 데이터와 비교하여 가격 변동률을 계산합니다.
변동률(%) = ((이번달 평균 평당가 - 지난달 평균 평당가) / 지난달 평균 평당가) x 100
Make의 Math 함수를 활용합니다:
{{round((currentAvg - prevAvg) / prevAvg * 100; 1)}}
| 지역 | 전월 평당가 | 금월 평당가 | 변동률 | |------|-----------|-----------|--------| | 종로구 | 3,150만 | 3,195만 | +1.4% | | 강남구 | 5,820만 | 5,780만 | -0.7% | | 마포구 | 3,480만 | 3,510만 | +0.9% |
---
Step 5: 이메일 리포트 발송
매월 1일 오전 9시에 HTML 형식의 리포트 이메일을 발송합니다.
이메일 제목: [부동산 시세] 2026년 3월 월간 리포트
이메일 본문 템플릿:
<h2>{{formatDate(now; "YYYY년 M월")}} 부동산 시세 리포트</h2>
<p>지난달 주요 지역 아파트 매매 시세를 정리했습니다.</p>
<table border="1" cellpadding="8">
<tr><th>지역</th><th>평균 평당가</th><th>변동률</th></tr>
{{#each regions}}
<tr><td>{{name}}</td><td>{{avgPrice}}만</td><td>{{changeRate}}</td></tr>
{{/each}}
</table>
<p>상세 데이터: <a href="{{sheetUrl}}">Google Sheets 바로가기</a></p>
---
Step 6: Make 스케줄 설정
| 설정 항목 | 값 | |----------|-----| | 실행 주기 | 매월 1일 | | 실행 시각 | 오전 09:00 KST | | 타임존 | Asia/Seoul |
---
예상 결과
- 매월 1일 자동으로 전월 실거래가 데이터 수집
- Google Sheets에 월별 데이터 누적 및 피벗 테이블 자동 갱신
- 이메일로 지역별 평균 시세, 변동률 포함 리포트 수신
- 장기 추세 분석을 위한 히스토리 데이터 자동 축적
트러블슈팅
| 증상 | 원인 | 해결 방법 |
|------|------|-----------|
| API 응답이 비어 있음 | 해당 월 데이터가 아직 미공개 | 실거래가는 신고 후 약 1-2개월 후 공개됨. 실행일을 2일로 변경하거나 2개월 전 데이터 조회 |
| XML 파싱 오류 | 응답 인코딩 문제 | HTTP 모듈에서 응답 인코딩을 UTF-8로 명시 설정 |
| Google Sheets 인증 만료 | OAuth 토큰 갱신 실패 | Make에서 Google 연결을 재인증 |
| 이메일 발송 실패 | Gmail 일일 발송 한도 초과 | SMTP 서비스로 변경하거나 수신자 수 줄이기 |
| 거래금액 숫자 오류 | 쉼표 포함 문자열 | replace() 함수로 쉼표 제거 후 parseNumber() 적용 |
Make 블루프린트 다운로드
JSON 파일을 Make.com에 임포트하면 시나리오가 자동 생성됩니다
댓글 · 질문 (0)
로그인 후 댓글을 작성할 수 있습니다.