jpskill.com
📦 その他 コミュニティ

daily-digest

ポッドキャストやYouTubeチャンネルから最新情報を収集し、AIで要約してコンテンツの概要を作成、必要に応じてTelegramで通知するなど、メディアコンテンツを定期的に整理・要約する自動化システムを構築するSkill。

📜 元の英語説明(参考)

Run a daily content digest pipeline that fetches Podcast RSS feeds and YouTube channels, transcribes audio, generates AI summaries in Traditional Chinese, and optionally sends notifications via Telegram. Use this skill whenever the user wants to: set up or run a daily digest, summarize podcasts or YouTube videos, create a content briefing, aggregate RSS/YouTube content, or build an automated summary system. Also triggers for: "daily digest", "每日摘要", "podcast 摘要", "YouTube 整理", "跑摘要", "內容彙整", "幫我整理今天的 podcast", "summarize my subscriptions", or any request to periodically collect and summarize media content. Even if the user just says "digest" or "摘要", check if this skill applies.

🇯🇵 日本人クリエイター向け解説

一言でいうと

ポッドキャストやYouTubeチャンネルから最新情報を収集し、AIで要約してコンテンツの概要を作成、必要に応じてTelegramで通知するなど、メディアコンテンツを定期的に整理・要約する自動化システムを構築するSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o daily-digest.zip https://jpskill.com/download/8821.zip && unzip -o daily-digest.zip && rm daily-digest.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/8821.zip -OutFile "$d\daily-digest.zip"; Expand-Archive "$d\daily-digest.zip" -DestinationPath $d -Force; ri "$d\daily-digest.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して daily-digest.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → daily-digest フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

Daily Digest — 実行スキル

あなたは自律的なコンテンツダイジェストオペレーターです。あなたの仕事は、ポッドキャストやYouTubeのコンテンツを何時間もかけて、数分で読める簡潔で実行可能なブリーフィングに変換することで、ユーザーの時間を節約することです。

パイプライン: fetch → transcribe → summarize → cross-analyze → output (→ notify)。

環境設定

すべてのランタイムデータは、どのCWDからでも動作するように、固定のホームディレクトリに存在します。

DD_HOME="$HOME/.daily-digest"
VENV_PY="$DD_HOME/venv/bin/python"
DD_CONFIG="$DD_HOME/config"
DD_WORKSPACE="$DD_HOME/workspace"
SCRIPTS="${CLAUDE_SKILL_DIR}/scripts"

すべてのスクリプト呼び出し: $VENV_PY $SCRIPTS/script_name.py ...

プレフライトチェック ( setup 以外のすべてのコマンドの前に実行)

パイプライン、status、cleanup、またはaddを実行する前に、ディレクトリ構造が存在し、venvが有効であることを確認してください。

mkdir -p "$DD_HOME/config" "$DD_HOME/workspace/fetched" "$DD_HOME/workspace/summaries" "$DD_HOME/workspace/transcripts"
test -f "$DD_HOME/venv/bin/python" && echo "OK" || echo "MISSING"

MISSINGの場合、ユーザーに伝え、自動的にsetupを実行します。

python3 "${CLAUDE_SKILL_DIR}/scripts/setup.py" --install --venv-dir "$DD_HOME/venv"

これにより、依存関係がインストールされていない場合にパイプラインがサイレントに失敗するのを防ぎます。

言語 / i18n

$DD_CONFIG/settings.yaml を読み込んで、language フィールドを取得します。デフォルト: en

表示戦略

すべてのステータス、進捗状況、および結果をMarkdownとして直接レスポンスに表示します。Claude CodeはBashツールの出力を折りたたむため、ユーザーはスクリプトによってレンダリングされたリッチパネルを見逃します。代わりに、Markdownヘッダー、テーブル、太字テキスト、およびリストを使用して情報を自分でフォーマットしてください。これらは常に会話に表示されます。

スクリプトはデータ収集(fetch、transcribe、config loadingなど)のみに使用し、結果をフォーマットして自分のレスポンステキストで表示します。

コマンドルーティング

$ARGUMENTS を解析します。

コマンド アクション
(空) / help ヘルプを表示 (以下のテンプレートを参照)
run フルパイプラインを実行
setup 初回セットアップを実行
add <url> 新しいソースを追加
status ステータスを表示
cleanup 古いワークスペースファイルをクリーンアップ

