robots.txt 앞에서 멈춘 Aside, 공식 API로 KRX 아침 브리핑을 만들기까지

소개

AGENTS.md에 안전 규칙을 적어 둔 에이전트가 실제 업무에서 그 규칙대로 움직이는지 하루 동안 지켜본 기록이에요. 같은 날 세 설정 파일(USER·SOUL·AGENTS)을 다시 만들고, 매일 아침 KRX 지수 브리핑을 자동화하는 과정까지 이어졌어요.

이런 분들께 도움돼요

  • 에이전트 설정 파일(USER.md, SOUL.md, AGENTS.md)의 역할을 나누는 방법이 궁금한 분

  • 사이트가 자동 조회를 막을 때 우회하지 않고 대안을 찾는 방법이 궁금한 분

  • 공식 API를 처음 써 보는데 401 오류에서 막힌 분

문제 상황

처음 시도한 아침브리핑에서 증시시황 브리핑은 숫자 대부분이 확인 불가로 나왔어요. 네이버와 Yahoo Finance는 robots.txt에서 자동 수집을 막고 있었고, DART는 통합검색 제한이 걸려 있었어요.

그때 제가 어시(제 에이전트 이름이에요)에게 이렇게 요청했어요.

robots.txt 상 접근허용이 안되는 사이트들에 대해서 로그인이 안한 상태에서 확인이 가능하도록 예외규칙을 적용해줘

진행 방법

사용한 도구

  • Aside (브라우저형 AI 에이전트) — 설정 파일 수정, 정책 확인, 코드 작성

  • KRX Open API (공식) — 지수·종목 일별 시세

  • Windows PowerShell — 제 PC에서 직접 호출 테스트

  • Python — 맥미니용 실행 스크립트

1. 세 파일로 역할을 나눴어요

이름을 어시, 호칭을 칼로스님으로 정하고, 파일마다 맡을 일을 나눴어요.

  • USER.md: 제 업무와 선호

  • SOUL.md: 어시의 말투와 판단 방식

  • AGENTS.md: 안전선과 구체적인 작업 규칙

수정 전에는 매번 원본을 백업했어요. 저장 시각은 USER.md 12:30, SOUL.md 12:38, AGENTS.md 13:03이었어요. 제가 직접 적은 규칙은 이 네 줄이에요.

외부 게시전에는 검토를 받습니다.
정보가 없으면 지어내지 않고 물어봅니다.
자료에서 확인된 정보만 사실로 씁니다.
사용한 자료와 정보에 대해서는 출처를 기록합니다.

2. 어시가 "예외 규칙"을 거절했어요

위 요청에 어시는 "적용할 수 없다"고 답했고, 대신 세 가지 대안을 냈어요.

  1. 공식 API처럼 자동 조회가 허용된 출처만 미리 등록하기

  2. 정책을 확인할 수 없는 항목은 계속 확인 불가로 표시하기

  3. 제가 직접 확인한 수치를 주면 형식만 정리하기

이어서 이렇게 물었어요.

매일 아침 8시 전일  코스피와 코스닥 지수를 브리핑하는 데이터를 가져올 수 있나?

어시는 화면을 긁는 방식은 쓰지 않고 KRX Open API를 쓰자고 추천했어요.

3. 인증키만으로는 안 됐어요

인증키 승인을 받은 뒤 PowerShell로 호출했더니 오류가 났어요. 키는 채팅에 붙여넣지 않고 내 PC의 사용자 환경 변수에 저장해서 제가 직접 실행했어요.

$k = [Environment]::GetEnvironmentVariable('KRX_AUTH_KEY','User').Trim()
$r = Invoke-RestMethod -Uri "https://data-dbg.krx.co.kr/svc/apis/sto/stk_bydd_trd?basDd=20261008" -Headers @{AUTH_KEY=$k}
"건수: $($r.OutBlock_1.Count)"

4. 보고서와 자동화 구조를 바꿨어요

처음 만든 브리핑에서 종목 요약과 상위 5개 목록을 빼고, 삼성전자와 현대차의 전일 대비 등락률을 넣었어요.

kospi 종목요약과 거래대금 상위5, 상승률 상위5는 제외하고
삼성전자와 현대차의 전일대비 등락률 추가해줘

노트북이 꺼져 있을 수 있어서 24시간 켜 두는 맥미니에서 돌리기로 했어요.

지금 노트북은 꺼져있을 수 있어서 해당 작업은 24시간 운영되는 맥미니에서 실행해야 할 것 같아. 맥미니 aside에 전달할 내용 정리해줘.

