매일 아침 주식 브리핑을 AI 에이전트가 자동으로 — 예약 루틴 만든 이야기

아침마다 환율 보고, 지수 보고, 관심 종목 훑고, 밤새 뜬 공시랑 뉴스까지 챙기는 거 은근히 번거롭잖아요. 저는 이 “매일 똑같이 반복하는 일”을 AI 에이전트 예약 루틴으로 넘겨버렸어요. 정해둔 시각이 되면 에이전트가 알아서 데이터를 모아 채팅에 상세 브리핑을 띄우고, 핵심 요약은 카카오톡으로 쏴줍니다. 오늘은 그걸 어떻게 짰는지, 그리고 예약 루틴을 만들 때 꼭 알아야 할 설계 포인트를 정리할게요.

예약 루틴: 스케줄러가 정해진 시각에 에이전트를 자동으로 실행하는 것. 사람이 매번 시키지 않아도 같은 작업이 반복된다.

무엇을 만들었나 — 흩어진 데이터를 한 곳에

핵심 아이디어는 단순해요. 아침 브리핑에 필요한 정보가 여러 군데 흩어져 있으니, 그걸 한 번에 모아 한 장으로 정리하는 거예요. 제가 모으기로 한 건 환율, 주요 지수와 관심 종목의 시세, 전날 올라온 기업 공시, 그리고 관련 뉴스였습니다. 사람이 하면 탭 대여섯 개를 오가야 할 일을, 에이전트가 한 번에 처리하게 만드는 게 목표였어요.

어떻게 짰나 — 도구를 조합한다

에이전트 혼자서는 실시간 데이터를 모릅니다. 그래서 도구(MCP)를 붙여줬어요.

MCP: AI 에이전트에 외부 도구·데이터를 연결하는 규약. 시세 조회·공시 검색 같은 걸 에이전트가 함수처럼 호출하게 해준다.

제가 지시서에 적은 건 “어떤 도구로 무엇을 가져올지”의 목록이었어요. 시세 조회 도구로는 환율과 지수·종목의 현재가·등락률을, 공시 조회 도구로는 최근 며칠간의 신규 공시를, 뉴스 검색 도구로는 관련 기사 최신 몇 건을 가져오게 했죠. 여기서 중요한 건, 제가 결과를 어떻게 가공할지까지 지시서에 못박았다는 거예요 — 채팅엔 지수·종목을 오름(▲)/내림(▼) 표시와 함께 목록으로, 공시와 뉴스는 상위 몇 건만. 에이전트가 “알아서 잘” 하길 기대하지 않고, 형식을 정해준 겁니다.

작은 함정도 하나 있었어요. 시세 도구가 값을 JSON 문자열로 감싸서 돌려줄 때가 있어서, 받은 걸 한 번 풀어(파싱)줘야 했습니다. 이런 건 실제로 돌려보기 전엔 모르는 부분이라, 지시서에 “결과가 문자열이면 파싱하라”를 미리 적어뒀어요.

실패해도 멈추지 않게 — 부분 실패 허용

자동 루틴에서 제일 신경 쓴 건 하나가 실패해도 전체는 멈추지 않게 만드는 것이었어요. 뉴스 검색이 잠깐 안 되거나 공시 서버가 느릴 수 있잖아요. 그때 브리핑 전체가 날아가면 곤란하죠.

그래서 지시서에 규칙을 박았습니다 — 어떤 데이터 수집이 실패하면 그 자리엔 “데이터 없음”이라고 표기하고 나머지는 그대로 진행하라고요. 완벽한 브리핑 하나보다, 좀 비어도 매일 오는 브리핑이 낫다는 판단이었어요. 자동화는 부분 실패를 견디게 만들어야 오래 굴러갑니다.

카카오톡 요약 — 제약이 요약을 강제한다