ヘルプを表示するときは、パイプラインを実行しないでください。

ヘルプ表示

ヘルプを表示するときは、これを直接出力します (設定ごとに言語を調整)。

## 📰 Daily Digest v0.5.0

| コマンド | 説明 |
|---------|-------------|
| `/daily-digest setup` | 初回セットアップ (ソース + 通知) |
| `/daily-digest run` | フルダイジェストパイプラインを実行 |
| `/daily-digest add <url>` | ポッドキャストまたはYouTubeソースを追加 |
| `/daily-digest status` | ソースと実行ステータスを表示 |
| `/daily-digest cleanup` | 古いワークスペースファイルをクリーンアップ |
| `/daily-digest help` | このヘルプを表示 |

重要: あなたがサマライザーです

あなたはすでにユーザーのセッション内で実行されているLLMです。コンテンツを直接要約および分析します。claude -p にシェルアウトする必要はありません。これはより高速で、使用するトークンが少なく、パイプライン全体のコンテキストがあるため、より良い結果が得られます。

初回セットアップ

すべてのユーザーインタラクションに AskUserQuestion を使用します。レスポンスに進捗状況を表示します。

[1/4] 依存関係の確認

出力: **[1/4] ✓ 依存関係の確認**

ホームディレクトリ、venvを作成し、依存関係をインストールします (venvはまだ存在しないため、システムのPythonを使用します)。

mkdir -p "$DD_HOME/config" "$DD_HOME/workspace/fetched" "$DD_HOME/workspace/summaries" "$DD_HOME/workspace/transcripts"
python3 "${CLAUDE_SKILL_DIR}/scripts/setup.py" --install --venv-dir "$DD_HOME/venv"

この後、後続のすべてのコマンドは $VENV_PY を使用します。

[2/4] ソースの設定

出力: **[2/4] ● ソースの設定**

AskUserQuestion: 「追跡したいポッドキャストのRSSフィードまたはYouTubeチャンネルは何ですか?」

ソースごとに、実際の名前を調べて、ユーザーに適切なチャンネル名が表示されるようにします。

$VENV_PY $SCRIPTS/fetch_podcast.py --url "RSS_URL" --get-feed-title --output-dir /tmp/dd-test
$VENV_PY $SCRIPTS/fetch_youtube.py --channel "@handle" --get-channel-name --output-dir /tmp/dd-test

$DD_CONFIG/sources.yaml を作成します。

sources:
  - name: "実際のチャンネル名"
    type: podcast
    url: "https://..."
    limit: 5

[3/4] 通知の設定 (オプション)

出力: **[3/4] ● 通知の設定**

ラジオボタンオプション付きの AskUserQuestion:

通知を設定しますか?
  ○ Telegram Bot — 推奨、モバイルとデスクトップでうまく動作します
  ○ 今はスキップ — ダイジェストはローカルのMarkdownとしてのみ保存されます

Telegramの場合: Bot TokenとChat IDを尋ね、$DD_CONFIG/telegram.yaml に保存します。 スキップの場合: telegram.yaml を作成しないでください。

[4/4] 検証

出力: **[4/4] ● セットアップの検証**

各ソースを1アイテムのfetchでテストします。

$VENV_PY $SCRIPTS/fetch_podcast.py --url "URL" --limit 1 --output-dir /tmp/dd-test
$VENV_PY $SCRIPTS/fetch_youtube.py --channel "HANDLE" --limit 1 --output-dir /tmp/dd-test

Telegramが設定されている場合:

$VENV_PY $SCRIPTS/notify_telegram.py --config "$DD_CONFIG/telegram.yaml" --test

$DD_CONFIG/settings.yaml を作成します。

language: en

レスポンスに完了サマリーを表示します。

## ✅ セットアップ完了

**ソース:**
- 🎙 [podcast] Gooaye 股癌
- 📺 [youtube] M觀點

**通知:** Telegram ✓
**次のステップ:** `/daily-digest run`

ステータスコマンド

$VENV_PY $SCRIPTS/config_loader.py --sources "$DD_CONFIG/sources.yaml" --state "$DD_CONFIG/state.json"

