본문으로 이동
DLDevelopment Lab책을 읽고, 직접 만드는 실험실
9국내 증시와 궁금한 종목을 한눈에 봅니다10이 회사는 최근 무엇을 공시했을까?11주가부터 공시까지, AI가 한 번에 브리핑합니다12더 빠르고 비용은 적게 드는 서비스로 개선합니다
PART 3 · 내가 고른 국내 주식, AI가 브리핑합니다11장

주가부터 공시까지, AI가 한 번에 브리핑합니다

확인한 사실과 근거 안에서 생성한 AI 브리핑을 검증해 공개합니다.

이어갈 프로젝트 · ai-stock-briefing

9~10장의 시세·차트·공시·원문 경로가 작동합니다.

커맨드준비막혔을 때완료 확인소스·검증
이번 장의 준비와 서비스

필요한 도구 · 기존 Next.js · Gemini 연동 라이브러리

이미 준비한 계정과 기능은 그대로 이어갑니다.

gemini 준비 안내 →vercel 준비 안내 →github 준비 안내 →data-go-kr 준비 안내 →opendart 준비 안내 →

AI에게 근거 없는 조사·투자 권유·인과 추정을 맡기거나 키를 클라이언트에 넣지 않습니다.

순서대로 입력하는 커맨드

현재 단계와 입력 위치를 확인한 뒤 하나씩 복사하세요.

01시작 전 확인

Claude Code·Codex에 입력튜터 요청

현재 장을 시작하거나 다시 이어갈 때

먼저 확인 · 현재 장과 실제 프로젝트를 확인. 기존에 확인한 맥락은 재사용.

11장 시작해.

02Gemini를 사용할 준비를 합니다

Claude Code·Codex에 입력실습

Gemini 입력 위치 준비

먼저 확인 · 독자가 실제 Gemini 키를 발급받았는지 확인. 값은 받지 않음.

Gemini API Key를 발급받았어.

실제 키가 코드나 Git, 사용자의 브라우저에 보이지 않게 준비해줘.

실제 값은 내가 직접 입력할게. 어디에 입력하면 되는지만 알려줘.

03Gemini를 사용할 준비를 합니다

Claude Code·Codex에 입력실습

키를 직접 입력한 뒤 노출 검사

먼저 확인 · 앞에서 안내한 입력 위치에 독자가 키를 저장했는지 확인.

방금 입력한 Gemini API Key가 코드나 Git에 들어가지 않았는지 확인해줘.

사용자가 웹사이트를 열었을 때도 키를 볼 수 없게 되어 있는지 확인해줘.

검사하면서 실제 키 값은 출력하지 마.

04Gemini는 우리 서버를 통해 부릅니다

Claude Code·Codex에 입력실습

브리핑 서버 호출 구현

먼저 확인 · 키 입력·노출 확인과 현재 모델 지원·계정 한도 확인.

AI 브리핑은 사용자가 버튼을 눌렀을 때만 만들게 해줘.

Gemini에는 우리가 금융위원회와 OpenDART에서 확인한 자료만 제공해줘.

인터넷에서 다른 내용을 추가로 찾아서 섞지 않게 해줘.

AI 브리핑에는 모델 ID `gemini-3.5-flash-lite`를 사용해줘.
모델은 나중에 바꾸기 쉽도록 한곳에서 관리해줘.

그 모델을 사용할 수 없으면
다른 모델로 바꾸지 말고 먼저 알려줘.

05AI에게 넘기기 전에, 자료부터 정리합니다

Claude Code·Codex에 입력실습

AI에 전달할 근거 준비

먼저 확인 · 9~10장 시장·종목·차트·공시가 실제로 작동하는지 확인.

지금까지 만든 시장·종목·차트·공시 기능을 이용해서 AI 브리핑에 필요한
자료를 준비해줘.

주식시세의 최근 거래일을 찾으려고 날짜를 하루씩 바꿔 반복 호출하지 마.
최근 기간을 한 번에 조회하고, 그 응답에서 이 종목의 최신 시세와 최근 1년
가격 흐름을 함께 만들어줘.

날짜와 출처를 함께 넣고, 가격 계산은 프로그램이 직접 하게 해줘.

Gemini에게 주지 않은 사실을 아는 것처럼 쓰게 하지 마.

06확인된 사실과 AI 설명을 나눕니다

Claude Code·Codex에 입력실습

사실과 AI 설명 화면 구성

먼저 확인 · 현재 근거 묶음과 브리핑 응답 확인.

