'지금뉴스'를 만들면서 뉴스를 어떻게 모으고,
AI로 정리해서 앱에 보여주는지 가볍게 공유해봅니다.
바이브코딩으로 서비스를 만드는 분들께 참고가 되면 좋겠습니다.
전체 흐름은 이렇습니다.
뉴스 모으기 → 저장 → 같은 사건끼리 묶기 → AI로 요약하고 확인 → 앱에 보여주기
먼저 15분마다 GDELT라는 공개 뉴스 데이터에서 8개국 언론의 자료를 가져옵니다.
기사 제목, 원문 링크, 기사에 나오는 인물 기관 장소 정보 등을 모으는 방식입니다.
본문 전체를 가져오지는 않습니다.
가져온 자료는 데이터베이스에 저장합니다.
같은 기사 주소는 중복으로 넣지 않고, 가져오지 못한 자료는 다시 시도합니다.
그다음 같은 사건을 다루는 기사끼리 묶습니다.
여러 언론이 같은 사건을 보도했다고 AI에게 하나씩 요약을 맡기면 비슷한 내용이 반복되니까요.
제목과 등장인물·기관 등을 프로그램으로 비교해서 먼저 묶어둡니다.
AI는 묶인 제목들을 보고 한국어 제목과 짧은 요약을 씁니다.
기사 제목에 없는 숫자나 직함을 덧붙이지 않았는지 프로그램으로 검사하고, AI에게도 한 번 더 확인을 맡깁니다.
이렇게 해도 틀릴 수는 있어서 원문을 읽을 수 있는 링크를 함께 제공합니다.
이미 만든 요약은 저장해뒀다가 다시 활용합니다.
같은 사건에 새로운 보도가 충분히 쌓이면 다시 쓰고요.
자료는 15분마다 모으지만, 앱에 보여줄 전체 뉴스 목록은 하루 8번 새로 만듭니다.
사용자가 앱을 열 때는 미리 만들어둔 목록을 받아 보여줍니다.
앱을 열 때마다 AI에게 요약을 요청하지 않으니, 조회 수만큼 AI 사용량이 늘지는 않습니다.
서버는 Cloudflare 서비스를 조합했습니다.
이름이 낯설지만 역할로 보면 이렇습니다.
- Workers: 뉴스를 모으고 앱의 요청을 처리하는 프로그램이 돌아가는 곳
- Cron Triggers: 정해진 시간마다 작업을 시작해주는 알람
- D1: 기사 정보와 요약을 저장하는 데이터베이스. SQLite 기반입니다.
- Queues: 처리할 일을 넣어두는 대기열
- Containers: AI에게 요약과 확인을 맡기는 프로그램이 돌아가는 곳
- KV: 앱에 보여줄 완성된 뉴스 목록을 저장해두는 곳
만들다 보니 'AI로 요약해줘' 다음에 정할 게 꽤 많더라고요.
언제 실행할지, 어디에 저장할지, 같은 일을 반복하지 않으려면 어떻게 할지, 중간에 실패하면 어떻게 다시 진행할지.
바이브코딩할 때 이런 질문도 같이 던져보면, 내가 만든 앱이 어떻게 돌아가는지 이해하는 데 도움이 될 것 같습니다.
혼자 만든 뉴스 앱인데요, 한국 미국 일본 중국 등등 나라별로 지금 제일 많이 보도되는 뉴스를 수집후 보여줘요.
기사내용도 간략하게 요약해서 볼 수 있답니다.
지금은 토스 미니앱에서만 서비스 중이고, 좀더 다듬어서 각 스토어에도 올릴 예정이에요.
토스 미니앱에서 “지금뉴스” 라고 검색하시거나 아래 링크 타고 가시면 바로 쓸 수 있답니다.
632 Followers 499 FollowingThe cold wallet private key I remember has weathered the storms of the crypto world; cryptocurrency is also a liberation of the soul
434K Followers 9K FollowingAUTOMATON(オートマトン)は、今話題のニュースやコミュニティ発のトピックを深掘りし、Veracity in Gaming、すなわち「ゲームと誠実に向き合い、正しく伝えること」をコンセプトとするゲーム情報サイトです。
English : @AUTOMATON_ENG
83K Followers 142 FollowingHave questions, or building something cool with Cloudflare's Developer products? We're here to help. For help with your account please try @CloudflareHelp
318K Followers 5K FollowingCloudflare is the world’s leading #ConnectivityCloud, and we have our eyes set on an ambitious goal — to help build a #BetterInternet.