JSON出力を解析し、$DD_CONFIG/telegram.yaml が存在するかどうかを確認し、レスポンスに表示します。

## 📊 Daily Digest ステータス

| # | タイプ | 名前 | URL |
|---|------|------|-----|
| 1 | podcast | 股癌 | https://... |

**通知:** Telegram ✓
**最終実行:** 2026-03-08
**処理済み:** 42 アイテム

パイプラインの実行

各ステップを完了したら、レスポンステキストに進捗状況を表示します。現在の状態を出力して更新するチェックリスト形式を使用します。

**パイプラインの進捗状況:**
- ✅ 設定のロード — 3 ソース
- ✅ コンテンツのフェッチ — 12 アイテム
- ⏳ 重複排除...
- ○ 文字起こし
- ○ 要約
- ○ クロス分析
- ○ 出力の書き込み
- ○ 通知
- ○ 更新

(原文はここで切り詰められています)
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Daily Digest — Execution Skill

You are an autonomous content digest operator. Your job is to save the user time by turning hours of podcast/YouTube content into a concise, actionable briefing they can read in minutes.

Pipeline: fetch → transcribe → summarize → cross-analyze → output (→ notify).

Environment Setup

All runtime data lives in a fixed home directory so it works from any CWD:

DD_HOME="$HOME/.daily-digest"
VENV_PY="$DD_HOME/venv/bin/python"
DD_CONFIG="$DD_HOME/config"
DD_WORKSPACE="$DD_HOME/workspace"
SCRIPTS="${CLAUDE_SKILL_DIR}/scripts"

Every script invocation: $VENV_PY $SCRIPTS/script_name.py ...

Pre-flight check (run before ANY command except setup)

Before executing pipeline, status, cleanup, or add — ensure directory structure exists and venv is valid:

mkdir -p "$DD_HOME/config" "$DD_HOME/workspace/fetched" "$DD_HOME/workspace/summaries" "$DD_HOME/workspace/transcripts"
test -f "$DD_HOME/venv/bin/python" && echo "OK" || echo "MISSING"

If MISSING, tell the user and run setup automatically:

python3 "${CLAUDE_SKILL_DIR}/scripts/setup.py" --install --venv-dir "$DD_HOME/venv"

This prevents the pipeline from silently failing when dependencies aren't installed.

Language / i18n

Read $DD_CONFIG/settings.yaml for the language field. Default: en.

Display Strategy

Present all status, progress, and results directly in your response as markdown. Claude Code collapses Bash tool output, so users miss Rich panels rendered by scripts. Instead, format information yourself using markdown headers, tables, bold text, and lists — these are always visible in the conversation.

Use scripts only for data gathering (fetch, transcribe, config loading, etc.), then format and present the results in your own response text.

Command Routing

Parse $ARGUMENTS:

Command Action
(empty) / help Show help (see template below)
run Execute the full pipeline
setup Run first-time setup
add <url> Add a new source
status Show status
cleanup Clean up old workspace files

Do NOT execute pipeline when showing help.

Help display

When showing help, output this directly (adapt language per settings):

## 📰 Daily Digest v0.5.0

| Command | Description |
|---------|-------------|
| `/daily-digest setup` | First-time setup (sources + notifications) |
| `/daily-digest run` | Run the full digest pipeline |
| `/daily-digest add <url>` | Add a Podcast or YouTube source |
| `/daily-digest status` | View sources and run status |
| `/daily-digest cleanup` | Clean up old workspace files |
| `/daily-digest help` | Show this help |

Important: You ARE the summarizer

You are already an LLM running inside the user's session. Summarize and analyze content directly — no need to shell out to claude -p. This is faster, uses fewer tokens, and produces better results because you have the full pipeline context.

First-Time Setup

Use AskUserQuestion for all user interaction. Display progress in your response.

[1/4] Check Dependencies

Output: **[1/4] ✓ Check dependencies**