프로그램이 확인한 사실과 AI가 정리한 설명을 화면에서 분리해줘.

정확한 숫자는 Gemini에게 계산시키지 말고 프로그램이 직접 계산해서 보여줘.

프로그램이 확인한 사실을 먼저 두고, 그 아래에 AI가 근거를 읽고 정리한
설명을 둬.

AI 설명에는 한 문장 제목과 핵심 브리핑을 먼저 두고, 그 아래에는 시장과
종목 비교, 최근 가격 흐름, 최근 1년간 회사 공시, 현재 근거만으로 알 수
없는 것을 구분해서 보여줘.

AI가 만든 각 항목에는 직접 근거가 된 ID를 연결해줘. 허용되지 않은 근거
ID, 근거에 없는 숫자, 정해진 형식 밖의 필드가 있으면 화면에 표시하지 마.

시장과 종목을 비교할 때는 숫자만 나열하지 말고, 실제 계산 결과를 이용해
종목이 시장보다 어느 정도 큰 폭으로 오르거나 내렸는지 바로 이해할 수 있게 설명해줘.
같은 기준일의 등락률만 비교하고, 기준일이 다르면 날짜 차이를 알리고 비교를 보류해줘.

최근 가격 흐름에는 모든 숫자를 넣지 말고 현재 가격과 등락률, 최근 1년의 시작 가격과
현재 가격 및 변화율, 같은 기간 최고가와 최저가처럼 의미 있는 숫자를 우선해줘.

OpenDART 공식 유형 A(정기공시)·B(주요사항보고)·I(거래소공시)와 접수일을
기준으로 대표 공시를 고르고, 날짜와
종류를 빠르게 읽을 수 있게 별도 표시해줘. DART 원문으로 가는 길과 사용한
모델, 생성 시각, 출처도 유지해줘.

Gemini가 새로운 숫자나 사실을 만들지 않게 하고, 공시와 가격 움직임의 인과관계도
근거 없이 만들지 마.

07알 수 없는 것은 모른다고 말하게 합니다

Claude Code·Codex에 입력실습

알 수 없는 것과 금지 범위 구현

먼저 확인 · 브리핑 화면과 제공 근거 확인.

브리핑에 '현재 근거만으로 알 수 없는 것' 영역을 만들어줘.

공시와 가격 움직임의 인과관계, 미래 가격, 목표주가, 매수·매도 판단은 만들지 마.

공시 제목만으로 공시 내용 전체를 판단하지 말고, 필요한 경우 DART 원문을 확인할 수 있게 해줘.

08AI가 만든 답도 그대로 믿지 않습니다

Claude Code·Codex에 입력실습

모델 출력 검증 구현

먼저 확인 · 모델에 실제 전달하는 자료와 문장 확인.

Gemini가 만든 결과를 바로 화면에 보여주지 말고 한 번 더 확인해줘.

우리가 주지 않은 숫자나 사실, 투자 추천, 목표주가, 미래 예측, 확인되지
않은 인과관계가 들어가면 결과를 보여주지 마.

숫자는 Gemini에게 실제로 제공한 자료와 문장을 기준으로 확인해줘.
제공한 표현을 근거 없는 숫자로 잘못 판단해 정상 답변을 막지 않게 해줘.

문장이 매번 똑같은지는 확인하지 말고, 우리가 정한 조건을 지켰는지
확인해줘.

09AI가 실패해도 주가와 공시는 그대로 봅니다

Claude Code·Codex에 입력실습

AI 실패 격리 구현

먼저 확인 · 기존 시장·검색·차트·공시와 브리핑 경계 확인.

Gemini가 실패해도 기존 시장·검색·종목·차트·공시 화면은 계속 사용할 수
있게 해줘.

너무 오래 응답이 없으면 계속 기다리지 말고 브리핑 영역에만 안내해줘.

오류 화면에도 API Key 같은 비밀값이 나오지 않게 해줘. 영어 오류 문구를 그대로
내보내지 말고 사람이 읽는 말로 알려줘.

인증이나 모델 설정 오류는 설정을 확인해야 한다고 알리고 생성 버튼을 막아줘.
일시적인 오류는 잠시 뒤 다시 시도할 수 있게 해줘.

10문장보다 지켜야 할 조건을 확인합니다

Claude Code·Codex에 입력실습

로컬 실제 브리핑과 회귀 확인

먼저 확인 · 앞선 브리핑 구현 결과와 필요한 실제 연결 확인.

