Communitygithub.com

zinan92/daily-newsletter

로컬 우선 데일리 인박스 파이프라인: 소스 피드를 가져오고, AI가 선택/작성하며, Markdown/HTML/PNG로 마무리하고, 소스 상태를 추적하며, Feishu로 영수증을 전송합니다.

daily-newsletter란 무엇인가요?

Daily Newsletter 스킬은 로컬 우선(Local-first) 방식의 데일리 인박스 운영 파이프라인입니다. 다양한 소스 피드를 가져와 정규화된 단일 항목 Markdown으로 변환하고, AI가 이벤트 이해/병합/선택/작성을 수행한 후 최종 Markdown/HTML/PNG 아티팩트를 생성합니다. 소스 상태를 기록하고 선택적으로 완성된 다이제스트를 Feishu에 전송할 수 있습니다. 주로 Claude Code와 같은 AI 에이전트 환경에서 동작하며, 'README.md', 'AGENTS.md', 'GOTCHAS.md' 문서를 기반으로 행동하고 다양한 검증 스크립트를 통해 파이프라인 무결성을 확인합니다. 사용자는 이 스킬을 통해 데일리 뉴스레터 파이프라인을 실행, 디버깅, 변경하거나 전반적인 상태를 검토할 수 있습니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add zinan92/daily-newsletter

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

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

문서

Daily Newsletter

Daily Newsletter는 로컬 우선(Local-first) 데일리 인박스 운영 파이프라인입니다. 소스 자료를 가져와 하나의 항목 Markdown으로 정규화하고, AI가 이벤트 이해/병합/선택/작성을 수행한 후 Markdown/HTML/PNG 아티팩트를 완성합니다. 소스 상태를 기록하고, 선택적으로 완성된 다이제스트를 Feishu에 전송합니다.

사용 시기

사용자가 다음을 요청할 때 이 스킬을 사용하세요:

  • 데일리 AI 뉴스레터 파이프라인을 실행하거나 확인할 때
  • 누락, 지연 또는 품질 저하된 소스 항목을 디버깅할 때
  • Feishu 전달 또는 로컬 전송 아티팩트를 검사할 때
  • 리더(reader) 대상 데일리 인박스 출력을 변경할 때
  • 파이프라인 상태, 워크플로 그래프, 태스크 그래프 또는 회귀 불변 조건을 검토할 때
  • 이 저장소를 공개 에이전트 스킬로 패키징할 때

이 저장소와 관련 없는 뉴스레터 카피라이팅, 일반 RSS 조언, 또는 실시간 콘텐츠 스크래핑에는 이 스킬을 사용하지 마십시오.

입력

  • 저장소 루트: daily-newsletter 체크아웃
  • 소스 레지스트리: $PARKIO_HOME/_source management/sources.md
  • 런타임 데이터: $PARKIO_HOME/_inbox/{raw,unprocessed,processed}
  • 전송 아티팩트: $PARKIO_HOME/001_daily newsletter/ai/
  • 비밀: 환경 변수 또는 $PARKIO_HOME/_secrets/*
  • 선택적 인증/런타임 도구: X 인증 환경 변수, YouTube 쿠키, WeWe RSS, content-toolkit, Chrome, MLX Whisper

기본 $PARKIO_HOME은 ~/park-io입니다.

워크플로

  1. 동작을 변경하기 전에 README.md, AGENTS.md, GOTCHAS.md를 읽으십시오.
  2. git 상태를 확인하고 커밋되지 않은 사용자 변경 사항을 보존하십시오.
  3. 읽기 전용 진단을 위해, 프로덕션 명령을 다시 실행하기 전에 생성된 아티팩트와 로그부터 확인하십시오.
  4. 공개 검증을 위해 다음을 실행하십시오:
python3 -m pytest -q
python3 scripts/task_graph_validate.py
python3 scripts/workflow_graph_validate.py
python3 scripts/workflow_graph_dry_run.py
python3 scripts/n8n_import_diff.py
  1. 수동 프로덕션 실행을 위해 단계별 경로를 사용하십시오:
./fetch-all.sh
python3 stages/to_md/run.py
BATCH=$(python3 stages/coarse_filter/run.py | tail -1)
PARKIO_BATCH_ID=$BATCH python3 build-digest.py
PARKIO_BATCH_ID=$BATCH python3 stages/archive/run.py
PARKIO_BATCH_ID=$BATCH python3 finalize-local.py
python3 build-product-radar.py --date "$(date +%F)"
python3 build-daily-bundle.py --date "$(date +%F)"
python3 reader_quality.py --date "$(date +%F)"
python3 send-feishu-digest.py --date "$(date +%F)"
  1. 리더 대상 또는 라우팅 변경 후에는 테스트와 최소한 워크플로 그래프 검증기를 다시 실행하십시오.

출력

  • processed/<YY-MM-DD>/run-report.json
  • processed/receipts/feishu/*.json
  • sent/YY-MM-DD.{md,html,png}
  • sent/deep-YY-MM-DD.{md,html,png} (딥 후보가 있을 경우)
  • sent/product-radar-YY-MM-DD.{md,html,png}
  • sent/daily-YY-MM-DD.{md,html,png}
  • status.html 및 운영자 가시성을 위한 소스 상태 JSON

안전

  • API 키, 쿠키, Feishu 웹훅 시크릿, Telegram 토큰 또는 X 인증 값을 절대 출력하거나 커밋하지 마십시오.
  • 사용자가 명시적으로 전송을 요청하거나 현재 작업이 전송 확인이 아닌 한 Feishu 또는 Telegram 메시지를 보내지 마십시오.
  • 소스 실패를 "업데이트 없음"으로 숨기지 마십시오. channel-health.py, run-report.json 및 상태 아티팩트를 사용하십시오.
  • AI JSON 또는 최종 Markdown 구조가 실패할 경우 가짜 성공 뉴스레터를 만들지 마십시오.
  • 조잡한 가비지 필터링을 제외하고, 콘텐츠 판단을 AI 프롬프트에서 결정론적 스크립트 임계값으로 옮기지 마십시오.
  • Markdown과 별도로 HTML 또는 PNG를 다시 작성하지 마십시오. Markdown은 유일한 리더 대상 단일 소스입니다.

회귀 불변 조건

GOTCHAS.md가 신뢰할 수 있는 소스입니다. 가장 중요한 불변 조건은 다음과 같습니다:

  • AI가 병합, 점수, 분류, 선택 및 최종 작성을 담당합니다.
  • 구조적 AI 출력 실패는 실행을 중단하고 오류 아티팩트를 기록합니다.
  • 딥 리드는 간략한 유니버스의 추적 가능한 하위 집합이어야 합니다.
  • Product Radar는 별도의 제품 트랙이며 데일리 우산 아래에 링크됩니다.
  • 소스 상태는 상태/실행-보고서/알림에 남아 있으며, 소비자 다이제스트 본문 안에는 포함되지 않습니다.

관련 스킬