네이버 MCP + Claude in Chrome + 카카오톡 + GitHub Pages 연동
소개
저는 MICE(Meetings, Incentives, Conventions, Exhibitions) 업계에서 일하고 있어 매일 국내외 업계 뉴스를 모니터링하는 것이 중요한 업무입니다. 기존에는 네이버 뉴스, 구글, 해외 전문 미디어(TTGmice 등)를 직접 돌아다니며 수동으로 기사를 수집하고 정리하는 데 매일 30분~1시간 이상이 소요됐습니다.
시도하고자 했던 것:
국내외 MICE 뉴스를 매일 자동으로 수집·요약해서 카카오톡으로 받아보기
원문 링크를 클릭해서 바로 기사로 연결되는 HTML 브리핑 페이지 자동 생성
매일 오전 10시, 평일(공휴일 제외) 자동 실행
결론적으로 Claude Cowork의 스킬·플러그인·스케줄러를 활용해 완전 자동화된 일일 MICE 뉴스 브리핑 시스템을 구축했습니다.
진행 방법
1단계 | 국내 뉴스 — 네이버 뉴스 MCP 활용
처음에는 Claude in Chrome으로 네이버 뉴스를 검색하려 했지만, naver.com이 보안 정책으로 차단되어 있었습니다. 대신 play mcp 플러그인에 네이버 뉴스 MCP를 추가해 NaverSearch-search_news 도구를 활용했습니다.
사용한 검색 쿼리:
MICE 마이스 산업 관광 컨벤션 전시 국제회의동작 방식:
display: 20,sort: date로 최신 기사 20건 수집pubDate기준으로 검색 기간 내 기사만 필터링동일 사건을 여러 언론이 보도한 경우 대표 1건만 유지 (연합뉴스 > 주요지 > 전문지 > 지역지 우선순위)
2단계 | 해외 뉴스 — Claude in Chrome + Google 뉴스
해외 MICE 전문 미디어(TTGmice, Business Traveller 등)의 기사는 Claude in Chrome으로 Google 뉴스 날짜 필터 검색을 통해 수집했습니다.
사용한 검색 URL:
https://www.google.com/search?q=%22business+events%22+OR+%22meetings+industry%22+OR+%22MICE+industry%22+trend+OR+market+OR+growth+OR+destination+OR+sustainability&tbm=nws&tbs=cdr:1,cd_min:{DATE_FROM},cd_max:{DATE_TO}&hl=en기사 URL 추출 JavaScript:
javascript
Array.from(document.querySelectorAll('a[href]'))
.filter(a => a.href && !a.href.includes('google.com') && a.innerText.trim().length > 20)
.slice(0, 12)
.map(a => ({title: a.innerText.trim().slice(0, 150), href: a.href}))3단계 | 병렬 서브에이전트 구조
국내·해외 수집을 순차적으로 하면 시간이 너무 오래 걸려, Claude의 서브에이전트 기능으로 두 작업을 동시에 실행하도록 구성했습니다.
[메인 에이전트]
├── 에이전트 A: 네이버 MCP → 국내 뉴스 3~5건 수집
└── 에이전트 B: Chrome → Google 뉴스 → 해외 뉴스 3~5건 수집
↓ (동시 실행 후 결과 통합)
중복 제거 → HTML 생성 → GitHub 업로드 → 카카오톡 전송4단계 | HTML 브리핑 페이지 생성
카카오톡 텍스트 메시지만으로는 원문 링크 연결이 불가능해서, 제목 클릭 시 원문으로 연결되는 모바일 친화적 HTML 브리핑 페이지를 별도로 생성했습니다.
HTML 구조 (핵심 부분):
html
<div class="card">
<div class="header">
<div class="header-icon">📋</div>
<div class="header-text">
<h1>MICE 산업 일일 뉴스 브리핑</h1>
<p>2026년 6월 1일 · 검색기간 2026.05.31~06.01</p>
</div>
</div>
<div class="section-label">🇰🇷 국내</div>
<div class="item">
<a href="{원문URL}" target="_blank">{기사제목}</a>
<div class="source">{언론사} | {날짜}</div>
<div class="summary">{2~3문장 요약}</div>
</div>
<div class="section-label intl">🌏 해외</div>
<!-- 해외 기사 반복 -->
</div>5단계 | GitHub Pages 자동 업로드
HTML 파일을 매일 열어 확인하려면 어딘가에 호스팅이 필요했습니다. GitHub Pages를 선택했고, Claude in Chrome의 javascript_tool을 활용해 GitHub API로 직접 업로드했습니다.
⚠️ 핵심 트러블슈팅: 처음엔 파일을 로컬에 저장한 뒤 base64 변환해서 올렸더니 한글이 깨지는 문제가 발생했습니다. 브라우저 내에서 HTML 문자열을 직접 생성하고
btoa(unescape(encodeURIComponent(html)))방식으로 인코딩하니 해결됐습니다.
GitHub Pages 업로드 코드:
javascript
(async () => {
const TOKEN = "ghp_..."; // GitHub Personal Access Token
const OWNER = "mpvictoria-byte", REPO = "mice-briefing";
const H = {
"Authorization": `token ${TOKEN}`,
"Accept": "application/vnd.github+json",
"Content-Type": "application/json"
};
const html = `[생성된 HTML 전체]`;
// ✅ 한글 깨짐 방지: 브라우저 내에서 직접 인코딩
const b64 = btoa(unescape(encodeURIComponent(html)));
const upload = async (path) => {
const rs = await fetch(
`https://api.github.com/repos/${OWNER}/${REPO}/contents/${encodeURIComponent(path)}`,
{headers: H}
);
const sha = rs.ok ? (await rs.json()).sha : undefined;
const body = {message: `briefing: ${path}`, content: b64};
if (sha) body.sha = sha; // 업데이트 시 SHA 필요
const ru = await fetch(
`https://api.github.com/repos/${OWNER}/${REPO}/contents/${encodeURIComponent(path)}`,
{method: "PUT", headers: H, body: JSON.stringify(body)}
);
return ru.status;
};
await upload("MICE_뉴스브리핑_20260601.html"); // 날짜별 보관
await upload("latest.html"); // 고정 URL (카톡 링크용)
})();결과 URL: https://mpvictoria-byte.github.io/mice-briefing/latest.html
6단계 | 카카오톡 나에게 보내기
play mcp 플러그인의 KakaotalkChat-MemoChat 도구로 브리핑 내용을 카카오톡으로 전송했습니다.
최종 카카오톡 메시지 형식:
■ 6월 1일 MICE 뉴스 브리핑
[국내]
1. 인천, ICCA 국제회의 개최도시 국내 3위
2025년 24건 개최, 세계 112위·아시아 23위 역대 최고. 2021년 국내 8위에서
5년 만에 제주 추월. 바이오·반도체·항공물류 등 미래산업 기반이 견인.
2. 경북도, APEC 후속 '경주 글로벌 CEO SUMMIT' 9월 개최
...
[해외]
5. 베트남, 동남아 최대 복합전시시설 VEC 개관
...
📎 원문 링크 → https://mpvictoria-byte.github.io/mice-briefing/latest.html핵심: 처음에는 기사별로 메시지를 쪼개 9개를 보냈더니 가독성이 너무 떨어졌습니다. 하나의 긴 메시지로 전체를 보내는 방식으로 바꿨고, MemoChat 도구 설명의 200자 제한은 실제로는 적용되지 않았습니다.
7단계 | 스킬 패키징 + 스케줄러 설정
모든 작업 흐름을 SKILL.md에 문서화하고 .skill 파일로 패키징했습니다.
SKILL.md 핵심 설계:
공휴일/주말이면 즉시 종료 (2026년 공휴일 목록 내장)
직전 영업일 10:01 ~ 당일 10:00 자동 계산 (주말·연휴 연속 시 자동 보정)
국내/해외 서브에이전트 동시 실행
스케줄러 설정:
실행 주기:
0 10 * * 1-5(평일 오전 10시)공휴일 판단 로직은 스킬 내부에서 처리
첫 실행 시 "Run now"로 도구 권한 사전 승인 필요
결과와 배운 점
최종 결과물
매일 오전 10시, 아래 두 가지가 자동으로 전달됩니다:
카카오톡 메시지: 국내 3~5건 + 해외 3~5건 텍스트 요약
GitHub Pages 브리핑 페이지: 제목 클릭 시 원문 연결, 모바일 최적화
기존에 매일 30~60분 걸리던 뉴스 모니터링이 0분으로 줄었습니다.
시행착오 & 꿀팁
1. 네이버 naver.com 직접 접근 불가 Claude in Chrome으로 naver.com을 열려 했으나 보안 정책으로 차단됨. play mcp에 네이버 뉴스 MCP를 별도로 추가해서 해결.
2. GitHub API는 샌드박스에서 차단 Claude의 bash 환경에서 requests로 GitHub API 호출 시 proxy 403 에러 발생. Claude in Chrome의 javascript_tool을 활용해 브라우저의 fetch()로 우회해서 해결.
3. 한글 깨짐 문제 로컬 파일을 읽어 base64 변환 후 업로드하면 한글이 깨짐. 반드시 브라우저 내에서 HTML 문자열을 생성하고 btoa(unescape(encodeURIComponent(html))) 방식으로 인코딩해야 함.
4. 카카오톡 메시지 분할 → 통합 기사별로 메시지를 나눠 보내면 가독성 저하. 하나의 긴 메시지로 보내는 방식이 훨씬 낫고, MemoChat의 실제 글자 수 제한은 200자보다 훨씬 큼.
5. 스케줄러 도구 승인 스케줄러 자동 실행 시 처음엔 도구 사용 권한 팝업에서 멈출 수 있음. 설정 직후 "Run now"를 한 번 눌러 모든 도구를 수동으로 승인해두면 이후 자동 실행에서 멈추지 않음.
앞으로의 계획
며칠간 퀄리티 검증 후 오픈카톡방으로 포워딩해 팀과 공유 예정
충분히 검증되면 카카오톡 OpenChat Bot API를 연동해 오픈카톡방 자동 발송으로 확장
키워드 확장: 특정 지역(부산, 인천 등)이나 이벤트(IMEX, IBTM 등) 별도 필터 추가 고려
2027년 공휴일 업데이트 등 연간 유지보수 필요
사용한 도구 요약
한국어 검색 엔진 -
도움받은 사이트
https://youtu.be/HFcVTALckhw?si=mF5FF7hAxWiWg1lR