지금까지 만든 AI 브리핑 기능을 실제 SK하이닉스로 확인해줘.

프로그램이 계산한 숫자와 실제 공시가 맞는지 확인하고, Gemini가 우리가
금지한 내용을 만들지 않았는지 검사해줘.

이번 장에서 추가한 브리핑 기능은 Test로 남겨줘. 프로그램이 계산한 숫자,
근거 밖 내용을 걸러내는 검사, Gemini가 실패했을 때의 안내가 다음에도
동작하는지 자동으로 확인하게 해줘.

프로그램이 확인한 사실 → AI 설명의 핵심 브리핑 → 시장과 종목 비교 → 최근
가격 흐름 → 최근 1년간 회사 공시 → 현재 근거만으로 알 수 없는 것 → 대표
공시 → 출처 순서가 실제 화면에서 자연스럽게 읽히는지도 확인해줘.

구조화된 각 항목의 근거 ID와 숫자가 실제 근거에 있는지, A·B·I 대표 공시와
사용 모델·출처가 표시되는지, 허용되지 않은 필드와 근거 밖 내용이
거부되는지도 Test로 남겨줘.

DART 원문 확인 경로가 유지되는지, Gemini 실패 시 기존 주가·차트·공시 기능이
계속 동작하는지, Secret이 노출되지 않는지도 확인해줘.

기존 Test와 Regression을 실행하고 컴퓨터와 휴대전화 크기의 실제 화면에서도
직접 사용해본 뒤 문제가 없을 때 완료했다고 알려줘.

11완성한 서비스를 인터넷에 공개합니다

Claude Code·Codex에 입력실습

Vercel 입력 전에 변수 이름 조사

먼저 확인 · 현재 저장소 전송과 Vercel 프로젝트 Import 상태 확인. 입력할 키 값은 요구하지 않음.

Vercel에 키를 넣기 전에 현재 ai-stock-briefing 서버 코드를 조사해줘.
금융위원회·OpenDART·Gemini 각각에 대해 실제로 읽는 환경변수 이름과
그 이름을 읽는 파일·위치를 표로 알려줘. SDK가 자동으로 읽는 이름도 확인해줘.
.env나 인증 파일의 실제 값은 출력하지 말고, 코드를 실행하거나 바꾸지도 마.
예제와 이름이 다르더라도 바로 바꾸지 말고 현재 코드에서 쓰는 이름을 기준으로 해.
어느 서비스인지 확정할 수 없는 이름은 추측하지 말고 따로 표시해줘.

12실제 주소에서 처음부터 다시 확인합니다

Claude Code·Codex에 입력실습

Production 전체 흐름 검증

먼저 확인 · 독자가 세 서비스 키를 Production에 등록하고 배포가 끝났는지 확인.

Vercel Production 주소에서 지금까지 만든 전체 흐름을 실제 브라우저에서
처음부터 실행해줘.

시장 화면 → 종목 검색 → SK하이닉스 상세 → 최근 1년 차트 → 최근 공시 →
전체 공시 → OpenDART 공식 유형 필터 → 차트 공시 마커 → DART 원문 → AI
브리핑 → 브리핑의 근거와 출처 확인 순서로 검사해줘.

기존 Test와 Secret 검사, lint와 production build도 다시 실행해줘.

기존에 잘되던 기능까지 문제가 없을 때 완료했다고 알려줘.

13실제 주소에서 처음부터 다시 확인합니다

Claude Code·Codex에 입력실습

검증한 변경을 기록하고 전송

먼저 확인 · 대상 GitHub 저장소와 현재 변경·운영 검증 확인. 이 정본 실행 요청의 전송 범위 확인.

이번 작업을 마무리하고 GitHub 저장소에도 보내줘.
14. 나중에 모델을 교체해야 한다면 선택·문제 발생 시
Claude Code·Codex에 입력선택·문제 발생 시

현재 모델 미지원·한도 변경으로 교체가 필요할 때만

먼저 확인 · 현재 모델·계정 조건 확인. 새 모델 선택과 유료 전환 판단은 독자에게 남김.

현재 모델의 공식 지원 여부와 내 계정의 사용 가능 모델·사용량·한도를 확인해줘.

모델 교체가 필요하면 사용할 수 있는 저비용 모델과 비용 조건을 알려줘.
내가 선택하면 이 프로젝트의 모델 설정을 바꾸고, 실제 브리핑이 정상적으로
생성되며 화면에 사용 모델이 맞게 표시되는지 확인해줘.

