시즌 6 · 내 뉴스 브리핑 봇 만들기01 / 05다음: 요약은 관점이다

무료 강의 · 시즌 6 · 1강 / 5

뉴스가 모이는 관

무료 강의 시즌 6의 1강. 흩어져 있는 내 분야 뉴스를 RSS로 모아 파일 하나에 담아요. 크롤링과 구독의 차이부터 배웁니다.

끝나면 손에 남는 것: 명령 한 번에 24시간치 뉴스가 담기는 수집기 + 허락된 문을 구분하는 눈

이 강의 완성 예시 열어보기실제 수집 결과(하루 186건)와 크롤링·RSS의 차이예요.

시즌 5에서 블로그를 만들었어요. 데이터베이스가 붙어 있고, 로그인이 있고, 진짜 주소가 있는 앱이요. 이제 만드는 사람이 됐으니, 이번 시즌은 다른 걸 해봅니다.

시간을 돌려받는 일이요.

매일 아침 뉴스를 훑는 데 20분을 쓴다면, 이번 시즌이 끝날 때는 그 일이 이렇게 바뀌어요 — 아침에 폰이 울리고, 내 관심 분야 뉴스가 내 기준으로 요약된 브리핑이 도착해 있어요. 내가 한 일은 없어요. 어젯밤에도, 오늘 아침에도.

다섯 강에 걸쳐 그 봇을 만듭니다. 오늘은 첫 단계, 모으기예요.

오늘 만들 것

명령 한 번에 내 분야의 최근 24시간 뉴스가 파일 하나로 모이는 수집기.

그리고 이 시즌의 첫 번째 진짜 기술: 데이터를 받아오는 "허락된 문"을 구분하는 눈.

준비물

  • 시즌 1~5를 마친 상태 (특히 시즌 5의 "공개 키와 비밀 키" — 3강에서 다시 만나요)
  • 35분
  • 새 프로젝트를 시작할 마음 — my-blog은 오늘 안 씁니다

따라 하기

1. 새 신문사 자리부터

바탕화면에 news-briefing 이라는 새 폴더를 만들어 줘. 그리고 그 폴더를
VS Code로 열어 줘. 기존 프로젝트들은 건드리지 마.

시즌 5의 my-blog처럼, 이번에도 완전히 새 프로젝트예요. 나만의 조간 신문사를 차린다고 생각하세요.

2. 크롤링 말고 RSS — 여기가 첫 수업이에요

뉴스를 "자동으로 모은다"고 하면 보통 크롤링을 떠올려요. 프로그램이 뉴스 사이트에 들어가서 화면을 긁어 오는 거죠.

우리는 그거 안 합니다. 두 가지 이유예요. 뉴스 사이트의 약관은 대부분 크롤링을 금지하고(법적 문제), 사이트 화면이 바뀔 때마다 긁는 코드가 부러져요(기술 문제).

대신 RSS를 씁니다. RSS는 언론사가 "가져가서 읽으세요"라고 공개 배포용으로 내놓은 기사 목록이에요. 비유하면 이래요 — 크롤링은 가게마다 돌아다니며 전단지를 몰래 베끼는 것이고, RSS는 "우리 우편함에 꽂아 주세요"라고 구독을 신청하는 거예요. 같은 정보를 얻어도 하나는 눈치가 보이고, 하나는 허락된 문이죠.

구글 뉴스도 RSS를 내놓아요. 검색어를 넣으면 그 주제의 최신 기사 목록이 나오는 주소가 있어요. 이게 오늘의 주력입니다.

3. 수집기를 시켜요

아래 프롬프트에서 [대괄호]만 내 분야로 바꿔 붙여넣으세요.

뉴스 브리핑 봇 프로젝트를 시작할 거야. 첫 단계는 수집이야.

[모을 것]
- 분야: [관심 분야, 예: 국내 주식시장]
- 아래 RSS 피드에서 최근 24시간 안에 올라온 기사만:
  1) 구글 뉴스 검색 RSS:
     https://news.google.com/rss/search?q=[검색어, 예: 주식]&hl=ko&gl=KR&ceid=KR:ko
  2) 연합뉴스 경제: https://www.yna.co.kr/rss/economy.xml
  3) 한국경제: https://www.hankyung.com/feed/economy
- 피드 목록은 feeds.txt 파일로 분리해 줘. 내가 나중에 갈아끼울 수 있게.

[만들 것]
- collect 스크립트 하나. 조건:
  - 내 컴퓨터에 아무것도 추가 설치하지 않고 돌아갈 것
  - 결과는 news-today.md 파일로. 형식: 시간 | 매체 | 제목 | 링크
  - 기사 본문은 절대 저장하지 마. 제목과 링크만 (저작권 때문이야)
  - 접속이 안 되는 피드는 건너뛰고, 파일 끝에 "실패한 피드: ..."로 표시
  - 같은 기사가 여러 피드에 있으면 하나만
