SEAN TEAM
Work · MARKET NEWS INTELLIGENCE --:-- 서울 · 로컬 실행 · 공개 데모 없음

내 종목 뉴스를
한 화면에
모읍니다.

Stock News

보유 종목마다한국어와 영어 뉴스를 따로 찾지 않도록.한 번 누르면 모입니다.

ABOUT · WHAT IT DOES

Stock News 는 보유 종목을 등록하면 종목마다 Google News RSS 두 갈래 — 한국어 검색과 영어 검색 — 를 읽어 기사를 모으는 개인용 모니터입니다. URL 로 중복을 걸러 최신순 20건까지 SQLite 에 쌓고, 종목 상세 화면에 타임라인으로 보여 줍니다. GEMINI_API_KEY 가 있으면 새 기사에 한국어 요약·감성·중요도를 붙이고, 오늘 요약된 기사가 3건 이상이면 종목별 하루 브리핑을 만듭니다.

이 페이지의 화면은 원본 저장소를 복사해 새 DB 로 로컬에서 돌려 찍었습니다. 종목 네 개는 예시로 넣은 것이고, Gemini 요약은 키 없이 돌려 비어 있습니다. 시세 칸이 비는 이유는 아래에 적었습니다.

01 — Dashboard

예시 종목 네 개, 새로고침 한 번, 기사 80건.

Stock News 실제 대시보드 — 보유 종목 표(삼성전자·NVIDIA·SK하이닉스·Bitcoin, 종목마다 기사 20건), 최신 뉴스 20건, 새 종목 추가 폼, 비어 있는 오늘의 AI 요약. 시세 칸은 비어 있다
  1. 보유 종목 표시장 배지와 종목별 수집 기사 수. 시세·등락 칸은 지금 비어 있습니다.
  2. 최신 뉴스 20건모든 종목의 기사를 발행 시각순으로. 출처 칸에는 검색 피드의 이름이 찍힙니다.
  3. 오늘의 AI 요약Gemini 키가 있을 때만 채워집니다. 이 캡처는 키 없이 찍었습니다.
02 — From a ticker to articles

넣고, 누르고, 읽습니다.

종목을 넣는 일과 기사를 모으는 일은 따로 돕니다. 종목을 추가한 뒤 새로고침을 눌러야 수집이 시작됩니다.

  1. ① Add

    시장과 티커, 이름 세 칸

    미국·한국·암호화폐·기타 해외 네 시장 중 하나를 고르고 티커와 이름을 넣습니다. 입력은 zod 로 검사하고, 같은 시장의 같은 티커는 한 번만 들어갑니다.

  2. ② Collect

    Google News 두 갈래

    종목마다 한국어 검색 피드와 영어 검색 피드를 함께 읽습니다. 한 피드가 실패해도 다른 쪽 결과는 살리고, URL 로 중복을 거른 뒤 최신 20건을 저장합니다.

  3. ③ Read

    종목별 기사 타임라인

    종목을 누르면 그 종목 기사만 시간순으로 모입니다. 요약을 돌리지 않은 기사는 감성 칸이 기본값 FLAT 으로 찍힙니다 — 판정이 아니라 빈칸입니다.

보유 종목 표와 새 종목 추가 폼 — 시장 선택, 티커, 이름, 종목 추가 버튼
최신 뉴스 목록 — 종목 티커, 검색 피드 이름, 몇 분 전인지와 기사 제목
삼성전자 상세 화면의 기사 타임라인 — 한국어 기사와 영어 기사가 섞여 있고, 요약 전이라 모두 FLAT 표시

피드 하나, 창 넷.

모든 화면은 같은 SQLite 세 테이블 — 종목, 기사, 하루 요약 — 을 읽습니다.

PrismaSQLite 보유 종목 표 — 005930 삼성전자, NVDA, 000660 SK하이닉스, BTC. 뉴스 20건씩, 현재가와 등락은 비어 있다 보유 종목시장 배지, 수집한 기사 수, 종목별 새로고침과 삭제. 30일 추세와 시세 칸은 현재 비어 있습니다.
Server Actionzod 새 종목 추가 폼 — 시장, 티커, 이름 입력과 종목 추가 버튼 새 종목 추가네 시장 중 하나와 티커·이름을 받습니다. 추가와 수집은 분리돼 있어, 추가한 뒤 새로고침을 눌러야 기사가 들어옵니다.
Gemini 2.0 FlashJSON 응답 오늘의 AI 요약 패널 — 아직 오늘 요약이 없습니다, 그 아래 News · Google News, Quotes · Yahoo Finance, AI · Gemini 2.0 출처 표기 오늘의 AI 요약Gemini 2.0 Flash 가 종목별로 4~5문장 요약과 짚을 점 세 개를 만듭니다. 키가 없으면 이 칸은 빈 채로 남습니다.
enko NVIDIA 상세 화면의 기사 타임라인 — 영어 기사 제목과 검색 피드 이름 해외 종목도 같은 줄에NVIDIA 처럼 해외 종목은 영어 피드가 대부분을 채웁니다. 한국어 검색에 걸린 영어 기사도 그대로 들어옵니다.