기존 브리핑의 근거와 출처, 품질 기준은 유지하고 관련 Test도 확인해줘.
유료 전환이 필요하면 비용을 보여주고 내 판단을 기다려줘.

15이 장을 마쳤는지 확인합니다

Claude Code·Codex에 입력튜터 요청

이번 장 완료 조건을 확인할 때

먼저 확인 · 현재 장과 실제 프로젝트를 확인. 기존에 확인한 맥락은 재사용.

장 완료 확인해줘.
이 장에서 막혔을 때
디버깅 → 내 정상 기록으로 복구 → 장별 Source로 재시작

Git 명령을 외우거나 직접 입력할 필요는 없습니다. 아래 요청문을 그대로 붙여넣으면 Claude Code가 확인하고 처리합니다.

1. 디버깅 --- 먼저 무엇이 어긋났는지 그대로 말하고 고쳐봅니다. 대부분 여기서 해결됩니다.

지금 작업이 책과 다르게 진행됐어.
현재 상태와 화면에 나온 문제를 확인하고 원인을 찾아서 고쳐줘.

브리핑만 만들어지지 않을 때는 API Key 문제와 호출 한도, 일시적인 오류를 갈라야 합니다.

AI 브리핑만 만들어지지 않아.
Gemini가 돌려준 상태 코드와 오류 내용을 확인해서 API Key 문제인지,
호출 한도인지, 일시적인 오류인지 구분해줘.
실제 키 값은 출력하지 마.

브리핑에 이상한 숫자가 보이면 계산에 넣은 자료부터 확인합니다. 거래가 정지된 날은 시가와 고가, 저가, 거래량이 0으로 제공될 수 있습니다.

브리핑의 최고가나 최저가가 실제 가격과 달라.
계산에 넣은 일별 시세 가운데 거래가 없었던 날이 섞이지 않았는지 확인하고,
실제로 거래된 날만 계산에 쓰게 고쳐줘.

Test가 실행할 때마다 다르게 실패하면 실제 API 호출이 한꺼번에 몰렸을 수 있습니다.

Test가 실행할 때마다 다른 곳에서 실패해.
실제 API를 부르는 Test가 동시에 몰려서 거절당하는 것인지 확인하고,
차례로 실행되게 맞춰줘.

2. 내 정상 기록으로 복구 --- 해결되지 않으면 실습하면서 내 프로젝트에 남겨둔 정상 기록으로 돌아갑니다. 지금까지 한 작업은 먼저 따로 보존합니다.

현재 작업은 잃지 않도록 먼저 별도로 보존해줘.
이 프로젝트에서 마지막으로 정상 동작했던 상태를 찾아 안전하게 복구해줘.

3. 장별 Source로 재시작 --- 그래도 이어갈 수 없을 때 사용합니다. 11장의 남은 실습은 건너뛰게 되므로 마지막 수단입니다.

내 현재 작업을 먼저 안전하게 보존해줘.
아래 11장 완성 Source에서 다시 시작해줘.
https://github.com/buildyourownai-lab/develop-like-a-pro-with-ai/tree/main/chapters/ch11/source/ai-stock-briefing
내 인증키를 입력할 자리를 알려주고
준비가 끝나면 11장을 마친 상태인지 확인해줘.

방향부터 확인하고, 더 필요할 때 다음 힌트를 펼치세요.

Vercel 변수명이 헷갈림
1단계 — 방향

Name과 Value를 먼저 구분합니다.

2단계 — 범위

서버 코드가 어떤 설정 이름으로 세 키를 읽는지 봅니다.

3단계 — 위치·원인 후보

환경변수 참조 파일·설정 모듈·SDK 전달 위치를 실제 프로젝트에서 확인합니다.

정답을 요청했을 때

키 값은 출력하지 않고 서비스별 변수명·사용 파일·입력 위치를 표로 정리합니다. 같은 Name에 실제 Value를 직접 입력하고 Production 적용 후 새 배포합니다.

검증 주의

이 설명만으로 원인이 확인됐거나 수정됐다고 말하지 않습니다. 현재 프로젝트의 근거를 먼저 대조합니다.

문장은 자연스러운데 근거가 없음
1단계 — 방향

문장의 유창함보다 근거 ID를 봅니다.

2단계 — 범위

프로그램 사실·AI 설명·알 수 없는 항목을 나눕니다.

3단계 — 위치·원인 후보

각 설명에 연결된 근거 ID가 입력에 실제 존재하는지 확인합니다.

