newswatcher — 주제 다이제스트 수집 및 전달
사용자가 설정한 소스에 대해 수집 -> 매칭 -> 요약 -> 전달을 한 번에 실행합니다.
수집, 매칭, 요약, 전달 기능은 모두 newswatcher 패키지(PyPI에 있음)에 포함되어 있으며, 이 스킬은 해당 CLI를 호출하고 결과를 전달하는 얇은 래퍼(wrapper)입니다. 다이제스트 수신자 누락, LLM 키/크레딧 문제, 소스 오류 등은 CLI에서 newswatcher: <메시지> 한 줄로 반환되므로, 스택 트레이스를 보여주지 말고 그대로 전달하세요.
newswatcher는 설정 기반 도구입니다. 주제와 소스는 한 번만 등록하고(topics.toml / sources.toml, 또는 newswatcher add-topic / add-source 명령어 사용), 이후 각 수집(poll)에서 이를 재사용합니다. 따라서 수집하기 전에 최소 하나의 주제와 하나의 소스가 있는지 확인하세요.
전제 조건
이 플러그인은 newswatcher CLI를 호출하므로, 먼저 설치해야 합니다:
pipx install newswatcher # 또는: pip install newswatcher
위 명령으로 newswatcher 명령어가 PATH에 등록됩니다. newswatcher는 자체적으로 API 키를 찾습니다 — 공급자 키(GEMINI_API_KEY / OPENAI_API_KEY / CLAUDE_API_KEY)를 ~/.config/newswatcher/credentials.json (또는 환경 변수)에서 읽어오므로, 이 스킬에서 키를 추출하거나 전달할 필요가 없습니다. Gemini의 무료 티어가 기본 공급자입니다. 절대 키 값을 출력하지 마세요.
전달을 위해서는 수신처도 필요합니다: mailmail 패키지를 통한 이메일 수신자(NEWSWATCHER_DIGEST_TO 또는 --to), 그리고/또는 pushpush 패키지를 통한 채팅 경로(NEWSWATCHER_DIGEST_PUSH 또는 --push). 둘 다 newswatcher와 함께 설치됩니다. pushpush 경로는 pushpush 자체 CLI로 설정합니다.
실행
PATH에서 newswatcher 명령어를 poll 서브커맨드와 함께 호출하세요:
newswatcher poll [옵션]
옵션 (newswatcher poll --help가 정확한 기본값의 출처입니다):
--to ADDRESS— 이번 실행의 이메일 수신자 (mailmail 주소 또는 별칭).NEWSWATCHER_DIGEST_TO를 재정의합니다.--push ROUTE— pushpush 채팅 경로로도 전달합니다.NEWSWATCHER_DIGEST_PUSH를 재정의합니다.--no-mail— 수집, 요약, 보관만 하고 전달은 하지 않습니다 (새로운 내용을 확인만 하려면 사용).--no-store— 이번 실행에서 수집한 기사를 보관하지 않습니다.--no-heal— 이번 실행에서 크롤 선택기 자가 복구 단계를 건너뜁니다.--provider claude|openai|gemini|.../--model <id>— LLM 공급자/모델을 재정의합니다 (기본 gemini).
절차
-
설정 확인.
newswatcher topics와newswatcher sources를 실행하세요. 둘 중 하나라도 비어 있으면, 주제/소스를 임의로 만들지 말고 — newswatcher에는 최소 하나의 주제와 하나의 소스가 필요하다고 설명하고, 사용자가 추가하도록 도와주세요:newswatcher add-topic markets --include stocks Fed "interest rate" earnings --exclude sports newswatcher add-source "BBC" https://feeds.bbci.co.uk/news/world/rss.xml --kind rss --topic markets저장소의
docs/korean-news-rss.md와docs/world-news-rss.md파일에서 검증된 피드 URL을 선택할 수 있습니다. 키워드는 피드의 언어(영어 피드는 영어 키워드, 한국어 피드는 한국어 키워드)로 매칭됩니다. -
전달 방식 결정.
- 사용자가 다이제스트를 전달받길 원하는 경우 (일반적인 경우):
newswatcher poll을 실행하세요. 수신처가 설정되어 있어야 합니다(NEWSWATCHER_DIGEST_TO/--to, 또는NEWSWATCHER_DIGEST_PUSH/--push). 사용자가 지정한 수신처가 있으면--to/--push를 전달하세요. - 사용자가 여기서 새로운 내용을 확인만 하고 보내지 않길 원하는 경우:
newswatcher poll --no-mail을 실행한 후,newswatcher articles --since <오늘 날짜, YYYY-MM-DD>로 최근 보관된 내용을 제목/요약/링크와 함께 인라인으로 보여주세요.
- 사용자가 다이제스트를 전달받길 원하는 경우 (일반적인 경우):
-
수집 실행 및 결과 전달:
N new article(s)줄,newswatcher: skipping <소스>: <이유>줄들, 그리고 다이제스트가 전달되었는지 여부를 전달하세요. 수집은 시간이 걸릴 수 있습니다 (모든 소스를 가져오고 기사별로 LLM을 호출함) — 정상입니다. -
오류 처리. CLI가 0이 아닌 종료 코드로 종료되면, 한 줄 메시지
newswatcher: <메시지>를 그대로 전달하세요. 일반적인 메시지:command not found: newswatcher-> 패키지가 설치되지 않았습니다. 사용자에게pipx install newswatcher(또는pip install newswatcher)를 안내하세요.no digest destination ...-> 수신자가 설정되지 않았습니다.--to [email protected]이나--push <경로>를 제안하거나,NEWSWATCHER_DIGEST_TO/NEWSWATCHER_DIGEST_PUSH를 설정하도록 안내하세요. (또는--no-mail로 실행하여 수집만 할 수도 있습니다.)no API key/insufficient_quota/429-> 공급자 키가~/.config/newswatcher/credentials.json에 없거나 크레딧이 소진되었습니다. 사용자에게 공급자 콘솔(Google AI Studio / OpenAI / Claude)을 안내하세요.another poll is already running; skipping-> 예약된 수집이나 수동 수집이 단일 인스턴스 락을 보유하고 있습니다. 오류가 아닙니다 — newswatcher는 중복 실행 없이 정상 종료됩니다.NEWSWATCHER_DEDUP_THRESHOLD must be ...-> 잘못된 중복 제거 임계값 설정입니다.[0, 1]범위의 숫자여야 합니다.
이 스킬이 하지 않는 일
- 수집, 주제 매칭, 요약, 전달을 여기서 다시 구현하지 않습니다 (패키지가 담당). 항상 CLI를 호출합니다.
- API 키 값을 출력, 로그, 또는 포함하지 않습니다.
- 주제나 소스를 임의로 만들지 않습니다 — 사용자가 설정한 내용을 수집하고, 요청이 있을 때만 추가를 돕습니다.
함께 보기
newswatcher recent <url>— 피드를 추가하기 전에 최신 항목을 미리 봅니다 (저장하지 않음).newswatcher articles [--topic 이름] [--since 날짜] [--until 날짜]— 보관된 내용을 조회합니다.newswatcher watch [--every N]— 일정 간격으로 반복 수집을 포그라운드에서 실행합니다.newswatcher schedule install|status|remove [--every N]— OS 스케줄러에 반복 수집을 등록합니다 (Linux/macOS는 cron, Windows는 schtasks).newswatcher heal— 더 이상 매칭되지 않는 크롤 선택기를 확인하고 복구합니다.