기사마다 Google News RSS한국어 피드영어 피드Yahoo FinanceGemini 2.0 FlashPrisma 7SQLite 어디서 왔는지 남습니다.

기사는 URL 을 고유키로 한 번만 저장되고, 어느 언어 피드에서 왔는지와 발행 시각이 함께 남습니다.

01

모으기와 요약은 따로

수집은 키 없이 돕니다. 요약은 GEMINI_API_KEY 가 있을 때만, 새로고침 한 번에 종목당 8건까지만 합니다. 코드 주석이 이유를 적어 둡니다 — 쿼터를 아끼기 위해서.

02

하루 요약은 기사 3건부터

오늘 요약된 기사가 3건 이상일 때만 종목별 브리핑을 만듭니다. 기사 한두 개로 하루를 정리하지 않습니다.

03

모델은 JSON 으로만

요약·감성·중요도는 JSON 응답으로 받고, 중요도는 1~5 사이로 잘라 저장합니다. 브리핑도 요약·짚을 점·감성 세 칸의 JSON 입니다.

04

실패해도 화면은 섭니다

시세 호출이 실패하면 값 대신 빈칸을 돌려 표는 그대로 그립니다. 피드 하나가 실패해도 나머지 피드의 기사는 저장됩니다.

03 — Counted by hand · 2026-09-25
2,028줄의 TypeScript · 생성된 Prisma 클라이언트 제외
22개의 소스 파일 · 화면 컴포넌트 10개
3개의 테이블 · 종목 · 기사 · 하루 요약
80건의 기사 · 예시 종목 4개를 한 번 새로고침한 결과
ROLE
단독 개발 — 수집 · 저장 · 화면
UI
Next.js 16 · React 19 · TypeScript · Tailwind 4
DATA
Prisma 7 · SQLite(better-sqlite3) — 종목 · 기사 · 하루 요약
SOURCES
Google News RSS(rss-parser) · 한국어 / 영어 피드
MARKETS
yahoo-finance2 — 설치된 v3 와 호출 방식이 맞지 않아 현재 빈칸
AI
Gemini 2.0 Flash — 키가 있을 때만
STATUS
LOCAL DATA PRODUCT · REAL SOURCES
WHY

만들면서 스스로에게
물은 것들.

왜 공개 데모가 없나요?

Stock News 는 내 보유 종목을 넣어 쓰는 개인용 도구이고, 요약에는 개인 Gemini 키가 듭니다. 저장소에는 배포 설정도 없습니다. 이 페이지의 화면은 저장소를 복사해 새 DB 로 로컬에서 돌려 찍었고, 종목 네 개는 예시로 넣었습니다.

시세 칸은 왜 비어 있나요?

시세는 yahoo-finance2 로 받습니다. 설치된 v3 는 new YahooFinance() 로 인스턴스를 만든 뒤 써야 하는데, 코드는 v2 방식 그대로 불러서 호출마다 예외가 납니다. 코드가 그 예외를 받아 빈칸(—)을 그리기 때문에 화면은 멈추지 않지만 시세와 30일 추세가 비어 있습니다. 포트폴리오 평균 +0.00% 도 같은 이유로 나온 값입니다.

AI 요약은 어떻게 만드나요?

새로고침 때 요약이 없는 기사를 최신순으로 종목당 8건까지 골라 Gemini 2.0 Flash 에 제목과 발췌를 보냅니다. 모델은 한국어 2~3문장 요약, positive·negative·neutral 중 하나, 1~5 중요도를 JSON 으로만 답합니다. 오늘 요약된 기사가 3건 이상이면 그 종목의 하루 브리핑을 따로 만듭니다.

왜 한국어와 영어를 함께 찾나요?

코드 주석이 이유를 적어 둡니다. 시장과 상관없이 국내 보도와 해외 보도를 함께 보기 위해서입니다. 그래서 종목마다 두 언어 피드를 모두 읽고, 어느 쪽에서 왔는지 기사마다 남깁니다. 예시 네 종목을 한 번 새로고침했을 때 영어 42건, 한국어 38건이 모였습니다.

테스트는 있나요?

없습니다. 저장소에는 테스트 파일도 git 기록도 없습니다. 파일 날짜로 보면 2026년 6월 8일에 만든 도구입니다.

뉴스는 모였고,요약은 키를 기다립니다.

프로젝트 전체 보기 →