Community라이팅 & 에디팅github.com

seokhoonj/newswatcher

RSS 피드와 목록 페이지를 감시하고, 사용자가 정의한 주제와 일치하는 항목을 찾아 LLM 요약 이메일 또는 채팅으로 전송합니다.

newswatcher란 무엇인가요?

newswatcher는 RSS 피드와 뉴스 목록 페이지를 주기적으로 수집(poll)하여 사용자가 정의한 주제와 일치하는 기사를 찾아내고, LLM(기본 Gemini)으로 요약한 다이제스트를 이메일 또는 채팅(푸시)으로 전달하는 도구입니다. 이 스킬은 newswatcher CLI를 래핑(wrapping)하여 **collect → match → summarize → deliver** 파이프라인을 한 번의 명령으로 실행합니다. 사용자는 `topics.toml`/`sources.toml` 파일이나 전용 CLI 명령어(`add-topic`, `add-source`)로 관심 주제와 소스를 한 번 설정하면, 이후 `newswatcher poll` 명령 하나로 모든 소스를 수집하고 주제별로 매칭한 뒤 LLM 요약과 함께 전송할 수 있습니다. 이 스킬은 Gemini (free tier), OpenAI, Claude 등 여러 LLM을 지원하며, `mailmail` 패키지로 이메일 전송, `pushpush` 패키지로 채팅(예: Slack, Telegram) 전송을 지원합니다. 에러 상황은 CLI가 반환하는 한 줄 메시지(`newswatcher: <message>`)를 그대로 전달하여 사용자에게 디버깅 정보를 제공합니다.

지원 대상✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add seokhoonj/newswatcher

Installed? Explore more 라이팅 & 에디팅 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

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).

절차

  1. 설정 확인. 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을 선택할 수 있습니다. 키워드는 피드의 언어(영어 피드는 영어 키워드, 한국어 피드는 한국어 키워드)로 매칭됩니다.

  2. 전달 방식 결정.

    • 사용자가 다이제스트를 전달받길 원하는 경우 (일반적인 경우): newswatcher poll을 실행하세요. 수신처가 설정되어 있어야 합니다(NEWSWATCHER_DIGEST_TO / --to, 또는 NEWSWATCHER_DIGEST_PUSH / --push). 사용자가 지정한 수신처가 있으면 --to/--push를 전달하세요.
    • 사용자가 여기서 새로운 내용을 확인만 하고 보내지 않길 원하는 경우: newswatcher poll --no-mail을 실행한 후, newswatcher articles --since <오늘 날짜, YYYY-MM-DD>로 최근 보관된 내용을 제목/요약/링크와 함께 인라인으로 보여주세요.
  3. 수집 실행 및 결과 전달: N new article(s) 줄, newswatcher: skipping <소스>: <이유> 줄들, 그리고 다이제스트가 전달되었는지 여부를 전달하세요. 수집은 시간이 걸릴 수 있습니다 (모든 소스를 가져오고 기사별로 LLM을 호출함) — 정상입니다.

  4. 오류 처리. 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 — 더 이상 매칭되지 않는 크롤 선택기를 확인하고 복구합니다.

관련 스킬