채팅 상세 브리핑과 별개로, 핵심만 카카오톡으로 200자 이내 전송하게 했어요. 처음엔 글자 제한이 불편해 보였는데, 써보니 오히려 좋더라고요. 200자 안에 넣으려면 정말 중요한 것만 골라야 하거든요. 제약이 요약의 질을 강제한 셈이에요. 아침에 폰 알림으로 이 한 줄만 봐도 “오늘 분위기”가 잡히게요.

제일 중요한 설계 — 기억 없이도 완결되게

이게 예약 루틴을 만들며 가장 크게 배운 점이에요. 한번은 에이전트가 세션 한도에 걸려 작업 도중 끊겼습니다. 그런데 “이어서 하라”고 하니 처음부터 전 과정을 다시 실행해서 멀쩡하게 브리핑을 완성했어요. 어떻게 그게 가능했을까요?

비결은 이 루틴을 이전 대화 기억에 의존하지 않게 짰다는 데 있어요. 지시서 하나만 보면 처음부터 끝까지 스스로 완결되도록요.

무상태(stateless) 설계: “지금까지 뭘 했는지”에 대한 기억 없이, 매번 지시만으로 전체를 처음부터 완수하게 만드는 것.

예약 루틴은 언제 끊길지, 언제 재시도될지 알 수 없어요. 만약 “아까 3번까지 했으니 4번부터”처럼 중간 상태를 기억해야만 이어갈 수 있게 짜면, 한 번 끊기는 순간 망가집니다. 반대로 “매번 1번부터 다 한다”로 만들면, 끊겨도 다시 돌리면 그만이에요. 이게 자동 루틴을 튼튼하게 만드는 핵심이었습니다.

데이터는 실시간이 아니다 — 라벨링으로 정직하게

한 가지 더. 제가 쓴 시세는 거래소 실시간이 아니라 약간 지연된 값이에요. 그래서 가끔 일간 등락으로 보기엔 과한 숫자가 튀기도 합니다. 이때 에이전트가 “이건 이상하니까 내가 고쳐서 보여줄까?” 하고 판단에 개입하는 건 위험해요. 잘못 만지면 데이터를 왜곡하니까요.

그래서 규칙은 간단했어요. 수집한 값은 그대로 표기하고, 지연 시세라는 한계만 각주로 밝힌다 — 이게 전부였습니다. 에이전트는 데이터를 해석·수정하지 않고 있는 그대로 전달하고, 그 한계(지연)만 정직하게 라벨링합니다. 자동 브리핑에서 신뢰는 “얼마나 똑똑하게 해석하느냐”가 아니라 “값을 왜곡하지 않느냐”에서 나오더라고요.

그래서 뭘 하면 되나

반복되는 아침 루틴을 AI 에이전트로 자동화하고 싶다면, 이 표대로 챙겨보세요.

설계 포인트어떻게
흩어진 데이터를 한 번에탭 순례 제거필요한 소스별로 도구(MCP) 지정
출력 형식을 못박기“알아서”에 기대지 않음목록·상위 N건·표기법까지 지시서에
부분 실패 허용하나 실패로 전체 중단 방지실패 자리엔 “데이터 없음” 후 진행
무상태로 완결끊겨도 재실행으로 회복이전 기억 없이 지시만으로 전 과정
데이터 한계 라벨링왜곡 방지값은 그대로, 지연 등 한계는 각주

한 문장 요약: 반복 작업을 AI 예약 루틴으로 넘길 땐 — 출력 형식을 못박고, 부분 실패를 견디게 하고, 무엇보다 이전 기억 없이 지시만으로 매번 완결되게(무상태) 짜라. 그래야 끊겨도 다시 돌리면 되는 튼튼한 루틴이 된다.

돌아보면 이 작업의 본체는 “주식”이 아니라 반복을 어떻게 안전하게 위임하나였어요. 매일 똑같이 해야 하는 일일수록 자동화의 값어치가 큰데, 그만큼 끊김·실패에 강하게 만들어둬야 실제로 매일 굴러갑니다. 저는 이걸 아침 주식 브리핑으로 시작했지만, 같은 틀이면 날씨·환율·할 일 알림 뭐든 얹을 수 있겠더라고요.


댓글 남기기