- 다 만들면 실행하는 법을 알려 주고, 한 번 실행해서 결과를 보여 줘

프롬프트에서 두 줄을 눈여겨보세요. "본문은 절대 저장하지 마" — 우리가 모으는 건 목록이지 기사가 아니에요. 이 선은 5강에서 다시 이야기해요. 그리고 "실패한 피드는 건너뛰고" — 언론사 피드는 언젠가 닫히거나 막혀요. 그때 전체가 죽는 수집기와 건너뛰는 수집기의 차이가 자동화의 수명을 정합니다.

4. 오늘의 순간

에이전트가 스크립트를 실행하면 news-today.md를 열어보세요.

몇 분 전까지 여기저기 흩어져 있던 오늘 뉴스가 — 수십 건에서 백 건 넘게 — 시간순으로 정렬돼 파일 하나에 담겨 있어요. 실제로 검증했을 때는 피드 3개에서 하루치 186건이 모였어요.

수동으로 했다면 사이트 세 곳을 돌며 한참을 긁어 모아야 했을 일이에요. 이제 명령 한 번이죠. 아직 "자동"은 아니지만(내가 명령을 내려야 하니까), 4강에서 이 손마저 뺍니다.

5. 저장점

git 저장점을 만들어 줘. 이름은 "수집 완성".

막혔을 때

한글이 깨져서 나와요. 인코딩 문제예요. 화면에 뜬 깨진 글자를 그대로 복사해서 "news-today.md의 한글이 이렇게 깨져. 인코딩을 UTF-8로 고쳐 줘"라고 시키세요. 참고로 Windows의 PowerShell 스크립트는 한글이 들어가면 저장 방식(BOM)까지 맞아야 해요 — 에이전트가 알아서 처리하지만, 안 되면 이 문장을 그대로 보여주세요.

피드 하나가 계속 실패해요. 정상일 수 있어요. 일부 언론사는 자동 접속을 막아요(검증 중에 매일경제 피드가 403으로 막혀 있는 걸 확인했어요). 실패 표시가 남고 나머지가 모였다면 수집기는 제 일을 한 거예요. 그 피드는 feeds.txt에서 지우면 됩니다.

기사가 0건이에요. 시간 필터 문제일 가능성이 커요. "24시간 필터가 피드의 날짜 형식을 제대로 읽는지 확인해 줘"라고 시키세요. 피드마다 날짜 표기가 미묘하게 달라요.

내 분야의 피드를 모르겠어요. 에이전트에게 물으세요. "[분야]를 다루는 한국 언론사 중 공개 RSS를 제공하는 곳을 찾아서 feeds.txt에 추가해 줘. 실제로 접속되는지 확인하고." 구글 뉴스 검색 RSS만으로도 시작은 충분해요.

제목에 이상한 기호가 섞여 있어요. RSS는 제목을 특수한 방식(CDATA)으로 감싸기도 해요. "제목이 이렇게 나와. 태그를 벗겨 줘"라고 화면 그대로 보여주면 고쳐줘요.

마무리 체크

나가기 전에 하나씩 확인해요:

  • news-briefing 폴더를 새로 만들었어요
  • 크롤링과 RSS의 차이를 남에게 설명할 수 있어요
  • feeds.txt에 내 분야 피드가 들어 있어요
  • 명령 한 번에 오늘 뉴스가 news-today.md로 모였어요 ← 오늘의 순간
  • 본문이 아니라 제목·링크만 저장되는 걸 확인했어요
  • git 저장점 "수집 완성"을 만들었어요

그런데 186건을 다 읽을 건 아니잖아요. 모으기만 하면 정보가 아니라 더미예요.

다음 강의에서 이 더미를 브리핑으로 바꿉니다. 그리고 알게 될 거예요 — 좋은 요약은 좋은 AI가 아니라 좋은 관점에서 나온다는 걸.

직접 만들고 돌아가는 걸 확인했나요? 그럼 완료를 눌러요. 이 브라우저에만 저장돼요 — 주방 밖으로는 아무것도 나가지 않아요.

어느 단계에서 막혔나요?

여기에 바로 물어보세요. 계정은 필요 없어요. 헤맨 단계가 있다면 그건 레슨에 난 구멍이지, 읽는 사람 잘못이 아니에요. 답변은 본문에 반영돼서 다음 사람은 매끄럽게 지나가요.

더 고픈가요?

새 강의가 열리는 대로 메일함에 도착해요. 스팸 없이, 언제든 구독 취소할 수 있어요.

회원가입하면 자료실이 열려요.전자책 「바이브 코딩 네 시즌」을 비롯한 자료를 무제한으로 받을 수 있어요. 강의는 가입 없이도 무료예요.

구글 계정으로 가입 →