천 리길도 한 걸음 부터. 뉴스 브리핑을 투자 관점+DART 공시데이터까지 붙여본 사례

소개

매일 받은편지함이 뉴스레터·광고·자동알림으로 뒤섞여 있어서, 정작 챙겨야 할 정보를 놓치는 게 문제의 시작이었습니다. 그래서 두 가지를 목표로 잡았습니다. 첫째는 Gmail을 자동 분류 체계로 정리하는 것, 둘째는 제가 관심 있는 전기차·자동차 산업 뉴스를 매일 아침 메일로 자동 브리핑 받는 것이었습니다. 단순 뉴스 모음에서 시작해, 최종적으로는 투자 관점(뉴스 + DART 전자공시 연동)까지 확장하는 걸 목표로 발전시켰습니다.

저는 현업이 자동차 산업에 국한되어 있습니다. 그런데 어느 순간 "이 산업을 투자 관점으로 바라보면 어떨까?" 하는 호기심이 생겼고, 매일 보던 자동차·전기차 뉴스를 단순히 읽는 데서 그치지 않고 투자 시그널과 기업 공시까지 자동으로 연결해 보는 브리핑을 직접 만들어보게 되었습니다. 익숙한 산업 지식을 새로운 렌즈(투자)로 다시 보는 시도였습니다.

진행 방법

Claude와 대화하면서 Gmail 정리 → 자동 브리핑 설계 → 코드 구현 → 디버깅까지 단계적으로 진행했습니다. 실제 메일 분류는 Claude의 Gmail 연동 기능으로, 자동 발송은 Google Apps Script + 네이버 뉴스 검색 API + DART 전자공시 OpenAPI로 구현했습니다.

1단계 — Gmail 자동 분류 체계

사용한 프롬프트:

제 이메일 경로를 확인하여, 메일 분류를 진행해주세요. 
프로세스화 해서 제가 주기적으로 정리할 수 있으면 좋겠습니다.

받은편지함을 분석해 7개 라벨(EV·자동차 / 개발·도구 / 뉴스레터 / 보안·인증 / 프로모션·광고 / SNS / 기회·제안)로 분류하고, 광고·OTP는 자동 보관·정리했습니다. 이어서 Gmail 필터 가져오기(XML) 파일을 만들어 신규 메일이 자동 분류되도록 했습니다.

2단계 — EV 뉴스 자동 브리핑 (네이버 API)

사용한 프롬프트:

무료버전인것까지는 좋은데, 조금 더 양질의 컨텐츠로 확장하고싶습니다. 
구글말고 네이버뉴스에서라던지 한국 친화적인 매체에서는 연결 가능하게해주세요

Google 뉴스 RSS 무료 버전을 네이버 뉴스 검색 API로 교체해, 국내 매체 커버리지를 크게 높였습니다. 섹션을 10개로 확장하고, 신문 정식 게재 기사 우선·중복 제거·HTML 이메일 디자인까지 다듬었습니다.

3단계 — 투자 브리핑으로 확장 (DART 공시 연동)

사용한 프롬프트:

이 구조를 산업을 바꿔보려합니다. 
투자로 바라본다면 어떻게 브리핑 구조를 만들어볼 수 있나요?
DART공시 연동은 API를 구해야하는거라면 프로세스도 알려주세요
키발급 완료했습니다. 종목명은 기사를 기준으로 다룰 수 있도록 해보세요

분류 축을 "주제"에서 "투자 시그널"(실적·수주·정책·M&A·리스크·목표가·거시)로 바꾸고, 기사 제목에서 상장사를 자동 탐지 → 해당 종목의 DART 공시를 조회하는 구조로 발전시켰습니다. 공시(사실) → 뉴스(맥락) 순서로 배치했습니다.

최종 핵심 코드(투자 브리핑 v8, 일부 발췌):

javascript

// 기사 제목에서 상장사명 탐지 → [{name, corp_code, count}] (빈도 내림차순)
function detectCompanies_(articles, corpMap) {
  var names = corpMap.names;
  var counts = {};
  articles.forEach(function (a) {
    var t = a.title;
    for (var i = 0; i < names.length; i++) {
      var nm = names[i].n;
      if (nm.length < CONFIG.MIN_NAME_LEN) continue;
      if (t.indexOf(nm) !== -1) {
        if (!counts[nm]) counts[nm] = { name: nm, corp_code: names[i].c, count: 0 };
        counts[nm].count++;
      }
    }
  });
  var arr = Object.keys(counts).map(function (k) { return counts[k]; });
  arr.sort(function (a, b) { return (b.count - a.count) || (b.name.length - a.name.length); });
  return arr;
}

(여기에 받아보신 브리핑 메일 캡처 또는 Apps Script 실행 로그 화면을 넣으시면 좋습니다.)

결과와 배운 점

매일 아침 정해진 시각에 자동으로 정리된 뉴스·공시 브리핑을 받는 파이프라인을 완성했고, Gmail도 자동 분류되도록 만들었습니다.

배운 점과 꿀팁:

  • API 키는 코드에 하드코딩하지 말고 Apps Script의 Script Properties에 저장하는 게 안전합니다. 코드를 공유해도 키가 노출되지 않습니다.

  • 무료 API도 잘 조합하면 충분히 강력합니다. 네이버 뉴스 검색 API(일 25,000회)와 DART OpenAPI(일 20,000회) 모두 무료인데 개인 브리핑 용도엔 차고 넘칩니다.

시행착오:

  • 스마트 따옴표(곡선 따옴표)가 섞여서 Apps Script 문법 오류가 났습니다. 코드 안에서는 정규식·특수문자를 유니코드 이스케이프로 처리하니 해결됐습니다.

  • DART의 기업 고유번호 파일을 받을 때, 서버가 ZIP을 application/zip이 아닌 다른 Content-Type으로 보내서 압축 해제가 실패했습니다. Content-Type 헤더 대신 파일의 첫 바이트(PK 시그니처)로 ZIP을 판별하도록 바꿔서 해결했습니다. (모든 ZIP은 PK로 시작한다는 걸 알게 됐습니다.)

한국어가 포함된 한국 웹사이트의 스크린샷
한국어 웹사이트 스크린샷

도움이 필요한 부분 / 앞으로의 계획:

  • 기사 제목에서 종목명을 부분 문자열로 잡다 보니 짧은 종목명(예: "동양", "한화")의 오탐이 남아 있어, 제외 목록이나 더 정교한 매칭 방식을 보완할 계획입니다.

  • 다음 단계로 DART 재무정보 API를 연동해 단순 공시 알림을 넘어 실적 추세까지 함께 보여주는 방향을 고민 중입니다.

  • 조금 더 손댈 부분이 많지만, 자동화를 통해, 시황을 손쉽게 다뤄볼 수 있다는걸 스스로 구현해 본게 놀라운 경험이되었습니다. 각종 API와 친해져야겠습니다.

    도움 받은 사이트

이전에 제가 올린 사례글도 한 번 봐주세요. 감사합니다.

https://www.gpters.org/wealth/post/improve-create-your-own-UGr1NTPvBdq3Wob

3
3개의 답글

뉴스레터 무료 구독