wow-digest について
wow-digestは、最近のニュースレターとTelegram投稿を処理し、関心事や最近の調査に基づいて注目項目を選ぶスキルです。選んだ項目をデイリーノートに追記し、プレビューやフィードバックにも対応します。
主な機能
- 01ニュースレターとTelegram投稿の取り込み
- 02リンクのみの内容の補完
- 03ノイズ除去と新規性の評価
- 04最近の候補の重複排除
- 05選定項目のデイリーノートへの追記
- 06人によるフィードバックの収集
活用シーン
- 01過去1日の注目情報の確認
- 02ノートを変更せずにダイジェストをプレビュー
- 03複数の情報源にある記事の重複回避
- 04関連性のフィードバックに基づく選定調整
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ glebis/ claude-skills --skill wow-digestインストール後、Claude Code で/wow-digestを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
requirements.txtconfig/sources.yamlwow_prompt.txtscripts/enrich.pyfeedback.pyingest.pysalience_filter.pywow_score.py詳細
wow-digest
目的
過去24時間分のニュースレター(メール)とTelegramチャンネルの投稿を取得し、ノイズを除去します。ユーザーの関心事や最近の調査内容を踏まえて、予想外の発見としての価値を評価し、選んだ3〜7件のWOW項目を今日のデイリーノートに追記します。
ワークフロー
scripts/ingest.pyを実行して、すべてのソースから候補を取得し、形式を統一しますscripts/enrich.pyを実行して、リンクのみのニュースレター(LinkedIn、beehiiv、Substack)の全文を取得しますscripts/salience_filter.pyを実行して、明らかなノイズ(マーケティング、支払い、あいさつ)を除外します- フィルタリング済みの候補に対して
scripts/wow_score.pyを実行し、WOW項目を評価して選択します - 選択した項目を、今日のデイリーノートの
## Readingの下に追記します - 再実行に備えて、候補の生データを
.wow-eval/candidates/YYYYMMDD.jsonlに保存します - 処理済みのニュースレールメールをGWS経由でアーカイブします
- 評価期間中:
scripts/feedback.pyを実行して、人間による判定を収集します
手動実行
python3 scripts/ingest.py --days 1 --output /tmp/wow-candidates.jsonl
python3 scripts/enrich.py --input /tmp/wow-candidates.jsonl --output /tmp/wow-enriched.jsonl
python3 scripts/salience_filter.py --input /tmp/wow-enriched.jsonl --output /tmp/wow-filtered.jsonl
python3 scripts/wow_score.py --input /tmp/wow-filtered.jsonl --output /tmp/wow-selected.json
# Then the skill appends to daily note and archives emails
ドライランモード
ユーザーが /wow-digest --dry-run または「ダイジェストをプレビュー」と指示した場合は、パイプライン全体を実行しますが、次のようにします:
- デイリーノートには追記しないでください
- メールをアーカイブしないでください
- 選択した項目とスコア、フックを、会話内に直接表示してください
これにより、副作用を発生させずに、追記される内容をユーザーがプレビューできます。
コンテキストの取得元
評価プロンプトでは、vault(~/Brains/brain/)から次の3つのコンテキスト情報を使用します:
{focus}—My Focus.mdの## Current、## Base、## Primaryセクションから取得します(## Nice to haveで終了)。評価器にユーザーが今何を重視しているかを伝えます。{research}—ai-research/*.mdファイル(過去30日分)から取得し、ファイル名(YYYYMMDD-topic.md)とresearch_topic:フロントマターを解析します。ユーザーがすでに調査した内容を示します。{recent_topics}—Daily/YYYYMMDD.mdの見出し(過去7日分)から取得し、## doと## logは除外します。最近のデイリーノートのテーマを示します。
これらのファイルが存在しなくても評価は機能しますが、パーソナライズの精度は低下します。
重複排除
取り込み時に、.wow-eval/candidates/*.jsonl の過去7日分と照合し、title|source_name のSHA-256ハッシュ(大文字と小文字を区別しない)を使って重複を排除します。複数のチャンネルで共有された同じ記事や、ニュースレターで再送された記事は重複して表示されません。スキップするには、ingest.py に --no-dedup を渡します。
設定
メールパターンやTelegramチャンネルを追加または削除するには、config/sources.yaml を編集します。
評価プロンプトを調整するには、config/wow_prompt.txt を編集します。
出力形式
評価後、今日のデイリーノート(Daily/YYYYMMDD.md)の - - - 区切りより上、既存の内容の下に追記します:
## Reading
- **[Title]** (Source) — hook explaining WHY it's surprising
- **[Title]** (Source) — hook
...
_WOW digest · N candidates → M selected · YYYY-MM-DD_
重要:必ず date +"%Y%m%d" を実行して今日の日付を取得してください。決して日付を推測しないでください。
デイリーノートにすでに ## Reading がある場合は、重複するセクションを作成せず、そこに項目を追記してください。
アーカイブ
デイリーノートへの追記後、処理済みのニュースレターのメールをアーカイブします:
- メール候補からすべての
message_idの値を収集します - GWSのbatchModifyを実行して、INBOXラベルを削除します
gws gmail users messages batchModify \
--params '{"userId":"me"}' \
--json '{"ids":["ID1","ID2",...],"removeLabelIds":["INBOX"]}'
評価モード(最初の2週間)
評価期間中は、自動アーカイブしないでください。代わりに、次の手順を実行します:
- 通常どおり、取り込みと評価を実行します
- 選択した項目をタイトルだけでなく、全文とともにユーザーに提示します。各項目について、次の内容を表示します:
- タイトルとソース
- スニペット(実際の内容の先頭300〜500文字)
- LLMのフックと
challenged_assumption - WOWスコアの内訳(関連性、意外性、橋渡しの価値、予測可能性)
- ユーザーが内容を読めるように、まずすべての項目を1つのテキストブロックにまとめて表示します
- 次にAskUserQuestionで「実際にWOWでしたか?」と尋ね、選択肢としてwow / meh / noise / already_knewを提示します
scripts/feedback.pyでフィードバックを記録します- 現在のフィードバック統計を表示します
- ユーザーの確認後にのみアーカイブします
重要:ユーザーはタイトルだけではWOWかどうかを判断できません。必ずスニペットの内容を表示してください。 スニペットが空、または短すぎる場合は、提示する前にGWS経由でメール本文全体を取得してください。
評価モードが有効かどうかを確認するには:
.wow-eval/feedback.jsonlのエントリが50件未満 → 評価モード- 50件以上 → 自動モード(確認せずにアーカイブ)