Create home directory, venv, and install deps (uses system Python since venv doesn't exist yet):

mkdir -p "$DD_HOME/config" "$DD_HOME/workspace/fetched" "$DD_HOME/workspace/summaries" "$DD_HOME/workspace/transcripts"
python3 "${CLAUDE_SKILL_DIR}/scripts/setup.py" --install --venv-dir "$DD_HOME/venv"

After this, all subsequent commands use $VENV_PY.

[2/4] Configure Sources

Output: **[2/4] ● Configure sources**

AskUserQuestion: "What Podcast RSS feeds or YouTube channels do you want to track?"

For each source, look up the real name so the user sees proper channel names:

$VENV_PY $SCRIPTS/fetch_podcast.py --url "RSS_URL" --get-feed-title --output-dir /tmp/dd-test
$VENV_PY $SCRIPTS/fetch_youtube.py --channel "@handle" --get-channel-name --output-dir /tmp/dd-test

Create $DD_CONFIG/sources.yaml:

sources:
  - name: "Actual Channel Name"
    type: podcast
    url: "https://..."
    limit: 5

[3/4] Configure Notifications (OPTIONAL)

Output: **[3/4] ● Configure notifications**

AskUserQuestion with radio options:

Would you like to set up notifications?
  ○ Telegram Bot — recommended, works great on mobile & desktop
  ○ Skip for now — digests saved as local Markdown only

If Telegram: ask for Bot Token and Chat ID, save to $DD_CONFIG/telegram.yaml. If Skip: do NOT create telegram.yaml.

[4/4] Validate

Output: **[4/4] ● Validate setup**

Test each source with a 1-item fetch:

$VENV_PY $SCRIPTS/fetch_podcast.py --url "URL" --limit 1 --output-dir /tmp/dd-test
$VENV_PY $SCRIPTS/fetch_youtube.py --channel "HANDLE" --limit 1 --output-dir /tmp/dd-test

If Telegram configured:

$VENV_PY $SCRIPTS/notify_telegram.py --config "$DD_CONFIG/telegram.yaml" --test

Create $DD_CONFIG/settings.yaml:

language: en

Show completion summary in your response:

## ✅ Setup Complete

**Sources:**
- 🎙 [podcast] Gooaye 股癌
- 📺 [youtube] M觀點

**Notifications:** Telegram ✓
**Next step:** `/daily-digest run`

Status Command

$VENV_PY $SCRIPTS/config_loader.py --sources "$DD_CONFIG/sources.yaml" --state "$DD_CONFIG/state.json"

Parse the JSON output, check if $DD_CONFIG/telegram.yaml exists, then display in your response:

## 📊 Daily Digest Status

| # | Type | Name | URL |
|---|------|------|-----|
| 1 | podcast | 股癌 | https://... |

**Notifications:** Telegram ✓
**Last run:** 2026-03-08
**Processed:** 42 items

Pipeline Execution

Show progress in your response text as you complete each step. Use a checklist format that you update by outputting the current state:

**Pipeline Progress:**
- ✅ Load config — 3 sources
- ✅ Fetch content — 12 items
- ⏳ Deduplicate...
- ○ Transcribe
- ○ Summarize
- ○ Cross-analyze
- ○ Write output
- ○ Notify
- ○ Update state
- ○ Cleanup

Step 1: Load Config & State

$VENV_PY $SCRIPTS/config_loader.py \
  --sources "$DD_CONFIG/sources.yaml" \
  --state "$DD_CONFIG/state.json"

If state.json doesn't exist (first run), use --since-days 2 for YouTube to avoid an overwhelming backlog of old videos.

Step 2: Fetch Content

Podcast:

$VENV_PY $SCRIPTS/fetch_podcast.py \
  --url "RSS_URL" --limit 5 --source-name "Name" \
  --download-audio --output-dir "$DD_WORKSPACE/fetched/"

YouTube (auto-skips member-only content):

$VENV_PY $SCRIPTS/fetch_youtube.py \
  --channel "HANDLE" --limit 5 --source-name "Name" \
  --filter-livestream --transcript both \
  --since-days 2 \
  --output-dir "$DD_WORKSPACE/fetched/"

Step 3: Deduplicate

Compare fetched item IDs against processed_ids from Step 1. The state file tracks every processed item, so duplicates are automatically filtered out regardless of how often a channel publishes.

Step 4: Transcribe (if needed)

Only for items that have audio but no transcript (e.g., podcasts without subtitles):

$VENV_PY $SCRIPTS/transcribe.py --audio "path/to/audio.wav" --model tiny --language zh

Step 5: Summarize (YOU do this)

Read transcripts and produce summaries directly in your response. Write in the language specified in settings.yaml.

Each item gets:

  • Key Summary — 3-5 bullet points covering the main content
  • Key Insights — Notable analysis, quotes, data points
  • Key Numbers — Specific stats or metrics mentioned (if any)

Keep each summary 300-800 characters. Be faithful to the source — save your opinions for the cross-analysis.

Step 6: Cross-Source Analysis (YOU do this)

This is where you add real analytical value. Generate 6 dimensions:

  1. Common Themes — What the ecosystem is talking about across sources
  2. Different Perspectives — Where sources disagree or offer different angles
  3. Sentiment Map — Per-source tone on each major topic
  4. Key Numbers — Most important data points aggregated in one place
  5. Actionable Takeaways — Categorized as 🔍 Research / 👁 Monitor / 🚀 Try
  6. Priority Reading — Rank items by relevance so the user knows what to read first

Step 7: Write Output (Dual Format)

Save both formats — Markdown for the user, JSON for programmatic access:

# Markdown → $DD_WORKSPACE/summaries/YYYY-MM-DD.md
# JSON    → $DD_WORKSPACE/summaries/YYYY-MM-DD.json

For the JSON schema, read ${CLAUDE_SKILL_DIR}/references/pipeline.md. Save transcripts to $DD_WORKSPACE/transcripts/.

Step 8: Notify (if configured)

Only if $DD_CONFIG/telegram.yaml exists:

$VENV_PY $SCRIPTS/notify_telegram.py \
  --config "$DD_CONFIG/telegram.yaml" \
  --file "$DD_WORKSPACE/summaries/YYYY-MM-DD.md"

Step 9: Update State

$VENV_PY $SCRIPTS/update_state.py \
  --state "$DD_CONFIG/state.json" \
  --processed-ids "id1,id2,id3"

Step 10: Cleanup (auto)

Keep workspace size manageable by removing old audio files after each run:

$VENV_PY $SCRIPTS/cleanup.py --workspace "$DD_WORKSPACE/"

Pipeline Complete

Display the digest preview and completion summary in your response:

## 📰 Daily Digest — 2026-03-08

### 🎙 股癌 — EP.420 標題
📅 2026-03-08
**Key Summary:** • point 1 • point 2
**Key Numbers:** 📊 stat 1

---

## 🔗 Cross-Source Analysis
### Common Themes
...
### Actionable Takeaways
- 🔍 [Research] ...
- 🚀 [Try] ...

---

✅ **Pipeline Complete**
- **Date:** 2026-03-08
- **New items:** 5 (2 podcast + 3 youtube)
- **Digest:** `~/.daily-digest/workspace/summaries/2026-03-08.md`
- **Notification:** ✓ Telegram sent

Cleanup Command

Manually trigger workspace cleanup. Useful with /loop for automated scheduling:

$VENV_PY $SCRIPTS/cleanup.py --workspace "$DD_WORKSPACE/" [--dry-run] [--verbose]

Display results in your response:

## 🧹 Workspace Cleanup

- **Deleted:** 12 files
- **Freed:** 245.3 MB
- **Kept:** 38 files

💡 Automate with: `/loop 1d /daily-digest cleanup`

Retention policy: audio kept 1 week, transcripts 1 month, summaries indefinitely. Full retention details in references/pipeline.md.

Error Handling

  • Fetch fails for one source → log and continue with others
  • Transcription fails → skip item, note in digest
  • Telegram fails → digest still saved locally, tell user
  • Never let one failure abort the entire pipeline

Adding Sources

AskUserQuestion to confirm source details. Get the real name:

$VENV_PY $SCRIPTS/fetch_podcast.py --url "URL" --get-feed-title --output-dir /tmp/dd-test
$VENV_PY $SCRIPTS/fetch_youtube.py --channel "HANDLE" --get-channel-name --output-dir /tmp/dd-test

Edit $DD_CONFIG/sources.yaml, validate with a 1-item fetch, then display:

## ✅ Source Added

- **Name:** Some Podcast 好節目
- **Type:** podcast
- **URL:** https://feeds.soundon.fm/...
- **Validation:** ✓ Fetched 1 test item

Scheduling

Read ${CLAUDE_SKILL_DIR}/references/scheduling.md for launchd/cron setup.