나라장터(조달청 G2B) 입찰·발주계획·사전규격공개 등 공고를 키워드로 검색하고, 신규 공고만 골라 텔레그램으로 알림 받는 자동화를 만들어봤습니다. 회사 동료의 요청으로 시작했고, 요즘 공부 중인 n8n으로 흐름을 구성했습니다.

처음에는 나라장터 크롤링을 n8n의 HTTP 노드로 시도했는데 접속이 차단되어, 크롤링만 별도 프로그램으로 구현했습니다. 크롤링 프로그램을 도커 컨테이너로 띄운 뒤, n8n에서 HTTP로 해당 컨테이너를 호출해 결과를 받고, 파싱한 뒤 신규 건만 DB에 저장하고 텔레그램으로 보내도록 했습니다.

전부 프로그램으로만 구현해도 되지만, n8n을 쓰면 실행 이력을 UI로 확인할 수 있고, 스케줄·키워드·게시판 종류 같은 설정도 n8n 화면에서 바꿀 수 있어서 운영이 편합니다.

워크플로우 구조

나라장터 공고 검색 알림 자동화 워크플로우: 3시간마다 키워드별 크롤링, DB 중복 제거, 텔레그램 알림 전송 구조도

나라장터 공고 검색·알림 자동화 워크플로우 전체 흐름

위 이미지는 나라장터 공고 검색·알림 자동화 워크플로우 전체 흐름입니다.

  1. 3시간마다 – 스케줄 트리거로 3시간마다 실행됩니다.
  2. 기능×키워드 데이터 생성 – 검색할 게시판(입찰, 발주계획, 사전규격공개 등)과 키워드 조합을 만듭니다.
  3. 한 건씩 처리 – 위 조합을 순서대로 처리하는 루프입니다.
  4. 크롤링 – 외부 프로그램을 호출해 나라장터에서 공고 데이터를 수집합니다.
  5. 응답 파싱 및 수집 – 수집된 응답을 파싱해 필요한 정보만 뽑아 모읍니다.
  6. 데이터 존재 여부 – 데이터가 있을 때만 다음 단계로 진행합니다. 없으면 5초 대기 후 다음 조합으로 넘어갑니다.
  7. 공고별 분리 – 수집된 공고 목록을 한 건씩 나눕니다.
  8. DB에서 같은 데이터 검색 – n8n Data Table에서 이미 저장된 공고인지 조회합니다.
  9. 검색된 데이터 존재 여부 – 조회 결과가 없을 때만(신규 공고일 때만) 다음 단계로 통과시킵니다.
  10. 신규공고 DB 저장 – 신규 공고만 Data Table에 저장합니다.
  11. MessageRouter로 전송 – 저장된 신규 공고를 MessageRouter API(직접 개발한 메시지 중계 서비스)를 통해 텔레그램으로 전송합니다.

텔레그램 알림 예시

나라장터 공고 텔레그램 알림 수신 화면

정리

나라장터(G2B) 입찰·발주계획·사전규격 공고를 키워드로 검색해 텔레그램 알림 받는 자동화입니다. n8n HTTP 노드로는 나라장터 크롤링이 잘 막혀서, 크롤링은 별도 프로그램으로 하고 n8n은 스케줄·조합 생성·DB 저장·알림 전송 같은 오케스트레이션만 맡기니 조합이 잘 맞습니다. 실행 이력 확인이나 키워드·게시판 설정 변경을 UI에서 바로 할 수 있어서 운영하기도 편합니다.