뉴스 클리핑 (News Clipping)
식품회사(인생푸드) 담당자를 위해, Tier 1 영어 매체에서 어제 나온 식품/외식/농산물/공급망 관련 뉴스를 모아 벤토 그리드 디자인의 HTML(아티팩트)로 정리하는 스킬이다. 목적은 "많이"가 아니라 "믿을 수 있게" — 매체 화이트리스트를 지키고, 날짜를 실제로 검증하고, 요약을 지어내지 않는 것이 이 스킬의 핵심이다. 단, "믿을 수 있게"가 "검색을 대충 한 번만 해보고 적게 나왔다고 포기"의 핑계가 되어서는 안 된다 — 2단계에 나온 것처럼 검색어를 충분히 다양하게 시도한 뒤에도 부족한 것과, 애초에 한두 번만 검색해보고 부족하다고 하는 것은 다르다.
언제 적용을 조정하나
기본값은 아래와 같다. 사용자가 명시적으로 다르게 요청하면 그 값을 우선한다:
- 대상 매체: Bloomberg, CNBC (전체 목록·왜 이 매체인지·확장 후보는 references/sources.md)
- 주제: 식품, 외식/레스토랑, 농산물, 식품 공급망(supply chain), 식품 정책/규제
- 기간: 어제(스킬 실행 시점 기준 전날) 하루
- 개수: 최대 10개
알려진 제약: WebFetch·브라우저로 기사 본문을 직접 열 수 없다
이 스킬을 실제로 돌려본 결과, Claude Code 환경(WebFetch, 인앱 브라우저)에서는 주요 뉴스 매체 다수가 정책상 직접 fetch가 차단된다(The Economist, The New York Times, Reuters, WSJ, FT, The Guardian, The Washington Post로 테스트했을 때 전부 차단되거나 WebSearch 색인에도 전혀 나오지 않았다 — 아마 이 매체들이 Anthropic 크롤러를 robots.txt로 막아 놓았기 때문). Bloomberg와 CNBC는 예외적으로 WebSearch 검색 결과에 실제 기사 URL과 날짜가 꾸준히 잡혀서 이 화이트리스트에 넣었다. 자세한 근거는 references/sources.md에 있다.
그래서 이 스킬은 WebSearch(일반 검색)만으로 정보를 모은다. WebFetch로 기사 본문을 열려는 시도는 하지 않는다 — 본문을 읽고 검증하는 것보다 정확도가 낮다는 걸 스스로도 알고, 최종 결과물에 그 사실을 명시한다(아래 7단계). 이걸 감추고 확신에 찬 것처럼 내놓지 않는다 — 사용자가 원문을 클릭해서 최종 확인해야 한다는 걸 알아야 판단을 그르치지 않는다.
절차
1단계 — "어제" 날짜를 실제로 계산한다
절대 기억이나 추정으로 오늘 날짜를 가정하지 않는다. 학습 데이터의 마감일과 실제 실행 시점은 다르고, 세션마다 오늘 날짜가 다르기 때문에 매번 다시 계산해야 한다.
bash <news-clipping 스킬 폴더>/scripts/get_dates.sh
이 스크립트는 오늘/어제 날짜를 여러 형식(YYYY-MM-DD, 요일, 자연어)으로 한 번에 출력하고, 어제가 주말이었으면 그 사실도 알려준다 — 주말에는 미국 시장이 닫혀 있어 Bloomberg/CNBC의 시황·실적 기사가 평소보다 적으니, 그럴 땐 정책·리콜 뉴스 위주로 검색 비중을 옮긴다. date -d가 없는 환경이면 스크립트 안의 PowerShell 대체 로직 주석을 참고한다.
계산된 "어제" 날짜(예: 2026-09-09)를 이후 모든 단계에서 필터 기준으로 쓴다.
2단계 — 카테고리별로 검색어를 다양화해서 검색한다
WebSearch는 지연 로드 도구이므로 먼저 ToolSearch로 select:WebSearch를 불러온다.
한 가지 검색어 조합만 반복하지 않는다. 실제로 "food agriculture supply chain"류 검색만 반복했더니 후보가 부족했던 적이 있다 — 매체 홈페이지에는 식품/농산물 관련 기사가 매일 여러 개 올라오지만, 검색어가 좁으면 색인에서 걸리지 않을 뿐이다. references/queries.md에 정리된 카테고리(관세·무역, 리콜·안전, 기업실적·M&A, 원자재가격, 외식업·소매, 정책·규제)를 최소 4~5개는 각각 검색해본다. WebSearch는 한 턴에 여러 개를 병렬로 호출할 수 있으니 카테고리별로 묶어서 한 번에 호출한다.
검색 결과 중 URL 도메인이 실제로 화이트리스트 매체(bloomberg.com, cnbc.com, 필요하면 fortune.com)인 것만 후보로 남긴다(다른 매체가 그 매체를 인용한 기사가 섞여 들어오는 경우가 있다). WebSearch가 만들어주는 요약 문장(prose)이 아니라, 결과에 실제로 나열된 URL 목록만 근거로 삼는다 — 요약 문장이 실제로는 안 나온 매체의 기사인데 "찾았다"고 서술하는 경우가 있었다(예: investing.com 기사를 CNBC 커버리지라고 잘못 요약). 이 단계에서는 후보를 넉넉히 모으고, 날짜 판단은 3단계로 미룬다.
3단계 — URL과 스니펫으로 발행일을 검증한다
본문을 열어볼 수 없으므로 완벽한 검증은 불가능하다는 걸 전제로, 아래 근거 중 하나라도 있어야 "어제" 기사로 채택한다:
- URL 안의 날짜 (1순위): Bloomberg는
/news/articles/2026-09-09/..., CNBC는/2026/09/09/...형식으로 URL에 발행일이 들어 있다. 가장 신뢰할 수 있는 근거이니 먼저 확인한다. references/queries.md의 "URL 패턴으로 직접 저격하기"처럼 URL 날짜 패턴 자체를 검색어에 넣으면 그날 발행된 기사를 더 폭넓게 훑을 수 있다. - 검색 스니펫/요약에 명시된 날짜: WebSearch가 반환하는 요약문이나 스니펫에 "Sep 9, 2026" 같은 날짜가 직접 언급되는 경우.
둘 다 없어서 날짜를 특정할 수 없는 후보는 과감히 버린다 — "아마 최근 기사일 것"이라는 추측으로 포함하지 않는다. 1단계에서 계산한 "어제" 날짜와 명확히 다른 근거가 나오면(오늘자거나 그 이전) 제외한다.
4단계 — 주제 관련성으로 골라내고 최대 10개로 추린다
남은 후보 중 식품/외식/농산물/공급망 주제와 직접 관련된 기사만 남긴다. 중요도는 대략 아래 순서로 판단한다 (뒤로 갈수록 대체 가능성이 높은 정보라 우선순위가 낮다):
- 관세·무역정책 변화, 대규모 리콜/식품안전 — 회사 의사결정에 즉시 영향을 줄 수 있는 사안
- 주요 기업 실적, M&A, 공급망 재편
- 원자재·상품가격 동향
- 외식업/소매 트렌드, 업계 일반 뉴스
10개가 채워지지 않으면(2단계에서 카테고리를 충분히 다양하게 시도했는데도 그날 두 매체에 해당 주제 기사가 적을 수 있다) 있는 만큼만 담고, 사용자에게 "어제자 기준으로 K개만 확인됨"이라고 정직하게 알린다. 관련 없는 기사나 날짜가 어긋난 기사로 억지로 채우지 않는다.
5단계 — 기사별로 정리한다
본문을 읽을 수 없으므로, 검색 스니펫과 헤드라인에 실제로 나온 정보만 바탕으로 정리한다(스니펫에 없는 내용을 지어내지 않는다):
- 매체명 (Bloomberg / CNBC / Fortune)
- 헤드라인 (원문 그대로 또는 자연스러운 번역)
- 한 줄 한국어 요약 — 스니펫에서 확인되는 핵심 사실 1개 (제목 재진술이 아니라 "무슨 일이 있었는지"). 스니펫이 헤드라인 이상의 정보를 주지 않으면 억지로 살을 붙이지 말고 헤드라인을 자연스럽게 번역하는 수준에 그친다.
- 카테고리 태그 (4단계의 분류를 그대로 쓰면 된다: 관세/리콜/기업실적/원자재가격/외식·소매)
- 원문 URL
6단계 — 부족하면 벤토 그리드를 정보 타일로 채운다
확정된 기사가 10개보다 적을 때(흔한 일이다), 빈 공간을 억지로 다른 기사로 채우는 대신 정보 타일로 채운다. 이렇게 하면 사용자가 "오늘은 적게 나온 이유"를 바로 알 수 있고, 벤토 그리드도 허전해 보이지 않는다. 넣을 만한 타일:
- 대상 날짜 (큰 숫자로)
- 수집 결과 요약 (확정 개수 / 검토한 후보 수)
- 채택 기준 (2~3단계의 검증 규칙을 체크리스트로)
- 이 스킬의 알려진 제약(왜 NYT·Economist가 아닌지 등, 사용자가 궁금해할 만한 배경)
기사가 정말 하나도 없으면(2단계를 카테고리별로 다 시도했는데도 전무한 경우) 정보 타일만으로 채우지 말고, 사용자에게 그 사실을 그대로 알리고 기간이나 주제를 넓힐지 먼저 물어본다.
7단계 — 벤토 그리드 HTML로 발행한다
HTML을 작성하기 전에 반드시 artifact-design 스킬을 먼저 로드한다(Artifact 도구 규칙). 벤토 그리드는 카드 크기를 균일하게 두지 않고 중요도에 따라 큰 타일/작은 타일을 섞는 레이아웃이다 — CSS Grid의 grid-column/grid-row span으로 구현하고, 가장 중요하다고 판단한 1~2개 기사(4단계 우선순위 1번)를 큰 타일로 배치한다.
각 기사 카드에 포함할 것:
- 매체명(뱃지 형태로 구분 — 매체마다 색을 다르게 하면 스캔하기 쉽다)
- 헤드라인 (클릭 시 원문으로 이동하는 링크)
- 한 줄 한국어 요약
- 카테고리 태그
- 어제 날짜(카드마다 반복할 필요는 없고, 페이지 상단에 한 번 표기)
아티팩트 제목은 "식품업계 뉴스 클리핑" 같은 안정적인 이름으로 하고(재발행해도 제목이 바뀌지 않게), 대상 날짜는 헤더 안에 "9월 9일 (수)" 형식으로 표기한다(날짜를 매번 다시 계산했으므로 고정 문자열을 쓰지 않는다). Favicon은 📰 사용. 다크/라이트 테마 대응 등 나머지 규칙은 artifact-design 스킬 지침을 따른다.
페이지 상단(헤더 근처)에 눈에 띄지 않게 숨기지 말고 작은 안내 문구를 반드시 넣는다: 본문을 직접 열어 검증하지 못했고 검색 결과 기반이라는 것, 그리고 최종 확인은 원문 클릭으로 하라는 것. 예: "검색 결과 기반 정리 · 발행일·본문은 원문에서 최종 확인하세요". 이건 면책 문구가 아니라 실제 정확도 정보이므로 빠뜨리면 안 된다.
흔한 실수
- 날짜를 짐작으로 채움: 반드시 1단계 스크립트로 계산한 날짜와 대조한다.
- 검색어 조합을 한두 개만 시도하고 부족하다고 판단함: 2단계의 카테고리를 최소 4~5개는 각각 시도했는지 스스로 확인한다.
- WebSearch의 요약 문장을 그대로 믿음: 실제 URL 목록만 근거로 삼는다(2단계).
- 화이트리스트 밖 매체가 섞임: 검색 결과 URL의 도메인을 항상 확인한다.
- WebFetch로 본문을 열려고 시도함: 화이트리스트 매체를 포함해 대부분의 주요 뉴스 도메인이 이 환경에서 차단된다. 시도하지 말고 처음부터 스니펫 기반으로 진행한다.
- 스니펫에 없는 내용을 요약에 지어 넣음: 헤드라인 이상 정보가 없으면 헤드라인 번역 수준에서 멈춘다.
- 정확도 안내 문구를 생략함: 본문 미검증 사실을 사용자가 알아야 하므로 7단계의 안내 문구는 필수다.
- 10개를 채우려고 관련 없는 기사나 날짜 불확실한 기사를 넣음: 부족하면 6단계처럼 정보 타일로 채우고 정직하게 보고한다.
- The Economist·NYT를 다시 시도함: 이미 검색 색인 자체에 없는 것으로 확인됐다(references/sources.md 참고). 사용자가 다시 요청하면 이 문서를 근거로 안 되는 이유를 설명하고, 필요하면 그때 가서 재검증한다.