배경 및 목적
부동산 매각공고 데이터를 가져와 구조화하고 축적하는 과정을 통해 Make 플랫폼의 다양한 기능과 모듈을 테스트하고 학습하고자 했습니다. ( 추가로 Make 무료 플랜의 활용을 극대화하는 방법론을 연구 👨🏻💻 )
참고 자료
지난 3주차 아름_님의 대법원 파산자공매 매각정보 자동분석 및 분류하기 발표자료를 참고하여 시나리오를 완성해 보았습니다.
활용 툴
Make: 전체 워크플로우 구성 및 자동화
FireCrawl: LLM에 사용할 수 있는 스크래핑 도구
GPT: 파일 데이터 구조화
Claude: 파일 데이터 요약
구글 드라이브: 파일 저장 및 PDF, TXT 파일 추출
AWS Lambda: 파일 다운로드를 위한 프록시 서버
Airtable: 데이터 저장 및 어드민 화면 구성
실행 과정
1. 리스트 가져오기
Data Store에서 마지막 스크래핑 성공 시간 확인
마지막 스크래핑으로부터 충분한 시간이 지났는지 확인
조건 충족 시 FireCrawl을 사용하여 LLM에서 이용 가능한 마크다운 데이터 가져오기
GPT를 이용해 마크다운 데이터 구조화 (게시글 아이디, 제목 등)
게시글 아이디로 중복 체크 후 저장
스크래핑 성공 시 Data Store에 최신 스크래핑 시간 기록
💡 불필요한 리소스 사용을 줄이기 위해 다음과 같은 전략
빌트인 데이터베이스인 Data Store를 활용하여 마지막 스크래핑 성공 시간을 기록
스케줄이 계속 실행되더라도, 마지막 스크래핑으로부터 충분한 시간이 지나지 않았다면 FireCrawl (무료플랜으로 500회 Credit 제한)을 실행 ❌
이를 통해 하루에 1-2회로 스크래핑 횟수를 제한하여 비용절감 💰
2. 상세 정보 가져오기
FireCrawl을 사용하여 LLM에서 이용 가능한 마크다운 데이터 가져오기
GPT를 이용해 마크다운 데이터 구조화 (상세 정보 및 파일 다운로드 정보)
3. 파일 다운로드 및 텍스트 추출
AWS Lambda를 이용한 프록시 서버를 통해 파일 다운로드 (서버 측 TLS 문제 해결)
PDF 파일을 구글 드라이브에 저장 후 공유 링크를 에어테이블에 저장 (원본)
PDF 파일을 구글 Docs로 변환하여 텍스트 추출 후 저장
💡 AWS Lambda를 이용한 프록시 서버
대법원 파일서버 (http://file.scourt.go.kr) TLS 1.2 지원여부 확인
서버측에서 TLS 1.2를 제대로 지원하지 않아서 파일 다운로드가 클라이언트 별로 동작이 상이한듯..
penssl s_client -connect file.scourt.go.kr:443 -tls1_2 -servername file.scourt.go.kr -debug
Connecting to 203.240.75.164
CONNECTED(00000005)
write to 0x7fb9ca912c00 [0x7fb9cb817e00] (220 bytes => 220 (0xDC))
...
0000 - 15 03 03 00 02 02 28 ......(
0091635AF87F0000:error:0A000152:SSL routines:final_renegotiate:unsafe legacy renegotiation disabled:ssl/statem/extensions.c:946:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 5240 bytes and written 227 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : 0000
Session-ID: 7C370502C259C16DB60EC4796952097F268CCDF5FCBAD614F2E0E932EF10B074
Session-ID-ctx:
Master-Key:
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1729525470
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: no
---
read from 0x7fb9ca912c00 [0x7fb9ca00cc00] (8192 bytes => -1)
TLS 1.2 연결이 정상 동작되지 않아, 레거시(TLS 1.1 혹은 1.0)로 연결하려고하나 위와 같이 renegotiation 기능이 비활성화 되어있음 (unsafe legacy renegotiation disabled)
그렇다면... 아래와 같이 보안을 포기하고 낮춘 프록시 서버를 구성해서 파일 다운로드 처리
const https = require('https');
exports.handler = async (event) => {
const agent = new https.Agent({
// 보안에는 취약하나, 우회하여 파일 다운로드가 가능함
secureOptions: require('constants').SSL_OP_LEGACY_SERVER_CONNECT,
});
// 여기에 프록시 로직 구현
};
💡 OCR 과정 없이 직접 PDF 텍스트 추출하기
PDF 파일을 구글 드라이브에 업로드할 때 Google Docs 형식으로 업로드하면
변환된 Docs에서 텍스트를 쉽게 가져와서 분석에 활용할 수 있음
4. 텍스트 분석 🤖
Claude를 사용하여 파일 데이터 요약
GPT를 이용해 마크다운 데이터 구조화
요약 및 구조화된 데이터를 에어테이블에 저장
5. 각 프로세스는 독립적인 트랜잭션 ⛑️
각 프로세스의 마지막 단계에서 데이터 저장 기능을 구현
( Operation 고려시 비효율적이지만... 테스트 및 작업중 실패로 인해 잃는 Operation cost 를 비교해서 각 단계별 저장 )
이를 통해 중간에 실패하더라도 다음 스케줄 실행 시 실패한 부분부터 작업을 이어갈 수 있음
이 방식으로 데이터 처리의 안정성과 연속성을 보장
6. 에러 핸들링 및 재시도 로직 ♻️
실패하기 쉬운 외부 리소스 모듈에 대해 에러 핸들링 및 재시도 로직 (최대 3회까지 재시도)
프록시 서버 파일 다운로드 모듈
FireCrawl 스크랩 모듈
결과 및 인사이트
Make를 최대한 활용하여 복잡한 워크플로우를 구현 (Router, Filter, Set/Get Variables, Iterator, Data Store, Error Handler 등)
FireCrawl, GPT, Claude 이용해서 데이터 수집부터 분석까지 자동화된 파이프라인을 구축 (간단한 크롤링 서버를 직접 만드는 것이 시간 및 비용 효율적이긴 하지만... 노코드!! 로 구현하는데 의의)
Docs 변환을 통한 PDF 간단 텍스트 추출 방식
AWS Lambda를 이용한 프록시 서버 구현으로 TLS 관련 문제를 해결 (보안은 취약...)
비록 오프라인 모임에 직접 참석하지 못하는 아쉬움이 있었지만,
온라인으로 진행된 4주 동안 샘호트만님과 스터디 참가자분들을 통해 많이 배우고 값진 인사이트를 얻어갑니다!
기회가 된다면 나중에 서울 또는 도쿄에서 오프라인으로 뵐 수 있으면 좋겠습니다! 🗼
영상 BGM