Communitygithub.com

zinan92/daily-newsletter

ローカルファーストのDaily Inboxパイプライン:ソースフィードを取得し、AIによる選択・執筆を実行、Markdown/HTML/PNGを最終化、ソースヘルスを追跡、Feishuレシートを送信します。

daily-newsletter とは?

Daily Newsletterは、ローカルファーストで動作するDaily Inbox運用パイプラインです。ソースフィードを取得し、1アイテム1Markdownに正規化した後、AIがイベント理解・マージ・選択・執筆を行います。最終的にMarkdown/HTML/PNGアーティファクトを生成し、ソースヘルスを記録、オプションでFeishuにダイジェストを送信します。このスキルは、パイプラインの実行・検証、欠落・遅延アイテムのデバッグ、Feishu配信やローカル成果物の確認、アウトプットの変更、パイプライン全体の健全性・ワークフローグラフ・タスクグラフ・リグレッション不変条件のレビュー、そしてこのリポジトリを公開エージェントスキルとしてパッケージングする際に使用します。主要なプラットフォームはClaude Code、Cursor、CodexなどのAIエージェントに対応しており、ローカルのpark-ioディレクトリ構造と連携します。パイプラインはPythonスクリプトで構成され、n8nワークフローと統合されており、すべての重要な判断はAIプロンプトに委ねられ、構造的なAI出力の失敗は実行を停止し、エラーアーティファクトを書き出します。

対応~Claude Code~Codex CLI~Cursor
npx skills add zinan92/daily-newsletter

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Daily Newsletter

Daily Newsletterは、ローカルファーストのDaily Inbox運用パイプラインです。ソース素材を取得し、1アイテム1Markdownに正規化し、AIにイベント理解・マージ・選択・執筆を実行させ、Markdown/HTML/PNGアーティファクトを最終化し、ソースヘルスを記録、必要に応じて完全なダイジェストをFeishuに送信します。

使用タイミング

このスキルは、ユーザーが以下のことを依頼した場合に使用します:

  • 毎日のAIニュースレターパイプラインを実行または検証する
  • 欠落、遅延、品質低下したソースアイテムをデバッグする
  • Feishu配信またはローカルの送信済みアーティファクトを検査する
  • 読み手向けDaily Inboxの出力を変更する
  • パイプラインの健全性、ワークフローグラフ、タスクグラフ、リグレッション不変条件をレビューする
  • このリポジトリを公開エージェントスキルとしてパッケージングする

このリポジトリ外での無関係なニュースレターのコピーライティング、汎用的な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 Cookie、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キー、Cookie、Feishu webhookシークレット、Telegramトークン、X認証値を決して出力したりコミットしたりしないでください。
  • ユーザーが明示的に配信を依頼した場合、または現在のタスクが配信検証である場合を除き、FeishuやTelegramメッセージを送信しないでください。
  • ソースの障害を「更新なし」として隠蔽しないでください。channel-health.py、run-report.json、ステータスアーティファクトを使用してください。
  • AI JSONまたは最終Markdown構造が失敗した場合に、偽の成功したニュースレターを作成しないでください。
  • AIプロンプトからのコンテンツ判断を、粗いガベージフィルタリング以外の決定論的スクリプトしきい値に移行しないでください。
  • HTMLやPNGをMarkdownとは別に書き換えないでください。Markdownが唯一の読み手向けソースです。

リグレッション不変条件

GOTCHAS.mdが真実のソースです。最も重要な不変条件は以下の通りです:

  • AIがマージ、スコアリング、分類、選択、最終執筆を所有します。
  • 構造的なAI出力の失敗は実行を停止し、エラーアーティファクトを書き出します。
  • 深掘り記事は、簡潔なユニバースのトレース可能なサブセットでなければなりません。
  • Product Radarは独立したプロダクトレーンであり、日次傘ダイジェストによってリンクされます。
  • ソースヘルスはstatus/run-report/alertsに残り、消費者向けダイジェスト本文には挿入されません。

関連スキル