mcpField
D
doc-daily-digest

doc-daily-digest

github.com/molechowski生産性35 回インストール
リポジトリ

doc-daily-digest について

Obsidianの日次ノートを処理するワークフロースキルです。項目の分類、情報の取得や調査、構造化ノートの作成を行い、処理済み項目をウィキリンクに置き換えます。

主な機能

  1. 01リンク、投稿、アイデアの分類
  2. 02情報取得とアイデアの調査
  3. 03構造化されたObsidianノートの作成
  4. 04日次ノート項目をウィキリンクに置換
  5. 05ナレッジベースの再インデックスと結果報告

活用シーン

  1. 01日次ノートに保存したURLの処理
  2. 02未整理のアイデアを調査ノート化
  3. 03処理前の項目確認と選択
  4. 04資料ノートへのリンクで日次ノートを更新

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/molechowski/claude-skills --skill doc-daily-digest

インストール後、Claude Code で/doc-daily-digestを入力して読み込まれたか確認します。

詳細

デイリーダイジェスト

Obsidian のデイリーノートを処理し、未整理の項目を分類し、コンテンツを取得・調査して、構造化されたノートを作成し、未整理の項目をウィキリンクに置き換えます。

前提条件

スキル必須目的
doc-obsidianはいnotesmd-cli による Vault の CRUD と qmd による検索
res-xX/Twitter の URL の場合xAI 経由でツイートのコンテンツを取得
res-deep未整理のアイデアの場合複数ラウンドの調査

任意の依存関係: scrapling — WebFetch をブロックするサイト(403、コンテンツが空、CAPTCHA ページなど)に対するヘッドレスブラウザーのフォールバックです。次のコマンドでインストールします:uv tool install 'scrapling[all]'

ワークフロー

Step 0: Setup → Step 1: Scan & Classify → Step 2: Process → Step 3: Create Notes → Step 4: Update Daily → Step 5: Re-index & Report

ステップ 0:セットアップ

次の 3 つのチェックをすべて実行します。

# 1. Vault path
VAULT=$(notesmd-cli print-default --path-only)

# 2. Read daily note (today or user-specified date)
DATE=$(date '+%Y-%m-%d')
notesmd-cli print "$DATE"

# 3. xAI key (needed for res-x and res-deep full mode)
security find-generic-password -s "xai-api" -w ~/Library/Keychains/claude-keys.keychain-db 2>/dev/null && echo "XAI_AVAILABLE=true" || echo "XAI_AVAILABLE=false"

ユーザーが日付を指定した場合は、今日の日付ではなく指定された日付を使用します。

ステップ 1:スキャンと分類

デイリーノートを解析し、各項目を分類します。項目は次のセクションにあります:## Notes、## Log、## Links。

