| name | naver-news |
| description | This skill should be used when the user asks to "뉴스레터 만들어줘", "뉴스 정리해줘", "최신 뉴스 검색해줘", "뉴스 요약해줘", "뉴스 모아줘", "news newsletter", "뉴스 브리핑". 네이버 뉴스 검색 API로 24시간 내 최신 뉴스를 수집하고, 보기 좋은 HTML 뉴스레터로 만들어줍니다. Make sure to use this skill whenever the user mentions news collection, news summary, or newsletter creation. |
네이버 뉴스 뉴스레터
키워드 하나로 24시간 내 최신 뉴스를 수집해서 뉴스레터 HTML로 만들어줍니다.
워크플로우
Step 0: API 키 확인 (온보딩)
타입: script
스킬 실행 전, .claude/skills/naver-news/.env 파일에 NAVER_CLIENT_ID와 NAVER_CLIENT_SECRET이 설정되어 있는지 확인한다.
.env 파일이 없거나 키가 비어있으면, 아래 안내를 사용자에게 보여주고 키 입력을 받은 후 .env 파일을 생성한다:
이 스킬을 사용하려면 네이버 검색 API 키가 필요해요.
처음 한 번만 설정하면 됩니다. 1분이면 끝나요!
━━━ 네이버 검색 API 발급 가이드 ━━━
1. 아래 링크에 접속하세요 (네이버 로그인 필요):
https://developers.naver.com/apps/#/register
2. 애플리케이션 등록 화면에서:
- 애플리케이션 이름: 아무거나 (예: "뉴스브리핑")
- 사용 API: "검색" 선택
3. 비로그인 오픈 API 서비스 환경:
- "WEB 설정" 선택
- 웹 서비스 URL: http://localhost/
(도메인이 없어도 괜찮아요. localhost로 입력하면 됩니다)
4. "등록하기" 클릭
5. 등록 완료 후 "애플리케이션 정보"에서:
- Client ID ← 복사
- Client Secret ← 복사
두 값을 알려주시면 .env 파일을 만들어드릴게요!
사용자가 Client ID와 Client Secret을 알려주면 .claude/skills/naver-news/.env 파일을 생성한다:
NAVER_CLIENT_ID={입력받은 값}
NAVER_CLIENT_SECRET={입력받은 값}
.env 파일이 이미 있고 키가 설정되어 있으면, 이 단계를 건너뛰고 Step 1로 바로 진행한다.
Step 1: 키워드 확인
타입: prompt
사용자의 메시지에서 검색 키워드를 추출한다. 키워드가 명확하지 않으면 물어본다.
Step 1.5: 검색 옵션 선택
타입: prompt (AskUserQuestion)
Q1 — 정렬 방식:
AskUserQuestion으로 아래 질문을 한다:
질문: "뉴스를 어떤 기준으로 모을까요?"
옵션:
- "최신순 (추천)" — 최근 뉴스부터 시간순으로 모읍니다. 오늘/이번주 브리핑에 적합해요.
- "관련도순" — 키워드와 가장 관련 높은 뉴스를 모읍니다. 최근 한 달간 주제 동향 분석에 적합해요.
Q2 — 시간 범위 (최신순 선택 시에만):
최신순을 선택한 경우에만 AskUserQuestion으로 추가 질문한다:
질문: "어느 기간의 뉴스를 모을까요?"
옵션:
- "24시간 (추천)" — 하루 뉴스 브리핑. 대부분의 키워드에 적합해요.
- "6시간" — 긴급 브리핑. 방금 전 뉴스만 빠르게 확인해요.
- "48시간" — 주말/연휴 후 따라잡기. 인기 키워드는 일부 누락될 수 있어요. (API 최대 100건 제한)
관련도순을 선택한 경우 시간 범위 질문을 건너뛴다 (시간 필터 없이 관련도 높은 100건 전체 사용).
Step 2: 뉴스 수집
타입: script
Step 1.5에서 선택한 옵션에 따라 스크립트를 실행한다.
- 최신순:
sort=date, display=100, 선택한 시간 범위로 필터링
- 관련도순:
sort=sim, display=30, 시간 필터링 없이 상위 30건 사용 (관련도 높은 순으로 이미 정렬됨)
python3 .claude/skills/naver-news/scripts/fetch_news.py "{키워드}" ".claude/skills/naver-news/.env"
스크립트 실행 시 시간 필터링이 필요 없는 경우(관련도순), 스크립트 결과의 items를 그대로 사용한다.
최신순인 경우, pubDate 기준으로 선택한 시간 범위 이내의 뉴스만 필터링한다.
total_filtered가 0이면 사용자에게 "해당 키워드로 뉴스가 없습니다. 다른 키워드를 시도해보세요."라고 안내하고 종료한다.
에러 발생 시 stderr의 JSON 메시지를 읽고, hint 필드의 안내를 사용자에게 전달한다.
Step 3: 뉴스 요약 및 정리
타입: prompt
Step 2의 JSON 결과를 읽고 아래 작업을 수행한다:
- 각 뉴스의 description을 기반으로 한 줄 요약 작성 (30자 이내)
- 비슷한 주제끼리 카테고리로 그룹핑 (2-5개 카테고리)
- 전체 뉴스를 관통하는 핵심 트렌드 인사이트 2-3줄 작성
- 중복 내용의 뉴스는 대표 1건만 남기고 제거
Step 4: HTML 뉴스레터 생성
타입: generate
Step 3의 정리 결과를 바탕으로 HTML 뉴스레터 파일을 생성한다.
HTML 구조:
- 헤더: 제목 "{키워드} 뉴스 브리핑", 생성 날짜/시간, 뉴스 건수
- 트렌드 요약: 핵심 인사이트 박스
- 뉴스 카드: 카테고리별로 그룹핑된 뉴스 카드 (제목 + 요약 + 출처 + 시간 + 링크)
- 푸터: "네이버 뉴스 검색 API 기반 · Claude Code로 자동 생성"
스타일 요구사항:
- 모던하고 깔끔한 CSS 인라인 스타일 포함 (외부 파일 의존 없음)
- 모바일 반응형
- 카테고리별 색상 구분
- 뉴스 제목은 원문 링크로 클릭 가능
파일 저장 위치: newsletter/ 폴더에 {YYYYMMDD}-{키워드}.html로 저장한다. newsletter 폴더가 없으면 생성한다.
저장 후 사용자에게 파일 경로를 안내하고, "브라우저에서 열어보세요!"라고 안내한다.
Scripts
scripts/fetch_news.py — 네이버 뉴스 API 호출 + 24시간 필터링 + 중복 제거. .env에서 API 키를 읽고, 결과를 JSON으로 stdout에 출력.
Settings
| 설정 | 기본값 | 변경 방법 |
|---|
| 검색 키워드 | (필수 입력) | 사용자가 직접 입력 |
| 시간 범위 | 24시간 | "최근 48시간 뉴스"처럼 요청하면 변경 |
| 뉴스 최대 건수 | 100건 (API 최대) | 변경 불가 (API 제한) |