doc-daily-digest について
Obsidianの日次ノートを処理するワークフロースキルです。項目の分類、情報の取得や調査、構造化ノートの作成を行い、処理済み項目をウィキリンクに置き換えます。
主な機能
- 01リンク、投稿、アイデアの分類
- 02情報取得とアイデアの調査
- 03構造化されたObsidianノートの作成
- 04日次ノート項目をウィキリンクに置換
- 05ナレッジベースの再インデックスと結果報告
活用シーン
- 01日次ノートに保存したURLの処理
- 02未整理のアイデアを調査ノート化
- 03処理前の項目確認と選択
- 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-x | X/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+ に一致する URL | res-x 経由で取得 |
| X の記事 | https://(x\.com|twitter\.com)/i/article/[\w-]+ に一致する URL | res-x 経由で取得 |
| GitHub リポジトリ | https://github\.com/[\w-]+/[\w-]+ に一致する URL | WebFetch でリポジトリのページを取得 |
| Web URL | その他の https://... URL | WebFetch でページを取得 |
| 未整理のアイデア | 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 の自動エスカレーションプロトコルを使って再試行します。
scrapling extract get "URL" /tmp/scrapling-fallback.md→ 読み取り → コンテンツを検証- コンテンツが不十分な場合(データのない JS のみのシェルなど)→
scrapling extract fetch "URL" /tmp/scrapling-fallback.md --network-idle --disable-resources→ 読み取り → 検証 - それでもブロックされる場合 →
scrapling extract stealthy-fetch "URL" /tmp/scrapling-fallback.md --solve-cloudflare - すべての段階で失敗した場合 → 失敗を記録して次に進む
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 の自動エスカレーションプロトコルを使って再試行します。
scrapling extract get "URL" /tmp/scrapling-fallback.md→ 読み取り → コンテンツを検証- コンテンツが不十分な場合(データのない JS のみのシェルなど)→
scrapling extract fetch "URL" /tmp/scrapling-fallback.md --network-idle --disable-resources→ 読み取り → 検証 - それでもブロックされる場合 →
scrapling extract stealthy-fetch "URL" /tmp/scrapling-fallback.md --solve-cloudflare - すべての段階で失敗した場合 → 失敗を記録して次に進む
未整理のアイデア
アイデアのテキストをクエリとして、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-research | scrapling-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
編集手順
- デイリーノートを読み取ります:
notesmd-cli print "$DATE" - Vault のパスを解決します:
VAULT=$(notesmd-cli print-default --path-only) - Edit ツールを使用して、各項目の元のテキストをウィキリンクの行に置き換えます
- Edit の競合を避けるため、一度に 1 項目ずつ置き換えます
- ノートを再度読み取り、最終的な内容を確認します
ルール
- 既存のウィキリンクは保持し、処理済みの行は変更しません
- セクション構成(## ヘッダー、項目間の空行)を維持します
- 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 を使用します)
- フロントマターなしでノートを作成する