정답을 요청했을 때

없는 근거 ID나 금지 추정이 있으면 해당 응답을 승인하지 않습니다. 검사를 낮추지 않고 원인을 확인한 뒤 재생성·재검사합니다.

검증 주의

이 설명만으로 원인이 확인됐거나 수정됐다고 말하지 않습니다. 현재 프로젝트의 근거를 먼저 대조합니다.

배포 완료인데 브리핑 안 나옴
1단계 — 방향

Ready는 배포 상태이지 모든 API 성공이 아닙니다.

2단계 — 범위

실패가 시세·공시·Gemini 중 어디인지 나눕니다.

3단계 — 위치·원인 후보

운영 환경의 변수 이름·모델 지원·응답 코드를 값 노출 없이 확인합니다.

정답을 요청했을 때

실패 원인을 고치고 새 배포에서 실제 브리핑 생성까지 확인합니다. 시험 응답의 PASS를 운영 성공으로 기록하지 않습니다.

검증 주의

이 설명만으로 원인이 확인됐거나 수정됐다고 말하지 않습니다. 현재 프로젝트의 근거를 먼저 대조합니다.

디버깅 → 정상 기록 복구 → 장별 소스로 재시작 →
이번 장의 완료 체크리스트
  • Gemini 준비프로젝트·키·사용 모델·한도를 확인
  • 근거 묶음사실·기준일·공시·근거 ID를 준비
  • AI 생성해당 근거로 실제 모델 응답을 받음
  • 출력 검증구조·근거 ID·알 수 없는 것·금지 표현 검사
  • 실패 격리AI 실패에도 시세·공시 원래 기능 유지
  • 배포 연결실제 코드 변수명과 Vercel 환경 대응
  • 운영 전체 흐름Production에서 시세→공시→브리핑→근거 확인
장 완료 확인해줘.

실제 프로젝트에서 튜터와 확인합니다. 사이트를 열어본 기록은 학습 완료가 아닙니다.

장별 소스와 저자 검증 기록

저자는 10장을 끝낸 상태에서 11장 요청문만으로 AI 브리핑까지 갔습니다. 프로젝트 전체 Test 102개가 통과했고 그중 54개가 이 장에서 새로 생겼습니다. 실제 Gemini 호출로 SK하이닉스 브리핑을 만들어 화면의 숫자가 프로그램 계산값과 같은지 대조하고, 근거 밖의 숫자와 투자 판단, 확인되지 않은 인과관계를 넣은 답이 모두 거부되는 것도 확인했습니다. Gemini API Key를 일부러 잘못된 값으로 바꿔 호출을 실패시킨 뒤에도 가격과 차트, 공시가 그대로 보이는 것을 확인했습니다. 근거는 verification/chapter-11/에 있습니다.

11장 완성 소스 ↗저자 검증 상세 기록 ↗

장별 소스는 해당 장까지의 기준 상태입니다. 정상 실습은 내 프로젝트를 이어가고, 완성 소스는 비교·복구할 때 사용합니다.

자료 판본 1c784213
이 장의 개발 용어
API
프로그램이 다른 서비스와 정해진 방식으로 요청·응답을 주고받는 연결 방법.
API Key
서비스 사용 자격을 확인하는 값. 안전한 입력 위치에 직접 넣으며 값은 공개하지 않습니다.
환경변수
코드와 별도로 실행 환경에서 이름으로 읽는 설정. 이름과 실제 값은 다릅니다.
Test
정한 완료 조건을 반복 확인하는 검사. 검사하지 않은 전체 정확성을 보증하지 않습니다.
Regression
수정 뒤 기존 기능까지 다시 확인하는 회귀 검사.
Production
실제 운영 배포 환경. 로컬·Preview와 설정이 다를 수 있습니다.
튜터 사용 안내실습 자료 업데이트
← 이전 장10장. 이 회사는 최근 무엇을 공시했을까?다음 장 →12장. 더 빠르고 비용은 적게 드는 서비스로 개선합니다
Development Lab아이디어를 AI와 함께 나만의 결과물로 만듭니다.

책에서 배운 개발 원칙을 AI와 직접 만들며 확인하는 실험실입니다. 아이디어를 서비스로, 서비스를 나만의 결과물로. AI와 함께 만들고, 직접 확인하며, 내 손으로 완성합니다.

자료실튜터 안내업데이트
SAStudy AI LabILInvestment LabDLDevelopment Lab

© 2026 Study AI Lab. All rights reserved.