맞춤형 기술 뉴스 큐레이터
— 에이전트 워크플로우
이 실습은 기존 바이브코딩(코드 요청 → 복사 → 실행)과 다르다. Claude Code가 에이전트로 동작한다 — 코드를 짜달라는 게 아니라, 뉴스 수집·요약·검토·리포트 시스템 전체를 스스로 설계·실행·수정하도록 지시한다. 실습이 끝나면 매일 아침 자동으로 도착하는 나만의 기술 뉴스 큐레이션 시스템이 생긴다.
이 실습이 다른 점
사람은 목표만 지시하고 결과물만 검토한다. 파일 생성·실행·오류 수정은 전부 Claude Code가 한다.
코드를 받는 것이 아니라, 시스템을 맡긴다
지금까지의 실습에서는 AI에게 코드를 요청하고, 받은 코드를 복사해 직접 실행했다. 이번에는 다르다. Claude Code에게 목표를 지시하면, Claude Code가 파일을 만들고 실행하고 오류를 고치고 결과를 보고한다. 실습 내내 코드를 직접 수정하지 않는다 — 문제가 생기면 말로 다시 지시한다.
| 기존 바이브코딩 | 에이전트 워크플로우 | |
|---|---|---|
| 흐름 | 사람 → AI에게 코드 요청 → 코드 복사 → 실행 | 사람 → Claude Code에게 목표 지시 → Claude Code가 파일 생성 + 실행 + 오류 수정 + 결과 확인 |
| 사람의 역할 | 코드 운반자 겸 실행자 | 결과물 검토자 |
| 오류가 나면 | 사람이 코드를 고치거나 다시 요청 | 에이전트가 스스로 원인 분석 후 재시도, 안 되면 말로 재지시 |
이 실습은 2H에서 설계만 해 본 AI Agent 실습(2H · AI Agent 설계 및 분석)의 완성편이다. 그때 종이 위에서 그렸던 "목표 → 도구 → 실행 → 검토" 구조를, 이번에는 Claude Code로 실제로 돌아가는 시스템으로 만든다.
5개 Step으로 완성하는 큐레이터
프로젝트 정체성 문서에서 출발해, 도구 → 스킬 → 병렬 협업 → 자동화 순서로 쌓아 올린다. 각 Step은 앞 Step의 산출물을 재료로 쓴다.
- 🔵 Soul Documents — 프로젝트 정체성 설정 (CLAUDE.md / PLAN.md)
- 🟡 수집 하네스 — 뉴스 수집 도구 제작 (fetch_news.py)
- 🟢 요약 에이전트 — 분석·요약 스킬 구현 (summarize.py)
- 🟣 병렬 + 검토 — 병렬 처리 + 리뷰어 에이전트
- 🏆 완전 자동화 — Cron 등록, 매일 아침 자동 실행
시작 전 준비물
작업 폴더를 만들고 Claude Code를 실행한 뒤, 필요한 패키지를 설치한다. Hugging Face 토큰이 필요하다.
mkdir news_curator cd news_curator claude # Claude Code 실행 pip install requests feedparser pyyaml huggingface_hub -q
- news_curator 폴더 생성 후 그 안에서
claude실행 - requests · feedparser · pyyaml · huggingface_hub 설치 완료
- Hugging Face 토큰 준비 (HF Inference API 호출에 사용)
Soul Documents — 프로젝트 정체성
Claude Code는 매 작업 전에 CLAUDE.md를 읽는다. 문서에 규칙을 적어두면 에이전트가 일관되게 동작한다.
에이전트에게 주는 사내 업무 매뉴얼
Claude Code는 프로젝트 폴더의 CLAUDE.md를 매 작업 전에 읽는다. 프로젝트 정의와 작업 규칙을 여기에 적어두면, 어떤 지시를 내려도 에이전트가 그 규칙 안에서 일관되게 동작한다. Soul Documents는 신입 직원에게 건네는 사내 업무 매뉴얼과 같다.
| 파일 / 폴더 | 역할 |
|---|---|
| CLAUDE.md | 행동 지침 — 무엇을 어떤 규칙으로 하는가 |
| PLAN.md | 계획 — 체크박스 목록, 완료 시 [ ] → [x] |
| PROGRESS.md | 작업 이력 — 에이전트가 직접 업데이트 |
| config.yaml | 키워드·설정 — 코드가 아닌 설정으로 동작을 바꾼다 |
| .scripts/ | 에이전트가 만드는 스크립트 보관소 |
| reports/ | 날짜별 최종 리포트 저장소 |
지시
이 프로젝트는 기술 뉴스를 자동으로 수집·요약·저장하는 시스템이야. 아래 내용으로 파일들을 생성해줘. CLAUDE.md: 지정 키워드 기술 뉴스 매일 수집·요약 / 스크립트는 .scripts/ / 리포트는 reports/YYYY-MM-DD.md / 설정값은 config.yaml에서만 읽음(하드코딩 금지) / 작업 완료 후 반드시 PROGRESS.md에 기록 PLAN.md: Step 1~5 체크박스 목록 config.yaml: keywords ["대규모 언어 모델", "LLM", "로보틱스", "AI 반도체"], max_articles_per_keyword 5, hf_model "Qwen/Qwen3-8B", report_language "Korean" PROGRESS.md 빈 파일, reports/ .scripts/ 폴더 생성
- CLAUDE.md · PLAN.md · PROGRESS.md · config.yaml 파일이 생성되었다
- reports/ 와 .scripts/ 폴더가 생성되었다
- config.yaml에 키워드 4개와 모델명이 들어 있다
"설정값은 config.yaml에서만 읽음(하드코딩 금지)" 한 줄이 이 시스템의 확장성을 결정한다. 마지막 정리 섹션에서 보겠지만, 이 규칙 덕분에 코드를 한 줄도 수정하지 않고 키워드만 바꿔 반도체 큐레이터·바이오 큐레이터로 변신시킬 수 있다.
수집 하네스 — 도구를 먼저 만든다
뉴스를 바로 가져오라고 하지 않는다. "뉴스를 가져올 수 있는 도구"를 먼저 만들게 한다.
결과가 아니라, 결과를 낼 수 있는 장치
하네스(harness)는 결과가 아니라 결과를 낼 수 있는 장치다. "오늘 뉴스 가져와줘"라고 하면 일회성 결과가 나오고 끝이지만, fetch_news.py라는 도구를 만들어 두면 이후 에이전트가 매일 이 도구를 호출해 같은 품질의 수집을 반복할 수 있다.
지시
CLAUDE.md를 읽고 .scripts/fetch_news.py를 작성해줘. - config.yaml의 keywords를 읽어 키워드별 뉴스 검색 (DDGS().news()) - 키워드당 max_articles_per_keyword개 수집 - title, url, published, source, body 추출 → .scripts/raw_news.json 저장 - 키워드별 수집 건수 출력, 완료 후 PLAN.md Step 2 [x], PROGRESS.md 기록 작성 완료 후 바로 실행해서 동작 확인까지 해줘.
- .scripts/fetch_news.py가 생성되고 에이전트가 직접 실행까지 마쳤다
- .scripts/raw_news.json에 키워드별 기사가 저장되었다
- PLAN.md의 Step 2가 [x]로 바뀌고 PROGRESS.md에 기록이 남았다
오류가 나면 — 코드를 열지 말 것
실행 중 오류가 나도 코드를 직접 수정하지 않는다. 이렇게 다시 지시한다.
fetch_news.py 실행 중 오류가 났어. 오류 내용 분석하고 원인 찾아서 고쳐줘.
"작성 완료 후 바로 실행해서 동작 확인까지 해줘"라는 마지막 줄이 에이전트 워크플로우의 핵심이다. 코드 작성과 검증을 한 번의 지시로 묶으면, 에이전트가 실행 → 오류 발견 → 수정 → 재실행 루프를 스스로 돈다. 사람은 최종 보고만 받는다.
요약 에이전트 — 스킬로 설계한다
요약 로직을 입력·출력이 명확한 함수 단위 "스킬"로 만든다. 스킬은 나중에 여러 에이전트가 동시에 호출한다.
입력과 출력이 명확한 단위
요약 로직을 스킬로 설계한다 — 입력(기사)과 출력(요약 구조체)이 명확한 함수 단위다. 이렇게 만들어 두면 Step 4의 병렬 처리에서 여러 서브 에이전트가 같은 스킬을 동시에 호출할 수 있다.
출력 구조 — 기사 1건당 이런 JSON이 나온다
{
"title": "기사 제목",
"source": "출처",
"url": "원문 링크",
"summary": ["핵심 요약 1", "핵심 요약 2", "핵심 요약 3"],
"business_impact": "비즈니스 영향도",
"tech_insight": "기술적 시사점",
"keyword": "매칭된 키워드"
}
지시
CLAUDE.md를 읽고 .scripts/summarize.py를 작성해줘. - raw_news.json의 각 기사를 HF Inference API(config.yaml의 hf_model)로 분석 - 기사당: ① 핵심 요약 3줄(각 1문장, 수치 포함) ② 비즈니스 영향도(산업 파급력·시장 영향 2~3문장) ③ 기술적 시사점(현업 엔지니어 관점, 아키텍처·성능·구현 2~3문장, 추상적 표현 금지) - .scripts/summarized_news.json 저장, PLAN.md Step 3 체크 작성 후 첫 번째 기사로 테스트 실행해줘.
- .scripts/summarize.py가 생성되고 첫 기사로 테스트 실행되었다
- summarized_news.json에 요약 3줄·비즈니스 영향도·기술 시사점이 담겼다
- PLAN.md의 Step 3이 체크되었다
품질이 마음에 안 들면
기술적 시사점이 너무 추상적이야. 구체적인 모델 아키텍처, 파라미터 수, 벤치마크 수치를 반드시 포함하도록 프롬프트 지침을 수정해줘.
수집(Step 2)과 요약(Step 3)을 한 파일에 몰아넣지 않고 분리한 이유가 여기서 드러난다. 수집이 실패하면 수집만 다시 돌리고, 요약 품질이 낮으면 요약 프롬프트만 고치면 된다. 모듈이 독립적이면 말로 하는 디버깅의 지시도 짧고 정확해진다.
병렬 처리 + 리뷰어 에이전트
기사가 많으면 서브 에이전트가 5개씩 나눠 동시 처리하고, 리뷰어 에이전트가 중복 제거와 품질 검토 후 최종 승인한다.
나눠서 처리하고, 검토자를 통과해야 리포트가 된다
기사가 10개 이상이면 5개씩 서브 에이전트가 동시에 처리한다(A: 1~5, B: 6~10, …). 결과를 병합한 뒤 리뷰어 에이전트가 중복 제거·품질 검토·최종 승인을 거쳐 reports/YYYY-MM-DD.md로 저장한다.
raw_news.json (기사 20건)
│
├─ 서브 에이전트 A : 기사 1~5 ┐
├─ 서브 에이전트 B : 기사 6~10 ├─ 동시 실행
├─ 서브 에이전트 C : 기사 11~15 │
└─ 서브 에이전트 D : 기사 16~20 ┘
│
▼ 결과 병합
리뷰어 에이전트 — 중복 제거 · 품질 검토 · 최종 승인
│
▼
reports/YYYY-MM-DD.md
지시 1 — 병렬 처리
summarize.py를 ThreadPoolExecutor로 5개씩 배치 병렬 처리하도록 수정해줘. 진행 상황은 "배치 1/4 완료 (5/20건)" 형식으로 출력하고, 기사가 10개 미만이면 순차 처리를 유지해줘.
지시 2 — 리뷰어 에이전트
.scripts/reviewer.py를 작성해줘. - 제목 유사도 80% 이상인 기사는 중복으로 제거 - tech_insight가 50자 미만이거나 추상적이면 플래그 (LLM에게 "구체적인가? YES/NO"로 확인) - 키워드별 최소 1개 기사가 있는지 커버리지 확인 - 결과를 "✅ 통과 N / ⚠️ 품질 미달 N / 🔁 중복 제거 N" 형식으로 출력 - 통과한 기사만 reviewed_news.json에 저장하고, 미달 기사는 플래그만 남겨줘.
지시 3 — 리포트 생성
.scripts/build_report.py를 작성해줘. reviewed_news.json을 읽어 마크다운 리포트로 변환해줘.
구조: # {날짜} 기술 뉴스 큐레이션 / ## 오늘의 핵심 요약(LLM 3줄) / ## 키워드별 주요 뉴스(기사별 요약·비즈니스 영향·기술 시사점·원문 링크) / ## ⚠️ 품질 검토 플래그
완료 후 PLAN.md Step 4를 체크해줘.
- 병렬 처리 시 "배치 1/4 완료 (5/20건)" 형식의 진행 출력이 보인다
- reviewer.py 출력에 통과·품질 미달·중복 제거 건수가 표시된다
- reports/ 폴더에 오늘 날짜의 마크다운 리포트가 생성되었다
리뷰어 에이전트는 사람 조직의 검수 단계를 그대로 옮긴 것이다. 생성하는 에이전트와 검토하는 에이전트를 분리하면, 생성 단계의 품질 편차를 마지막 관문에서 걸러낼 수 있다. 통과 기사만 reviewed_news.json으로 넘어가므로, 리포트에는 검수를 통과한 기사만 실린다.
완전 자동화 — 매일 아침 8시
전체 파이프라인을 셸 스크립트 하나로 묶고 Cron에 등록한다. 이제 사람이 하는 일은 아침에 리포트를 읽는 것뿐이다.
수집 → 병렬 요약 → 검토 → 리포트를 한 줄로
지금까지 만든 네 개의 스크립트를 run_curator.sh로 묶고 Crontab에 등록하면, 매일 오전 8시에 전체 파이프라인이 자동 실행된다. 원하면 텔레그램 발송까지 붙일 수 있다.
지시
전체 파이프라인을 자동화하는 셸 스크립트와 Cron을 설정해줘. 1) run_curator.sh: fetch_news.py → summarize.py → reviewer.py → build_report.py 순서 실행, 실패 시 중단+PROGRESS.md 오류 기록, 로그 logs/YYYY-MM-DD.log 2) Crontab: 매일 오전 8시 실행, crontab -l 확인 3) PLAN.md Step 5 체크 설정 후 수동 1회 실행해서 전체 동작 확인해줘.
- run_curator.sh가 네 스크립트를 순서대로 실행한다
- crontab -l에 매일 08:00 항목이 등록되었다
- 수동 1회 실행으로 전체 파이프라인이 끝까지 동작했다
- logs/ 폴더에 오늘 날짜 로그가 남았다
리포트를 아침 메신저로 받기
원한다면 완성된 리포트를 텔레그램으로 발송하는 단계를 파이프라인 끝에 추가한다. 다음 요건으로 지시하면 된다.
- TELEGRAM_TOKEN / CHAT_ID는 환경변수로 관리한다
- 완성된 리포트를 텔레그램으로 발송한다
- 메시지가 길면 4096자 단위로 분할 전송한다
- 발송이 실패해도 파이프라인은 정상 종료한다
"실패해도 정상 종료" 요건이 중요하다. 발송은 부가 기능이므로, 텔레그램 장애가 리포트 생성 자체를 막아서는 안 된다. 파이프라인 설계에서 핵심 경로와 부가 경로의 실패를 분리하는 습관이다.
말로 디버깅한다
이 실습의 규칙: 코드 직접 수정 금지. 상황을 말로 설명하면 에이전트가 원인을 찾고 고친다.
네 가지 상황, 네 가지 지시
에이전트 워크플로우에서 디버깅은 코드 편집이 아니라 상황 설명이다. 무엇이 잘못되었는지, 어떻게 되기를 원하는지를 말하면 나머지는 에이전트의 일이다.
실행 오류가 났을 때
오류 로그 분석하고 원인 찾아서 수정해줘.
출력 품질이 낮을 때
tech_insight가 너무 일반적이야. 구체적 수치가 나오게 프롬프트 수정하고 재테스트해줘.
기능이 누락되었을 때
리포트에 기사 발행 날짜가 없어. 제목 옆에 추가해줘.
어제의 오류를 발견했을 때
PROGRESS.md 보면 어제 reviewer.py 실패했어. 원인 분석하고 오늘 실행 전에 고쳐줘.
마지막 예시가 Soul Documents의 진가를 보여준다. 에이전트가 PROGRESS.md에 작업 이력을 남기도록 규칙을 정해 두었기 때문에, "어제 뭐가 실패했는지" 자체를 에이전트에게 물어 고치게 할 수 있다. 문서가 곧 에이전트의 기억이다.
완성 구조와 핵심 정리
폴더 하나에 정체성 문서·도구·스킬·자동화가 모두 담겼다. 키워드만 바꾸면 다른 도메인의 큐레이터가 된다.
news_curator/ 최종 모습
news_curator/ ├── CLAUDE.md # 행동 지침 ├── PLAN.md # Step 1~5 체크박스 (전부 [x]) ├── PROGRESS.md # 작업 이력 ├── config.yaml # 키워드·설정 ├── run_curator.sh # 전체 파이프라인 실행 ├── .scripts/ │ ├── fetch_news.py # 수집 하네스 │ ├── summarize.py # 요약 스킬 (병렬) │ ├── reviewer.py # 리뷰어 에이전트 │ └── build_report.py # 리포트 생성 ├── reports/ # YYYY-MM-DD.md └── logs/ # 실행 로그
이 실습에서 가져갈 다섯 가지
코드 수정 없이 도메인 전환
설정값을 config.yaml에서만 읽도록 규칙을 정해 두었으므로, keywords만 교체하면 코드 수정 없이 다른 도메인의 큐레이터가 된다.
# 반도체 중심 keywords: ["HBM 메모리", "TSMC 파운드리", "AI 가속기", "CoWoS 패키징"] # 바이오 중심 keywords: ["신약 개발 AI", "단백질 구조 예측", "임상시험 자동화"]
하나. 이 실습의 차별점은 결과물이 아니라 작업 방식이다. 코드를 요청·복사·실행하는 바이브코딩과 달리, Claude Code가 에이전트로서 시스템 전체를 스스로 설계·실행·수정했다.
둘. 에이전트 통제의 핵심은 문서다. CLAUDE.md가 규칙을, PLAN.md가 진행을, PROGRESS.md가 기억을 담당한다.
셋. 도구(하네스)와 스킬을 먼저 만들고 병렬·검토·자동화로 쌓아 올리면, 사람의 역할은 목표 지시와 결과 검토만 남는다.
원본 자료 요구사항 분석: 맞춤형 기술 뉴스 큐레이터 에이전트 구축 (노션 실습 페이지), notion.site/30c9042285de816dbcebdf3ed0f641d3
이 자료는 단일 HTML 파일로 배포되며, 프롬프트 블록의 [복사] 버튼으로 지시문을 그대로 Claude Code에 붙여 넣을 수 있다.