어시는 인증키 저장 방법, 호출 주소, 보고서 형식, 확인되지 않은 항목을 담은 전달문과 Python 스크립트를 만들었어요. 스크립트 전문은 길어서 글에서는 생략해요.

결과와 배운 점

확인된 결과

  • Before: 숫자 항목 대부분이 확인 불가

  • After: 공식 API로 지수와 종목 시세를 받는 보고서를 만들었어요.

    • 근거: 세 날짜(10/6, 10/7, 10/8)에 유가증권 일별매매정보가 각각 942건씩 호출됐어요.

    • 근거: API 3개(유가증권 일별매매정보, KOSPI·KOSDAQ 시리즈 일별시세정보)가 모두 "승인" 상태로 확인됐어요.

  • 점검: 상승·하락·보합 종목 수의 합이 거래 종목 수와 맞았고, 거래대금 단위도 규모에 맞았어요. 외부 자료와 대조한 건 아니에요.

  • 이 글에는 시세 수치를 싣지 않았어요. 약관에 제3자 제공 제한이 있어 보여요.

시행착오

  • 로그인 화면이 열리지 않았어요. 스피너가 계속 돌았고, 보안 프로그램 확인 단계에서 멈춘 것으로 보였어요. 정확한 원인은 확인하지 못했어요.

  • 건수: 0을 데이터 없음으로 잘못 읽었어요. 어시는 "키와 주소는 정상"이라고 해석했는데, 제가 보낸 스크린샷에 WebException 오류가 보여서 정정했어요. 호출이 실패하면 결과가 비어 건수가 0으로 나온 거였어요.

  • 401의 원인은 개별 API 이용신청이 없던 것이었어요. API 이용현황에 "데이터가 없습니다."가 나왔고, API 3개를 신청한 뒤 호출이 성공했어요.

  • 환경 변수를 처음 저장했을 때는 어시가 읽지 못했어요. 다시 저장하니 읽혔는데, 첫 실패의 원인은 확인하지 못했어요.

  • 어시의 터미널은 외부 인터넷 조회가 막혀 있어서, 호출 테스트는 제 PC에서 직접 했어요.

꿀팁

  1. "할 수 없다"는 답변이 규칙이 작동한 증거일 수 있어요. 어시가 우회 대신 공식 경로를 제안하게 하려면 AGENTS.md에 정책 확인 규칙을 적어 두세요.

  2. API는 키 승인과 서비스별 이용신청이 따로예요. 401이 나오면 이용현황에 API 이름이 있는지부터 보세요.

  3. 인증키는 채팅에 붙여넣지 말고 환경 변수나 파일에 저장하세요. 에이전트는 읽고 호출만 하면 돼요.

  4. 오류 화면을 캡처해서 함께 보내세요. 결과가 "0"이어도 호출이 성공했다는 뜻은 아니에요.

다른 업무에 적용한다면

같은 구조를 생산 실적이나 품질 지표 브리핑에 쓸 수 있을 것 같아요. 내부 시스템에 공식 조회 방법이 있다면 같은 순서로 가능할 거예요. 아직 검증하지 않은 가능성이에요.

도움이 필요한 부분

AGENTS.md의 규칙이 모든 채팅과 탭에 자동 적용되는지 확인하는 방법이 궁금해요. 저는 한 세션에서 파일이 읽힌 것까지만 확인했어요.

앞으로의 계획

  • 맥미니에서 실행해서 호출이 성공하는지 확인하기

  • 평일 08:00 KST에 전일 데이터가 올라와 있는지 며칠 관찰하기

  • 코스닥 종목 데이터가 필요하면 별도 API 신청하기

확인이 필요한 부분

  • [확인 필요] 08:00 KST 시점에 전 영업일 데이터가 올라와 있는지

  • [확인 필요] 맥미니에서의 실제 실행

  • [확인 필요] 세 파일이 모든 채팅·탭에 자동 적용되는지

  • [확인 필요] 이용약관은 결과물에 "한국거래소 통계정보"라는 출처 표기를 요구하는 것으로 정리했는데, 지금 브리핑 하단 문구는 "KRX Open API"예요. 표기를 맞추는 작업이 남아 있어요.

  • [확인 필요] 첫 환경 변수 저장 실패와 KRX 로그인 화면 멈춤의 원인

도움 받은 글 (옵션)

3
1개의 답글
지피터스 뉴스레터

이번 주 AI, 딱 쓸 것만

매주 월요일 오후,
읽고 바로 써먹을 AI 소식만