分類ルール
種類パターンアクション
スキップ行内のどこかに [[wikilink]] がある処理済みのためスキップ
スキップセクション見出し(##)、フロントマター、空行、タスクのチェックボックス構造要素のためスキップ
X のツイートhttps://(x\.com|twitter\.com)/\w+/status/\d+ に一致する URLres-x 経由で取得
X の記事https://(x\.com|twitter\.com)/i/article/[\w-]+ に一致する URLres-x 経由で取得
GitHub リポジトリhttps://github\.com/[\w-]+/[\w-]+ に一致する URLWebFetch でリポジトリのページを取得
Web URLその他の https://... URLWebFetch でページを取得
未整理のアイデアURL、ウィキリンク、構造要素ではない空でないテキストres-deep で詳細に調査
分類結果の提示

処理を始める前に、分類テーブルをユーザーに表示します。

## Daily Digest: {DATE}

| # | Section | Type | Item (truncated) | Action |
|---|---------|------|-------------------|--------|
| 1 | Links | X tweet | https://x.com/user/status/123... | res-x fetch |
| 2 | Notes | Loose idea | Train a model to click on... | res-deep |
| 3 | Links | GitHub | https://github.com/org/repo | WebFetch |
| 4 | Log | Skip | [[already-processed]] — ... | skip |

先に進む前に、項目の承認または除外をユーザーに確認します。ユーザーは次の操作を行えます。

  • すべて承認する
  • 項目番号を指定して除外する
  • 項目のアクションを変更する(例:アイデアをスキップする、URL を res-deep に変更する)

ステップ 2:項目の処理

承認された項目を処理します。可能な場合は、独立した取得処理を並列で実行します。

X/Twitter の URL

xAI キーが必要です(XAI_AVAILABLE=true)。

uv run ~/.claude/skills/res-x/scripts/x_fetch.py fetch "URL1" "URL2" "URL3"

スクリプトは API 呼び出し 1 回につき 3 つの URL をまとめて処理します。結果から次の情報を抽出します。

  • 投稿者のハンドル名と表示名
  • ツイートの全文
  • エンゲージメント指標(いいね、リポスト、返信、閲覧数)
  • スレッドのコンテキストと引用ツイート(存在する場合)

XAI_AVAILABLE=false の場合は、X の URL には xAI キーが必要であることを報告し、それらをスキップします。

GitHub の URL
WebFetch: https://github.com/{owner}/{repo}
Prompt: "Extract: repo name, description, star count, language, license, last update date, and a 2-3 sentence summary of what this project does based on the README."

Scrapling によるフォールバック: WebFetch が 403、空のコンテンツ、CAPTCHA ページ、またはブロックされた応答を返した場合は、cli-web-scrape の自動エスカレーションプロトコルを使って再試行します。

  1. scrapling extract get "URL" /tmp/scrapling-fallback.md → 読み取り → コンテンツを検証
  2. コンテンツが不十分な場合(データのない JS のみのシェルなど)→ scrapling extract fetch "URL" /tmp/scrapling-fallback.md --network-idle --disable-resources → 読み取り → 検証
  3. それでもブロックされる場合 → scrapling extract stealthy-fetch "URL" /tmp/scrapling-fallback.md --solve-cloudflare
  4. すべての段階で失敗した場合 → 失敗を記録して次に進む
Web の URL
WebFetch: {URL}
Prompt: "Extract: page title, author if available, publication date if available, and a 3-5 sentence summary of the key content."

Scrapling によるフォールバック: WebFetch が 403、空のコンテンツ、CAPTCHA ページ、またはブロックされた応答を返した場合は、cli-web-scrape の自動エスカレーションプロトコルを使って再試行します。

  1. scrapling extract get "URL" /tmp/scrapling-fallback.md → 読み取り → コンテンツを検証
  2. コンテンツが不十分な場合(データのない JS のみのシェルなど)→ scrapling extract fetch "URL" /tmp/scrapling-fallback.md --network-idle --disable-resources → 読み取り → 検証
  3. それでもブロックされる場合 → scrapling extract stealthy-fetch "URL" /tmp/scrapling-fallback.md --solve-cloudflare
  4. すべての段階で失敗した場合 → 失敗を記録して次に進む
未整理のアイデア

アイデアのテキストをクエリとして、res-deep スキルを呼び出します。ユーザーがより詳細な調査を求めない限り、quick 深度(1 ラウンド、10~15 件の情報源)を使用します。

アイデアについては、res-deep の出力をそのままノート本文にします。

ステップ 3:ノートの作成

処理した各項目について、Obsidian ノートを作成します。

ノートの命名
種類命名パターン例
X の投稿内容から {topic}-{descriptor}scrapling-undetectable-web-scraping
X の記事{author}-x-article-{date}irabukht-x-article-2026-02-23
GitHub リポジトリ{repo-name}scrapling または huggingface-skills-agent-plugins
Web ページタイトルから {topic}-{descriptor}kubernetes-practical-learning-path
単発のアイデア{concept}-{descriptor}agent-sort-through-the-slop
詳細な調査{topic}-deep-researchscrapling-deep-research

すべての名前は、kebab-case、小文字、特殊文字なしにします。

作成前に、同じ名前の既存ノートがないか確認します。存在する場合は、末尾に -2 を付けるか、ユーザーに確認します。

ノートの構成

X の投稿/Web ページ/GitHub リポジトリ(簡易保存)の場合:

notesmd-cli create "NOTE_NAME" --content "---
tags: [TYPE_TAG]
source: SOURCE_URL
author: AUTHOR
date: DATE
---

# TITLE

## Key Points

- Point 1
- Point 2
- Point 3

## Summary

Brief paragraph summarizing the content.

## Source

- [Original](SOURCE_URL)"

種類タグ:X は tweet、GitHub は github、Web ページは web、アイデアは idea を使用します。

詳細な調査(アイデア)の場合:

res-deep スキルは、独自の構造化された出力を生成します。その出力を本文としてノートを作成し、フロントマターを追加します。

notesmd-cli create "NOTE_NAME" --content "---
tags: [idea, research]
date: DATE
---

{res-deep output here}"

ステップ 4:デイリーノートを更新する

処理した各項目について、デイリーノート内の元のテキストをウィキリンクに置き換えます。

セクションごとのウィキリンク形式

## Links セクション(ブックマーク/保存した URL):

- [[note-name]] — @author: summary with key metrics (stars, likes, etc.)

## Notes セクション(アイデアや考え):

- [[note-name]] — Brief: what the idea/research covers

## Log セクション(アクティビティの記録):

- [[note-name]] — Summary of what was captured
編集手順
  1. デイリーノートを読み取ります:notesmd-cli print "$DATE"
  2. Vault のパスを解決します:VAULT=$(notesmd-cli print-default --path-only)
  3. Edit ツールを使用して、各項目の元のテキストをウィキリンクの行に置き換えます
  4. Edit の競合を避けるため、一度に 1 項目ずつ置き換えます
  5. ノートを再度読み取り、最終的な内容を確認します
ルール
  • 既存のウィキリンクは保持し、処理済みの行は変更しません
  • セクション構成(## ヘッダー、項目間の空行)を維持します
  • 1 つの項目が複数行にわたる場合(段落形式のアイデアなど)、すべての行を 1 行のウィキリンクに置き換えます
  • ウィキリンクの要約は簡潔に(120 文字未満)し、可能な場合は重要な指標を含めます

ステップ 5:再インデックスして報告する

Vault の再インデックス
qmd update && qmd embed
サマリーレポート

サマリーテーブルを提示します:

## Digest Complete: {DATE}

| # | Type | Note Created | Status |
|---|------|-------------|--------|
| 1 | X tweet | [[note-name]] | Created |
| 2 | Loose idea | [[note-name]] | Created (res-deep quick) |
| 3 | GitHub | [[note-name]] | Created |
| 4 | Web URL | — | Failed (403) |

Notes created: 3
Items skipped: 2 (already processed)
Items failed: 1
Vault re-indexed: Yes

モード

Full(デフォルト)

デイリーノート内の未処理項目をすべて処理します。

「デイリーノートを処理して」/「デイリーの要約」

Selective

特定の項目またはセクションのみを処理します。

「今日のデイリーノートにあるリンクだけを処理して」 「X の URL だけを要約して」

Date Override

指定した日付のデイリーノートを処理します。

「昨日のデイリーノートを処理して」 「2026-02-20 を要約して」

Dry Run

処理は行わず、分類してテーブル(ステップ 1)を表示します。

「デイリーノートの未処理項目は何?」 「要約が必要な項目を見せて」

制約

必ず行うこと:

  • 常に最初にステップ 0(Vault のパス、デイリーノート、xAI の確認)を実行します
  • 分類テーブルを提示し、処理前にユーザーの承認を待ちます
  • 独立した項目は並行して処理します(複数の WebFetch 呼び出し、複数の X URL の一括処理)
  • 重複を避けるため、ノート作成前に既存ノートを確認します
  • 編集前にデイリーノートを読み取ります。内容を推測してはいけません
  • notesmd-cli print-default --path-only を使って Vault のパスを動的に解決します

行ってはいけないこと:

  • 分類テーブルでユーザーが除外した項目を処理する
  • 処理済みのウィキリンク行を変更する
  • Vault のパスをハードコードする
  • 分類承認のステップを省略する
  • ユーザーが明示的に要求していない限り、res-deep をデフォルトまたは deep の深度で実行する(デイリーの要約には quick を使用します)
  • フロントマターなしでノートを作成する

コメント